Windows10+YOLOV3+VisualStudio2017最新版本超详细过程

版权声明:本文为博主原创文章,转载时须注明出处 https://blog.csdn.net/KID_yuan/article/details/88380269

最近两天在看yolo项目,所以想着把作者的项目copy一下运行看一下效果,谁知道一不小心,陷入坑中无法自拔。真实感叹作者的厉害之处。
同时也记录了自己Windows10+YOLOV3+VisualStudio2017最新版本超详细走坑成功过程。

YOLO项目官网:

https://pjreddie.com/darknet/
YOLO检测darknet安装教程
https://pjreddie.com/darknet/install/
作者完整项目:
https://github.com/AlexeyAB/darknet

首先先总结一下我踩过的坑:

1,官网上的安装教程入门是在Linux and Mac ,所以windows的用户还要自己编译,作者在github上也给出了具体的步骤,但是自己弄的时候还是感觉Error漫天飞。
作者说了:
在这里插入图片描述
2,VMware虚拟机安装Ubuntu貌似行不通,如果是CPU版本的话,我试过是可以,但是GPU版本就不行了,我查了一下因为虚拟机的显卡驱动都是虚拟的,不能直接调用自己主机电脑的硬件,所以就放弃了。

3,ubuntu的cpu版本比较简单,按照说明步骤执行就行了
作者项目地址:https://github.com/pjreddie/darknet
终端命令执行:

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

接着下载训练好的权重

#wget命令获取预训练的参数权重
wget https://pjreddie.com/media/files/yolov3.weights
#可能有点大,大概200多MB
#当前文件下直接执行
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

然后就能看见效果图了。至于GPU版本由于是虚拟机没法用,所以就选择了windows。

3,windows10下编译遇到好多问题,主要详细记录一下:

本人电脑配置与环境:
①Windows10
②VisualStudio2017community
③Opencv3.4版本
④cuda10.1version
⑤cudnn-10.1-windows10-x64-v7.5.0.56
除了opencv不是最新版,其余的配置应该都是最新版本。

  • 注意电脑的NVIDIA显卡驱动要和cuda版本一致,最好都是最新版,不然到最后执行检测会的时候错误(CUDA:ERROR)。
  • 至于为什么不要用最新版本的opencv,首先在作者的github项目中有说明书:

如用最新版本的>=opencv4.0会造成许多问题,我当时就遇到了作者说的:

因为遇到的BUG问题太多,不过基本上都形似:
①错误 MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\nvcc.exe” -gencode=arch=compute_30,code=“sm_30,compute_30” -gencode=arch=compute_75,code=“sm_75,compute_75” --use-local-env -ccbin “E:\VisualStudio\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64” -x cu -IC:\opencv_3.0\opencv\build\include -I…\include -I…\3rdparty\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" -I\include -I\include -I"F:\githubCode\projectGit\vcpkg\installed\x64-windows\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" --keep-dir x64\Release -maxrregcount=0 --machine 64 --compile -cudart static -DCUDNN_HALF -DOPENCV -DCUDNN -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DNDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Fdx64\Release\vc141.pdb /FS /Zi /MD " -o x64\Release\convolutional_kernels.cu.obj “F:\githubCode\projectGit\darknet\src\convolutional_kernels.cu””已退出,返回代码为 2。 darknet E:\VisualStudio\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets 757
这里我后面把opencv4.0换成了opencv3.4,然后核对了cuda和opencv3.4等文件的系统环境变量和darknet.sln工程解决方案配置文件中的路径一致之后,再重新按照系统环境变量中的路径配置一遍。

②错误 C1083 无法打开包括文件: “opencv2/highgui/highgui_c.h”: No such file or directory darknet f:\githubcode\projectgit\darknet\src\image.h 11
诸如类似的这个错误一般是需要检查一下自己其实就是工程项目属性设置文件的路径,我的这个是opencv2/highgui/highgui_c.h的路径错误,这里我发现我在工程属性文件darknet.vcxproj以notepad++中文本形式打开,然后将对应的一些版本号与路径设置完毕即可;实际上经过我查阅一番发现这个darknet.vcxproj,opencv的环境路径和其他一些版本更改之类的,直接为darknet.sln解决方案在VisualStudio中设置对应的信息就行,具体整个配置流程我每一步争取都记录下来。


下面是我的详细安装过程:

一,为电脑安装最新版本的cuda和cudnn

cuda安装地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
cudnn安装地址:https://developer.nvidia.com/cudnn

其中cudnn下载安装包需要注册一个账号,过程是免费的。

两个文件下载完成之后是这样的:
在这里插入图片描述

1,将cuda运行安装,建议默认路径,因为我试过自己修改路径,最后遇到了两个问题:
  • ①临时解压路径:
    在这里插入图片描述

  • ②安装路径:

所以会遇到这两个路径如果设置为同一个的话,安装时会自动删除那个解压缩的Temp所在的文件夹,最后会发现CUDA安装的文件又没了!所以建议默认路径原因就是怕这两个路径设置为同一个了。

2,对于cudnn直接将其解开压缩包,然后需要将以下bin,include,lib文件复制粘贴到cuda的文件夹下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1:

在这里插入图片描述

3,配置cuda的环境变量

在这里插入图片描述

4,最后测试cuda是否配置成功:

打开CMD执行:

nvcc -V

即可看到cuda的信息
在这里插入图片描述

二,如果电脑opencv不是opencv3.4之前的版本,可以在opencv3.4链接下载:

https://opencv.org/opencv-3-4.html
接着只需要将其解压缩,后配置环境变量就行了。
我自己的配置如下:
在这里插入图片描述

三,对YOLOV3中的darknet项目文件进行编译

准备工作已经做好:win10+cuda+cudnn+visualstudio2017community+opencv3.4

1,首先cd到你的项目想保存的文件路径后:

使用git clone https://github.com/AlexeyAB/darknet
下载的YOLO原生版本文件应该是这样的:

2,进入build>darknet文件中,主要有用的文件

注意此时先进入x64文件夹下>将opencv3.4中的两个dll文件:opencv_ffmpeg340_64.dll和opencv_world340.dll复制到该文件夹下,不然后面运行会报错找不到dll。
在这里插入图片描述
关于该问题,作者也给了说明:
在这里插入图片描述意思是最后会生成一个darknet.exe文件,该文件执行时需要依赖上面两个dll。
至于这两个文件的路径,我自己的是在opencv的安装路径中:
在这里插入图片描述
选择以上两个就行(顺便说一下,340后面带有小d的貌似是debug版本;不带d的是release版本)
因为最后需要release版本的所以就只用选上面红框的复制到darknet>×64文件夹下就行。

3,来到最关键的一步了,前面工作一个都不能少,否则这接下来会BUG和ERROR漫天飞。

用visualstudio2017打开darknet.sln文件进行生成darkent.exe文件

①右键对darknet.sln进行配置,注意上面应选为release和x64。
接下来一共几个关键步骤:
1:注意Windows SDK版本,平台工具集选择自己的VisualStudio2017
  • 注意:如果后面报错说请选择对应的VisualStudio2015版本,这里需要去darknet.vcxproj中用文本形式打开,并将红框中的内容都替换为v141即可(我的是已经替换过了):
2,修改包含目录和库目录,即添加opencv3.4的包含目录和库目录(按照自己的opencv3.4的路径来进行添加):

在这里插入图片描述

3,附加依赖项
4,最后已经完成对任务的配置,右键生成或者重新生成就行了。

结果如下:

前面都成功不出意外的话,在文件夹下多出一个darknet.exe文件就是想要的结果:

在测试效果之前还需要添加以下官网上下载训练好的权重:

#wget命令获取预训练的参数权重或者直接打开链接就能下载。
wget https://pjreddie.com/media/files/yolov3.weights

这里我把它放在了一个起名为weights的文件下面:
在这里插入图片描述
在这里插入图片描述

5,最后的最后,执行命令查看效果:

打开cmd命令提示符,切换到F:\githubCode\projectGit\darknet\build\darknet\x64
即生成的darknet.exe文件所在文件夹下
执行命令(一句话):
即利用darknet.exe执行检测效果,加载权重之后,对.\data\文件夹下的dog.jpg进行检测

darknet.exe detector test data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg

大功告成!!!

然后就会看到效果了:

对于GPU版本的视频和摄像头类检测效果还没来得及进行试验,有待后续进行。

以及我看到在YOLO的GitHub说明中作者给出了利用微软的lib安装工具vcpkg对YOLO编译的教程,试了以下以后也遇到了许多问题,有待后续研究。
在这里插入图片描述

参考博客:
YOLO配置:https://blog.csdn.net/amusi1994/article/details/80261735
YOLOV3配置opencv:https://blog.csdn.net/leonary_jy/article/details/80293205
解决VC运行opencv后提示缺少opencv_world310d.dll问题

猜你喜欢

转载自blog.csdn.net/KID_yuan/article/details/88380269