主要是分享我踩过的一些坑,有问题可以留言探讨。
YoloV4 VS2019 Window10+CUDA10.0+CUDNN7.5
Window10系统
我自己是从官网上下载的VS2019社区版本,链接如下:
https://visualstudio.microsoft.com/zh-hans/downloads/
按照基本操作步骤安装即可。
博主笔记本是GTX940m,显卡非常一般,但恰巧也支持CUDA10.0,所以。。。搞之、
这里给小伙伴们说明一下,博主最终没能在笔记本上实现YoloV4模型部署,但配置是成功了的,因为GTX940m显存只有2G,可以运行YoloV3,但是想要运行YoloV4 2G显存貌似不太够,通过模型剪枝蒸馏确实可以压缩,也许2G也是ok的,但缺少那股原汁原味了。
小伙伴们可以通过控制面板中-》NAVIDIA控制面板中-》系统信息-》组件-》NVCUDA.dll 查看自己显卡支持的最高版本,建议还是按照官方进行设定,使用CUDA10.0,具体下载步骤自己在官网找一下,按照步骤进行安装,往上教程很多,此处不赘述。下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
然后是下载CUDNN7.5,下载地址:https://developer.nvidia.com/cudnn
安装的时候建议使用默认路径,后续配置起来不容易乱,当然你要是老鸟就无所谓了。
解压后其实就是几个dll文件,专门神经网络用的,将
替换
中的几个dll,别弄错了哦。
安装成功后,查看一下环境变量中,系统变量是否多了两个:
像我这样就对了。
接下来,我建议小伙伴们像我一下,把这几个环境变量也添加进来:
系统变量Path中再添加这几个:
最后要测试一下CUDA和CUDNN是否安装成功
打开cmd,执行:nvcc -V
出现这个就对了
我建议大家下载官方推荐的3.4.0,其他版本我没有测试过,但听说。。问题挺多。
https://opencv.org/opencv-3-4.html
这是下载地址。按照提示下载就行了。
运行exe(其实是解压),将压缩包解压到相应目录,如: C:\Program Files (x86)\opencv 在系统变量 Path 的末尾添加:C:\Program Files (x86)\opencv\build\x64\vc15\bin
Github相应地址,没有Github账号的赶紧注册,Geeker怎么能没有这个账号、笑了
https://github.com/AlexeyAB/darknet
建议使用Git,clone下来,当然你非要下载Zip压缩包也可以。
将刚才解压的opencv路径下的dll文件拷贝到darknet文件夹相应位置:
D:\opencv\build\x64\vc15\bin的两个dll文件:opencv_ffmpeg340_64.dll和opencv_world340.dll复制到D:\darknet\build\darknet\x64
我的opencv直接加压到D盘了,darknet也放到D盘了,如果你和我一样,按照我上面的那个操作就行了
这是我觉得整个配置过程中最关键的一步,也是坑最多的一步了。
官网其实提供了三种方法:
我还是建议大家使用第三种方法,也就是传统方法,我以前在玩别的框架的时候也使用过CMake,还是挺容易出错的,而且不好定位,虽然方便,但是整个过程不可控,这里还是继续介绍第三种方法:
用VS2019 打开整个路径下的sln文件
右键对darknet.sln进行配置:项目 ->属性注意应选release和x64。
当然在编译这里选项也要改好:
然后接下来的步骤也很关键!
包含路径中添加opencv库目录,像我上图这样。
当然lib文件也要添加进来。
光把路径加进来还不行,lib文件也要input进来,如下:
然后。。。。就可以试着第一次rebuild啦、、祝你成功
然而
一般是会有各种错误的,如果你电脑是CUDA10.2,会报错,此时你打开D:\darknet\build\darknet\darknet.vcxproj这个文件,用记事本或者notepad++ 找到这里:
把这改成10.2,然后最后这里也改成10.2:
当然你如果跟着我过来的,装的是CUDA10.0,就不存在这个问题。但可能会报错,说什么CUDA 10.0.props 找不到啥的。
此时坑来了。。。
建议大家用everything 搜索一下这个文件。
其实在装CUDA10.0的时候有这个文件,找到这个文件的路径文件夹:
我的是在这里:
把这四个文件拷贝到:
一个都不能少哦~~!
然后再编译。。。。。
发现,还是报错!
报这个:
兄弟们,深坑来啦
按照各种教程,删除过
也试着修改过darknet.vcxproj:
始终还是无法成功,老是报这个:
总是报错,说VS2019 这版本不行,2013-2017是可以的。但明明VS2019是可以的,谁能告诉我为什么!!。
说实话,这个深坑国内真不好找到答案,我也是翻看外网。
首先everything搜索一下这个文件:
host_config.h
找到这个目录下的这个文件:
打开,找到这里。
原本应该是1920我记得,直接改成2000
此时这个不支持VS2019的错误就解决啦!
当然,你以为这就解决了?
哎,too young too simple
还是有问题的,首先,会报错这个:
如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS
别急,网上教程还挺多的,这样操作:
a . “C/C++” --> "常规” -->”调试信息格式” 设置为 “C7 兼容(/Z7)”
b. “C/C++” --> "代码生成” -->”启用字符串池” 设置为 “是(/GF)”
c. “链接器” --> "调试” -->”生成调试信息” 设置为 “是(/DEBUG)”
然后还是不行,这是因为我们电脑现在都不是单核,而是多核,重新生成的时候会并行处理,一定要改成单线程编译,这样弄:
在debug中的option中将这个改成1:
是的,真的巨坑!
最终我在VS2019上使用CUDA10.0成功了!
最终,我总结,应该是这样:官方还是推荐我们使用VS2015+CUDA10.0这样配置。
而很多人使用VS2019成功的,他们都是使用了CUDA10.0以上的版本,
接下来我说一下我在解决这个问题之前做的妥协方法:
就是安装桌面VS2015 库。
如下:
打开Visual Studio Installer
点击修改,然后选择单个组件,然后搜索框输入2015,勾选这个VS2015C++生成工具。
然后这里点这个:
然后再编译,很顺利。。。就过了。就这么霸道,你说气不气。
ok啦。编译成功后我们x64目录下就有darknet.exe 这个文件了,之后可以在命令行用一些命令操作完成YoloV4的使用,由于我电脑是2G显存,所以YoloV4用不了,最终我试了试YoloV3 和YoloV3Tiny,都是ok的。
命令行
打开笔记本的摄像头:
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
图片检测:
darknet.exe detect cfg\yolov4.cfg yolov4.weights data\xxx.jpg
还有很多其他功能,可以去看darknet官网
当然在使用之前,自己要弄好.cfg 文件和.weight文件:
后记:
之后我把yoloV4.cfg 文件中图像尺寸从608X608改成576X576 后(必须32倍数),2G显存的笔记本也可以运行YoloV4。有问题大家可以一起交流或加我QQ:695768170