1. 数据源
首先YOLOv8是支持目标分类、检测和目标分割。当前以应用最为广泛的目标检测为例,简单说明数据相关的信息。
一般情况下,建议将数据划分成images和labels,其中images存储图像,labels存储标签文件(YOLO格式)。如果是VOC数据形式,在“005_训练”部分会将如何从VOC到YOLO格式的转换。
数据组织这一部分,和YOLOv5非常类似,官方代码中也有提供v5loader坐待可选项。因此,在数据组织这一部分,并不考虑花太多时间进行赘述。
2. 数据组织
YOLOv8同样使用与YOLOv5一样的数据组织形式,初始化时会进行cache_labels。
可以选择使用“rect”训练形式,会进行进一步的、按照batch进行重组织。
YOLOv8官方代码中可以看到,在数据加载阶段可选继续使用v5loader,或使用新的build_yolo_datasest,进一步的,实际上是创建了一个YOLODataset对象,YOLODataset又继承自BaseDataset,BaseDataset继承自PyTorch自带的Dataset基类。
从YOLODataset的collate_fn可以看出,不同于以往的列表形式,YOLOv8的DataLoader加载数据时,是以字典的形式。
3. 数据增强
如前所述,YOLOv8整体数据处理情况和YOLOv5类似,数据增强也相似。YOLOv8使用的主要数据增强方式是Mosaic。Mosaic数据增强方式分为4张Mosaic和9张Mosaic,此处仅使用4张Mosaic。样例如图1所示。
图1 Mosaic增强及LetterBox