加速其他项目Tensorrtx使用准备查看算力使用生成WTS模型CMakeVisual Studio 2019C++运行Python部署常见报错解决CMake编译YOLOV5报错:No CUDA toolset foundCould not locate zlibwapi.dll选择zlib123dll.zip版本Could not load library cudnn_cnn_infer64_8.dll.TensorRT was linked against cuDNN 8.4.1 but loaded cuDNN 8.4.0TensorRT was linked against cuBLAS/cuBLAS LT 11.8.0 but loaded cuBLAS/cuBLAS LT 11.6.5Visual Studio2022报错:csc.exe”已退出,代码为 -1073741819
加速
- Tensorrtx:
- Torch2trt:
其他项目
- YOLOV5:
- YOLOVX:
- YOLOV6:
- PPYOLOE :
Tensorrtx使用
准备
- CUDA 11.7
- cuDNN 8.4.1
- TensorRT 8.4.1
- OpenCV 4.6.0
- zlib123dllx64.zip
- CMake 3.24.0
- Visual Studio 2022
查看算力
找到自己对应版本,我的GPU是Quadro RTX 4000,对应算力是7.5
使用
生成WTS模型
将仓库中的gen_wts.py和刚才下载好的yolov5s.pt拷贝至yolov5 6.0的目录下
python gen_wts.py -w yolov5s.pt -o yolov5s.wts
CMake
- 在本仓库目录下新建一个build文件夹
- 打开Cmake,选择本仓库目录,以及新建的build目录,再点击左下方【configure】按钮。
- 选择自己的Visual Studio版本,如2019,第二个框中选择x64,之后点击【finish】
会自动加载CMakeLists.txt,添加库,正常运行如下
- 点击【Generate】
- 点击【Open Project】,会在Visual Studio中打开
Visual Studio 2019
如果需要修改类别
编译
右击yolov5,【生成】
显示已经编译成功
点击
D:\Cumtb_Code\yolo5env\Yolov5_Tensorrt_Win10\build\Release
就有对应生成的文件C++运行
将上面生成的yolo5s.wts文件放在Release路径下,该路径下启动cmd,使用以下命令转换,使用的是s模型,最后则输入s,同理若为m模型,最后一个参数则需要改成m
yolov5 -s yolov5s.wts yolov5.engine s
这个过程需要等待一会儿!好了会生成一个engine文件
将本仓库的pictures文件夹复制到exe文件夹下,尝试预测是否正确,输入:
yolov5 -d yolov5s.engine ./pictures
查看效果图
Python部署
右击项目,点击【属性】,在【常规】中【配置类型】选择dll动态库,在【高级】中【目标文件扩展名】手动输入:
.dll
右键项目,【重新生成】,文件夹下会出现yolov5.dll,将本仓库的python_trt.py
复制到dll文件夹下。
设置模型路径,dll路径和想要预测的图片路径,特别注意模型路径需要加b’'!!
det = Detector(model_path=b"./yolov5s.engine",dll_path="./yolov5.dll") # b'' is needed img = cv2.imread("./pictures/zidane.jpg")
直接运行python_trt.py即可,python预测的最大优势在于支持了numpy格式的图片,极易融合进项目中。
- 报错:FileNotFoundError: Could not find module 'D:\Cumtb_Code\yolo5env\Yolov5_Tensorrt_Win10\build\Release\yolov5.dll' (or one of its dependencies). Try using the full path with constructor syntax.
- 解决方法:python3.8的dll搜索机制变更导致的问题,加载dll时设置参数winmode=0,即第8行修改为self.yolov5 = CDLL(dll_path,winmode=0)。
# 切换到D:\Cumtb_Code\yolo5env\Yolov5_Tensorrt_Win10\build\Release> python python_trt.py
blog.csdn.net
https://blog.csdn.net/weixin_45747759/article/details/124076582?spm=1001.2014.3001.5501
常见报错解决
CMake编译YOLOV5报错:No CUDA toolset found
将
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\extras\visual_studio_integration\MSBuildExtensions
下的四个文件,拷贝到以下路径:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations
,再编译,通过。- 如果是Visual Studio 2022,目录是
C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Microsoft\VC\v170\BuildCustomizations
Could not locate zlibwapi.dll
下载
选择zlib123dll.zip版本
Tips:📢📢📢:这个版本需要选正确,不然仍会报错
Could not load library cudnn_cnn_infer64_8.dll. Error code 193
我在这儿就错了,让我一度花了很长时间调整了CUDA、cuDNN、TensorRT版本🤣- 默认选择的是32位的
- 选择64位的版本
解压文件
- zlibwapi.lib 放在
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib
- zlibwapi.dll 放在
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin
Could not load library cudnn_cnn_infer64_8.dll.
TensorRT was linked against cuDNN 8.4.1 but loaded cuDNN 8.4.0
在安装了zlip之后仍然出现该问题,最有可能是安装的CUDNN版本与电脑支持的CUDNN版本不一致
可在https://developer.nvidia.com/rdp/cudnn-archive重新下载对应的版本。把里面的bin、lib、include文件复制放在cuDNN对应bin、lib、include目录里面。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4
TensorRT was linked against cuBLAS/cuBLAS LT 11.8.0 but loaded cuBLAS/cuBLAS LT 11.6.5
这是因为安装的cuda是11.6.5版本的,里面的cublas不是11.8.0,安装11.8.0版本的cuda就好了,我们可以看一下cuda11.3.1的介绍
我当时安装的是CUDA11.4.4,我又查了一下11.4.4对应的cuBLAS,果然是11.6.5👉,Nvidia更新驱动CUDA,没有更新对应的组件😂,重新安装CUDA11.6.1
Visual Studio2022报错:csc.exe”已退出,代码为 -1073741819
网上查看一圈,没能解决😪,大致是Visual Studio2022编译的是64位
我还是用了Visual Studio2019进行编译,成功。
原来是我的
zlib123dll.zip
我将这个解压放在了Visual Studio2022对应的文件,zlib123dll.zip
这个默认是32位的🙉,我右下载了zlib123dllx64.zip
解压后放在对应位置,Visual Studio2022生成CMake的Visual Studio 2019 版文件也没问题。详细请参考上面的Could not locate zlibwapi.dll报错解决方法。