|
基于Java开发的全能视觉智能识别项目 纯java 调用 yolo onnx 模型 AI 视频 识别 支持 yolov5 yolov8 yolov7 yolov9 yolov10,包含 预处理 和 后处理 。java 目标检测 目标识别,可集成 rtsp rtmp
环境- master分支:面向过程写法(便于大家看懂),dp分支:面向对象写法。第一次先运行master分支代码
- 只需要java环境不需要安装其它!JDK大于等于11,不能用1.8。 代码目录不能含有中文!
- maven源记得改为国内源,否则下载依赖需要2天。
- CPU建议i7 12代以上,自己测试可以不用GPU,实际项目必须GPU,尽量3060以上(图片检测无所谓,视频流实时检测必须GPU)
- 本项目相当于最基础工具处理方法,不包含和结合业务逻辑,项目使用时视频流需要多线程,队列等等,需要自己处理。
- 不包含视频流处理以及存储,转发等功能,具体实现搜索关键字:流媒体服务器,rtmp 等等。 思路如下:一个线程拉流,一个或多个线程识别,一个线程推流,一个现成告警,一个共变量存储最新画面防止堆积或者使用多个队列,待识别图像队列,待合成视频队列,告警消息队列等,拉流线程只负责更新最新画面,识别线程只负责识别最新画面,识别后放到队列等待推流线程推流(注意帧率)
看不懂代码也要先运行,直接运行不会报错- 下载代码可直接运行主文件:CameraDetection.java(优先运行),ObjectDetection_1_25200_n.java , ObjectDetection_n_7.java,ObjectDetection_1_n_8400.java 都 可以直接运行不会报错
- CameraDetection.java,是实时视频流识别检测,也可直接运行,三个文件完全独立,不互相依赖,如果有GPU帧率会更高,需要开启调用GPU。images目录下有视频文件也可以改为路径预览视频识别效果,根据视频实时识别demo,其他文件都可以改为实时识别
- 多个主文件是为了支持不用网络结构的模型,即使是onnx模型,输出的结果参数也不一样,目前支持三种结构,下面有讲解
- 可以封装为http controller api接口,也可以结合摄像头实时分析视频流,进行识别后预览和告警
- 支持yolov7 , yolov5和yolov8,paddlepaddle,mindspore后处理稍微改一下也可以支持, 代码中自带的onnx模型仅仅为了演示,准确率非常低,实际应用需要自己训练
- 训练出来的模型成为基础模型,可以用于测试。生产环境的模型需要经过模型压缩,量化,剪枝,蒸馏,才可以使用(当然这不是java开发者的工作)。会提升视频华民啊帧率达到60-120帧左右。
- 视频流检测用小模型,接口图片检测用大模型
- 替换model目录下的onnx模型文件,可以识别检测任何物体(烟火,跌倒,抽烟,安全帽,口罩,人,打架,计数,攀爬,垃圾,开关,状态,分类,农作物,害虫识别,等等),有模型即可
- 模型不是onnx格式怎么办?不要紧张,主流AI框架模型都可以转为onnx格式。怎么转?自己搜!
ONNX
Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移. 是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如Pytorch,TensorFlow,PaddlePaddle,MXNet)可以采用相同格式存储模型数据并交互。
使用GPU前提- 对于图片处理,不是必须使用GPU,处理视频建议使用
- 更新显卡驱动,显卡驱动一定要最新版本
- 安装对应版本的:cuda 和 cudnn,版本需要和自己电脑上的GPU型号对应,和项目无关
- 并测试是否安装成功,一定要测试: nvcc -V
- 版本不要高于:cuda11.8
- 安装环境要有耐心,初学者可能需要2周左右才能安装好,别着急
中文解决方案
以下内容需要积分高于 2 才可浏览
链接: https://pan.baidu.com/s/1drxg17HWDIgu6ftgJjBhPg
提取码下载:
|
|