为YOLOv5搭建COCO数据集训练、验证和测试环境

问题:在使用Python train.py训练YOLOv5时,2个多小时没有动静,原因是数据集下载解压和加载。

2个小时没有动静

解决方案:手动下载COCO数据集,并按照YOLOv5训练、验证和测试程序的数据存储路径要求解压COCO数据集。

相比于使用YOLOv5提供的download函数(from utils.general import download), 迅雷下载速度相当令人满意,资源也多,猜测大家都遇到类似问题,在手动下载。


手动下载速度

COCO数据集介绍。COCO全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集;当在ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆,也是目前该领域在国际上唯一能汇集Google、微软、Facebook以及国内外众多顶尖院校和优秀创新企业共同参与的大赛。YOLOv5算法采用的数据集就是COCO数据集

COCO数据集有多个,应该选择哪个呢?根据官方的信息,应该选择2017 Train/Val/Test

选择COCO2017

2017 COCO数据集的特点

名字 描述 下载链接
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

按照表格中的链接,手动下载图片数据
手动下载train2017.zip、val2017.zip和test2017.zip

下载后,依据https://github.com/cocodataset/cocoapi 的要求,将图片解压到coco/images/,如下图所示。

下载并按路径要求解压图片

接着下载标注文件annotations_trainval2017.zip,并按cocoapi 的要求,将标注文件解压到coco/annotations/

下载并按路径要求解压标注

其中用于目标检测的是:instances_val2017.json和instances_train2017.json

COCO数据集标注文件详解:

“info”和“licenses”键值:说明数据集信息,与训练无关

“categories"表示类别
“images"表示图像文件信息
“annotations"表示标注信息
一个完整的annotation信息

YOLOv5把官方的json格式的标注文件解析成为txt文件,请从https://ultralytics.com/assets/coco2017val.zip下载,然后解压到../datasets文件夹

上述数据都下载解压到指定文件夹后,就可以开始在COCO数据集上跑YOLOv5的验证、测试和训练了。

运行验证功能val.py

验证(Validation)通常在完成模型训练后,用于测试模型的精度。

训练数据集和验证数据集都是有标注的,需要注意的是:YOLOv5把官方JSON标注转换成了YOLO(darknet)标注格式,所以需要下载:'https://ultralytics.com/assets/coco2017labels.zip',然后解压到../datasets文件夹下

YOLO(darknet)标注格式

在YOLOv5文件下,使用命令

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

运行结果
val.py运行结果

注意:coco 里面大概有1%的图是无目标的,所以会提示有48missing

运行测试功能test.py

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

test运行结果

根据COCO Detection Evaluation规定,获得的结果文件要以.zip形式提交到https://competitions.codalab.org/competitions/20794,从Evaluation server上获得判断结果

Evaluation server的评估结果

运行训练功能train.py

首先安装wandb, 参考:https://wandb.ai/home,获得API key,完成注册

然后运行:

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

--workers 数量设置为与CPU物理核数一致。
注意:若使用--cache, 计算机内存小于128G,会报错

内存不够

另外,使用机械硬盘HDD来训练YOLOv5,在Scanning这步,也是非常耗费时间的
机械硬盘速度太慢!!!

YOLOv5 train.py训练成功
Batch_Size=16的训练时间
batch-size=32,启动训练
batch-size=32,训练时间
batch-size=48,训练时间
Batch Size=64, 报错:CUDA out of memory

另外,glenn-jocher也给出了训练结果:

YOLOv5各版本训练时间比较

你可能感兴趣的:(为YOLOv5搭建COCO数据集训练、验证和测试环境)