跳至内容

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

导言

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

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

数据预处理的重要性

我们在收集和注释数据时已经考虑到了多方面的因素。那么,是什么让数据预处理对计算机视觉项目如此重要呢?嗯,数据预处理就是将数据转换成适合训练的格式,以减少计算负荷并帮助提高模型性能。以下是原始数据中的一些常见问题,预处理可以解决这些问题:

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

数据预处理技术

数据预处理的首要步骤之一是调整大小。有些模型设计用于处理不同的输入尺寸,但许多模型需要一致的输入尺寸。调整图像大小可以使其保持一致,并降低计算复杂度。

调整图像大小

您可以使用以下方法调整图片大小:

  • 双线性插值通过对四个最近的像素值进行加权平均来平滑像素值。
  • 最近的邻居:分配最近的像素值,不求平均值,导致图像块状,但计算速度更快。

为了简化调整大小的工作,您可以使用以下工具:

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

关于YOLO11 ,模型训练过程中的 "imgsz "参数允许灵活设置输入尺寸。当设置为特定尺寸(如 640)时,模型将调整输入图像的大小,使其最大尺寸为 640 像素,同时保持原始的纵横比。

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

归一化像素值

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

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

YOLO11 YOLO11 会自动执行多个预处理步骤,包括转换为 RGB、将像素值缩放至 [0, 1] 范围,以及使用预定义的平均值和标准偏差值进行归一化。

分割数据集

清理完数据后,就可以分割数据集了。将数据拆分成训练集、验证集和测试集是为了确保模型能在未见过的数据上进行评估,以评估其泛化性能。常见的拆分方法是 70% 用于训练,20% 用于验证,10% 用于测试。您可以使用各种工具和库来分割数据,如 scikit-learn 或TensorFlow 。

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

  • 维护数据分布:确保在训练集、验证集和测试集中保持类的数据分布。
  • 避免数据泄露:通常情况下,数据扩增是在数据集拆分之后进行的。数据扩增和任何其他预处理都只能应用于训练集,以防止验证集或测试集中的信息影响模型训练。-平衡:对于不平衡的数据集,可考虑在训练集中对少数类进行超采样或对多数类进行低采样等技术。

什么是数据增强?

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

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

  • 创建更稳健的数据集:数据扩增可使模型对输入数据的变化和扭曲更加稳健。这包括光照、方向和比例的变化。
  • 成本效益高:数据扩增是增加训练数据量的一种经济有效的方法,无需收集和标注新数据。
  • 更好地利用数据:通过创造新的变化,最大限度地发挥每个可用数据点的潜力

数据扩充方法

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

数据增强概述

关于YOLO11 ,您可以通过修改数据配置文件(.yaml 文件)来增强自定义数据集。在该文件中,您可以添加一个扩增部分,其中的参数可指定您希望如何扩增数据。

Ultralytics YOLO11 资源库支持各种数据增强。您可以应用各种转换,例如

  • 随机作物
  • 翻转:图像可水平或垂直翻转。
  • 旋转:图像可按特定角度旋转。
  • 失真

此外,您还可以通过特定参数调整这些增强技术的强度,以生成更多数据种类。

预处理案例研究

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

以下是本项目预处理的每个步骤:

  • 调整图片大小:由于YOLO11 可以处理灵活的输入尺寸并自动调整大小,因此无需手动调整大小。在训练过程中,模型会根据指定的 "imgsz "参数调整图像大小。
  • 像素值归一化:YOLO11 在预处理过程中会自动将像素值归一化为 0 至 1 的范围,因此不需要这样做。
  • 分割数据集:使用 scikit-learn 等工具将数据集分为训练集(70%)、验证集(20%)和测试集(10%)。
  • 数据增强:修改数据集配置文件(.yaml),加入随机裁剪、水平翻转和亮度调整等数据增强技术。

这些步骤可确保数据集在准备过程中不会出现任何潜在问题,并为探索性数据分析(EDA)做好准备。

探索性数据分析技术

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

统计 EDA 技术

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

可视化 EDA 技术

可视化是图像数据集 EDA 的关键。例如,类不平衡分析是 EDA 的另一个重要方面。它有助于确定某些类别在数据集中的代表性是否不足,使用条形图对不同图像类别的分布进行可视化,可以快速揭示任何不平衡现象。同样,也可以使用盒状图等可视化工具识别异常值,盒状图可以突出显示像素强度或特征分布的异常情况。离群点检测可以防止异常数据点影响结果。

常用的可视化工具包括

  • 直方图和方框图:用于了解像素值的分布情况和识别异常值。
  • 散点图:有助于探索图像特征或注释之间的关系。
  • 热图有效实现图像中像素强度分布或注释特征空间分布的可视化。

使用Ultralytics Explorer 进行 EDA

社区说明 ⚠️

截至 ultralytics>=8.3.10,Ultralytics Explorer 支持已被弃用。不过不用担心!现在您可以通过 Ultralytics 枢纽HUB 是我们专为简化您的工作流程而设计的无代码直观平台。有了Ultralytics HUB,您可以毫不费力地继续探索、可视化和管理数据,而无需编写任何代码。请务必查看并利用其强大的功能! 🚀

如需更高级的 EDA 方法,您可以使用Ultralytics Explorer 工具。它为探索计算机视觉数据集提供了强大的功能。通过支持语义搜索、SQL 查询和矢量相似性搜索,该工具可让您轻松分析和理解数据。通过Ultralytics Explorer,您可以为数据集创建嵌入,以查找相似图像,运行 SQL 查询进行详细分析,以及执行语义搜索,所有这些都可以通过用户友好的图形界面来实现。

Ultralytics Explorer 概述

联系与沟通

与其他计算机视觉爱好者讨论您的项目,可以从不同角度为您提供新思路。以下是一些学习、排除故障和建立联系的好方法:

与社区联系的渠道

  • GitHub 问题:访问YOLO11 GitHub 代码库,使用 "问题"选项卡提出问题、报告错误和建议功能。社区和维护人员会帮助您解决遇到的任何问题。
  • Ultralytics Discord 服务器:加入Ultralytics Discord 服务器,与其他用户和开发人员联系,获得支持,分享知识,集思广益。

官方文件

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

您的数据集已准备就绪!

对数据进行适当的大小调整、归一化和增强,可以减少噪声并提高泛化效果,从而提高模型性能。按照本指南中概述的预处理技术和最佳实践,您可以创建一个可靠的数据集。准备好预处理数据集后,您就可以放心地进入项目的下一个步骤。

常见问题

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

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

如何使用Ultralytics YOLO 进行数据扩增?

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

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

归一化将像素值缩放至标准范围,以加快收敛速度并提高训练时的性能。常见的技术包括

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

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

我应该如何拆分注释数据集进行训练?

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

我能否在YOLO11 中处理不同大小的图像,而无需手动调整大小?

可以,Ultralytics YOLO11 可以在模型训练过程中通过 "imgsz "参数处理不同尺寸的图像。该参数可确保调整图像大小,使其最大尺寸符合指定尺寸(如 640 像素),同时保持纵横比。如需更灵活的输入处理和自动调整,请查看模型训练部分

📅创建于 6 个月前 ✏️已更新 2 个月前

评论