Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署
一、准备文件
1.yolov5-6.0.zip
官网下载
网址:
https://github.com/ultralytics/yolov5/tree/v6.0
操作:
点击"Code"下的"Download ZIP"
下载得到yolov5-6.0.zip压缩文件
2.tensorrtx-yolov5-v6.0.zip
官网下载
网址:
https://github.com/wang-xinyu/tensorrtx/tree/yolov5-v6.0
操作:
点击"Code"下的"Download ZIP"
下载得到tensorrtx-yolov5-v6.0.zip压缩文件
3.tensorrt_learning-main.zip
官网下载
网址:
https://github.com/Rex-LK/tensorrt_learning
操作:
点击"Code"下的"Download ZIP"
下载得到tensorrt_learning-main.zip压缩文件
4.yolov5s.pt
官网下载
网址:
https://github.com/ultralytics/yolov5/tree/v6.0
向页面查找"YOLOv5s"
YOLOv5n 640 28.4 46.0 45 6.3 0.6 1.9 4.5
YOLOv5s 640 37.2 56.0 98 6.4 0.9 7.2 16.5
YOLOv5m 640 45.2 63.9 224 8.2 1.7 21.2 49.0
YOLOv5l 640 48.8 67.2 430 10.1 2.7 46.5 109.1
YOLOv5x 640 50.7 68.9 766 12.1 4.8 86.7 205.7
YOLOv5n6 1280 34.0 50.7 153 8.1 2.1 3.2 4.6
YOLOv5s6 1280 44.5 63.0 385 8.2 3.6 16.8 12.6
YOLOv5m6 1280 51.0 69.0 887 11.1 6.8 35.7 50.0
YOLOv5l6 1280 53.6 71.6 1784 15.8 10.5 76.8 111.4
操作:
点击"YOLOv5s"即可下载yolov5s.pt文件
5.将文件按以下顺序存放
新建"TensorRT"目录
mkdir TensorRT
二、更新、安装基础依赖
sudo apt update && \
sudo apt upgrade -y && \
sudo apt install -y build-essential cmake
三、安装依赖
1.nvidia驱动、cuda、cudnn、tensorRT
参考我的博客: 『heqingchun-ubuntu系统下安装nvidia显卡驱动3种方法』
参考我的博客: 『heqingchun-ubuntu系统下安装cuda与cudnn』
参考我的博客: 『heqingchun-ubuntu使用TensorRT配置』
2.pytorch
参考我的博客: ubuntu开发环境配置(cuda、cudnn、ffmpeg、opencv、darknet-master、TensorRT、python、pytorch、MySql、qt(armv8交叉编译))
3.requirements.txt
解压下载的“yolov5-6.0.zip”压缩文件,进入目录
unzip yolov5-6.0.zip
cd yolov5-6.0
执行:
pip3 install -r requirements.txt
pip3 install --upgrade python-dateutil
四、开始模型转换
1.yolov5.pt转换为yolov5.wts
将yolov5.pt文件与tensorrtx-yolov5-v6.0/yolov5目录下的gen_wts.py文件放置到yolov5-6.0目录下
cd TensorRT
cp yolov5s.pt tensorrtx-yolov5-v6.0/yolov5/gen_wts.py yolov5-6.0
转换
python3 yolov5-6.0/gen_wts.py --w yolov5-6.0/yolov5s.pt --o yolov5s.wts
在TensorRT目录生成yolov5s.wts文件
2.yolov5s.wts转换为yolov5s.engine
修改cmake文件
cd TensorRT
gedit tensorrtx-yolov5-v6.0/yolov5/CMakeLists.txt
修改tensorrt头文件与库文件目录为当前正确目录
原:
# tensorrt
include_directories(/usr/include/x86_64-linux-gnu/)
link_directories(/usr/lib/x86_64-linux-gnu/)
新:
# tensorrt
include_directories(/home/heqingchun/soft/TensorRT/TensorRT-8.4.3.1/include)
link_directories(/home/heqingchun/soft/TensorRT/TensorRT-8.4.3.1/lib)
新建build目录
mkdir -p tensorrtx-yolov5-v6.0/yolov5/build
进入build目录
cd tensorrtx-yolov5-v6.0/yolov5/build
编译
cmake ..
make -j $(nproc)
在build目录会生成可执行文件,可用于转换模型与推理检测。
转换
./yolov5 -s ../../../yolov5s.wts yolov5s.engine s
等待一会就会发现已经成功转换出yolov5s.engine文件了。
五、推理测试
cd TensorRT/tensorrtx-yolov5-v6.0/yolov5/build/
./yolov5 -d yolov5s.engine ../samples
控制台打印信息:
[11/27/2023-09:37:24] [W] [TRT] CUDA lazy loading is not enabled. Enabling it can significantly reduce device memory usage. See `CUDA_MODULE_LOADING` in https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars
inference time: 3ms
inference time: 3ms
可见推理成功,并生成两张图片"_bus.jpg"与"_zidane.jpg"已画框,时间为3ms。
六、封装后在C++调用
后续更新…