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

介绍

在定义好计算机视觉 项目目标收集并标注数据 后,下一步就是预处理带标注数据并为模型训练做好准备。干净且一致的数据对于创建表现出色的模型至关重要。



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

预处理是 计算机视觉项目工作流程 中的一个步骤,包括调整图像大小、归一化像素值、数据增强以及将数据拆分为训练集、验证集和测试集。让我们一起来探索清洗数据的基本技术和最佳实践吧!

数据预处理的重要性

我们在收集和标注数据时已经非常谨慎,并考虑了多种因素。那么,为什么数据预处理对计算机视觉项目如此重要呢?其实,数据预处理的核心就是将数据调整为适合训练的格式,以减少计算负载并帮助提高模型性能。以下是预处理可以解决的原始数据中常见的一些问题:

  • 噪声:数据中不相关或随机的变动。
  • 不一致性:图像大小、格式和质量的差异。
  • 不平衡:数据集中类别或分类分布不均匀。

数据预处理技术

数据预处理的第一步也是最重要的一步就是调整大小。有些模型被设计为可以处理可变输入大小,但许多模型需要一致的输入大小。调整图像大小可以使它们统一,并降低计算复杂度。

调整图像大小

你可以使用以下方法调整图像大小:

  • 双线性插值:通过对四个最近的像素值进行加权平均来平滑像素值。
  • 最近邻插值:直接指定最近的像素值而不进行平均,这会导致图像出现块状感,但计算速度更快。

为了让调整大小的任务变得更简单,你可以使用以下工具:

  • OpenCV:一个流行的计算机视觉库,具有丰富的图像处理功能。
  • PIL (Pillow):一个用于打开、操作和保存图像文件的 Python 图像处理库。

对于 YOLO26,模型训练 期间的 'imgsz' 参数允许灵活的输入大小。当设置为特定大小(例如 640)时,模型会将输入图像调整为最大维度为 640 像素,同时保持原始纵横比。

通过评估模型和数据集的具体需求,你可以确定调整大小是否是必要的预处理步骤,或者你的模型是否能高效处理不同大小的图像。

归一化像素值

另一种预处理技术是归一化。归一化将像素值缩放到标准范围,这有助于在训练过程中更快地收敛并提高模型性能。以下是一些常见的归一化技术:

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

对于 YOLO26,归一化作为其模型训练期间预处理流水线的一部分被无缝处理。YOLO26 会自动执行多项预处理步骤,包括转换为 RGB、将像素值缩放到 [0, 1] 范围,以及使用预定义的平均值和标准差值进行归一化。

拆分数据集

一旦清洗了数据,你就可以拆分数据集了。将数据拆分为训练集、验证集和测试集是为了确保模型能在未见过的数据上进行评估,以评估其泛化性能。常见的拆分比例是 70% 用于训练,20% 用于验证,10% 用于测试。你可以使用各种工具和库来拆分数据,例如 scikit-learnTensorFlow

拆分数据集时请考虑以下几点:

  • 保持数据分布:确保各类数据的分布在训练集、验证集和测试集中保持一致。
  • 避免数据泄露:通常,数据增强是在数据集拆分后进行的。数据增强及任何其他预处理只能应用于训练集,以防止来自验证集或测试集的信息影响模型训练。
  • 平衡类别:对于不平衡的数据集,可以考虑在训练集中对少数类进行过采样或对多数类进行欠采样等技术。

什么是数据增强?

讨论最多的数据预处理步骤是数据增强。数据增强通过创建图像的修改版本来人工增加数据集的大小。通过增强数据,你可以减少 过拟合 并提高模型的泛化能力。

以下是数据增强的其他一些好处:

  • 创建更稳健的数据集:数据增强可以使模型对输入数据中的变动和畸变更加稳健。这包括光照、方向和比例的变化。
  • 高性价比:数据增强是一种以较低成本增加 训练数据 量的方法,无需收集和标注新数据。
  • 更好地利用数据:通过创建新的变体,每个可用数据点的潜力都得到了最大限度的发挥。

数据增强方法

常见的增强技术包括翻转、旋转、缩放和颜色调整。多个库(如 Albumentations、Imgaug 和 TensorFlow 的 ImageDataGenerator)可以生成这些增强。

Overview of Data Augmentations

对于 YOLO26,你可以通过修改数据集配置文件(.yaml 文件)来 增强你的自定义数据集。在该文件中,你可以添加一个增强部分,其中包含用于指定如何增强数据的参数。

Ultralytics YOLO26 代码库 支持多种数据增强。你可以应用各种变换,例如:

  • 随机裁剪
  • 翻转:图像可以水平或垂直翻转。
  • 旋转:图像可以按特定角度旋转。
  • 畸变

此外,你还可以通过特定参数调整这些增强技术的强度,以产生更多样化的数据。

预处理案例研究

考虑一个旨在开发模型以使用 YOLO26 检测和分类交通图像中不同类型车辆的项目。我们已经收集了交通图像,并用边界框和标签标注了它们。

以下是该项目每个预处理步骤的样子:

  • 调整图像大小:由于 YOLO26 处理灵活的输入大小并自动执行调整大小,因此无需手动调整。模型将在训练期间根据指定的 'imgsz' 参数调整图像大小。
  • 归一化像素值:YOLO26 在预处理期间会自动将像素值归一化为 0 到 1 的范围,因此不需要手动操作。
  • 拆分数据集:使用 scikit-learn 等工具将数据集拆分为训练集 (70%)、验证集 (20%) 和测试集 (10%)。
  • 数据增强:修改数据集配置文件 (.yaml),加入数据增强技术,如随机裁剪、水平翻转和亮度调整。

这些步骤确保数据集在没有潜在问题的情况下得到准备,并为探索性数据分析 (EDA) 做好准备。

探索性数据分析技术

在预处理和增强数据集之后,下一步是通过探索性数据分析 (EDA) 获取洞察。EDA 使用统计技术和可视化工具来理解数据中的模式和分布。你可以识别类别不平衡或异常值等问题,并就进一步的数据预处理或模型训练调整做出明智的决定。

统计 EDA 技术

统计技术通常从计算基本指标开始,如平均值、中位数、标准差和范围。这些指标提供了图像数据集属性(如像素强度分布)的快速概览。理解这些基本统计数据有助于你掌握数据的整体质量和特征,从而让你尽早发现任何异常情况。

可视化 EDA 技术

可视化是图像数据集 EDA 的关键。例如,类别不平衡分析是 EDA 的另一个重要方面。它有助于确定某些类别在数据集中是否代表性不足。使用条形图可视化不同图像类别或分类的分布可以快速揭示任何不平衡。类似地,可以使用箱线图等可视化工具识别异常值,箱线图突显了像素强度或特征分布中的异常点。异常值检测可以防止不寻常的数据点歪曲你的结果。

常见的可视化工具包括:

  • 直方图和箱线图:有助于理解像素值的分布并识别异常值。
  • 散点图:有助于探索图像特征或标注之间的关系。
  • 热力图:有效地可视化像素强度的分布或图像内标注特征的空间分布。

使用 Ultralytics Platform 进行 EDA

要进行无代码 EDA,请将你的数据集上传到 Ultralytics Platform。数据集的 Charts 选项卡会自动生成上述可视化效果:拆分分布、前几大类别计数、图像宽度/高度直方图,以及标注位置和图像维度的 2D 热力图。Images 选项卡允许你以网格、紧凑或表格视图浏览带有标注覆盖的数据,从而无需编写任何代码即可轻松发现标注错误的示例或不平衡的类别。

联系与交流

与其他计算机视觉爱好者讨论你的项目可以为你带来不同视角的新想法。以下是一些学习、故障排除和建立人脉的好方法:

与社区联系的渠道

  • GitHub Issues: 访问 YOLO26 GitHub 存储库并使用 Issues 标签页 来提出问题、报告错误并建议功能。社区和维护者随时为你解决遇到的任何问题。
  • Ultralytics Discord 服务器:加入 Ultralytics Discord 服务器与其他用户和开发者交流,获取支持、分享知识并进行头脑风暴。

官方文档

  • Ultralytics YOLO26 文档: 请参考 官方 YOLO26 文档,获取关于众多计算机视觉任务和项目的详细指南和宝贵见解。

你的数据集准备好了!

适当调整大小、归一化和增强的数据可以通过减少噪声和提高泛化能力来改善模型性能。通过遵循本指南中概述的预处理技术和最佳实践,你可以创建一个稳固的数据集。当你的预处理数据集准备好后,你就可以放心地进行项目的后续步骤了。

常见问题 (FAQ)

数据预处理在计算机视觉项目中有什么重要性?

数据预处理在计算机视觉项目中至关重要,因为它能确保数据干净、一致,并处于最适合模型训练的格式。通过解决原始数据中存在的噪声、不一致和不平衡等问题,调整大小、归一化、增强和数据集拆分等预处理步骤有助于减少计算负载并提高模型性能。有关更多详细信息,请访问 计算机视觉项目的步骤

我该如何使用 Ultralytics YOLO 进行数据增强?

要使用 Ultralytics YOLO26 进行数据增强,你需要修改数据集配置文件 (.yaml)。在该文件中,你可以指定各种增强技术,如随机裁剪、水平翻转和亮度调整。这可以通过 此处解释 的训练配置有效地完成。数据增强有助于创建更稳健的数据集,减少 过拟合,并提高模型泛化能力。

计算机视觉数据的最佳数据归一化技术是什么?

归一化将像素值缩放到标准范围,以实现更快的收敛和训练期间更好的性能。常见技术包括:

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

对于 YOLO26,归一化是自动处理的,包括转换为 RGB 和像素值缩放。在 模型训练部分 了解更多信息。

我该如何拆分我的带标注数据集用于训练?

拆分数据集的一个常用做法是将数据分为 70% 用于训练,20% 用于验证,10% 用于测试。重要的是在这些拆分中保持各类数据的分布,并通过仅在训练集上执行增强来避免数据泄露。使用 scikit-learn 或 TensorFlow 等工具进行高效的数据集拆分。请参阅关于 数据集准备 的详细指南。

我可以在 YOLO26 中无需手动调整大小来处理不同的图像大小吗?

是的,Ultralytics YOLO26 可以通过模型训练期间的 'imgsz' 参数处理不同的图像大小。此参数确保图像在调整大小时,其最大维度符合指定的大小(例如 640 像素),同时保持纵横比。有关更灵活的输入处理和自动调整,请查看 模型训练部分

评论