因為要做小物體檢測,最近想嘗試一下使用yolov3做一下,看看效果怎么樣。
先說一下yolov3的配置吧,歷時3天,坑還是挺多的,我的環境是CUDA10.0 + cudnn7.3 + vs2015 + OpenCV3.2.0。
1、yolov3下載地址:https://github.com/AlexeyAB/darknet
壓縮包解壓后打開 darknet-master\build\darknet 下的darknet.sln,調試設置成Release x64。
這一步其實挺坑的,博主本來用的是vs2017,想來修改一下工具集(v141->v140)就可以了,但是搞來搞去就是打不開這個項目。於是把vs2017卸個干凈 安裝了vs2015,直接就可以打開了(因為這個折騰了一下午,難受= =)
2、下載並配置OpenCV 3.2.0
這個可以直接去opencv的官網下載
配置:(注意要在Release x64模式下修改屬性)
1、將opencv的路徑加入環境變量(這里是我個人存放opencv的路徑)
2、修改darknet項目中的屬性:打開項目屬性頁 -> VC++目錄 -> 包含目錄 ,加入圖上的這些路徑
修改庫目錄
屬性頁->鏈接器->輸入->附加依賴項中添加opencv_world320.lib 至此opencv配置完成。
3、安裝CUDA10.0+cudnn7.3
這一步可以參考https://blog.csdn.net/u013165921/article/details/77891913的文章。
到了這一步其實就可以編譯yolov3程序了。。。
但是事情並沒有這么簡單,運行后報了這些錯誤
然后上網百度,找到了解決方案,只需安裝一下pthreads庫即可 具體步驟https://blog.csdn.net/June_Xixi/article/details/83447954
再次運行,又是一頓報錯。。 我的解決方案:在右鍵項目 -> 屬性 -> 配置屬性 -> VC++目錄->庫目錄
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
在右鍵項目 -> 屬性 -> 配置屬性 ->鏈接器 -> 輸入 -> 附加依賴項添加curand.lib
再次調試 成功編譯
4、測試
在github上下載作者訓練好的模型,網址:https://github.com/AlexeyAB/darknet/blob/master/README.md
下載后放在..\darknet-master\build\darknet\x64下,打開該目錄,雙擊darknet_yolo_v3.cmd會出現以下結果,表明成功編譯。
本人親試,在github上下載的那個darknet.weight文件運行會報錯,打不開那個文件。
這個bug本人已解決,是那個文件有問題,我已經將正確的版本放到我的網盤里,讀者可以自行下載。
鏈接:https://pan.baidu.com/s/1IMJgKbgeax9JeMAQGFRYJA 密碼:tibx
下載完后,和上面一樣放入..\darknet-master\build\darknet\x64中,然后雙擊雙擊darknet_yolo_v3.cmd就能正確的出現以下結果