在计算机视觉领域,“目标检测”无疑是最炙手可热的技术之一。它被广泛应用于安防监控、自动驾驶、工业质检、智慧医疗等场景。但在 Java 圈,很多开发者往往因为深度学习主流生态以 Python 为主,望而却步。

其实,现在我们已经可以借助 SmartJavaAI 项目,通过 Java 快速接入目标检测能力。本文将手把手教你如何使用 SmartJavaAI 来实现目标识别功能,即使你没有深度学习基础,也能轻松上手!

SmartJavaAI是什么?

SmartJavaAI是专为JAVA 开发者打造的一个功能丰富、开箱即用的 JAVA AI算法工具包,致力于帮助JAVA开发者零门槛使用各种AI算法模型,开发者无需深入了解底层实现,即可轻松在 Java 代码中调用人脸识别、目标检测、OCR 等功能。底层支持包括基于 DJL (Deep Java Library) 封装的深度学习模型,以及通过 JNI 接入的 C++/Python 算法,兼容多种主流深度学习框架如 PyTorch、TensorFlow、ONNX、Paddle 等,屏蔽复杂的模型部署与调用细节,开发者无需了解 AI 底层实现即可直接在 Java 项目中集成使用,后续将持续扩展更多算法,目标是构建一个“像 Hutool 一样简单易用”的 JAVA AI 通用工具箱

一、什么是目标检测?

目标检测(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

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐