Meet YOLO26: next-gen vision AI.

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

Link to this section简介#

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



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

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

Link to this section数据预处理的重要性#

我们已经在仔细地收集和标注数据,并考虑了多方面的因素。那么,是什么让数据预处理对于计算机视觉项目如此重要呢?其实,数据预处理的核心目的是将数据转换为适合训练的格式,从而降低计算负荷并提升模型性能。预处理可以解决原始数据中的以下常见问题:

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

Link to this section数据预处理技术#

数据预处理的首要步骤之一是调整大小(Resizing)。虽然某些模型设计用于处理可变的输入尺寸,但许多模型仍需要一致的输入尺寸。调整图像大小使其统一,有助于降低计算复杂性。

Link to this section调整图像大小#

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

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

为了简化调整大小的任务,你可以使用以下工具:

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

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

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

Link to this section像素值归一化#

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

  • 最小-最大缩放 (Min-Max Scaling):将像素值缩放到 0 到 1 的范围。
  • Z-Score 归一化:根据平均值和标准差对像素值进行缩放。

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

Link to this section拆分数据集#

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

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

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

Link to this section什么是数据增强?#

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

数据增强的其他好处包括:

  • 创建更稳健的数据集:数据增强可以使模型对输入数据中的变化和扭曲更具鲁棒性,包括光照、方向和比例的变化。
  • 具有成本效益:数据增强是一种无需收集和标注新数据即可增加 训练数据 量的低成本方式。
  • 更好地利用数据:通过创建新的变体,最大限度地发挥每个可用数据点的潜力。

Link to this section数据增强方法#

常见的数据增强技术包括翻转、旋转、缩放和色彩调整。一些库(如 Albumentations、Imgaug 和 TensorFlow 的 ImageDataGenerator)可以实现这些增强。

Overview of Data Augmentations

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

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

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

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

Link to this section预处理案例研究#

设想一个项目,旨在利用 YOLO26 开发一个模型,用于检测和分类交通图像中的不同类型的车辆。我们收集了交通图像,并用边界框和标签对它们进行了标注。

以下是该项目每个预处理步骤的示例:

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

这些步骤确保数据集在没有任何潜在问题的情况下准备就绪,并可进行探索性数据分析 (EDA)。

Link to this section探索性数据分析技术#

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

Link to this section统计 EDA 技术#

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

Link to this section视觉 EDA 技术#

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

常见的可视化工具包括:

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

Link to this section使用 Ultralytics Platform 进行 EDA#

对于无代码 EDA 方法,请将你的数据集上传到 Ultralytics Platform。数据集的 Charts 选项卡会自动生成上述可视化效果:拆分分布、主要类别计数、图像宽高直方图,以及标注位置和图像尺寸的 2D 热力图。Images 选项卡允许你以网格、紧凑或表格视图浏览数据,并叠加标注,无需编写任何代码即可轻松发现标注错误的示例或类别不平衡的情况。

Link to this section联系与互动#

与其他计算机视觉爱好者讨论你的项目可以从不同视角为你带来新思路。以下是一些学习、排查故障和交流的绝佳方式:

Link to this section与社区联系的渠道#

  • GitHub Issues: 访问 YOLO26 GitHub 存储库,并使用 Issues 选项卡 提出问题、报告错误并建议功能。社区成员和维护者都在那里为你解决遇到的问题。
  • Ultralytics Discord 服务器:加入 Ultralytics Discord 服务器 与其他用户和开发者交流、获取支持、分享知识并交流灵感。

Link to this section官方文档#

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

Link to this section你的数据集准备好了!#

经过适当调整大小、归一化和增强的数据可以减少噪声并提高泛化能力,从而提升模型性能。遵循本指南中概述的预处理技术和最佳实践,你可以构建一个扎实的数据集。当你的预处理数据集准备好后,你就可以自信地进行项目的下一步了。

Link to this section常见问题解答#

Link to this section数据预处理在计算机视觉项目中为什么很重要?#

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

Link to this section我该如何使用 Ultralytics YOLO 进行数据增强?#

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

Link to this section计算机视觉数据的最佳数据归一化技术有哪些?#

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

  • 最小-最大缩放 (Min-Max Scaling):将像素值缩放到 0 到 1 的范围。
  • Z-Score 归一化:根据平均值和标准差对像素值进行缩放。

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

Link to this section我应该如何拆分标注数据集进行训练?#

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

Link to this section我可以在 YOLO26 中不手动调整大小而处理不同图像尺寸吗?#

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

评论