darknet(https://github.com/pjreddie/darknet)實現了YOLO網絡模型,能快速准確識別多達9000種物體。但其在windows系統上的安裝卻並非一帆風順,本文進行總結,以免掉坑。
1,操作系統環境
Windows7 64位操作系統,無gpu
2,下載darknet
在網站https://github.com/pjreddie/darknet上,點擊“clone or download”,然后選擇“download ZIP”,下載為文件darknet-master.zip。解壓到“F:\test\git-src\darknet-master”目錄。
3,下載安裝Cygwin
參照以下文章“windows 安裝cygwin教程”進行安裝。
https://blog.csdn.net/chunleixiahe/article/details/55666792
重點:
² 尋找映像文件時,要選擇國內快速站點。比如下文推薦的sohu鏡像(http://mirrors.sohu.com/cygwin/)。筆者就是采用它,安裝非常快速。
https://blog.csdn.net/u011393033/article/details/51766876
² 選擇組件時,要加上devel目錄下的make組件,否則無法執行make命令。
² 記得添加windows環境變量,最好將cygwin\bin放到path開頭。
4,編譯darknet
進入Cygwin64 Terminal,目錄轉移到F:\test\git-src\darknet-master,然后執行make。
結束后,會產生darknet.exe、libdarknet.a、libdarknet.so文件。
注意:
² 編譯darknet源碼不能采用mingw,要采用cygwin。筆者首先安裝的是mingw組件包,結果在編譯時出現大量頭文件不存心的錯誤。
² 執行make前要先刪除已存在的obj目錄。由於筆者曾經采用過mingw進行編譯,雖然失敗未生成libdarknet.so文件,但obj目錄下生成不少.o目標文件,此時如果直接用cygwin執行make,會出現大量莫名錯誤。如“對‘_XXX’未定義的引用”、/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: i386 架構於輸入文件 libdarknet.a(shortcut_layer.o) 與 i386:x86-64 輸出不兼容
² Examples\Go.c 文件需要修改,要加上“#include <sys/select.h>”,否則編譯出錯
5,使用darknet
Darknet的使用可參考如下官方網址:https://pjreddie.com/darknet/
筆者測試的是最新的yolo V3模型,具體參見:
https://pjreddie.com/darknet/yolo/
輸入如下命令:
darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
其中“dog.jpg”如下圖所示。YoloV3雖然花費時間28秒久了點,但對圖中的自行車、狗和卡車實現了完美識別。
打開生成的predictions.png文件如下,至此Yolo在windows上的應用取得成功。