带注释的计算机视觉数据的数据预处理技术
简介
在您定义了计算机视觉项目目标并收集和标注数据后,下一步是预处理标注数据,并为模型训练做好准备。干净且一致的数据对于创建性能良好的模型至关重要。
观看: 如何使用数据预处理和增强来提高真实场景中模型的准确性 🚀
预处理是计算机视觉项目工作流程中的一个步骤,包括调整图像大小、标准化像素值、扩充数据集以及将数据拆分为训练集、验证集和测试集。让我们来探索一些用于清理数据的基本技术和最佳实践!
数据预处理的重要性
我们已经在认真地收集和标注数据,并考虑了多个因素。那么,为什么数据预处理对于计算机视觉项目如此重要呢? 实际上,数据预处理就是使您的数据成为适合训练的格式,从而减少计算量并有助于提高模型性能。 以下是原始数据中预处理要解决的一些常见问题:
- 噪声: 数据中不相关或随机的变化。
- 不一致: 图像大小、格式和质量的变化。
- 不平衡:数据集中类别或类别的分布不均。
数据预处理技术
数据预处理的首要步骤之一是调整大小。某些模型旨在处理可变的输入大小,但许多模型需要一致的输入大小。调整图像大小使它们均匀并降低计算复杂性。
调整图像大小
您可以使用以下方法调整图像大小:
- 双线性插值: 通过对四个最近邻像素值进行加权平均来平滑像素值。
- 最近邻插值: 分配最近的像素值而不进行平均,从而导致图像呈块状,但计算速度更快。
为了简化调整大小的任务,您可以使用以下工具:
- OpenCV:一个流行的计算机视觉库,具有用于图像处理的广泛功能。
- PIL (Pillow):一个用于打开、操作和保存图像文件的 python 图像库。
对于 YOLO11,模型训练期间的 'imgsz' 参数允许灵活的输入大小。当设置为特定大小(例如 640)时,模型将调整输入图像的大小,使其最大尺寸为 640 像素,同时保持原始纵横比。
通过评估模型和数据集的特定需求,您可以确定调整大小是否是必要的预处理步骤,或者您的模型是否可以有效地处理不同大小的图像。
归一化像素值
另一种预处理技术是归一化。归一化将像素值缩放到标准范围,这有助于在训练期间更快地收敛并提高模型性能。以下是一些常见的归一化技术:
- Min-Max Scaling: 将像素值缩放到 0 到 1 的范围。
- Z-Score 归一化: 根据像素值的平均值和标准差来缩放像素值。
对于 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 查询以进行详细分析,并执行语义搜索,所有这些都通过用户友好的图形界面实现。
联系我们
与其他计算机视觉爱好者讨论您的项目,可以从不同的角度为您提供新的想法。以下是一些学习、解决问题和建立联系的好方法:
与社区联系的渠道
- GitHub Issues:访问 YOLO11 GitHub 存储库,并使用Issues 选项卡提出问题、报告错误和建议功能。社区和维护人员将帮助您解决遇到的任何问题。
- Ultralytics Discord 服务器:加入Ultralytics Discord 服务器,与其他用户和开发人员联系、获得支持、分享知识和集思广益。
官方文档
- Ultralytics YOLO11 文档:请参阅官方 YOLO11 文档,获取关于众多计算机视觉任务和项目的详尽指南和宝贵见解。
您的数据集已准备就绪!
适当调整大小、归一化和增强的数据可以通过减少噪声和提高泛化能力来提高模型性能。通过遵循本指南中概述的预处理技术和最佳实践,您可以创建一个坚实的数据集。 准备好预处理的数据集后,您可以自信地继续项目的后续步骤。
常见问题
在计算机视觉项目中,数据预处理的重要性是什么?
数据预处理在计算机视觉项目中至关重要,因为它确保数据干净、一致,并且格式最适合模型训练。通过解决原始数据中的噪声、不一致和不平衡等问题,调整大小、标准化、增强和数据集分割等预处理步骤有助于减少计算负荷并提高模型性能。有关更多详细信息,请访问计算机视觉项目的步骤。
如何使用 Ultralytics YOLO 进行数据增强?
对于使用 Ultralytics YOLO11 进行数据增强,您需要修改数据集配置文件(.yaml)。在此文件中,您可以指定各种增强技术,例如随机裁剪、水平翻转和亮度调整。这可以通过此处解释的训练配置有效地完成。数据增强有助于创建更强大的数据集,减少过度拟合,并提高模型泛化能力。
计算机视觉数据有哪些最佳数据归一化技术?
归一化将像素值缩放到标准范围,以便在训练期间更快地收敛并提高性能。常见技术包括:
- Min-Max Scaling: 将像素值缩放到 0 到 1 的范围。
- Z-Score 归一化: 根据像素值的平均值和标准差来缩放像素值。
对于 YOLO11,规范化是自动处理的,包括转换为 RGB 和像素值缩放。有关更多信息,请参见模型训练部分。
我应该如何拆分带注释的数据集以进行训练?
要拆分数据集,常见的做法是将其分为 70% 用于训练,20% 用于验证,10% 用于测试。重要的是要保持这些拆分中类的数据分布,并通过仅对训练集执行增强来避免数据泄漏。使用 scikit-learn 或 TensorFlow 等工具进行高效的数据集拆分。请参阅有关数据集准备的详细指南。
是否可以在 YOLO11 中处理不同的图像尺寸,而无需手动调整大小?
是的,Ultralytics YOLO11 可以在模型训练期间通过“imgsz”参数处理不同的图像大小。此参数确保调整图像大小,使其最大尺寸与指定的大小(例如,640 像素)匹配,同时保持纵横比。为了更灵活的输入处理和自动调整,请查看模型训练部分。