0,目標
本人計算機環境:windows7 64位,安裝了vs2015專業版,python3.5.2,cygwin,opencv3.3,無gpu
希望實現用python調用yolo函數,實現物體檢測。
1,踩過的坑
一開始下載了github上最熱的開源項目https://github.com/pjreddie/darknet
采用cygwin編譯,make后生成了darknet.exe, libdarknet.so和libdarknet.a。
在windows命令行采用darknet.exe,加上參數運行圖片中的物體檢測,一切OK,一切看起來如此美好。
然而,當我運行darknet.py時,始終無法正常運行。
如果在cygwin下運行,就報錯segmentation fault 。
就此問題糾結了一周左右,深刻反省之余在github上偶然發現有個發行版號稱“Windows and Linux version of Darknet Yolo v3 & v2 Neural Networks for object detection”
是上述正統發行版的一個Fork。哈哈,有救了。
2,windows乞丐配置如何編譯EXE和DLL?
從https://github.com/AlexeyAB/darknet網站下載源碼,分別編譯exe和dll文件。
編譯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才能正常加載。
《完》