本文档解释了YOLOv5中的数据加载流程和机制。它涵盖了数据如何被加载、处理和准备用于训练和推理操作。有关数据集配置和格式的信息,请参阅数据集。有关数据增强技术的详细信息,请参阅数据增强。
YOLOv5的数据加载系统旨在从各种来源高效地加载图像、视频及其相应的标签。它包括批量处理、缓存、预处理和应用基本转换的功能,以准备用于模型训练或推理的数据。
该系统优先考虑
来源: utils/dataloaders.py160-218 utils/segment/dataloaders.py21-83
来源: utils/dataloaders.py322-430 utils/dataloaders.py433-526 utils/dataloaders.py264-320 utils/dataloaders.py537-1038 utils/dataloaders.py264-320
YOLOv5 使用 `create_dataloader()` 函数创建数据加载器,该函数负责初始化相应的数据集类并将 PyTorch DataLoader 配置为正确的设置。
| 参数 | 描述 |
|---|---|
path | 图像或数据集 YAML 文件的路径 |
imgsz | 图像尺寸(高=宽) |
batch_size | 加载的批量大小 |
stride | 模型步长(用于矩形训练) |
single_cls | 视为单类数据集 |
hyp | 用于数据增强的超参数 |
augment | 应用数据增强 |
cache | 将图像缓存到 RAM 或磁盘 |
rect | 使用矩形训练 |
workers | 工作线程数 |
来源: utils/dataloaders.py160-218
来源: utils/dataloaders.py160-218 utils/segment/dataloaders.py21-83
这是用于训练和验证的主要数据集类。它负责加载图像及其关联的标签。
关键功能:
来源: utils/dataloaders.py537-1038
用于对图像和视频进行推理。处理图像文件和视频文件,逐帧处理。
关键功能:
来源: utils/dataloaders.py322-430
专门用于视频流(包括网络摄像头、RTSP 流和 YouTube 视频)的实时推理的类。
关键功能:
来源: utils/dataloaders.py433-526
加载和处理指定屏幕区域的屏幕截图,用于实时检测。
关键功能:
来源: utils/dataloaders.py264-320
训练数据加载流程涉及从文件路径到批量张量的多个步骤
来源: utils/dataloaders.py537-1038 utils/dataloaders.py160-218
YOLOv5 实现了一个复杂的缓存系统来加速训练
每个图像的标签都缓存到一个 `.cache` 文件中,以避免重复解析标注文件。缓存包含:
来源: utils/dataloaders.py722-760
图像可以缓存到 RAM 或磁盘上,格式为 `.npy` 文件。
来源: utils/dataloaders.py683-702 utils/dataloaders.py703-720 utils/dataloaders.py848-872 utils/dataloaders.py873-878
矩形训练将具有相似纵横比的图像分组到批次中,以最小化填充并最大化 GPU 利用率。
进程
来源: utils/dataloaders.py657-680
马赛克加载将四张训练图像合并成一张,增加了单张训练样本中物体和上下文的多样性。
进程
来源: utils/dataloaders.py879-959
YOLOv5 通过以下方式提供对分布式训练的支持
扩展了 PyTorch 的 DistributedSampler 以确保
来源: utils/dataloaders.py132-157
在分布式环境中,该上下文管理器确保数据集缓存操作仅由主进程执行。
来源: utils/dataloaders.py183-184
一个自定义数据加载器,通过重用工作进程来避免每个 epoch 重新创建它们带来的开销。
主要功能
来源: utils/dataloaders.py221-245 utils/dataloaders.py246-262
自定义的批处理函数,用于将单个数据集项组合成批次
collate_fn:标准的目标检测任务批处理函数collate_fn4:用于马赛克训练,将四张图像合并在一起的批处理函数来源: utils/dataloaders.py215-216 utils/segment/dataloaders.py297-304
letterbox:调整图像大小并填充,使其适应目标尺寸,同时保持宽高比exif_size, exif_transpose:处理相机 EXIF 方向数据img2label_paths:从图像路径生成标签文件路径来源: utils/augmentations.py122-152 utils/dataloaders.py83-117 utils/dataloaders.py529-535
对于分割任务,LoadImagesAndLabelsAndMasks 类扩展了 LoadImagesAndLabels 来处理额外的掩码数据
主要新增功能
来源: utils/segment/dataloaders.py86-236 utils/segment/dataloaders.py307-366
cache='disk'),而不是内存缓存rect=True)以提高效率刷新此 Wiki
最后索引时间2025 年 4 月 18 日(fe1d4d)