# java_pytorch_onnx_tensorrt_yolov8_vue **Repository Path**: hlx518/java_pytorch_onnx_tensorrt_yolov8_vue ## Basic Information - **Project Name**: java_pytorch_onnx_tensorrt_yolov8_vue - **Description**: 基于SpringBoot+Docker+Cuda+Cudnn+Pythorch+Onnx+Tensorrt+Yolov8+ffmpeg+zlmediakit 的AI算法中台系统,本系统主要实现JAVA调用Python脚本的方式,实现在英伟达GPU上进行yolov8的onnx或tensorrt的推理运算,实现火灾烟雾等视频的识别,并将识别结果通过ffmpeg推流到zlmediakit流媒体服务器。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 103 - **Created**: 2024-07-05 - **Last Updated**: 2024-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java_pytorch_onnx_tensorrt_yolov8_vue 视频算法中台系统 #### 介绍 1.基于SpringBoot+Docker+Cuda+Cudnn+Pythorch+Onnx+Tensorrt+Yolov8+ffmpeg+zlmediakit 的AI算法中台系统,本系统主要实现JAVA调用Python脚本的方式,实现在GPU(Nvidia Tesla T4)上进行yolov8的加速推理运算,实现人、车、火灾烟雾、河道漂浮物、道路裂痕等视频的识别,并将识别结果通过ffmpeg推流到zlmediakit流媒体服务器。使得在web页面上可以同时查看原始视频和实时计算视频,实现实时观察视频的识别情况。 2.项目同时支持基于ONNX的推理运算和基于Tensorrt的加速推理运算2种方式。 3.项目包含前端完整代码和后端完整代码,开箱即用,为JAVA开发者训练、部署、使用AI模型提供了参考。 #### 软件架构 1.系统架构 本AI算法中台系统结合了SpringBoot开发Web项目的优势、Python训练调试AI模型的优势、Shell脚本便于调用Linux服务器资源的优势,将不同语言综合一起协调工作,并将项目运行在Docker容器中以便于运维和管理,让JAVA开发者能够方便训练、部署、使用AI模型。 ![输入图片说明](AI.png) 2.技术栈 开发环境:IDEA、JDK1.8、Maven、Gitlab、Pycharm、Anaconda3 软件架构:Nginx+SpringBoot + Vue + Shell + Python 前端框架:Vue + Nodejs Web框架:SpringBoot Orm框架:MyBatis3 数据库:Mysql、Redis、MongoDB 代码生成: FreeMarker自动生成后端Java代码和前端Vue代码 CPU设备: Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz GPU设备: Nvidia Tesla T4 16G AI模型:Yolov8n 训练环境:Pytorch2.3.0 + Onnxruntime-gpu1.16.1 + Ultralytics8.2.48 推理环境: Cuda11.8 + Cudnn8.6.0 + Tensorrt8.5.1.7 + Onnxruntime-gpu1.16.1 推理加速: Tensorrt8.5.1.7 视频操作:Opencv4.7.0 视频推流: FFmpeg4.2.7 流媒体服务:Zlmediakit 部署环境:Docker + Ubuntu20.04 #### 安装教程 1.安装Zlmediakit流媒体服务器,安装方法参考 https://blog.csdn.net/qq_41369135/article/details/138749808 2.导入Mysql数据库 data/sql/algorithm_center.sql 3.运行后端项目 (1).本地IDEA中运行: 1).修改mysql和mongoDB数据库连接地址 2).直接运行 AlgorithmCenterApplication.main(String[] args)以启动项目 (2).服务器Docker运行: 1).在服务器新建3个目录比如 /home/docker/ai/py_java/algcenter /home/docker/ai/py_java/nvidia /home/docker/ai/py_java/opencv 2).拷贝docker运行的所需文件到服务器 --1.将data/algcenter/下的所有内容拷贝到/home/docker/ai/py_java/algcenter/目录,algcenter下的内容为项目jar包和项目的配置文件 --2.下载英伟达(NVIDIA)相关的文件并保存到/home/docker/ai/py_java/nvidia/ 目录 ①.下载cuda_11.8,下载命令 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run ②.下载cuDNN8.6.0.163,下载地址 https://developer.nvidia.com/rdp/cudnn-archive#a-collapse897-118 ③.下载tensorRT 8.5.1.17,下载地址 https://developer.nvidia.com/tensorrt --3.下载opencv4.7.0并保存到/home/docker/ai/py_java/opencv/目录,下载地址 https://opencv.org/releases/ --4.构建docker镜像 ①.将data/docker/Dockerfile 拷贝到服务器 /home/docker/ai/py_java/ ②.进入到/home/docker/ai/py_java/目录,执行 docker build -t py_java_ai:1.0 . 命令以构建镜像 ③.该镜像包含ubuntu20.04、jdk11、python3.8、pip、opencv、cuda11.8、cudnn8.6.0、TensorRT8.5.1.7、onnxruntime-gpu==1.16.1、pytorch2.3.0、ultralytics8.2.48 3).镜像构建完成后,执行docker run 命令以便运行algcenter docker run --name=algcenter --restart=always --privileged=true \ --gpus all \ -p 8088:8088 \ -v /home/docker/ai/py_java/algcenter/:/data/app \ -v /home/docker/ai/py_java/algcenter/config:/config \ -v /etc/localtime:/etc/localtime \ -d py_java_ai:1.0 /data/app/run.sh 4.运行前端项目 (1).本地VSCODE中运行: 1).安装依赖 npm install 2).修改服务器的访问地址 3).启动项目 npm run dev 4).访问地址 http://ip:8080/login 用户名/密码: admin / 123456 (2).服务器Nginx中运行: 1).nginx的安装 --1.在服务器新建目录 /home/docker/ai/nginx/ --2.将data/nginx/下的所有文件拷贝到服务器 /home/docker/ai/nginx/目录下 --3.执行docker run 命令以便运行nginx-rtmp (该nginx包含flv插件可以作为rtmp流媒体服务器使用) docker run --name=nginx-rtmp --restart=always --privileged=true \ -p 8080:80 -p 1935:1935 \ -v /home/docker/ai/nginx/data:/usr/share/nginx/html/ \ -v /home/docker/ai/nginx/config/nginx.conf:/etc/nginx/nginx.conf \ -v /home/docker/ai/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf\ -v /home/docker/ai/nginx/logs:/var/log/nginx/ \ -v /home/docker/ai/nginx/ssl:/ssl/ \ -d tiangolo/nginx-rtmp:latest 2).打包项目 npm build 3).将打包后新生成的dist文件夹拷贝到Nginx的/home/docker/ai/nginx/data/目录 4).访问地址 http://ip:8080/login 用户名/密码: admin / 123456 使用说明 1.算法中台的使用 (1).前后端代码运行起来后,打开页面 http://ip:8080/login 用户名/密码: admin / 123456 (2).点击"算法模型"即可上传修改删除训练好的AI模型 (3).点击"计算任务"即可查看需要计算的任务,点击启用即可开始进行AI模型的推理运算 (4).点击"告警中心"即可查看模型的告警记录,比如识别到河道有垃圾漂浮物即产生一条告警信息 (5).点击"推送日志"即可查看本平台向其他平台推送的HTTP告警日志记录 (6).点击"客户管理"即可查看需要给哪些客户平台推送告警信息 2.模型的训练 以训练YOLOv8目标检测模型为例: (1).Yolov8 预训练模型下载 https://github.com/ultralytics/ultralytics (2).使用自己的数据集包括训练集、验证集、测试集加载Yolov8预训练模型并训练自己的数据和调优 3.模型的部署 (1).将训练好的best.pt拷贝到容器内部的 /data/app/yolo/tensorrt_infer/YOLOv8-TensorRT-main目录下 (2).进入到/data/app/yolo/tensorrt_infer/YOLOv8-TensorRT-main目录,通过如下命令将 best.pt 转换为 best.onnx模型格式 python3 export-det.py --weights best.pt --iou-thres 0.65 --conf-thres 0.25 --topk 100 --opset 11 --sim --input-shape 1 3 640 640 (3).接着执行如下命令将best.onnx转为tensorrt的引擎文件格式best.engine,以便实现在nvidia gpu上实现推理加速 /gsis_ai/nvidia/TensorRT-8.5.1.7/bin/trtexec --onnx=best.onnx --saveEngine=best.engine --fp16 (4).将转换生成好的best.engine拷贝到/data/app/yolo/tensorrt_infer/目录下 cp best.engine /data/app/yolo/tensorrt_infer/ (5).在算法中台中的修改模型键(modelKey)为刚才生成的引擎文件的文件名best和修改脚本键(shellKey)为yolov8 (6).在计算任务中点击 "新增"选择模型,添加对应的视频地址,然后保存 (7).在任务列表点击"启用"即可加载模型并进行推理 参与贡献 1.黑白条纹 2.QinJ5 3.Zoe 在此特别谢鸣骄姐与Zoe的鼎力支持,感谢您们的一路支持!! 参与讨论 1.欢迎各位朋友参与讨论 github地址: https://github.com/xiaoyeshenger/java_pytorch_tensorrt_yolov8 gitee地址: https://gitee.com/qj-zye/java_pytorch_onnx_tensorrt_yolov8_vue 2.如需详细了解或帮助,可加我微信 ZZ449557260 ![输入图片说明](image.png)