部署環境:win10 +CUDA 10.0 + vs2017 + opencv 3.4.0
代碼版本是 https://github.com/AlexeyAB/darknet
1、初始准備
(1)下載代碼
(2)確保 VS2017 安裝了 VC++ v140工具集,如果沒有安裝,打開 Visual Studio Installer ——修改——選中 c++ 在右側找到 vc++ v140 如下圖所示
2、修改項目文件
(1)如果環境不是 CUDA10.0 (安裝了CUDA9.0等),文本編輯器打開 darknet.vcxproj 搜索 CUDA 10.0 字樣 ,一共兩處 (CUDA 和 10.0 中間有個空格)將 CUDA 10.0 換成你安裝的 CUDA 版本 例如( CUDA 9.0 )
(2)如果是 CUDA 9.0 ,還需要把 ;compute_75,sm_75 換成 ;compute_70,sm_70
3、項目配置
(1)打開 darknet.sln (沒有 GPU 的 打開 darknet_no_gpu.sln 前面修改也是修改對應無 GPU 的 vcxproj 項目文件 ) ,第一次打開會提示 重新定向項目 這里 windows sdk 選擇 10.0 ,平台工具集選擇 無升級
(2)設置 程序 release X64
(3)右擊 darknet ——屬性
a) 確定平台工具集是 V140
b)設置VC++目錄(包含目錄和庫目錄),分別設置為 OpenCV 的 安裝目錄 中的
C:\opencv\opencv\build\include
C:\opencv\opencv\build\include\opencv
C:\opencv\opencv\build\include\opencv2
和 C:\opencv\opencv\build\x64\vc14
c) 設置鏈接器
鏈接器——輸入——附加依賴項 點開后 直接添加 C:\opencv\opencv\build\x64\vc14 目錄中的 lib 文件的名稱 (這里是 opencv_world340.lib )
d)分別點擊應用和確定
4、開始編譯
(1)darknet項目右擊 生成
(2)將 C:\opencv\opencv\build\x64\vc14 目錄下的 opencv_ffmpeg340_64.dll 和 opencv_world340.dll 復制到 darknet-master\build\darknet\x64 目錄下
(3)幾種編譯報錯的 解決方法
a )MSB8036 The Windows SDK version 8.1 was not found.
解決方法: 這是由於目標版本問題,右擊項目 —— 常規——將目標版本選中有的那個(這里是10.0.17763.0)
b ) MSB4019 未找到導入的項目“***Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 10.0.targets”。請確認 <Import> 聲明中的路徑正確,且磁盤上存在該文件。 darknet \darknet-master\build\darknet\darknet.vcxproj 301
解決方法:將 NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\visual_studio_integration\MSBuildExtensions 文件夾 中的所有文件 復制到 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations 中重新編譯即可
c ) opencv2/core/core.hpp : No such file or directory
解決方法:右擊項目 —— 將配置改成 release 平台改成 x64
5 使用測試
在源碼頁面下載yolov3的 yolov3.weights 也可以自己下載其他權重測試
進入 darknet-master\build\darknet\x64 目錄 打開命令行 輸入 ./darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights -thresh 0.25
然后輸入圖片路徑即可檢測圖片 ( -thresh 0.25 代表檢測閾值,概率高於0.25的畫框)
其他 檢測命令
檢測視頻 ./darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -thresh 0.25 test.MP4
檢測網絡像頭: ./darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -thresh 0.25 相機網絡地址
其他檢測可參照 github 網址