changzengli/yolo-onnx-java环境配置与快速上手

changzengli/yolo-onnx-java环境配置与快速上手

【免费下载链接】yolo-onnx-java Java开发视觉智能识别项目 纯java 调用 yolo onnx 模型 AI 视频 识别 支持 yolov5 yolov8 yolov7 yolov9 yolov10,yolov11,paddle ,obb,seg ,detection,包含 预处理 和 后处理 。java 目标检测 目标识别,可集成 rtsp rtmp,车牌识别,人脸识别,跌倒识别,打架识别,车牌识别,人脸识别 等 【免费下载链接】yolo-onnx-java 项目地址: https://gitcode.com/changzengli/yolo-onnx-java

文章详细介绍了如何配置JDK 11+环境、GPU加速设置、Maven依赖管理以及项目中的核心主文件功能。内容包括JDK版本验证、CUDA/cuDNN安装指南、国内镜像源优化,以及CameraDetection.java等主文件的实时目标检测实现。

环境要求:JDK 11+与GPU配置建议

JDK 11+ 环境配置

为了确保 changzengli/yolo-onnx-java 项目的顺利运行,必须满足以下JDK环境要求:

  1. JDK版本:必须使用 JDK 11或更高版本。JDK 8及以下版本不支持项目中的某些特性(如var关键字和模块化功能)。
  2. 验证JDK版本: 运行以下命令验证当前JDK版本:
    java -version
    

    输出应为类似以下内容:

    openjdk version "17.0.15" 2025-04-15
    OpenJDK Runtime Environment (build 17.0.15+6-Debian-1deb12u1)
    OpenJDK 64-Bit Server VM (build 17.0.15+6-Debian-1deb12u1, mixed mode, sharing)
    
  3. 安装JDK 11+
    • 如果未安装JDK 11+,请从Oracle官网OpenJDK下载并安装。
    • 安装完成后,配置环境变量JAVA_HOME指向JDK安装路径。

GPU配置建议

对于视频流实时检测或高性能需求场景,建议使用GPU加速推理。以下是GPU配置的详细建议:

1. 硬件要求
  • 显卡型号:推荐使用 NVIDIA RTX 3060或更高性能显卡
  • 显存容量:至少 6GB显存,以确保模型推理的流畅性。
2. 软件依赖
  • CUDA Toolkit:安装与显卡驱动兼容的CUDA版本(推荐 CUDA 11.8)。
  • cuDNN:下载与CUDA版本匹配的cuDNN库,并配置环境变量。
  • ONNX Runtime GPU版:确保安装onnxruntime-gpu库以启用GPU加速。
3. 验证GPU支持

运行以下命令验证CUDA和cuDNN是否安装成功:

nvcc -V

输出应显示CUDA版本信息:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Mon_Apr_15_2025_12:00:00_PDT
Cuda compilation tools, release 11.8, V11.8.00
4. 项目中的GPU启用

在代码中,通过以下方式启用GPU加速:

OrtSession.SessionOptions sessionOptions = new OrtSession.SessionOptions();
sessionOptions.addCUDA(); // 启用CUDA加速
OrtSession session = environment.createSession(model_path, sessionOptions);
5. 常见问题
  • 驱动不兼容:确保显卡驱动为最新版本。
  • 显存不足:降低输入分辨率或使用更轻量级的模型。
  • 性能优化:多线程处理视频流,避免队列堆积。

环境配置流程图

mermaid

版本兼容性表格

组件推荐版本最低要求
JDK1711
CUDA11.811.0
cuDNN8.68.0
ONNX Runtime1.15.01.10.0

通过以上配置,您可以充分发挥GPU的加速能力,显著提升模型的推理效率。

Maven依赖配置与国内源优化

在Java项目中,Maven是管理项目依赖的核心工具。对于changzengli/yolo-onnx-java项目,正确配置Maven依赖和优化国内源是确保项目顺利构建和运行的关键步骤。以下将详细介绍如何完成这些配置。

1. Maven依赖配置

项目的核心依赖包括onnxruntimeopencv,这些依赖在pom.xml中已定义。以下是pom.xml中的关键依赖配置:

<dependencies>
    <dependency>
        <groupId>com.microsoft.onnxruntime</groupId>
        <artifactId>onnxruntime</artifactId>
        <version>1.16.1</version>
    </dependency>
    <dependency>
        <groupId>org.openpnp</groupId>
        <artifactId>opencv</artifactId>
        <version>4.7.0-0</version>
    </dependency>
</dependencies>
依赖说明
  • onnxruntime:用于加载和运行ONNX模型,支持CPU和GPU推理。
  • opencv:提供图像处理功能,支持图像的读取、转换和显示。
可选GPU支持

如果需要使用GPU加速推理,可以将onnxruntime替换为onnxruntime_gpu

<dependency>
    <groupId>com.microsoft.onnxruntime</groupId>
    <artifactId>onnxruntime_gpu</artifactId>
    <version>1.16.1</version>
</dependency>

2. 国内源优化

默认情况下,Maven从中央仓库下载依赖,速度较慢。建议配置国内镜像源(如阿里云)以加速下载。

配置步骤
  1. 打开Maven的settings.xml文件(通常位于~/.m2/settings.xml/etc/maven/settings.xml)。
  2. 添加以下镜像配置:
<mirrors>
    <mirror>
        <id>aliyun</id>
        <name>Aliyun Maven Mirror</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>
验证配置

运行以下命令验证依赖是否从国内源下载:

mvn clean install

如果下载速度显著提升,说明配置成功。

3. 常见问题解决

依赖下载失败
  • 问题:依赖下载超时或失败。
  • 解决方案
    1. 检查网络连接。
    2. 确保settings.xml中的镜像配置正确。
    3. 清理本地仓库后重试:
      mvn dependency:purge-local-repository
      
GPU支持问题
  • 问题:使用onnxruntime_gpu时报错。
  • 解决方案
    1. 确保已安装对应版本的CUDA和cuDNN。
    2. 检查显卡驱动是否为最新版本。
    3. 运行nvcc -V验证CUDA是否安装成功。

4. 总结

通过正确配置Maven依赖和优化国内源,可以显著提升项目的构建效率。以下是配置的流程图:

mermaid

通过以上步骤,您可以为changzengli/yolo-onnx-java项目提供稳定高效的依赖管理支持。

直接运行的主文件介绍:CameraDetection.java等

changzengli/yolo-onnx-java项目中,CameraDetection.javaCameraDetectionV11.javaCameraDetectionWarnDemo.java是三个可以直接运行的主文件,用于实现基于YOLO模型的实时视频目标检测功能。以下是对这些文件的详细介绍:


1. CameraDetection.java

CameraDetection.java是一个基于YOLOv7模型的实时视频目标检测示例。它支持从摄像头或视频文件中读取帧,并通过ONNX模型进行目标检测。

功能特点:
  • 支持多种输入源:可以直接从摄像头(如video.open(0))或视频文件(如video.open("video/car3.mp4"))读取数据。
  • 跳帧检测:通过设置detect_skip参数,控制检测频率,优化性能。
  • 结果可视化:在检测到的目标周围绘制边界框,并显示标签和置信度。
  • GPU支持:通过sessionOptions.addCUDA(0)启用GPU加速(需安装CUDA环境)。
代码结构:
public class CameraDetection {
    public static void main(String[] args) throws OrtException {
        // 初始化OpenCV和ONNX环境
        // 加载模型和标签
        // 打开视频源
        // 循环读取帧并进行检测
        // 可视化结果
    }
}
示例输出:
input name = input
TensorInfo(javaType=FLOAT, shape=[1, 3, 640, 640])

2. CameraDetectionV11.java

CameraDetectionV11.java是基于YOLOv11模型的改进版本,支持更高效的目标检测和自定义配置。

功能特点:
  • 非极大值抑制(NMS):通过nonMaxSuppression方法过滤重叠的检测框。
  • 动态跳帧:根据帧率动态调整检测频率。
  • 多线程支持:适合高帧率视频流处理。
关键方法:
public static List<float[]> nonMaxSuppression(List<float[]> bboxes, float iouThreshold) {
    // 实现非极大值抑制逻辑
}

public static void xywh2xyxy(float[] bbox) {
    // 将边界框格式从(x, y, w, h)转换为(x1, y1, x2, y2)
}
示例输出:
time:45 ms.
person : 2
car : 1

3. CameraDetectionWarnDemo.java

CameraDetectionWarnDemo.java是一个告警示例,通过检测目标数量的变化触发告警逻辑。

功能特点:
  • 目标计数:记录每帧中检测到的目标数量。
  • 告警触发:当目标数量发生变化时(如新目标出现或消失),输出告警信息。
  • 简易去重:通过ConcurrentHashMap避免重复告警。
告警逻辑:
for (Map.Entry<String, Integer> entry : current.entrySet()) {
    if (!last.containsKey(entry.getKey())) {
        System.err.println(entry.getValue() + "个 " + entry.getKey() + " 出现了");
    }
}
示例输出:
1个 person 出现了
1个 car 离开了

4. 其他主文件

除了上述文件,项目中还包含以下可直接运行的主文件:

  • ObjectDetection_1_25200_n.java:支持YOLOv5模型。
  • ObjectDetection_n_7.java:支持YOLOv7模型。
  • ObjectDetection_1_n_8400.java:支持YOLOv8和YOLOv9模型。

这些文件的结构和功能类似,但针对不同模型输出格式进行了适配。


5. 运行示例

以下是一个简单的运行流程:

  1. 环境准备:确保JDK >= 11,并安装OpenCV和ONNX Runtime依赖。
  2. 模型配置:将训练好的ONNX模型文件(如yolov7-tiny.onnx)放入src/main/resources/model/目录。
  3. 运行主文件:直接运行CameraDetection.java或其他主文件。
示例命令:
java -cp "target/classes:lib/*" cn.ck.CameraDetection

6. 总结

通过CameraDetection.java等主文件,用户可以快速实现基于YOLO模型的实时目标检测功能。这些文件不仅支持多种输入源和模型格式,还提供了灵活的配置选项和告警逻辑,适合实际项目中的集成和扩展。

视频与图片识别效果展示

changzengli/yolo-onnx-java 项目中,视频与图片识别功能通过多种模型实现了高效的目标检测与姿态估计。以下是一些典型的识别效果展示,帮助开发者直观了解项目的实际应用场景。

图片识别效果

项目支持对静态图片进行目标检测,包括但不限于车辆、行人、安全帽等常见目标。以下是部分示例:

  1. 车辆检测
    通过 ObjectDetection_1_25200_n.javaObjectDetection_n_7.java 运行,可以准确识别图片中的车辆位置和类别。
    车辆检测示例
    检测结果:车辆位置(边界框)、类别标签(如“car”)及置信度分数。

  2. 安全帽检测
    适用于工地场景,检测工人是否佩戴安全帽。
    安全帽检测示例
    检测结果:安全帽佩戴状态(“helmet”或“no_helmet”)。

  3. 人体姿态估计
    使用 PoseEstimation.java 对图片中的人体关键点进行识别,适用于动作分析、跌倒检测等场景。
    人体姿态示例
    检测结果:17个关键点坐标及连接线。


视频识别效果

项目支持实时视频流或本地视频文件的识别,以下是部分动态效果展示:

  1. 实时视频流检测
    通过 CameraDetection.java 运行,支持摄像头或RTSP流输入,实时检测视频中的目标。
    实时检测示例
    功能特点:低延迟、高帧率(依赖GPU性能)。

  2. 跳绳计数
    结合姿态估计模型,对视频中的跳绳动作进行计数。
    跳绳计数示例
    功能特点:动态跟踪关键点,统计跳绳次数。

  3. 旋转目标检测
    适用于倾斜或旋转目标的检测,如车牌识别。
    旋转目标示例
    检测结果:目标角度(如车牌倾斜角度)。


效果对比表格

以下为不同模型的识别效果对比:

模型名称适用场景输入类型输出结构示例图片/视频
ObjectDetection_1_25200_n通用目标检测图片/视频[1, 25200, 85]示例
ObjectDetection_n_7高精度目标检测图片/视频[n, 7]示例
PoseEstimation人体姿态估计图片/视频关键点坐标示例

流程图:视频识别流程

以下为视频识别的核心流程: mermaid

通过以上示例和表格,开发者可以快速了解项目的识别能力,并根据实际需求选择合适的模型进行集成。

总结

本文全面讲解了changzengli/yolo-onnx-java项目的环境配置、依赖管理和核心功能实现。从JDK/GPU环境搭建到Maven国内源加速,再到CameraDetection系列文件的实时检测与告警功能,为开发者提供了完整的实践指南。项目支持多种YOLO模型和输入源,结合流程图和效果展示,显著降低了目标检测技术的入门门槛。

【免费下载链接】yolo-onnx-java Java开发视觉智能识别项目 纯java 调用 yolo onnx 模型 AI 视频 识别 支持 yolov5 yolov8 yolov7 yolov9 yolov10,yolov11,paddle ,obb,seg ,detection,包含 预处理 和 后处理 。java 目标检测 目标识别,可集成 rtsp rtmp,车牌识别,人脸识别,跌倒识别,打架识别,车牌识别,人脸识别 等 【免费下载链接】yolo-onnx-java 项目地址: https://gitcode.com/changzengli/yolo-onnx-java

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值