最近两天在看yolo项目,所以想着把作者的项目copy一下运行看一下效果,谁知道一不小心,陷入坑中无法自拔。真实感叹作者的厉害之处。
同时也记录了自己Windows10+YOLOV3+VisualStudio2017最新版本超详细走坑成功过程。
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不是最新版,其余的配置应该都是最新版本。
如用最新版本的>=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安装地址: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下载安装包需要注册一个账号,过程是免费的。
所以会遇到这两个路径如果设置为同一个的话,安装时会自动删除那个解压缩的Temp所在的文件夹,最后会发现CUDA安装的文件又没了!所以建议默认路径原因就是怕这两个路径设置为同一个了。
打开CMD执行:
nvcc -V
https://opencv.org/opencv-3-4.html
接着只需要将其解压缩,后配置环境变量就行了。
我自己的配置如下:
准备工作已经做好:win10+cuda+cudnn+visualstudio2017community+opencv3.4
使用git clone https://github.com/AlexeyAB/darknet
下载的YOLO原生版本文件应该是这样的:
注意此时先进入x64文件夹下>将opencv3.4中的两个dll文件:opencv_ffmpeg340_64.dll和opencv_world340.dll复制到该文件夹下,不然后面运行会报错找不到dll。
关于该问题,作者也给了说明:
意思是最后会生成一个darknet.exe文件,该文件执行时需要依赖上面两个dll。
至于这两个文件的路径,我自己的是在opencv的安装路径中:
选择以上两个就行(顺便说一下,340后面带有小d的貌似是debug版本;不带d的是release版本)
因为最后需要release版本的所以就只用选上面红框的复制到darknet>×64文件夹下就行。
用visualstudio2017打开darknet.sln文件进行生成darkent.exe文件
结果如下:
前面都成功不出意外的话,在文件夹下多出一个darknet.exe文件就是想要的结果:
在测试效果之前还需要添加以下官网上下载训练好的权重:
#wget命令获取预训练的参数权重或者直接打开链接就能下载。
wget https://pjreddie.com/media/files/yolov3.weights
打开cmd命令提示符,切换到F:\githubCode\projectGit\darknet\build\darknet\x64
即生成的darknet.exe文件所在文件夹下
darknet.exe detector test data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg
大功告成!!!
然后就会看到效果了:
darknet.exe detector demo data\coco.data yolov3.cfg weights\yolov3.weights
darknet.exe detector demo data\coco.data cfg\yolov3.cfg weights\yolov3.weights -c 0
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
-thresh 0.25 -out_filename .\data\test_result.avi
以及我看到在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问题