问题:在使用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。
选择COCO20172017 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 |
下载后,依据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文件下,使用命令
运行结果 val.py运行结果python val.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65 --half --batch-size 8
注意:coco 里面大概有1%的图是无目标的,所以会提示有48missing
运行测试功能test.py
test运行结果python val.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65 --half --task test --batch-size 8
根据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,会报错
YOLOv5 train.py训练成功 Batch_Size=16的训练时间 batch-size=32,启动训练 batch-size=32,训练时间 batch-size=48,训练时间 Batch Size=64, 报错:CUDA out of memory
另外,glenn-jocher也给出了训练结果:
网友评论