ubuntu系统下基于TensorRT进行YOLOv8部署C++
一、环境配置
1.nvidia
安装英伟达显卡驱动、cuda、cudnn。可以参考我的博客:
链接: ubuntu开发环境配置(cuda、cudnn、ffmpeg、opencv、darknet-master、TensorRT、python、pytorch、MySql、qt(armv8交叉编译))
链接: 超级详细Ubuntu20.04.5系统下编译安装OpenCV with ffmpeg4.2.7、NVIDIA显卡驱动515、cuda11.5、cudnn8.3.3并编译使用darknet-yolov4
2.opencv
安装opencv。可以参考我的博客:
链接: ubuntu编译安装OpenCV
3.tensorRT
下载配置tensorRT。可以参考我的博客:
链接: ubuntu使用TensorRT配置
二、文件下载
1.TensorRT-Alpha-main.zip
(1)下载
网址:
https://github.com/FeiYull/tensorrt-alpha
(2)修改
解压下载的文件,修改文件:
vim TensorRT-Alpha-main/cmake/common.cmake
将"set(TensorRT_ROOT /root/TensorRT-8.4.2.4)"改为带有自己tensorRT目录的路径,如:“set(TensorRT_ROOT /home/heqingchun/InstallPackage/tensorrt/TensorRT-8.4.3.1)”
2.YOLOv8onnx文件
(1)下载
yolov8n.onnx
链接: yolov8n.onnx
yolov8s.onnx
链接: yolov8s.onnx
yolov8m.onnx
链接: yolov8m.onnx
yolov8l.onnx
链接: yolov8l.onnx
yolov8x6.onnx
链接: yolov8x6.onnx
下载后文件放在这个路径:TensorRT-Alpha-main/data/yolov8"
(2)编译
注:将TensorRT的bin目录添加到环境变量可以直接使用trtexec指令,如果没有添加就需要把绝对路径写上。
cd 你的路径/TensorRT-Alpha-main/data/yolov8
添加了环境变量:
trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
trtexec --onnx=yolov8s.onnx --saveEngine=yolov8s.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
trtexec --onnx=yolov8m.onnx --saveEngine=yolov8m.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
trtexec --onnx=yolov8l.onnx --saveEngine=yolov8l.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
trtexec --onnx=yolov8x.onnx --saveEngine=yolov8x.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
未添加环境变量:
你的路径/TensorRT-8.4.3.1/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
你的路径/TensorRT-8.4.3.1/bin/trtexec --onnx=yolov8s.onnx --saveEngine=yolov8s.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
你的路径/TensorRT-8.4.3.1/bin/trtexec --onnx=yolov8m.onnx --saveEngine=yolov8m.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
你的路径/TensorRT-8.4.3.1/bin/trtexec --onnx=yolov8l.onnx --saveEngine=yolov8l.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
你的路径/TensorRT-8.4.3.1/bin/trtexec --onnx=yolov8x.onnx --saveEngine=yolov8x.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
在当前路径会生成yolov8n.trt、yolov8s.trt、yolov8m.trt、yolov8l.trt、yolov8x.trt、yolov8x6.trt等文件。
三、YOLOv8编译运行
1.编译
cd 你的路径/TensorRT-Alpha-main/yolov8
mkdir build && \
cd build && \
cmake .. && \
make -j12
2.运行
效果图默认保存在路径:TensorRT-Alpha-main/yolov8/build
–show 表示可视化结果
–savePath 表示保存,默认保存在build目录
–savePath=…/ 保存在上一级目录
(1)推理图片
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show --savePath
(2)推理视频
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=8 --video=../../data/people.mp4 --show --savePath=../
(3)在线推理相机视频
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=2 --cam_id=0 --show
四、生成app_yolov8的同时,生成了动态库libyolov8.so,可以在项目中使用。
参考:
链接: linux下 yolov8 tensorrt模型加速部署【实战】