0


【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署

本文全文参考文章为 win10下 yolov8 tensorrt模型加速部署【实战】
本文使用的代码仓库为 TensorRT-Alpha

注:其他 Yolov8 TensorRT 部署项目:YOLOv8 Tensorrt Python/C++部署教程

一、前期准备工作

安装Visual Studio 2019或者Visual Studio 2022、Nvidia驱动
安装cuda,cudnn、opencv、tensorrt并进行相应的环境配置,这里不做配置教程

二、属性表的创建

制作属性表的3个步骤:

  1. 拷贝include路径
  2. 拷贝lib路径,外加设置dll到系统环境变量
  3. 拷贝lib文件名称

打开 VS 2019,创建新项目 Yolov8_TensorRT
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1 创建OpenCV属性表

在这里插入图片描述
如上图将项目设置为

Debug x64

或者

Release x64

模式即可

接着切换到

属性管理器

,这里以

Release x64

为例,右键选择

添加新项目属性表

,命名为

OpenCV_ReleaseX64.props

在这里插入图片描述
在这里插入图片描述
接下来要对属性表进行编辑,双击建好的属性表,主要编辑内容为:

通用属性

->

VC++目录

->

包含目录

库目录

以及

链接器

->

输入

->

附加依赖项

在这里插入图片描述
在这里插入图片描述
首先对

包含目录

进行编辑,这里将 OpenCV 头文件路径拷贝进去,并确定
路径如下:

path/to/opencv/build/include
path/to/opencv/build/include/opencv2

在这里插入图片描述
接下来,对

库目录

进行编辑,将库路径拷贝进去,并确定
路径如下:

path/to/opencv/build/x64/vc15/lib

在这里插入图片描述
然后对

链接器

->

输入

->

附加依赖项

进行编辑,将

opencv_world460.lib

添加进去

只需要文件名,不同版本文件名不一样,我OpenCV版本是4.6.0所以这里是460


该文件本地路径是

opencv/build/x64/vc15/lib/opencv_world460.lib

在这里插入图片描述
最后点击

应用

确定

即可

结束完这个操作后,

Release x64

OpenCV 属性表

就配置完成了

实现

Debug x64

OpenCV 属性表

,只需要将最后

链接器

->

输入

->

附加依赖项

文件名改为

opencv_world460d.lib

,其余操作和上面流程一致

2.2 创建TensorRT属性表

同样在

Release | X64

下右键选择

添加新项目属性表

,命名为

TensorRT_X64.props

OpenCV属性表

类似,需要编辑的内容为:

通用属性

->

VC++目录

->

包含目录

库目录

以及

链接器

->

输入

->

附加依赖项

首先对

包含目录

进行编辑,这里将 TensorRT 头文件路径拷贝进去,头文件路径如下:

path/to/TensorRT-8.4.3.1/include
path/to/TensorRT-8.4.3.1/samples/common
path/to/TensorRT-8.4.3.1/samples/common/windows

在这里插入图片描述
接下来,对

库目录

进行编辑,将库路径拷贝进去
文件路径如下:

path/to/TensorRT-8.4.3.1/lib

在这里插入图片描述

然后对

链接器

->

输入

->

附加依赖项

进行编辑,文件名为:

# 文件目录 path/to/TensorRT-8.4.3.1/lib
nvinfer.lib
nvinfer_plugin.lib
nvonnxparser.lib
nvparsers.lib

在这里插入图片描述

最后,修改

TensorRT属性表

通用属性

->

C/C++

->

预处理器

->

预处理器定义

-> 添加指令:

_CRT_SECURE_NO_WARNINGS

在这里插入图片描述
到此,TensorRT属性表配置完成

2.3 创建CUDA属性表

CUDA属性表直接使用官方的,路径为:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.6.props

这样,所有的属性表就配置完成了

三、YOLOv8 模型部署

3.1 导出训练权重的 onnx 文件

进入YOLOv8的项目中使用以下命令导出 onnx 文件

 yolo export model=weights/Animal/animal.pt format=onnx dynamic=True simplify=True

在这里插入图片描述

3.2 使用 TensorRT 编译 onnx 文件

使用以下命令对onnx文件进行编译

D:/TensorRT-8.4.3.1/bin/trtexec.exe --onnx=./weights/Animal/animal.onnx --saveEngine=./weights/Animal/animal.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640

在这里插入图片描述

3.3 编译运行

先下载

TensorRT-Alpha
git clone https://github.com/FeiYull/TensorRT-Alpha.git

3.3.1设置项目文件

TensorRT-Alpha/yolov8

中选中的文件拷贝到项目的

源文件


在这里插入图片描述

TensorRT-Alpha/utils

中选中的文件拷贝到项目的

头文件


在这里插入图片描述
最后将

TensorRT-8.4.3.1/samples/common

下的

logger.cpp、sampleOptions.cpp

文件拷贝到项目的

资源文件

在这里插入图片描述
接下来设置

生成依赖项

,选择

CUDA 11.6

(若没有,见下文

遇到的问题

中有解决方案)
在这里插入图片描述
在这里插入图片描述
然后设置 NVCC 编译

.cu及其对应头文件

选择下图中框选的文件右键

属性

->

项类型

更改为

CUDA C/C++

,然后点击应用、确定即可

最后,右键

Yolov8_TensorRT

->

属性

->

配置属性

->

高级

->

字符集

,设置为 **

未设置

**
在这里插入图片描述
接着点击

生成

->

生成解决方案

,直到成功
(这里可能会出现问题:

由于找不到 opencv_world460d.dll, 无法执行代码,重新安装程序可能会解决此问题

,见下文

遇到的问题

中有解决方案)
在这里插入图片描述
上述所有步骤都成功完成后,即可设置命令行参数,编译运行啦

3.3.2 编译运行

运行前先修改为自己的

类别数和类别名
类别数

app_yolov8.cpp

中修改

类别名

utils.h

中修改
在这里插入图片描述
在这里插入图片描述
使用如下命令进行图像的推理

--model=E:/Git_Projects/ultralytics/weights/Animal/animal.trt --size=640--batch_size=1--img=E:/Data/Animal/27.jpg  --savePath=E:/Data/Animal/Animal_27 # --show

右键项目 ->

属性

->

属性配置

->

调试

->

命令参数

,将上述命令添加进去
在这里插入图片描述
最后,点击

本地Windows调试器

即可
在这里插入图片描述
命令行推理

# 推理图片./Yolov8_TensorRT.exe --model=path/to/xxx.trt --size=640--batch_size=1--img=path/to/xxx.jpg --show --savePath=path/to/xxx
./Yolov8_TensorRT.exe --model=path/to/xxx.trt --size=640--batch_size=8--img=path/to/xxx.jpg --show --savePath=path/to/xxx

# 推理视频./Yolov8_TensorRT.exe --model=path/to/xxx.trt --size=640--batch_size=8--video=path/to/xxx.mp4 --show --savePath=../# 在线推理相机视频./Yolov8_TensorRT.exe --model=path/to/xxx.trt --size=640--batch_size=2--cam_id=0--show

## 1280# infer camera./Yolov8_TensorRT.exe --model=path/to/xxx.trt --size=1280--batch_size=2--cam_id=0--show

四、推理效果

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

五、可能遇到的问题

5.1 在对项目设置 生成依赖项,未出现 CUDA 版本选项

在这里插入图片描述
解决方法:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\visual_studio_integration\MSBuildExtensions

下的4个文件全部复制到

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations

即可解决问题
在这里插入图片描述
在这里插入图片描述

5.2 由于找不到 opencv_world460d.dll,无法执行代码,重新安装程序可能会解决此问题

解决方法:
将 opencv 安装路径

path/to/opencv/build/x64/vc15/bin

中所有后缀是

.dll

的应用程序扩展复制到

C:/Windows/System32

中,即可解决
在这里插入图片描述

标签: YOLO windows opencv

本文转载自: https://blog.csdn.net/weixin_42166222/article/details/130669596
版权归原作者 MangoloD 所有, 如有侵权,请联系我们删除。

“【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署”的评论:

还没有评论