Link to this section用于标注计算机视觉数据的预处理技术#
数据预处理将原始的、已标注的图像转换为计算机视觉模型训练所需的高质量、一致性输入。在使用 Ultralytics YOLO26 时,核心的像素操作(如 RGB 转换、缩放到 [0, 1] 以及调整大小)会在训练流水线内自动运行,因此你剩下的工作就是正确划分数据集、平衡类别并选择增强方式。本指南涵盖了这些基本技术:调整大小、归一化、数据集划分、数据增强和探索性数据分析 (EDA)。
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
这一步骤在你定义项目目标并收集和标注数据之后进行,它位于计算机视觉项目工作流的早期阶段。
Link to this section为什么预处理很重要#
预处理将你的数据转化为一种能降低计算负载并提升模型性能的格式。它解决了原始数据中常见的三个问题:
- 噪声:数据中无关的或随机的干扰。
- 不一致性:图像尺寸、格式和质量方面的差异。
- 不平衡:整个数据集中类别分布不均匀。
Link to this section预处理技术#
主要技术包括调整大小、归一化、数据集划分和增强。对于 YOLO26,前两项是自动完成的,而划分和增强则需要你进行关键选择。
Link to this section调整图像大小#
许多模型需要一致的输入尺寸,因此调整大小可以使图像统一并降低计算复杂度。两种常用的插值方法是:
- 双线性插值:通过取最近四个像素的加权平均值来平滑像素值。
- 最近邻插值:直接复制最近的像素值而不进行平均——速度更快,但生成的图像会有块状效应。
Libraries like OpenCV and PIL (Pillow) provide these functions, but with YOLO26 you usually don't resize manually. The imgsz argument during model training handles it: when set to a value such as 640, YOLO scales each image so its largest dimension is 640 pixels while preserving the aspect ratio, then pads the shorter side (default gray, value 114) to reach a square 640 × 640 input.
Link to this section像素值归一化#
归一化将像素值缩放到标准范围,这有助于模型在训练期间更快收敛。两种常见的技术是:
- 最小-最大缩放 (Min-Max Scaling):将像素值缩放到 0 到 1 的范围。
- Z-Score 归一化:根据平均值和标准差对像素值进行缩放。
YOLO26 会作为其预处理流水线的一部分自动处理归一化:它将图像转换为 RGB 并通过除以 255(最小-最大缩放)将像素值缩放到 [0, 1] 范围内。YOLO 默认不应用 ImageNet 风格的均值/标准差(z-score)归一化,因此不需要手动执行归一化步骤。
Link to this section拆分数据集#
将数据划分为训练集、验证集和测试集可以让你在未见过的数据上评估模型并衡量其泛化能力。常见的划分比例是 70% 用于训练,20% 用于验证,10% 用于测试。像 scikit-learn 或 TensorFlow 这样的工具可以使此过程变得简单直接。
划分时请记住以下几点:
- 保持类别分布:确保每个类别在训练集、验证集和测试集中按比例呈现。
- 平衡类别:对于不平衡的数据集,考虑对少数类进行过采样或对多数类进行欠采样——且仅限于在训练集中进行。
在应用任何增强或其他预处理之前先划分数据集,并且仅将这些转换应用到训练集。如果在划分之前进行增强,验证集或测试集中的信息就会通过增强过程流入训练集,从而产生在现实世界中失效的虚高评分。
Link to this section增强数据集#
数据增强通过创建现有图像的修改版本来人工增加数据集的规模。它有助于减少过拟合并改善泛化能力,具有以下多项优势:
- 模型更稳健:光照、方向和比例的变化使模型能够抵御现实世界的畸变。
- 经济高效:你可以在不收集和标注新数据的情况下扩充训练集。
- 更好地利用数据:每张标注图像都能产出多个训练变体。
With YOLO26, augmentation is controlled through training arguments passed to model.train() or the equivalent CLI flags — not by editing the dataset YAML, which defines dataset metadata such as paths, class names, and splits. The built-in augmentations include:
- Mosaic、MixUp 和 CutMix (
mosaic,mixup,cutmix):将多张图像合并为一个训练样本。 - 翻转 (
fliplr,flipud):水平或垂直镜像图像。 - 几何变换 (
degrees,translate,scale,shear,perspective):旋转、平移、缩放和扭曲图像。 - HSV 颜色抖动 (
hsv_h,hsv_s,hsv_v):改变色调、饱和度和亮度。 - 复制粘贴 (
copy_paste):在图像之间粘贴对象以用于分割。
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 的增强功能。
Link to this section案例研究:车辆检测的预处理#
考虑一个使用 YOLO26 在交通图像中检测和分类车辆的项目,从使用边界框和标签标注的图像开始。以下是各项预处理决策的具体情况:
- 调整大小:无需手动操作——YOLO26 会在训练期间自动缩放到
imgsz。 - 归一化:无需手动操作——YOLO26 会自动将像素值缩放到
[0, 1]。 - 划分:将数据集划分为 70% 的训练集、20% 的验证集和 10% 的测试集,保持各划分中的类别分布一致。
- 增强:设置适合交通场景的训练参数——例如,使用
fliplr实现方向不变性,使用hsv_v应对昼夜照明,使用mosaic适应不同的物体密度。
完成这些决策后,数据集就准备好进行探索性数据分析 (EDA) 了。
Link to this section探索性数据分析 (EDA)#
EDA 利用统计和可视化揭示数据中的模式和分布,帮助你在训练前发现类不平衡或异常值等问题。
Link to this section统计 EDA 技术#
统计 EDA 从基本指标(平均值、中位数、标准差和范围)开始,计算像素强度分布等属性。这些指标能让你快速概览数据集的质量,并尽早发现异常情况。
Link to this section视觉 EDA 技术#
可视化能揭示汇总统计无法发现的模式,例如类不平衡和异常值。常用工具包括:
- 直方图和箱线图:展示像素值的分布,并标记强度或特征分布中的异常值。
- 条形图:通过比较每个类的样本数量来揭示类不平衡。
- 散点图:探索图像特征或标注之间的关系。
- 热图:可视化像素强度分布或标注在图像中的空间分布。
Link to this section用于 EDA 的 Ultralytics 平台#
若要以无代码方式进行 EDA,请将你的数据集上传到 Ultralytics 平台。数据集的 Charts 选项卡会自动生成关键的 EDA 可视化:划分分布、热门类别计数、图像宽高直方图,以及标注位置和图像尺寸的 2D 热图。Images 选项卡允许你以网格、紧凑或表格视图浏览带标注覆盖层的数据,从而无需编写任何代码即可轻松识别标注错误的样本或不平衡的类别。
Link to this section结论#
正确划分、归一化和增强后的数据可以减少噪声并改善泛化能力,将原始图像集合转化为可靠的训练集。数据集预处理完成后,下一步是训练你的模型。如果过程中遇到问题,请在 Ultralytics GitHub 仓库或 Ultralytics Discord 服务器向社区提问。
Link to this section常见问题解答#
Link to this section为什么数据预处理在计算机视觉项目中很重要?#
预处理能确保你的数据清洁、一致,并且格式针对训练进行了优化。通过解决原始数据中的噪声、不一致和类不平衡问题,调整大小、归一化、增强和数据集划分等步骤可以降低计算负载并提高模型性能。查看计算机视觉项目的步骤以了解其在更广泛工作流中的位置。
Link to this section我该如何使用 Ultralytics YOLO 进行数据增强?#
通过训练参数配置增强,而不是修改 dataset YAML 文件。将 fliplr、mosaic、hsv_h 和 degrees 等参数传递给 model.train()(或对应的 CLI 标志)来设置每个转换的概率和强度。这些参数在增强设置中定义,并在 YOLO 数据增强指南中有详细解释。
Link to this section计算机视觉数据最好的归一化技术是什么?#
最常见的两种技术是最小-最大缩放(将像素重新缩放到 0 到 1 的范围)和 z-score 归一化(基于均值和标准差重新缩放)。YOLO26 会自动应用最小-最大缩放——将图像转换为 RGB 并将像素值除以 255——因此你不需要手动执行归一化步骤。它默认不应用 z-score 归一化。
Link to this section我应该如何拆分标注数据集进行训练?#
常见的做法是 70% 用于训练,20% 用于验证,10% 用于测试。在所有三个划分中保持类别分布一致,并避免数据泄漏,方法是在划分后仅对训练集应用增强。像 scikit-learn 或 TensorFlow 这样的工具可以高效地处理划分。有关上游数据集的准备,请参阅数据收集和标注指南。
Link to this sectionYOLO26 能在不进行手动调整大小的情况下处理不同的图像尺寸吗?#
是的。imgsz 参数会在训练和推理期间调整图像大小,使其最长边匹配指定的大小(例如 640 像素),同时保持宽高比,然后填充短边。你无需自行调整图像大小——详情请参阅模型训练文档。