研究RCNN系列算法,到現在的YOLO和SSD,因爲平臺原因(窮),都嘗試在Window+cpu環境下測試已有模型效果。網上有很多教程,這裏記錄下yolo2的配置過程。
平臺:window+cpu
yolo2代碼:https://github.com/AlexeyAB/darknet
一、下載鏈接裏的yolo2工程,打開darknet-master\build\darknet下的darknet_no_gpu.sln工程,查看工程屬性,作者已經配置好了opencv和pthreads,如下圖,但是opencv的路徑需要自己修改下。附件依賴庫主要是opencv_core249.lib,
opencv_highgui249.lib,opencv_imgproc249.lib三個文件。直到成功編譯工程,會在darknet-master\build\darknet\x64下生成darknet_no_gpu.exe可執行文件。
二、主函數在darknet.c文件裏,如下圖。
要運行起來,需要新建一個cmd文件。參照darknet-master\build\darknet\x64下的darknet_voc.cmd文件新建darknet_no_gpu.cmd文件,因爲是調用上面生成的darknet_no_gpu.exe,所以內容改爲
到這一步還需要一個yolo-voc.weights文件,從官網https://pjreddie.com/darknet/yolo/下載相應的模型參數文件(點擊那個weights下載,只要是yolo2版本的都行),放到darknet-master\build\darknet\x64路徑下。
雙擊運行darknet_no_gpu.cmd,窗口爲
輸入圖像路徑回車即可得結果
三、這樣只能每次跑一張圖像,如果要連續測試可以修改detector.c文件裏的test_detector函數,如果要用到cv空間的一些功能,在文件前面添加using namespace std;using namespace cv;把detector.c改爲detector.cpp,這時注意:因爲yolo都是純c編寫的,darknet.c文件會調用到detector.cpp裏的函數,那邊需要把detector.cpp裏面頭文件包含的部分加上
extern “C”
{
#include “xxx.h”
}
同時,全局函數要在前面聲明並加上extern “C”。如
extern "C" void run_detector(int argc, char **argv);
參考博客:http://blog.csdn.net/qq_14845119/article/details/53589282
-----------------------------------------------------------------------------------------
補充:window+gpu版本也成功運行
打開darknet-master\build\darknet下的darknet.sln工程,然後在工程屬性中進行配置,加入cuda和cudnn(如果不加cudnn,只用GPU,速度並不快,大概一張圖像1s左右)的lib文件和include路徑。我用的是CUDA7.5和cudnn7.5,cudnn有編譯好的庫文件,解壓出來是一個cuda文件夾,裏面有include、lib、dll三個文件夾,把裏面的文件放到CUDA下的對應的include、lib、dll文件夾中,然後設置環境變量那些。一般配置好後就可以跑了。
-----------------------------------------------------------------------------------------
2018年4月20日注:YOLO不斷更新,目前已到YOLOv3,YOLOv2的代碼作者也做了更新,建議根據最新資源進行配置,AlexeyAB一般都會針對作者的改動及時更新工程,且進行優化。windows環境配置方面比較複雜,linux比較簡單,只是需要python和linux基礎,建議學習這兩個知識,有助於深度學習研究開發。