在计算机视觉领域,“目标检测”无疑是最炙手可热的技术之一。它被广泛应用于安防监控、自动驾驶、工业质检、智慧医疗等场景。但在 Java 圈,很多开发者往往因为深度学习主流生态以 Python 为主,望而却步。
其实,现在我们已经可以借助 SmartJavaAI 项目,通过 Java 快速接入目标检测能力。本文将手把手教你如何使用 SmartJavaAI 来实现目标识别功能,即使你没有深度学习基础,也能轻松上手!
一、什么是目标检测?
目标检测(Object Detection)是计算机视觉领域的一项核心任务,旨在识别图像或视频中的目标物体,并定位它们的位置(用矩形框表示)。典型应用场景包括:
- 智能安防:检测入侵者、可疑行为
- 自动驾驶:识别车辆、行人、交通标志
- 工业质检:检测产品缺陷
- 医疗影像:检测病灶区域
目前主流的检测算法包括:
- YOLO(You Only Look Once):兼顾速度和精度
- SSD(Single Shot MultiBox Detector):结构简单,推理快
- Faster R-CNN:精度高,适合离线任务
效果展示
![]() |
二、快速开始?
借助 SmartJavaAI 开源项目,你可以直接在 Java 中集成目标检测模型,无需自己处理复杂的深度学习框架。
环境要求:
- JDK:11 或以上
- 操作系统:Windows / Linux / macOS
- Maven 引入jar包
1、Maven 引入依赖:
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>smartjavaai-objectdetection</artifactId>
<version>1.0.12</version>
</dependency>
2、加载默认模型并检测:
DetectorModel detectorModel = ObjectDetectionModelFactory.getInstance().getModel();
DetectionResponse response = detectorModel.detect("example.jpg");
你也可以使用配置类加载其他模型:
DetectorModelConfig config = new DetectorModelConfig();
config.setModelEnum(DetectorModelEnum.SSD_300_RESNET50);
DetectorModel detectorModel = ObjectDetectionModelFactory.getInstance().getModel(config);
3、支持的目标检测模型
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 |
4、结果绘制与 API 简介
绘制检测结果:
detectorModel.detectAndDraw("input.jpg", "output.jpg");
返回结果结构(DetectionResponse):
{
"detectionInfoList": [ //检测信息列表
{
"detectionRectangle": { //矩形框
"height": 174, // 矩形高度
"width": 147, // 矩形宽度
"x": 275, // 左上角横坐标
"y": 143 // 左上角纵坐标
},
"objectDetInfo": { //目标检测信息
"className": "person" //类别
},
"score": 0.8118719 //检测结果置信度分数
}
]
}
三、完整示例项目
项目地址:https://gitee.com/dengwenjie/SmartJavaAI/tree/master/examples
示例路径:src/main/java/smartai/examples/objectdetection/ObjectDetection.java
四、开源项目地址
🔗 Gitee 项目地址:https://gitee.com/dengwenjie/SmartJavaAI
🔗 GitHub 项目地址:https://github.com/geekwenjie/SmartJavaAI
🔗 GitCode 项目地址:https://gitcode.com/geekwenjie/SmartJavaAI
📖 在线文档地址:http://doc.smartjavaai.cn