使用TensorRT8.2.5.1版本,TensorRT8.4.3.1和8.5.3.1版本不能用
Cudnn使用8.5.0.96,Opencv使用3.4.0
参考链接
https://blog.csdn.net/yezlin/article/details/127686316
Could not locate zlibwapi.dll
https://blog.csdn.net/Chaos_Happy/article/details/124064428
进行yolov5部署,参照的是下面这个作者
https://blog.csdn.net/wsp_1138886114/article/details/121718501
但是有个坑,这个作者写的东西完整,不知道是我用的不对还是怎么,用的wangxinyu的工程,但是我用了之后都是问题
成功cmake了,但是重新生成的时候报错如下
The -std=c++11 flag is not supported with the configured host compiler
该错误无法解决,尝试更换cuda和cudnn版本,使用cuda11.4+cudnn8.2.0,tensorRT版本不变
安装了cuda11.4之后,在cmake成功之后,对yolov5进行build时仍然报上面那个错误,我仔细研究了一下cmake时候的提示框,认为是系统里面这个cuda11.7没有卸载的原因,进行编译的时候总是优先去调用cuda11.7进行编译。
重新卸载删除cuda11.7的所有东西,然后cmake通过,对项目工程进行build,好家伙通过了,以为终于要成功了,又有幺蛾子,生成engine的时候报错,类似如下:
(Unnamed Layer* 201) [Convolution]:kernel weights has count 32640 but 2688 was expected
有人说要修改类别的数量,但是我又没有训练自己的模型,根本不可能修改这个,最后我猜测是这个作者提供的东西有问题,换了一个yolov5_tensorrt_win10的工程,然后生成新的.wts,再来一次cmake yolov5_V6.0 ,这一次终于成功了,生成engine的时候没问题了(工程来自下面这个作者,本来还有一些cmake时候需要build的注意事项,下面这个作者项目里面提供的cmakelist挺好的,学着改一下路径就好了,该有的文件也全了,千万不要用前面那个作者的东西,天坑!)
https://blog.csdn.net/weixin_45747759/article/details/124076582
里面有些小警告就是版本不太适配,但是我认为问题不大,小版本的不适配而已,也顺利测试了下提供的图片
下面是生成.dll库的方法了,参考这位作者
https://blog.csdn.net/qq_44464101/article/details/128578067
我没有参考前面的,是从生成动态库开始跟着做的,没什么问题。
中间有个无法打开源文件dirent.h,把这个头文件复制过来到新的项目里面就好了
还有一个报错是localtime unsafe的问题,在logging.h文件开头加一句#pragma warning( disable : 4996 ),问题解决,可以顺利调用静态库和动态库了。后续的话就可以上视频了
上一次部署了半天忘记了其实我要的不是检测,而是分割,今天花了一些时间重新弄了一套流程。选用yolov5 v7.0其中的yolov5s-seg模型来完成这个工作。
发现了不少问题,最重要的就是参考别人的办法是先输出成onnx,然后转成engine,本来应该是很简单的,但是我用的torch1.12.0+cuda11.4+tensorrt8.2.xx就是不行,总是报错,报错问题和下面这个链接的博主一样,最终换版本才解决。最终我的环境是torch1.13.0+cuda11.6+tensorrt8.5.xx
实战YOLO V5推演(TensorRT版本 C++)_tensorrt yolov5_weixin_40293999的博客-CSDN博客
得到了engine的输出模型后,可以用C++来推理,用下面这个博主提供的代码,就能够完成推理了