我的相关博客:
《Windows 7+Visual Studio 2015下Cuda 9.0、cuDNN 7.3安装》
在之前实践vs版MTCNN失败后,便继续试一试Yolo。
本机环境:笔记本、GTX970M的GPU、windows 7、VS2015、Cuda 9.0+cuDNN 7.3。
官方github中的README给出的环境要求如下:
both OpenCV 2.x.x and OpenCV <= 3.4.0 (3.4.1 and higher isn't supported)(这里提到3.4.1以上的不行,但还是用3.4.3成功了)
both cuDNN v5-v7
CUDA >= 7.5
Cuda、cuDNN已经有了(安装可以参考《Windows 7+Visual Studio 2015下Cuda 9.0、cuDNN 7.3安装》),系统环境软件版本不符的可参考之前的文章修改VS工程配置文件xxx.vcxproj中的对应项为已有环境配置。
还需要安装opencv、下载darknet。
首先,下载darknet,找到的windows版。
下载后先在vs中生成试试,当然是会失败的,还有很多东西没配置,opencv也没下载。
先下载opencv,我下载的是opencv-3.4.3(版本应该有影响,最后还是测试成功了,大家可以按官方给的要求,安装不超过3.4.0试试),运行安装即可。
配置了包含目录、库目录、附件依赖项(opencv_worldXXXd.lib,XXX根据opencv版本而定,如OpenCV3.4.3则是opencv_world343d.lib)等内容后,再次生成,失败,原因:编译部分opencv中的c源文件(cifar.c、coco.c)时出现了很多error C2054、error C2059、error C2061等语法错误。
网上搜索各种有关语法错误的解决方案基本无果,最后在此项目github中发现有人提过相关问题,有提到可能由于opencv版本影响导致出现大量类似语法错误。其中有用信息不多,最后在回答者SpaceView中找到了有用信息:
Dears, it seems this problem only happens in debug mode, for release mode it is of no problem. I got the same error, still not solved it with opencv3.3.0 (with IDE visual studio 2015) yet.
I found that delete the OPENCV definition from the project properties --> c/c++ --> preprocess --> preporcess definitions (remove the "OPENCV" here), the project will be OK (in debug mode). thus it seems the problem is from opencv versions, need further checking to understand...
while I changed to Opencv3.2.0, Opencv3.0.0, both compiled successfully, for the debug mode.
回答说他在Release模式下build没错,Debug有错,然而我用的就是Release模式。再看后面,提到在vs项目属性中的c/c++项中的预处理器项中将预处理器定义中的OPENCV项删除,即可成功,说是opencv版本问题(怎么得出是版本问题,我不太懂)。
Ok,按以上方案操作,删除OPENCV项,终于生成成功!
最后测试网络,需要网络权值,在README中有给出:
Pre-trained models for different cfg-files can be downloaded from (smaller -> faster & lower quality):
下载一个放在darknet.exe所在目录(..\darknet-master\build\darknet\x64)即可。
执行darknet_yolo_v3.cmd测试运行。
成功~
可以看出效果不错,连只露出一条腿的也给标出来了。
内容、表述如有不当之处,望批评指正。
参考:
https://github.com/AlexeyAB/darknet
https://github.com/AlexeyAB/darknet/issues/233
https://www.cnblogs.com/peacepeacepeace/p/9060229.html