# 目标检测

# 简介

目标检测是计算机视觉中的一项关键任务,主要用于识别图像或视频中的目标物体,并标出其类别和位置。常见算法包括 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);

# 完整示例代码

示例代码 (opens new window)

📁 src/main/java/smartai/examples/objectdetection

└── 📄ObjectDetection.java (opens new window) (目标检测示例代码)

# 离线使用

离线使用请看文档