简介

行人目标检测是计算机视觉领域的重要任务,旨在从图像或视频中自动识别并定位行人对象。它广泛应用于智能监控、自动驾驶、安防系统等场景,通过分析图像中的特征信息,实现对行人的准确检测和跟踪。

行人检测模型是基于专门的行人数据集进行训练的,因而在识别行人目标上具有更高的准确性和鲁棒性。相比之下,通用的目标检测模型虽然也支持人员检测,但其训练数据中人员样本较少,导致在特定行人类别的识别效果通常不够理想。针对行人场景专门优化的模型,能够更好地适应复杂环境和多样化的人体姿态,提高检测的精度和稳定性。

现在我们已经可以借助 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 通用工具箱

效果展示


快速开始

借助 SmartJavaAI 开源项目,你可以直接在 Java 中集成行人目标检测模型,无需自己处理复杂的深度学习框架。

Maven

在项目的 pom.xml 中添加以下依赖,详细引入方式参考 Maven 引入

如需引入全部功能,请使用 【不推荐 ❌】 all 模块。

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>vision</artifactId>
    <version>1.0.24</version>
</dependency>

获取行人检测模型

PersonDetModelConfig config = new PersonDetModelConfig();
config.setModelEnum(PersonDetectorModelEnum.YOLOV8_PERSON);
config.setModelPath("/Users/wenjie/Documents/develop/model/person/yolov8n-person.onnx");
PersonDetModel detectorModel = ObjectDetectionModelFactory.getInstance().getModel(config);
PersonDetModelConfig参数说明
字段名称 字段类型 默认值 说明
modelEnum DetectorModelEnum 行人检测模型枚举
modelPath String 模型路径
topK int 不限制 检测结果数量
threshold double 0.5 置信度阈值,分数低于这个值的结果将被过滤掉。值越高越严格,越低越宽松
device DeviceEnum CPU 指定运行设备,支持 CPU/GPU
gpuId int 0 gpu设备ID 当device为GPU时生效
predictorPoolSize int 默认为cpu核心数 模型预测器线程池大小
customParams Map<String, Object> 个性化配置(按模型类型动态解析)

支持行人检测模型

模型名称 引擎 模型开源网站
YOLOV8_PERSON OnnxRuntime Github

PersonDetModel API 方法说明

行人检测

Image图片源请查看文档Image使用说明

R<DetectionResponse> detect(Image image);
DetectedObjects detectCore(Image image);
DetectionResponse字段说明
  • 返回并非json格式,仅用于字段讲解
{
  "detectionInfoList": [ //检测信息列表
    {
      "detectionRectangle": { //矩形框
        "height": 174, // 矩形高度
        "width": 147, // 矩形宽度
        "x": 275, // 左上角横坐标
        "y": 143 // 左上角纵坐标
      },
      "objectDetInfo": { //行人检测信息
        "className": "person" //类别
      },
      "score": 0.8118719 //检测结果置信度分数
    }
  ]
}
检测并绘制结果

该接口支持对图像进行检测,并将检测结果绘制在图像上,同时返回检测结果信息。

  • 保存绘制后的图片到指定路径,检测结果通过 DetectionResponse 返回。
R<DetectionResponse> detectAndDraw(String imagePath, String outputPath);
  • 支持直接输入 Image 对象进行检测,检测结果通过 DetectionResponse 返回。
    可以通过 DetectionResponse 中的 drawnImage 获取绘制后的 Image 对象。
R<DetectionResponse> detectAndDraw(Image image);

使用说明
  • imagePath:待检测图像的文件路径。
  • outputPath:绘制检测结果后图像的保存路径。
  • image:待检测的 Image 对象。
  • 返回的 DetectionResponse 包含检测框信息及绘制后的图像(drawnImage),方便后续处理或展示。

完整示例项目

项目地址:https://gitee.com/dengwenjie/SmartJavaAI/tree/master/examples


开源项目地址

🔗 Gitee 项目地址:https://gitee.com/dengwenjie/SmartJavaAI

🔗 GitHub 项目地址:https://github.com/geekwenjie/SmartJavaAI

🔗 GitCode 项目地址:https://gitcode.com/geekwenjie/SmartJavaAI

📖 在线文档地址:http://doc.smartjavaai.cn

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐