YOLO Vision 2026:

标注计算机视觉数据的数据预处理技术#

数据预处理会将原始的标注图像转换为干净且一致的输入,这是计算机视觉模型进行良好训练所需的基础。借助 Ultralytics YOLO26,核心像素操作——RGB 转换、缩放到 [0, 1] 以及调整大小——会在训练流水线中自动完成,因此剩余工作主要是正确划分数据集、平衡类别以及选择增强方式。本指南介绍这些关键技术:调整大小、归一化、数据集划分、数据增强和探索性数据分析(EDA)。



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

此步骤位于你确定项目目标收集和标注数据之后,并且处于计算机视觉项目工作流的早期阶段。

为什么预处理很重要#

预处理会将数据转换为一种能够降低计算负载并提升模型性能的格式。它可以解决原始数据中的三个常见问题:

  • 噪声:数据中无关或随机的变化。
  • 不一致性:图像尺寸、格式和质量的差异。
  • 不平衡:数据集中各类别或分类的分布不均。

预处理技术#

主要技术包括调整大小、归一化、数据集划分和数据增强。使用 YOLO26 时,前两项会自动完成,而数据集划分和数据增强最需要你进行决策。

调整图像大小#

许多模型要求输入尺寸一致,因此调整大小可以统一图像并降低计算复杂度。两种常见的插值方法是:

  • 双线性插值:通过对最近的四个像素进行加权平均来平滑像素值。
  • 最近邻插值:不进行平均,直接复制最近像素的值——速度更快,但生成的图像块状感更明显。

OpenCV 和 PIL(Pillow)等库提供这些功能,但使用 YOLO26 时通常不需要手动调整图像大小。imgsz 参数会处理此操作。在固定尺寸的方形路径中,验证推理会将图像填充调整至接近 imgsz × imgsz 输入,例如 640 × 640,同时保持宽高比并用灰色(值为 114)填充。当禁用放大时,较大的图像会缩小以适应尺寸,而较小的图像不会被放大。在默认的训练路径中,mosaic=1.0 会将四张图像平铺到更大的画布上,然后裁剪回 imgsz;当 close_mosaic 在最后几个周期禁用 mosaic 后,图像会先进行信箱填充,然后仍会被随机变换,而不是原样传递。矩形批次(rect=True)和 multi_scale 使用不同的输入形状。

归一化像素值#

归一化会将像素值缩放到标准范围,有助于模型在训练期间更快收敛。两种常见技术是:

  • 最小-最大缩放:将像素值缩放到 0 到 1 的范围。
  • Z 分数归一化:根据均值和标准差缩放像素值。

YOLO26 会在其预处理流水线中自动处理归一化:它将图像转换为 RGB,并通过除以 255(最小-最大缩放)将像素值缩放到 [0, 1] 范围。YOLO 默认不会应用 ImageNet 风格的均值/标准差(Z 分数)归一化,因此不需要手动执行归一化步骤。

划分数据集#

将数据划分为训练集、验证集和测试集,可以让你在未见过的数据上评估模型并衡量其泛化能力。常见的划分方式是训练集占 70%、验证集占 20%、测试集占 10%。使用 scikit-learnTensorFlow 等工具即可轻松完成。

划分时请牢记以下几点:

  • 保持类别分布:确保每个类别按比例出现在训练集、验证集和测试集中。
  • 平衡类别:对于不平衡数据集,可以考虑对少数类进行过采样,或对多数类进行欠采样——但只能在训练集内进行。
避免数据泄漏

在应用任何增强或其他预处理之前划分数据集,并且只对训练集应用这些变换。在划分之前进行增强,会让验证图像或测试图像中的信息影响训练,从而产生虚高的分数,而这些分数在真实世界数据上会大幅下降。

增强数据集#

数据增强通过创建现有图像的修改版本来人为扩大数据集规模。它有助于减少过拟合并提升泛化能力,具体好处包括:

  • 更稳健的模型:光照、方向和尺度的变化可以让模型适应真实世界中的变形。
  • 经济高效:无需收集和标注新数据,即可扩大训练集。
  • 更充分地利用数据:每张标注图像都能生成多个训练变体。

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

使用 YOLO26 时,增强强度通过传递给 model.train()训练参数或等效 CLI 标志进行控制,而不是通过编辑数据集 YAML 进行控制;数据集 YAML 定义的是路径、类别名称和划分等数据集元数据。唯一的例外是 flip_idx姿态数据集会在数据集 YAML 中声明它,用于映射左右关键点对;如果缺少该项,YOLO 会完全禁用 fliplrflipud。内置增强包括:

  • Mosaic、MixUp 和 CutMixmosaicmixupcutmix):将多张图像合并为一个训练样本。
  • 翻转fliplrflipud):水平或垂直镜像图像。
  • 几何变换degreestranslatescaleshearperspective):旋转、平移、缩放和扭曲图像。
  • HSV 颜色抖动hsv_hhsv_shsv_v):改变色相、饱和度和亮度。
  • Copy-pastecopy_paste):粘贴分割对象的额外副本;默认情况下,这些副本会在同一图像内进行镜像,也可以通过 copy_paste_mode=mixup 从另一张图像中获取。
  • 通道交换bgr):将 RGB 通道顺序交换为 BGR。
  • 分类变换auto_augmenterasing):在训练分类器时应用自动增强策略和随机擦除。
在训练时设置增强强度
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

有关增强参数及其默认值的完整列表,请参阅增强设置参考和专门的 YOLO 数据增强指南。如果已安装 albumentations 包,YOLO 还会自动启用其基于 Albumentations 的内置增强。

案例研究:车辆检测的预处理#

假设你要使用 YOLO26 在交通图像中检测和分类车辆,输入图像已经使用边界框和标签完成标注。下面是每项预处理决策的具体表现:

  • 调整大小:无需手动操作——YOLO26 会在训练期间将图像调整为 imgsz
  • 归一化:无需手动操作——YOLO26 会自动将像素值缩放到 [0, 1]
  • 划分:将数据集划分为 70% 的训练集、20% 的验证集和 10% 的测试集,并确保各划分中的类别分布保持一致。
  • 增强:设置适用于交通场景的训练参数——例如,使用 fliplr 实现方向不变性,使用 hsv_v 处理日间/夜间光照,使用 mosaic 应对不同的对象密度。

完成这些决策后,数据集就可以进行探索性数据分析(EDA)了。

探索性数据分析(EDA)#

EDA 使用统计数据和可视化来揭示数据中的模式和分布,帮助你在训练前发现类别不平衡或异常值等问题。

统计 EDA 技术#

统计 EDA 从基本指标开始——均值、中位数、标准差和范围——这些指标会针对像素强度分布等属性进行计算。它们可以快速概览数据集质量,并及早暴露不规则情况。

可视化 EDA 技术#

可视化可以揭示汇总统计信息无法体现的模式,例如类别不平衡和异常值。常用工具包括:

  • 直方图和箱线图:显示像素值的分布,并标记强度或特征分布中的异常值。
  • 条形图:通过比较每个类别包含的样本数量来揭示类别不平衡。
  • 散点图:探索图像特征或标注之间的关系。
  • 热力图:可视化像素强度分布,或标注在各图像中的空间分布。

用于 EDA 的 Ultralytics Platform#

如果你希望采用无代码方式进行 EDA,可以将数据集上传到 Ultralytics Platform。数据集的 Charts 选项卡会自动生成关键的 EDA 可视化内容:划分分布、主要类别计数、图像宽度/高度直方图,以及标注位置和图像尺寸的 2D 热力图。Images 选项卡支持以网格、紧凑或表格视图浏览数据,并叠加标注信息,让你无需编写任何代码即可轻松发现错误标注的样本或类别不平衡。

结论#

经过正确划分、归一化和增强的数据可以减少噪声并提升泛化能力,将原始图像集合转变为可靠的训练集。完成数据集预处理后,下一步就是训练模型。如果过程中遇到问题,可以在 Ultralytics GitHub 仓库Ultralytics Discord 服务器中向社区提问。

常见问题#

  • 预处理可以确保数据干净、一致,并且采用针对训练优化的格式。通过处理原始数据中的噪声、不一致性和类别不平衡,调整大小、归一化、数据增强和数据集划分等步骤可以降低计算负载并提升模型性能。请参阅计算机视觉项目的步骤,了解它在整体工作流中的位置。

  • 通过训练参数而不是数据集 YAML 来配置增强。将 fliplrmosaichsv_hdegrees 等参数传递给 model.train()(或使用等效的 CLI 标志),即可设置每种变换的概率和强度。这些参数定义在增强设置中,并在 YOLO 数据增强指南中进行了解释。姿态数据集是例外:其 flip_idx 关键点映射位于数据集 YAML 中,缺少该映射时会禁用翻转。

  • 最常见的两种技术是最小-最大缩放(将像素重新缩放到 0 到 1 的范围)和 Z 分数归一化(根据均值和标准差重新缩放)。YOLO26 会自动应用最小-最大缩放——将图像转换为 RGB 并将像素值除以 255——因此你不需要手动执行归一化步骤。默认情况下,它不会应用 Z 分数归一化。

  • 常见做法是将 70% 的数据用于训练、20% 用于验证、10% 用于测试。在这三个划分中保持类别分布一致,并在划分之后仅对训练集应用增强,以避免数据泄漏。使用 scikit-learn 或 TensorFlow 等工具可以高效完成划分。有关上游数据集准备,请参阅数据收集和标注指南

  • 可以。imgsz 参数控制目标输入尺寸,无需手动操作。在固定尺寸的方形路径中,验证和推理会在保持宽高比的同时,将图像进行信箱填充以接近指定形状;较大的图像会缩小以适应尺寸,而当禁用放大时,较小的图像不会被放大。在训练期间,默认的 mosaic 增强会改为通过平铺四张图像并裁剪来达到目标尺寸。矩形批次(rect=True)和 multi_scale 使用不同的输入形状。详情请参阅模型训练文档。

评论