YOLO视觉检测应用入门篇(三)

YOLO视觉检测应用入门篇(三)
上一篇,我们介绍了device参数的应用,使得我们的模型训练更加高效。
这一篇,我们暂时放一放参数,聊一下数据集。

数据集 Dataset

很多时候,训练的结果和数据集息息相关。数据集质量差,再训练也不会有很好的结果。
巧妇难为无米之炊,因此数据集非常重要。

数据集组成

第一篇我们使用了coco8数据集,这是一个非常小的数据集,用于普通的演示。
我们可以看到,数据集分为:

  • train
  • val
  • test

另外还有一个coco8.yaml文件。
在coco8数据集中,层级结构为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--images
--train
--1.jpg
--2.jpg
--val
--3.jpg
--4.jpg
--labels
--train
--1.txt
--2.txt
--val
--3.txt
--4.txt

在train和val同级的地方,可以建立test文件夹。images存放图片,labels存放标签。
两者必须同名,一一对应。

INFO
我们还没有介绍过标签的含义。
label存放的是一组数字,告知YOLO已经识别的目标是什么,位置是哪里。
本篇稍后会介绍

其层级结构也可以更改,比如:

1
2
3
4
5
6
7
--train
--images
--1.jpg
--2.jpg
--labels
--1.txt
--2.txt

数据集YAML文件

yaml一般存储配置信息。
我们以部分coco8.yaml文件来举例说明(篇幅关系,部分抬头注释及分类已删除)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: r'D:\coco8' # dataset root dir
train: ../images/train # train images (relative to 'path') 4 images
val: ../images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# 上面的是位置信息,告知YOLO这个数据集的位置及图片位置

# Classes
names:
# names下是识别物体的分类,对应的号码就是在label中体现物体类别的。需要从0开始编号。如果只有一个,那就是0
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant

# 如果YOLO导入数据集yaml却未发现图片,会尝试从下列url进行下载。
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

数据集获取

数据集有公共数据集,比如COCO,Roboflow等
更常见的是需要自己准备数据集,因为公共的数据集不一定能够满足自身的需求。

公共数据集

Ultralytics的官网有提供一些数据集,比如:
Initial Release Assets
Roboflow提供数据集:
Roboflow
coco数据集:
coco

自建数据集

自建数据集涉及到两个部分

  1. 图片
  2. 标注

图片按照train:val:test = 8:1:1的比例或者相似的比例是比较合适的。
自建数据集对图片的标注要求比较高,图片的质量也有要求,而且涉及到图像的预处理。
这里我们暂时不过分展开自建数据集,请先使用公共数据集,以便对YOLO的应用能够更加的熟悉,对数据集的理解也更深刻,后续执行自身的项目也更得心应手一些。
有兴趣可以搜索下相关的找一下相关的教程。

images

一般图像都由opencv预处理为640的大小,便于模型的训练

labels

每张图片都有对应的label文件。Yolo使用的标注文件为txt格式。
自建数据集进行标注的时候,有些工具生成的标注文件json格式,需要转化为txt格式。
我们以coco8数据集的000000000034.jpg000000000034.txt举例
000000000034.jpg
标注内容为:

22 0.346211 0.493259 0.689422 0.892118

第一个22,代表识别的分类为 22: zebra
后面的四个数字,代表YOLO去识别的时候,zebra所在矩形框对顶角(x1y1,x2y2)的坐标位置,即对斑马进行定位。
矩形框

INFO
YOLO进行识别最重要的就是矩形框。

小结

这一篇我们简单了解了YOLO的训练数据集,对应用YOLO又进了一步。
下一篇,我们引入训练的代码来进一步介绍下YOLO的模型训练。


YOLO视觉检测应用入门篇(三)
http://kevin.zone.id/2025/04/10/yolobegin3/
作者
Kevin
发布于
2025年4月10日
许可协议