本文主要記錄使用COCO 數(shù)據(jù)集訓(xùn)練darknet網(wǎng)絡(luò)獲取yolo權(quán)重的過(guò)程,主要包括:數(shù)據(jù)集處理及訓(xùn)練過(guò)程桅滋。
參考資料:
1.CSDN - 在COCO數(shù)據(jù)集中制作Darknet的訓(xùn)練集
2.Github - COCO_forYOLO
3.Github - hwrenx/coco2yolo
4.Github - philferriere/cocoapi (windows)
5.Github - AlexeyAB/darknet
6.博客園 - darknet-訓(xùn)練自己的yolov3模型
推薦使用:java - coco-to-yolo(包含完整流程)
推薦參考:Getting Started with Darknet YOLO and MS COCO for Object Detection
1 數(shù)據(jù)集處理
1.1 下載數(shù)據(jù)集
下載COCO 數(shù)據(jù)集,主要部分:
- 訓(xùn)練用的
train
數(shù)據(jù)集 - 驗(yàn)證用的
val
數(shù)據(jù)集 - 測(cè)試用的
test
數(shù)據(jù)集 - 對(duì)應(yīng)的
annotations
數(shù)據(jù)集標(biāo)注
將所有image
和annotations
解壓到各自文件夾內(nèi)即可
1.2 處理標(biāo)簽文件
需要進(jìn)行的處理:
- 使用
COCO API
從annotation
的json
中提取出單個(gè)文件的標(biāo)注 - 整合各個(gè)數(shù)據(jù)集中圖片的絕對(duì)路徑集合
- 修改
coco.data
文件
自己整理了一個(gè)腳本:Github - coco2yolo馆纳。下載后將兩個(gè)腳本放在數(shù)據(jù)集根目錄坪仇,運(yùn)行coco2yolo.py
即可嚷兔。
運(yùn)行腳本前需要安裝的庫(kù):
- pycocotools
- Cython
- matplotlib
其中Windows下是無(wú)法直接通過(guò)pip install
安裝pycocotools的(作者沒(méi)有考慮Windows環(huán)境)栏笆,可能會(huì)出現(xiàn)無(wú)效參數(shù)/Wno-cpp
等錯(cuò)誤瘤旨,需要使用WIndows版本的pycocotools手動(dòng)安裝:
- 下載pycocotools(即cocoapi):philferriere/cocoapi (windows)
- 進(jìn)入項(xiàng)目路徑,執(zhí)行
python ./PythonAPI/setup.py install
完成安裝
成功運(yùn)行后會(huì)生成coco.data
竖伯,用其覆蓋掉darknet/cfg/coco.data
,并在darknet/cfg
下創(chuàng)建一個(gè)新的文件夾backup
因宇。
2 使用darknet
- Windows下使用AlexeyAB的darknet:項(xiàng)目地址七婴。使用
build/darknet
下的darknet.sln
即可,注意版本要求和opencv依賴(lài)配置(具體要求見(jiàn)Github的README)察滑。
- 最好設(shè)置成
Realease x64
版本 - 需要將cudnn路徑加入到環(huán)境變量中:示例截圖打厘。
- OpenCV最好安裝在
C:\\opencv_3.0
,且不可以使用3.1及以上的版本贺辰,對(duì)應(yīng)issue户盯。
- 編譯完成后到
C:\opencv_3.0\opencv\build\x64\vc14\bin
里找到以下文件放到darknet/build/darknet/x64
下面
opencv_world320.dll / opencv_world340.dll
opencv_ffmpeg320_64.dll / opencv_ffmpeg340_64.dll
如果提示找不到
cudnn64_7.dll
,到path/to/your/cudnn/bin
路徑下拷貝一份確認(rèn)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1
路徑是否存在且包含bin
和include
饲化,如果沒(méi)有就從自己的CUDA
路徑下面拷貝一份(默認(rèn)路徑C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x
)根據(jù)實(shí)際情況更改
yolov3.cfg
莽鸭,參考鏈接使用
darknet.exe
進(jìn)行訓(xùn)練:darknet.exe detector train cfg/coco.data cfg/yolov3.cfg
,訓(xùn)練時(shí)可以設(shè)置初始權(quán)重或中斷恢復(fù)權(quán)重:darknet.exe detector train cfg/coco.data cfg/yolov3.cfg backup.weight
吃靠,一個(gè)很方便的預(yù)訓(xùn)練卷積層權(quán)重:wget https://pjreddie.com/media/files/darknet53.conv.74
錯(cuò)誤記錄:
1.錯(cuò)誤 error C2054 在“using”之后應(yīng)輸入“(” (編譯源文件...) opencv版本錯(cuò)誤(3.4.1+)
2.錯(cuò)誤 error MSB3721 ... 已退出硫眨,返回代碼為 1 更換VS 2015
3.錯(cuò)誤 error : expected a ";" 更換VS 2015
4.錯(cuò)誤 error C1083: 無(wú)法打開(kāi)包括文件: “cudnn.h”: No such file or directory 未在path中設(shè)置cudnn或路徑錯(cuò)誤
正文完