# 目标检测
# 简介
目标检测是计算机视觉中的一项关键任务,主要用于识别图像或视频中的目标物体,并标出其类别和位置。常见算法包括 YOLO、SSD 和 Faster R-CNN,广泛应用于自动驾驶、安防监控、工业检测等场景。通过深度学习,目标检测已实现高精度和实时性,成为智能视觉系统的重要基础。
# 安装
# 1、环境要求
- Java 版本:JDK 11或更高版本
- 操作系统:Windows/Linux/MacOS
# 2、Maven
在项目的 pom.xml 中添加以下依赖以及平台依赖库,详细引入方式参考 Maven 引入。如需引入全部功能,请使用 smartjavaai-all 模块。
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-objectdetection</artifactId>
<version>1.0.12</version>
</dependency>
# 方法说明
# 获取默认目标检测模型:
- 默认模型:YOLO11N,联网自动下载
DetectorModel detectorModel = ObjectDetectionModelFactory.getInstance().getModel();
# 获取目标检测模型(使用自定义模型配置)
DetectorModelConfig config = new DetectorModelConfig();
config.setModelEnum(DetectorModelEnum.SSD_300_RESNET50);//检测模型
DetectorModel detectorModel = ObjectDetectionModelFactory.getInstance().getModel(config);
# 目标检测模型
# SSD 系列
模型名称 | 骨干网络 | 输入尺寸 | 训练数据集 | 精度(mAP) | 推理速度 | 适用场景 |
---|---|---|---|---|---|---|
SSD_300_RESNET50 | ResNet‑50 | 300×300 | COCO | 中等 | 快 | 精度需求一般 |
SSD_512_RESNET50_V1_VOC | ResNet‑50 | 512×512 | Pascal VOC | 稍高 | 中等 | 精度优先、可接受略低速度的场景 |
SSD_512_VGG16_ATROUS_COCO | VGG‑16 | 512×512 | COCO | 较高 | 中等 | 通用场景;对小目标有一定提升 |
SSD_300_VGG16_ATROUS_VOC | VGG‑16 | 300×300 | Pascal VOC | 中等偏上 | 快 | VOC 数据集同类任务;资源受限时使用 |
SSD_512_MOBILENET1_VOC | MobileNet‑1.0 | 512×512 | Pascal VOC | 中等 | 快 | 嵌入式/移动端设备;算力和内存都很有限 |
# YOLO 系列
模型名称 | 版本 | 大小(Backbone) | 数据集 | 精度 | 速度 | 适用场景 |
---|---|---|---|---|---|---|
YOLO11N | v11 | 极轻量 | COCO | 中等偏上 | 极快 | 与 v8n 类似,版本更新点在兼容性与 API |
YOLOV8N | v8 | 极轻量 | COCO | 中等偏上 | 极快 | 对实时性要求极高的应用 |
YOLOV5S | v5 | 小型 | COCO | 较高 | 非常快 | 常见通用场景,算力资源有限时优选 |
YOLOV5S_ONNXRUNTIME | v5 | 小型 | COCO | 较高 | 加速(需 ONNX 支持) | Windows/Linux 通用加速部署 |
YOLO (MXNet / 通用模型) | v3 | DarkNet‑53 | COCO | 较高 | 快 | 需要 MXNet 生态或复现老项目时使用 |
# YOLOv3 变体系列
模型名称 | 骨干网络 | 数据集 | 输入尺寸 | 精度 | 速度 | 适用场景 |
---|---|---|---|---|---|---|
YOLO3_DARKNET_VOC_416 | DarkNet‑53 | VOC | 416×416 | 高 | 中等 | VOC 任务复现;精度优先 |
YOLO3_DARKNET_COCO_320 | DarkNet‑53 | COCO | 320×320 | 中等 | 快 | COCO 小模型测试;资源受限 |
YOLO3_DARKNET_COCO_416 | DarkNet‑53 | COCO | 416×416 | 高 | 中等 | 通用 COCO 部署;精度优先 |
YOLO3_DARKNET_COCO_608 | DarkNet‑53 | COCO | 608×608 | 很高 | 慢 | 批量离线推理;精度要求极高 |
YOLO3_MOBILENET_VOC_320 | MobileNet‑V1 | VOC | 320×320 | 中等 | 非常快 | 嵌入式设备;VOC 小目标任务 |
YOLO3_MOBILENET_VOC_416 | MobileNet‑V1 | VOC | 416×416 | 高 | 快 | 移动端 VOC 部署 |
YOLO3_MOBILENET_COCO_320 | MobileNet‑V1 | COCO | 320×320 | 中等 | 非常快 | 嵌入式设备;COCO 小目标任务 |
YOLO3_MOBILENET_COCO_416 | MobileNet‑V1 | COCO | 416×416 | 高 | 快 | 移动端 COCO 部署 |
YOLO3_MOBILENET_COCO_608 | MobileNet‑V1 | COCO | 608×608 | 很高 | 中等 | 对精度要求较高的移动端任务 |
# DetectorModelConfig参数说明
字段名称 | 字段类型 | 默认值 | 说明 |
---|---|---|---|
modelEnum | DetectorModelEnum | YOLO11N | 目标检测模型枚举 |
threshold | double | 0.5 | 置信度阈值,分数低于这个值的结果将被过滤掉。值越高越严格,越低越宽松 |
device | DeviceEnum | CPU | 指定运行设备,支持 CPU/GPU |
# DetectorModel API 方法说明
# 目标检测
DetectionResponse detect(String imagePath);
DetectionResponse detect(BufferedImage image);
DetectionResponse detect(byte[] imageData);
# DetectionResponse字段说明
- 返回并非json格式,仅用于字段讲解
{
"detectionInfoList": [ //检测信息列表
{
"detectionRectangle": { //矩形框
"height": 174, // 矩形高度
"width": 147, // 矩形宽度
"x": 275, // 左上角横坐标
"y": 143 // 左上角纵坐标
},
"objectDetInfo": { //目标检测信息
"className": "person" //类别
},
"score": 0.8118719 //检测结果置信度分数
}
]
}
# 检测并绘制结果
/**
* 检测并绘制结果
* @param imagePath 图片输入路径(包含文件名称)
* @param outputPath 图片输出路径(包含文件名称)
*/
void detectAndDraw(String imagePath, String outputPath);
/**
* 检测并绘制结果
* @param sourceImage
* @return
*/
BufferedImage detectAndDraw(BufferedImage sourceImage);
# 完整示例代码
📁 src/main/java/smartai/examples/objectdetection
└── 📄ObjectDetection.java (opens new window) (目标检测示例代码)