最近在研究yolov4在win10下如何進行編譯,不說廢話了,直接記錄一下我研究的過程以及遇到的錯誤和解決方案,希望能夠幫助大家。
0 環境
系統:win 10
GPU:GTX 2080Ti
CUDA:10.0
cuDNN:7.4.1.5
OpenCV:3.0.0
1 安裝OpenCV
因爲實驗室win系統還沒有安裝OpenCV,所以需要安裝OpenCV。我下載的版本是OpenCV3.0,下載之後將解壓之後的文件放在了D盤,接着就需要將OpenCV的添加到環境變量中了。
(1) 將OpenCV的build目錄添加到環境變量中
這裏我們需要創建一個新的變量名:OPENCV_DIR,它的值就是你解壓之後OpenCV的build文件的路徑
(2) 將OpenCV的bin的目錄添加到環境變量中
在剛開始的時候,我並沒有將這個路徑添加到環境變量中,最後編譯完成之後,運行darknet.exe文件,報瞭如下錯誤
這個錯誤是說系統並沒有找到OpenCV的opencv_world300.dll文件,所以我們需要將環境bin的路徑添加到系統環境變量中,讓系統知道這個文件的位置
點擊Path,然後進行編輯
點擊新建,然後輸入bin的地址
因爲x64文件夾下有兩個子文件,我就將兩個子文件的bin路徑都添加到了環境變量中了
補充:在yolov4的README中,作者還提到一種方法,就是將opencv的bin文件下的下面兩個文件複製到\darknet\build\darknet\x64文件下
這樣有一個缺點就是,每當你編譯的新的程序需要使用opencv的時候,你就需要複製一次,所以我還是直接添加了bin的環境變量了吧。
2 使用visual studio 2015編譯darknet
2.1 問題一
在使用vs2015打開darknet\build\darkent\darknet.sln文件的時候,在vs2015中報如下錯誤:
C:\Users\Administrator\Desktop\darknet\build\darknet\darknet.vcxproj(55,5):
未找到導入的項目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 10.0.props”。
請確認 <Import> 聲明中的路徑正確,且磁盤上存在該文件
報這個錯誤主要有兩個原因:
原因一:BuildCustomizations夾下沒有CUDA 10.0.props這個文件
解決方案:打開你安裝CUDA的文件,參考下面的路徑,將文件下面的所有文件都複製到VS的BuildCustomizations文件夾下,也就是剛纔報錯的那個文件夾下。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\visual_studio_integration\MSBuildExtensions
原因二:BuildCustomizations文件下存放的是你當前系統上的CUDA版本(假如是CUDA 9.0),如果你安裝的不是CUDA 10.0,這樣你就需要修改編譯文件中關於CUDA 10.0的相關內容了,將CUDA 10.0改成CUDA 9.0。我是使用sublime打開darknet.vcxproj文件,然後查到關於CUDA 10.0的信息,然後將其改成你對應的CUDA版本(一共要修改兩處)
第一處:
第二處:
2.2 問題二
在編譯之前,我們需要將VS2015中的Debug改成Release,將Win32改成X64
2.3 問題三
修改之後,你就可以生成exe文件了,具體如下
在生成過程中,又報了一個錯誤:
“waitKeyEx”: 不是“cv”的成員
然後,我就通過錯誤定位到了源文件位置,
將cv::waitKeyEx()函數改成了cv::waitKey()函數。然後重新生成。成功
2.4 問題四
在編譯的過程中又出現了這個錯誤
LINK : fatal error LNK1104: 無法打開文件“opencv_world400d.lib”---VS2017+OpenCV配置過程
我是參考這位老哥的博客
3 測試圖片
打開終端,切換到darknet\build\darknet\x64目錄下,然後運行下面的命令:
darknet.exe detector test data/coco.data cfg/yolov4.cfg backup/yolov4.weights
運行的過程中會打印網絡信息,就像這樣:
最後,需要你輸入你要檢測圖片的路徑:
檢測結果如下:
4 測試視頻
輸入下面的命令就可以對視頻進行測試了:
darknet.exe detector demo data/coco.data cfg/yolov4.cfg backup/yolov4.weights data/demo3.mp4 -ext_output
5 參考博客
[1] yolov4:https://github.com/AlexeyAB/darknet
[2] https://blog.csdn.net/weixin_44285715/article/details/88050563
[3] https://blog.csdn.net/amusi1994/article/details/80261735