0,目標
本人計算機環境:windows7 64位,安裝了vs2015專業版,python3.5.2,cygwin,opencv3.3,無gpupython
但願實現用python調用yolo函數,實現物體檢測。git
1,踩過的坑
一開始下載了github上最熱的開源項目https://github.com/pjreddie/darknetgithub
採用cygwin編譯,make後生成了darknet.exe, libdarknet.so和libdarknet.a。windows
在windows命令行採用darknet.exe,加上參數運行圖片中的物體檢測,一切OK,一切看起來如此美好。函數
然而,當我運行darknet.py時,始終沒法正常運行。visual-studio
若是在cygwin下運行,就報錯segmentation fault 。測試
就此問題糾結了一週左右,深入檢討之餘在github上偶然發現有個發行版號稱「Windows and Linux version of Darknet Yolo v3 & v2 Neural Networks for object detection」網站
是上述正統發行版的一個Fork。哈哈,有救了。ui
2,windows乞丐配置如何編譯EXE和DLL?
從https://github.com/AlexeyAB/darknet網站下載源碼,分別編譯exe和dll文件。spa
編譯exe。打開darknet_no_gpu.sln,按照其中有opencv,無gpu的配置方法,在vs2015中對一些路徑進行修改,而後編譯,生成exe。測試運行正常!
編譯dll。 打開yolo_cpp_dll_no_gpu.sln,刪除屬性中有關cuda的特性(以符合乞丐版的特性@^@),而後編譯,生成dll。
此處需注意,有可能編譯報錯「沒法運行rc.exe」。此時請參考下文解決:
https://stackoverflow.com/questions/14372706/visual-studio-cant-build-due-to-rc-exe
3,windows乞丐配置也能跑darknet.py?
是的。有了DLL,darknet.py調用庫中的函數都正常了。以下圖所示。
可見,.so文件在windows運行環境下,在python中調用會失敗,必須是.dll文件windows才能正常加載。
《完》