為YOLOv5搭建COCO數(shù)據(jù)集訓(xùn)練、驗(yàn)證和測(cè)試環(huán)境

問題:在使用Python train.py訓(xùn)練YOLOv5時(shí),2個(gè)多小時(shí)沒有動(dòng)靜,原因是數(shù)據(jù)集下載解壓和加載。

2個(gè)小時(shí)沒有動(dòng)靜

解決方案:手動(dòng)下載COCO數(shù)據(jù)集,并按照YOLOv5訓(xùn)練、驗(yàn)證和測(cè)試程序的數(shù)據(jù)存儲(chǔ)路徑要求解壓COCO數(shù)據(jù)集。

相比于使用YOLOv5提供的download函數(shù)(from utils.general import download), 迅雷下載速度相當(dāng)令人滿意,資源也多,猜測(cè)大家都遇到類似問題,在手動(dòng)下載。


手動(dòng)下載速度

COCO數(shù)據(jù)集介紹。COCO全稱是Microsoft Common Objects in Context,起源于微軟于2014年出資標(biāo)注的Microsoft COCO數(shù)據(jù)集;當(dāng)在ImageNet競(jìng)賽停辦后,COCO競(jìng)賽就成為是當(dāng)前目標(biāo)識(shí)別、檢測(cè)等領(lǐng)域的一個(gè)最權(quán)威、最重要的標(biāo)桿,也是目前該領(lǐng)域在國際上唯一能匯集Google、微軟、Facebook以及國內(nèi)外眾多頂尖院校和優(yōu)秀創(chuàng)新企業(yè)共同參與的大賽。YOLOv5算法采用的數(shù)據(jù)集就是COCO數(shù)據(jù)集。

COCO數(shù)據(jù)集有多個(gè),應(yīng)該選擇哪個(gè)呢?根據(jù)官方的信息,應(yīng)該選擇2017 Train/Val/Test。

選擇COCO2017

2017 COCO數(shù)據(jù)集的特點(diǎn)

名字 描述 下載鏈接
train2017.zip 19G, 118k images http://images.cocodataset.org/zips/train2017.zip
val2017.zip 1G, 5k images http://images.cocodataset.org/zips/val2017.zip
test2017.zip 7G, 41k images http://images.cocodataset.org/zips/test2017.zip

按照表格中的鏈接,手動(dòng)下載圖片數(shù)據(jù)
手動(dòng)下載train2017.zip、val2017.zip和test2017.zip

下載后,依據(jù)https://github.com/cocodataset/cocoapi 的要求,將圖片解壓到coco/images/,如下圖所示。

下載并按路徑要求解壓圖片

接著下載標(biāo)注文件annotations_trainval2017.zip,并按cocoapi 的要求,將標(biāo)注文件解壓到coco/annotations/

下載并按路徑要求解壓標(biāo)注

其中用于目標(biāo)檢測(cè)的是:instances_val2017.json和instances_train2017.json

COCO數(shù)據(jù)集標(biāo)注文件詳解:

“info”和“l(fā)icenses”鍵值:說明數(shù)據(jù)集信息,與訓(xùn)練無關(guān)

“categories"表示類別
“images"表示圖像文件信息
“annotations"表示標(biāo)注信息
一個(gè)完整的annotation信息

YOLOv5把官方的json格式的標(biāo)注文件解析成為txt文件,請(qǐng)從https://ultralytics.com/assets/coco2017val.zip下載,然后解壓到../datasets文件夾

上述數(shù)據(jù)都下載解壓到指定文件夾后,就可以開始在COCO數(shù)據(jù)集上跑YOLOv5的驗(yàn)證、測(cè)試和訓(xùn)練了。

運(yùn)行驗(yàn)證功能val.py

驗(yàn)證(Validation)通常在完成模型訓(xùn)練后,用于測(cè)試模型的精度。

訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集都是有標(biāo)注的,需要注意的是:YOLOv5把官方JSON標(biāo)注轉(zhuǎn)換成了YOLO(darknet)標(biāo)注格式,所以需要下載:'https://ultralytics.com/assets/coco2017labels.zip',然后解壓到../datasets文件夾下

YOLO(darknet)標(biāo)注格式

在YOLOv5文件下,使用命令

python val.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65 --half --batch-size 8

運(yùn)行結(jié)果
val.py運(yùn)行結(jié)果

注意:coco 里面大概有1%的圖是無目標(biāo)的,所以會(huì)提示有48missing

運(yùn)行測(cè)試功能test.py

python val.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65 --half --task test --batch-size 8

test運(yùn)行結(jié)果

根據(jù)COCO Detection Evaluation規(guī)定,獲得的結(jié)果文件要以.zip形式提交到https://competitions.codalab.org/competitions/20794,從Evaluation server上獲得判斷結(jié)果

Evaluation server的評(píng)估結(jié)果

運(yùn)行訓(xùn)練功能train.py

首先安裝wandb, 參考:https://wandb.ai/home,獲得API key,完成注冊(cè)

然后運(yùn)行:

!python train.py --img 640 --batch-size 16 --epochs 3 --data coco.yaml --weights yolov5s.pt --optimizer Adam --workers 6

--workers 數(shù)量設(shè)置為與CPU物理核數(shù)一致
注意:若使用--cache, 計(jì)算機(jī)內(nèi)存小于128G,會(huì)報(bào)錯(cuò)

內(nèi)存不夠

另外,使用機(jī)械硬盤HDD來訓(xùn)練YOLOv5,在Scanning這步,也是非常耗費(fèi)時(shí)間的
機(jī)械硬盤速度太慢?。?!

YOLOv5 train.py訓(xùn)練成功
Batch_Size=16的訓(xùn)練時(shí)間
batch-size=32,啟動(dòng)訓(xùn)練
batch-size=32,訓(xùn)練時(shí)間
batch-size=48,訓(xùn)練時(shí)間
Batch Size=64, 報(bào)錯(cuò):CUDA out of memory

另外,glenn-jocher也給出了訓(xùn)練結(jié)果

YOLOv5各版本訓(xùn)練時(shí)間比較

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容