之前完成了yolov5在windows下不加速的torchscript部署(有机会写一下)
现在研究如何进行加速,之前还在纠结用啥加速,onnx,openvino,tensorRT,但看了yolov5官方的这个介绍
所以选择了tensorRT加速。官网提供的这个介绍网址无论如何也打不开
所以在调研了一下下之后,选择了大牛手写的一个工程,先转wts再转engine
为了跟我的yolov5-7.0代码相配合,原码地址
GitHub - ultralytics/yolov5 at v7.0
需要下载以下这个版本的tensorrtx工程
https://github.com/wang-xinyu/tensorrtx/tree/yolov5-v7.0
1.生成.wts文件
下载完成后,将rtx工程yolov5文件夹下的gen_wts.py拷贝到yolov5的根目录下,然后再把想转化的pt文件定位好位置,然后运行:
python gen_wts.py -w yolov5s.pt -o yolov5s.wts
进行wts文件的生成。
2.C++部署
然后我们来操作C++的部分
贴一下我的配置:
win10
cuda11.0,cudnn8.0
tensorRT 8.4.2.4
opencv4.5.4
有两种方法,第一当然我们可以按大神wangxinyu的方法生成一个工程,这个工程功能会很全,但目录、引用文件比较复杂(参考tensorRTX官方说明);第二种方法,直接新建一个C++工程,自己添加相应文件,手动进行配置,虽然配置过程复杂一点,但最终的工程会更简单清晰(参考文献1)
2.1Cmake法部署
注意官方是Linux下的部署,应用windows需要下载cmake,直接官网下载最新版
在此目录下新建build文件夹
用编辑软件打开CmakeLists.txt,修改目录,主要是cuda和tensorRT的目录,opencv能自己find到,很神奇
然后打开cmake_gui,配置目录和config不多说直接贴图
一路configure,finish,generate,open project都没有问题打开后如下图
可见工程比较多了,结构比较复杂,官网的运行方法如下图
在vs里生成后,将yolov5_det设为启动项,再在属性-调试-命令参数中输入-s或-d后的内容即可进行调试,当然如果是自己训练的网络,注意在config文件中更改类别数目
2.2手动制作C++工程
为了避免去cmake一个工程,而是直接攒一个工程,结构会清晰很多,主要内容可以参考文献1,只有在API_EXPORT这一步,可以不在.h中添加,而在C++的属性-预处理中添加,另外我这儿也没有添加NOMINMAX,并没有报错,也没深究,贴一下我的预处理器定义
以上。
文献1:实战教程:win10环境下用TensorRT推理YOLOv5_tensorrtx wang_脆皮茄条的博客-CSDN博客