YOLO视觉检测应用入门篇(三)
YOLO视觉检测应用入门篇(三)
上一篇,我们介绍了device参数的应用,使得我们的模型训练更加高效。
这一篇,我们暂时放一放参数,聊一下数据集。
数据集 Dataset
很多时候,训练的结果和数据集息息相关。数据集质量差,再训练也不会有很好的结果。
巧妇难为无米之炊,因此数据集非常重要。
数据集组成
第一篇我们使用了coco8数据集,这是一个非常小的数据集,用于普通的演示。
我们可以看到,数据集分为:
- train
- val
- test
另外还有一个coco8.yaml文件。
在coco8数据集中,层级结构为:
1 |
|
在train和val同级的地方,可以建立test文件夹。images存放图片,labels存放标签。
两者必须同名,一一对应。
INFO
我们还没有介绍过标签的含义。
label存放的是一组数字,告知YOLO已经识别的目标是什么,位置是哪里。
本篇稍后会介绍
其层级结构也可以更改,比如:
1 |
|
数据集YAML文件
yaml一般存储配置信息。
我们以部分coco8.yaml文件来举例说明(篇幅关系,部分抬头注释及分类已删除)
1 |
|
数据集获取
数据集有公共数据集,比如COCO,Roboflow等
更常见的是需要自己准备数据集,因为公共的数据集不一定能够满足自身的需求。
公共数据集
Ultralytics的官网有提供一些数据集,比如:
Initial Release Assets
Roboflow提供数据集:
Roboflow
coco数据集:
coco
自建数据集
自建数据集涉及到两个部分
- 图片
- 标注
图片按照train:val:test = 8:1:1的比例或者相似的比例是比较合适的。
自建数据集对图片的标注要求比较高,图片的质量也有要求,而且涉及到图像的预处理。
这里我们暂时不过分展开自建数据集,请先使用公共数据集,以便对YOLO的应用能够更加的熟悉,对数据集的理解也更深刻,后续执行自身的项目也更得心应手一些。
有兴趣可以搜索下相关的找一下相关的教程。
images
一般图像都由opencv预处理为640的大小,便于模型的训练
labels
每张图片都有对应的label文件。Yolo使用的标注文件为txt格式。
自建数据集进行标注的时候,有些工具生成的标注文件json格式,需要转化为txt格式。
我们以coco8数据集的000000000034.jpg和000000000034.txt举例
标注内容为:
22 0.346211 0.493259 0.689422 0.892118
第一个22,代表识别的分类为 22: zebra
后面的四个数字,代表YOLO去识别的时候,zebra所在矩形框对顶角(x1y1,x2y2)的坐标位置,即对斑马进行定位。
INFO
YOLO进行识别最重要的就是矩形框。
小结
这一篇我们简单了解了YOLO的训练数据集,对应用YOLO又进了一步。
下一篇,我们引入训练的代码来进一步介绍下YOLO的模型训练。