編譯yolov4 window10

yolo算法系列是非常好用的目標檢測算法,這次yolov4版本的更新,主要是概括了一下改進目標檢測的很多tricks,然後用近乎排列組合的方式,組合試驗了這些tricks,選出一種最優。沒有過多理論,沒有複雜的操作,就是幹,就是效果好!是工程應用人員的福音。之前用yolov3做了一個工業視覺檢測的項目https://blog.csdn.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,也一樣換成自己的版本號)

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

保存退出

2.然後用vs2017打開darknet.sln, 不要升級

將項目改成Release x64。然後需要重定向項目:右鍵項目–>重定向項目

如果是VS2017,需要修改工具集(下載工具集過程見1.1),修改如下:右鍵項目–>屬性

如果安裝vs2017時沒有選擇這個工具,不要緊,退出VS2017。在菜單裏打開Visual Studio Installer.

勾選vc++2015(V140)

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,

拷貝這四個文件到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations,這個是vs2017安裝後的路徑,不然有可能會報如下錯誤:

5.打開darknet.h頭文件看一下里面有沒有紅色下波浪線,沒有就不用做這一步

1.我的include<pthread.h>這句話出錯,找不到該頭文件,解決方法:右鍵項目--》管理NuGet程序包,搜索pthread,然後安裝

2.我的include<cudnn.h>這句話也出錯了,解決方法是(前提是cudnn正確安裝):

屬性裏面加一個包含目錄和庫目錄,路徑是cuda安裝目錄裏面

然後連接器--》輸入,附加依賴項裏面添加cudnn.lib

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

成功!!!!!!!

 

注:編譯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  

  刪除如下圖所示的兩項就可以解決此問題。

或者在darknet.vcxproj這個文件裏修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章