Windows编译运行yolov9-bytetrack-tensorrt(C++)
- 1 基础环境
- 2 编译yolov9-bytetrack-tensorrt
- (1)下载yolov9-bytetrack-tensorrt源码
- (2)修改CMakeLists.txt
- (3)CMake编译
- 3 yolov9模型转换成TensorRT模型
- (1)下载yolov9
- (2)下载预训练模型
- (3)将模型转换成onnx格式
- (4)将onnx模型转换成tensorrt格式
- 4 执行程序
- 参考文章
1 基础环境
TensorRT 8.6
CUDA 11.8
Eigen 3.3
OpenCV 4.8(CUDA 11.8编译)
Visual Studio 2017 C++17编译器
CMake 3.21.4
Windows 10
2 编译yolov9-bytetrack-tensorrt
(1)下载yolov9-bytetrack-tensorrt源码
项目地址spacewalk01/TensorRT-YOLOv9
(2)修改CMakeLists.txt
设置opencv和tensorrt路径。
# Find and include OpenCV
set(OpenCV_DIR "D:/Program Files/opencv/opencv-4.8.0/install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})# Set TensorRT path if not set in environment variables
set(TENSORRT_DIR "D:/Librarys/TensorRT-8.6.1.6")
(3)CMake编译
使用VS2017编译器C++17,CUDA用v11.8。
注意:cuda默认会找环境变量中CUDA_PATH对应的版本,如果opencv是cuda编译的,该cuda版本要一致,避免出错。
3 yolov9模型转换成TensorRT模型
(1)下载yolov9
创建conda环境,下载yolov9代码,并执行以下命令,详细参考前文yolov9训练自己的数据。
$ git clone https://github.com/WongKinYiu/yolov9.git
$ cd yolov9
$ conda create --name yolov9 python=3.8
$ pip install -r requirement.txt
(2)下载预训练模型
yolov9-c.pt
(3)将模型转换成onnx格式
a. 将TensorRT-YOLOv9目录下的 reparameterize.py
放到yolov9目录下,在yolov9目录下执行以下命令,也可以直接官网下载转换好的模型yolov9-c-converted.pt。
python reparameterize.py yolov9-c.pt yolov9-c-converted.pt
b. 导出onnx模型,在yolov9目录下执行以下命令,生成yolov9-c-converted.onnx
python export.py --weights yolov9-c-converted.pt --include onnx
(4)将onnx模型转换成tensorrt格式
在D:\Librarys\TensorRT-8.6.1.6\bin
目录下执行以下命令:
trtexec.exe --onnx=yolov9-c-converted.onnx --explicitBatch --saveEngine=yolov9-c.engine --fp16
4 执行程序
显卡GTX1080,推理时间约40ms。
显卡GTX3090,推理时间约14ms。
参考文章
spacewalk01/TensorRT-YOLOv9