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

解決方案:手動(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)下載。

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。

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 |

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

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

其中用于目標(biāo)檢測(cè)的是:instances_val2017.json和instances_train2017.json
COCO數(shù)據(jù)集標(biāo)注文件詳解:





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文件夾下

在YOLOv5文件下,使用命令
運(yùn)行結(jié)果python val.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65 --half --batch-size 8

注意: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

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








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