pc 端 TensorRT API 实现 YOLOv11 的 C++ 小白部署经验
标题1 模型转化
python
先下载项目
https://github.com/ultralytics/ultralytics
同时下载模型
https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt
pythonconda虚拟环境,主要是以下三个,其余缺什么直接pip
anaconda3+python3.8
torch==1.9.0+cu111
ultralytics==8.3.3
环境搭建好,要转换模型,使用 ultralytics/engine/exporter.py 脚本或者在命令行直接输入
yolo export model=yolo11n.pt format=onnx dynamic=False opset=12
得到onnx模型。
2 c++ 编译安装所需环境。
注意 先装vs2019 在安装CUDA
vs2019
cmake==3.24.3
cuda11.7.1+cudnn8.8.0
Tensorrt==8.6.1.6
opencv==4.8.0
以上全部需要装到pc端,需要去官网自行下载,且全部需要设置环境变量。
CMake下载
链接:Download CMake, 安装时选中红款中选项即可自动加入环境变量。
cuda11.7.1+cudnn8.8.0 安装
vs2019安装完要重启电脑,CUDA安装完也要重启电脑
CUDA安装及环境配置——最新详细版-CSDN博客
Tensorrt==8.6.1.6 安装
win系统安装tensorRT-8.6.1_tensorrt 8.6 下载-CSDN博客
不过配置完成后,记得将tensorRT目录下的 bin目录加到系统环境变量里。
opencv==4.8.0 安装
[C++] 详细教程 - opencv4.8.0安装和验证测试 (Windows + Linux)_ubuntu安装opencv-CSDN博客
同样 opencv安装完成后,需要将以下两个路径加入系统环境变量
3 编译C++代码和模型
yolov11 c++项目地址
spacewalk01/yolov11-tensorrt :使用 TensorRT API 实现 YOLOv11 的 C++
用vs2019打开此项目
首先我们修改CMakeLists.txt文件,将源码里面opencv路径和tensorrt路径修改成自己路径
# Find and include OpenCV
set(OpenCV_DIR "D:\\lufiles\\opencv480\\build\\x64\\vc16\\lib")
# Set TensorRT path if not set in environment variables
set(TENSORRT_DIR "D:\\lufiles\\TensorRT-8.6.1.6")
然后打开项目文件夹,在红线框处 输入cmd,
然后依次输入
mkdir build
cd build
cmake ..
之后去build文件夹找到sln文件用vs打开它
然后选择x64 release,并选中ALL_BUILD右键单击选择生成
之后build\Release文件夹下面有个yolov11-tensorrt.exe生成。
之后我们开始转换onnx模型到tensorrt模型,打开文件目录
同样在顶部导航栏里输入cmd,然后执行命令
trtexec --onnx=yolo11n.onnx --saveEngine=yolov10n.engine --fp16
稍等10多分钟后会自动生成yolo11n.engine文件,我们将yolo11n.engine复制到build\Release文件
一切准备好后,可以在准备一张图片,测试是否编译成功
4 测试
第一种,进入文件目录,顶部导航栏输入cmd
然后执行命令
yolov11-tensorrt.exe yolo11n.engine "test.jpg"
成功后,程序会show,yolov11预测的结果和保存一张结果图,保存地址和原图一样。
第二种方式,在vs2019里打开整个项目,并找到Release目录并右键,在终端打开,
在终端输入命令 ./yolov11-tensorrt.exe yolo11n.engine "test.jpg"
结果同上。