TensorRT推理YOLOv5
一、查看cuda和cudnn的安装版本
1.1 查看cuda的版本信息
nvcc --version
# 输出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Thu_Jun_11_22:26:48_Pacific_Daylight_Time_2020
Cuda compilation tools, release 11.0, V11.0.194
Build cuda_11.0_bu.relgpu_drvr445TC445_37.28540450_0
1.2 查看cudnn的版本信息
导航到cudnn的安装目录,其通常安装在cuda的安装目录下(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y,其中X.Y是cuda的版本号),然后在include目录的cudnn_version.h头文件中能看到cudnn的版本信息,如下所示:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 5
二、TensorRT下载安装
2.1 下载
选择对应cuda的版本进行下载--->官方下载地址
2.2 安装
解压后将bin、include和lib目录放到环境变量就安装完成了。
为了验证TensorRT是否安装成功,右键打开samples/sampleMNIST中的工程,切换到Release模式生成可执行程序
切换到bin目录下,在cmd中执行sample_mnist.exe(或者直接在VS中执行)。
可能会出现这样的error。
上述错误的原因在于找不到对应的pgm格式的文件,这时可通过执行data/mnist目录下的download_pgms.py文件下载。
此时在运行sample_mnist.exe成功即证明TensorRT安装成功。
三、推理YOLOv5
3.1 tensorrtx下载
拟使用王鑫宇大神的tensorrtx进行推理,代码下载路径为 GitHub下载链接。
3.2 yolov5s.wts 生成
进入tensorrtx\yolov5文件夹中,将gen_wts.py文件复制到YOLOv5项目(yolov5-6.0)文件夹中,然后指定权重文件即可将pt文件转化为wts格式。
python gen_wts.py -w yolov5s.pt
3.3 tensorrtx编译运行
3.3.1 vs中新建一个空项目,且选择Release+x64这个组合。
3.3.2 将tensorrtx\yolov5文件夹下所有的.cpp文件(包含cu文件)和.h文件加入进工程。
3.3.3 添加头文件和库文件
1)头文件
2)库文件
附加依赖项的内容添加如下,其中opencv的版本需要修改。
nvinfer.lib
nvinfer_plugin.lib
cudart.lib
cudadevrt.lib
cudart_static.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
opencv_world440.lib
3.3.4 遇到的问题及解决
1)LNK2001错误
解决方式:
项目右键--->生成依赖项--->生成自定义
将cu文件的项类型配置为CUDA C/C++
2)cannot define dllimport entity
解决方法:
在C/C++--->预处理器--->预处理器定义中添加宏。
API_EXPORTS
<different options>
3)C3928与C2589错误
解决方法:
在C/C++--->预处理器--->预处理器定义中添加宏。
_CRT_SECURE_NO_WARNINGS
NOMINMAX
至此,tensorrtx应该可以正常编译成功。
3.4 tensorrtx加速命令
3.4.1 将wts文件拷贝到可执行程序目录下
3.4.2 生成engine文件
yolov5Infer.exe -s yolov5s.wts yolov5s.engine s
# -s 指序列化命令行参数
# s 表示yolov5模型的类型 s n l
整个过程时间较长,约为13分钟。
3.4.3 推理运行
yolov5.exe -d yolov5s.engine ./samples
# -d 表示反序列化命令行参数
# ./samples指待推理的文件目录
第一张会牵涉到engine文件的反序列化过程,所以时间会稍微久一点。
推理结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-09-17 论文阅读笔记---ShuffleNet V1
2019-09-17 如何做好计算机视觉的研究?