环境介绍
Win10
Cuda11.2
Tensorrt8.6
Visual studio2019
Opencv4.8
Cmake3.17.1
需要现在v5+tensorrx的源码
https://github.com/ultralytics/yolov5
https://github.com/wang-xinyu/tensorrtx
这两个版本需要对应一致
我这里运行的都是v5的version7版本。
首先在tensorrtx-yolov5-v7.0\yolov5目录下新建个build文件夹,用于后续编译使用。
然后需要修改CMakeLists里面的配置,一共6个地方,分别是nvidia的Cuda路径,Tensorrt的路径和c++的路径。
然后在网上下载cmake-gui
双击运行打开这个cmake-gui.exe文件即可。
打开后路径配置,第一步填两行路径,上面行是tensorrtx-yolov5-v7.0\yolov5 下面行是
E:\dataset3\tensorrtx-yolov5-v7.0\yolov5\build,填完之后点击generate生成即可,如果环境配置没有问题,就会生成成功。
中途会弹出框让你填Visual Studio的版本,这里我的版本是Visual Studio 2019的版本
之前我安装Visual Studio 2022版本总是报错,具体报错内容已经忘记了。
在安装路径都正确之后,就可以编译成功。
如果遇到No CUDA toolset found这种报错。
需要将nvidia的cuda里的MSBuildExtensions文件夹下的4个文件夹复制
复制到自己Visual Studio安装的路径下的BuildCustomizations里面
然后generate成功。
之后就是打开我们要编译的代码,打开路径E:\dataset3\tensorrtx-yolov5-v7.0
然后对我们要编译的代码进行重新生成即可。
在这之前我们还需要配置Visual里面的环境变量。
首先这里改成Release
在常规-输出目录中配置路径E:\dataset3\tensorrtx-yolov5-v7.0\yolov5\build\Release\
其实路径在CMakeLists配过了,直接重新生成即可。
如果生成过程中报错: “dirent.h”: No such file or directory
说明没有”dirent.h”,则需要搜索本地的dirent.h文件在哪,用everything搜索挺方便的。
找到路径之后在c/c++常规里面的附加包含目录添加dirent.h所在的文件夹路径
最后生成成功即可。
然后回到tensorrtx-yolov5-v7.0\yolov5\build\Release路径下可以看到有yolov5_det.exe文件生成
我们需要把v5源码中生成wts模型。首先把tensorrtx-yolov5-v7.0目录下的yolov5目录下的gen_wts.py和下载的yolov5s.pt拷贝到yolov5-7.0目录下
然后cmd进入yolov5目录位置运行:python gen_wts.py -w best.pt -o best.wts
然后在将生成的best.wts拖到tensorrtx-yolov5-v7.0\yolov5\build\Release文件夹下。
运行命令yolov5_det -s best.wts best.engine s
就能在当前目录生成tensorrt格式的best.engine模型了。
然后我们在输入命令yolov5_det -d yolov5s.engine ./images就可以将当前文件夹下的images文件夹里面的图片进行检测了
如果需要用python运行py代码来处理,需要先生成dll文件。在常规里面选择生成dll动态库。
然后重新生成之后,当前文件夹下就多出来了一个dll文件。
再将tensorrtx-yolov5-v7.0\yolov5目录下的yolov5_det_trt.py拖到build\Release文件夹下即可。
然后修改里面的加载dll和tensorrt模型的路径即可
最后运行python yolov5_det_trt.py和上面.exe运行的结果是一样的。