yolov8-dnn部署踩坑记录
1.搭建yolov8运行环境
从github上下载yolov8代码后,使用pycharm打开yolov8文件夹,根据文件夹下requirement.txt安装对应的环境依赖即可。
2.转换模型
要将yolov8进行dnn部署首先得将pt模型转换成onnx模型,yolov8自带转换代码。
坑1:转换onnx模型时出错(具体什么错误忘记了),百度了一堆资料发现是pytorch版本太低,我的环境原始版本是pytorch1.7,后面我升级到pytorch1.9,转换成功了。
3.c++部署
在yolov8文件夹下有dnn部署的c++代码,如下图:

我是使用vs2019新建了一个工程将代码转移过去的,之后就是配置vs2019的环境了,主要是配置opencv。
坑2:一开始我使用的是opencv4.6,程序加载模型时会中断,加载不了onnx模型。查询一些资料发现,必须要使用opencv4.6以上的版本才行,不过也有网友说使用的4.8不行,所以我重新编译了opencv4.7.
4.编译opencv4.7
本人原始环境:Cmake3.25+vs2019
在使用cmak编译opencv4.7和opencv-contribute4.7时,搜索world、nonfree这两个进行勾选,搜索extra将opencv-contribute4.7中modules的路径填进去,搜索test、java、python这三项取消相关勾选,按照正常的编译流程将会编译通过。
坑3:此处不知道为啥我必须要取消勾选LAPACK才能编译通过。
编译通过后使用vs2019打开工程,首先要重新生成ALL_BUILD,生成后再重新生成INSTALL,之后在你的build文件夹下的install文件夹下即是你所需要的编译后的opencv4.7.

坑4:生成时此处会报很多错,比如:error C4430: 缺少类型说明符 - 假定为 int。还有:LINK:fatal error LNK1104:无法打开文件”..\..\lib\Debug\opencv_world470d.lib。此处我查询了很多资料。
1.比如根据报错的文件在Cmake编译的时候取消某些模块的勾选,我取消了jpeg和tiff模块的相关勾选,编译出来后的opencv4.7连图像都不能加载,所以这个方法是错误的。
2.更换Cmake版本,我使用Cmake3.24再原来的文件夹下进行编译,再使用vs2019重新生成,结果还是报错。
最后,我将原来的所有文件夹包括build文件夹进行删除,再使用Cmake3.24重新进行编译,使用vs2019重新生成,一次就通过了!!!并配置到yolov8-dnn代码中,检测成功!!!
更多推荐
所有评论(0)