编译yolov4 window10

yolo算法系列是非常好用的目标检测算法,这次yolov4版本的更新,主要是概括了一下改进目标检测的很多tricks,然后用近乎排列组合的方式,组合试验了这些tricks,选出一种最优。没有过多理论,没有复杂的操作,就是干,就是效果好!是工程应用人员的福音。之前用yolov3做了一个工业视觉检测的项目https://blog.****.net/sinat_41852207/article/details/103025737,效果已经非常好了,期待yolov4!

windows编译yolov4方法参考 https://github.com/AlexeyAB/darknet中的README文件,有好几种方法,我用的方法是直接在vs中编译的,不需要使用cmake。具体过程如下:

 

时间:2020.4.25

环境

windows10

 cuda8.0   cudnn5.1(官方建议cuda10和cudnn7以上,我用cuda8.0和cudnn5.1也可以使用)

vs2017(实际是在vs2017中使用vs2015版本编译器 V140)

opencv3.3

这些提前准备好

一。下载

1.下载最新的darknet-master

 

百度云:https://pan.baidu.com/s/1hEB0JS48Ax85Gnd6IL3new
提取码:rk07

 

2.yolov4.weights:  https://pan.baidu.com/s/1ZNK7FbqC2TlVKukQFqGYSw       g0ju(训练好的模型)

二。在vs中编译yolov4

1.进入D:\software_engineer\darknet\darknet\build\darknet文件夹,打开darknet.vcxproj,把CUDA 10.0" 换成CUDA 8.0(8.0是我的cuda版本,换成自己的即可),(有的人里面不是CUDA 10.0,是CUDA9.1,也一样换成自己的版本号)

编译yolov4 window10

如果你的vs版本是vs2013,则要把下图中的14.0改成12.0, V140改成V120

编译yolov4 window10

编译yolov4 window10

保存退出

2.然后用vs2017打开darknet.sln, 不要升级

编译yolov4 window10

将项目改成Release x64。然后需要重定向项目:右键项目–>重定向项目

如果是VS2017,需要修改工具集(下载工具集过程见1.1),修改如下:右键项目–>属性

编译yolov4 window10

如果安装vs2017时没有选择这个工具,不要紧,退出VS2017。在菜单里打开Visual Studio Installer.

编译yolov4 window10

勾选vc++2015(V140)

编译yolov4 window10

3.在属性表中配置opencv

4. 拷贝CUDA 8.0.props 等文件

CUDA 8.0.props 等文件就在cuda的安装目录下,cuda默认路径是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\visual_studio_integration\MSBuildExtensions,

编译yolov4 window10

拷贝这四个文件到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations,这个是vs2017安装后的路径,不然有可能会报如下错误:

编译yolov4 window10

5.打开darknet.h头文件看一下里面有没有红色下波浪线,没有就不用做这一步

1.我的include<pthread.h>这句话出错,找不到该头文件,解决方法:右键项目--》管理NuGet程序包,搜索pthread,然后安装

2.我的include<cudnn.h>这句话也出错了,解决方法是(前提是cudnn正确安装):

属性里面加一个包含目录和库目录,路径是cuda安装目录里面

编译yolov4 window10

然后连接器--》输入,附加依赖项里面添加cudnn.lib

编译yolov4 window10

6.build项目,会有两千多个警告,不用管。build成功之后在工程目录下×64下多了些darknet.exe等文件,

然后把之前下载的yolov4.weights文件放到darknet.exe同文件夹里

三。测试

然后进入darknet-master\build\darknet\x64\文件夹,进入cmd或者powershell界面,然后输入darknet.exe detector test data/coco.data cfg/yolov4.cfg yolov4.weights -i 0 -thresh 0.25 dog.jpg

编译yolov4 window10

成功!!!!!!!

 

注:编译darknet时可能会遇到如下报错

 错误    MSB3721    The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\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 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu  -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"     --keep-dir x64\Release -maxrregcount=0  --machine 64 --compile -cudart static     -DOPENCV -DCUDNN_HALF -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\vc140.pdb /FS /Zi  /MD " -o x64\Release\activation_kernels.cu.obj "G:\daek\darknet-master\src\activation_kernels.cu"" exited with code 1.    darknet    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets    712  

  删除如下图所示的两项就可以解决此问题。

编译yolov4 window10

或者在darknet.vcxproj这个文件里修改

编译yolov4 window10