研究深度學習數月,從普通的cnn(mnist、cifar10),到高階的fast rcnn、faster rcnn,到現在的yolo、yolo2,被ai界大神們的思維能力深深折服。
如下是是yolov2在windows下的配置方法,記錄下來,初衷是幫助準備進入ml大門的新人少走一些彎路。
本文主要包括環境搭建、編譯、測試、自己訓練模型四個部分。
1. 環境
yolo**:
windows ms visual studio 2015 (v140):(or offline iso image)
cuda 8.0:
opencv 3.x:
or opencv 2.4.13:
yolo是用純c**編寫的,如果你不在乎執行速度,甚至只需要安裝有vs2015就能進行編譯、訓練、測試。
weights:
2. 編譯
1. msvs 2015 + opencv 3.0 + cuda 8.0
修改包含路徑c:\opencv_3.0\opencv\build\include和 c:\opencv_3.0\opencv\build\x64\vc14\lib
然後用vs2015開啟build\darknet\darknet.sln, 在x64 and release下, 編譯:build -> build darknet
將c:\opencv_3.0\opencv\build\x64\vc14\bin下的opencv_world320.dll and opencv_ffmpeg320_64.dll拷貝到darknet.exe所在路徑下
2. msvs 2015 + opencv 3.0 + cuda (not 8.0)
開啟build\darknet\darknet.vcxproj, 將兩處」cuda 8.0」 替換為」cuda x.x」(你的cuda版本號), 然後按1進行。
3. msvs 2015 + opencv 3.0 but no gpu
修改包含路徑c:\opencv_3.0\opencv\build\include 和 c:\opencv_3.0\opencv\build\x64\vc14\lib
然後用vs2015開啟build\darknet\darknet_no_gpu.sln, 在x64 and release下, 編譯:build -> build darknet_no_gpu
將c:\opencv_3.0\opencv\build\x64\vc14\bin下的opencv_world320.dll and opencv_ffmpeg320_64.dll拷貝到darknet_no_gpu.exe所在路徑下
4. opencv 2.4.13 instead of 3.0
修改如下路徑:
4.1 (right click on project) -> properties -> c/c++ -> general -> additional include directories: c:\opencv_2.4.13\opencv\build\include
4.2 (right click on project) -> properties -> linker -> general -> additional library directories: c:\opencv_2.4.13\opencv\build\x64\vc14\lib
5. 其他版本opencv 2.4.x (not 3.x)
則還需要修改#pragma comment(lib, 「opencv_core2413.lib」) in the file \src\detector.c(共三處)
3. 測試
經過上述編譯,則可以進行測試了:在darknet.exe路徑下,cmd輸入:
darknet_no_gpu detector test data/voc.data yolo-voc.cfg yolo-voc.weights,結果如下圖所示:
4. 自己訓練模型
接下來就可以準備自己的資料,通過yolo訓練自己的模型了。
ab大神給我們準備了很好用的資料標註工具yolo_mark,可以很方便的製作voc資料:具體使用方法在鏈結中有詳細說明,這裡就不贅述了。
標記資料準備好之後,就可以開始進行訓練了。
在darknet.exe路徑下,cmd輸入:
darknet_no_gpu.exe detector train data/obj.data my_obj.cfg, 結果如下圖所示:
因為工作電腦沒有gpu,對於tiny_yolo模型,訓練乙個batch大約需120s,在另一台nvidia gtx750上實測,乙個batch小於5s,可見cuda平行計算對於深度學習提速的優勢巨大。
訓練過程中,每100batch會在darknet\x64\backup資料夾下儲存乙個weights檔案:
後續可以直接選擇在其中某個weights基礎上繼續訓練,方式如下:
YOLO v2 檢測原理
v2版本的優化目標 改善召回率,提公升定位精度,保證分類準確度。yolov2相比yolov1的改進 v2在每乙個卷積之後增加了bn層,提高了網路訓練的速度,加快了收斂,消除了對其他正則化的依賴,且正則化效果更好,使調參更簡單,即使去掉dropout層也不會產生過擬合。v1先使用224 224的解析度...
YOLOV2演算法筆記
yolov2演算法詳解部落格 一 better 1.對每一層都做了歸一化 2.先利用分類資料對網路進行訓練,然後遷移學習。3.不再和yolov1那樣直接 bounding box,yolov2中開始利用ancher box,4.dimension clusters,利用k means聚類的方式,發現...
Yolo v2 多版本安裝
1 vs2015 opencv3.2 geforce gt 1030 c 編譯 github vs2015安裝 opencv3.2配置 cuda選擇9.0,cudnn配套 配置和編譯 雙擊 darknet master build darknet darknet.sln 如果沒有gpu採用darkn...