计算机视觉的数据收集与标注策略#
数据收集和标注是每个计算机视觉项目的两个基础步骤:你收集具有代表性的图像或视频,然后进行标记,以便模型从中学习。数据的质量直接决定了模型性能,这就是为什么在开始任何训练之前,类别定义、无偏差的数据来源和一致的标注至关重要。
Watch: How to Build Effective Data Collection and Annotation Strategies for Computer Vision 🚀
本指南涵盖了设置类别和收集数据、什么是数据标注以及可供选择的标注类型和格式,还有高效的标注策略——每一个决策都与你项目的目标保持一致。
设置类别与收集数据#
为计算机视觉项目收集图像和视频归结为三个决定:定义多少个类、从哪里获取数据,以及如何确保数据集没有偏见。
为你的项目选择合适的类别#
开启计算机视觉项目时,首要问题之一是包含多少个类别。你需要确定类别成员,这涉及到你希望模型识别和区分的不同类别或标签。类别的数量应根据你的项目具体目标来确定。
例如,如果你想监控交通,你的类别可能包括“汽车”、“卡车”、“公交车”、“摩托车”和“自行车”。另一方面,如果是在商店中追踪物品,你的类别可以是“水果”、“蔬菜”、“饮料”和“零食”。根据项目目标定义类别有助于保持数据集的相关性和针对性。
当你定义类别时,另一个重要的区分是选择粗略还是精细的类别数量。'数量'指的是你感兴趣的不同类别的个数。这个决定会影响数据的颗粒度和模型的复杂度。以下是每种方法的考量点:
- 粗略类别计数:这些是更广泛、更具包容性的类别,例如“车辆”和“非车辆”。它们简化了标注并需要较少的计算资源,但提供的信息较少,可能会限制模型在复杂场景中的有效性。
- 精细类别计数:类别更多且区分更细致,例如“轿车”、“SUV”、“皮卡车”和“摩托车”。它们能捕捉到更详细的信息,从而提高模型准确度和性能。然而,它们标注起来更耗时、更费力,并需要更多的计算资源。
从更具体的类别开始通常非常有帮助,特别是在细节很重要的复杂项目中。更具体的类别让你能收集到更详尽的数据,获得更深入的见解,并建立类别之间更清晰的区分。这不仅能提高模型准确度,而且在需要时更容易对模型进行调整,节省时间和资源。
数据来源#
你可以使用公开数据集或收集自己的自定义数据。诸如 Kaggle 和 Google Dataset Search Engine 上的公开数据集提供了经过良好标注的标准化数据,使其成为训练和验证模型的绝佳起点。
另一方面,自定义数据收集允许你根据特定需求定制数据集。你可以通过摄像头或无人机捕获图像和视频,从网络上抓取图像,或者使用组织内部现有的数据。自定义数据让你能更好地控制其质量和相关性。结合公共和自定义数据来源有助于创建多样化且全面的数据集。
在数据收集过程中避免偏见#
当某些群体或场景在你的数据集中代表性不足或过高时,就会产生偏差。这会导致模型在某些数据上表现良好,但在其他数据上表现不佳。避免AI中的偏差至关重要,这样你的计算机视觉模型才能在各种场景中表现出色。
以下是你如何在收集数据时避免偏见的方法:
- 多样化的来源:从多个来源收集数据,以捕捉不同的观点和场景。
- 平衡的代表性:包括来自所有相关群体的平衡代表性。例如,考虑不同的年龄、性别和种族。
- 持续监控:定期审查和更新你的数据集,以识别并解决任何新出现的偏见。
- 偏差缓解技术:使用诸如对代表性不足的类别进行过采样、数据增强和注重公平的算法等方法。
遵循这些做法有助于创建一个更健壮、更公平的模型,使其在现实应用中具有良好的泛化能力。
什么是数据标注?#
数据标注是标记数据以使其可用于训练机器学习模型的过程。在计算机视觉中,这意味着用模型需要学习的信息来标记图像或视频。如果没有正确标注的数据,模型就无法准确学习输入和输出之间的关系。
数据标注的类型#
根据计算机视觉任务的具体要求,数据标注有不同的类型。以下是一些示例:
- 边界框 (Bounding Boxes):在图像中物体周围绘制的矩形框,主要用于目标检测任务。这些框由它们的左上角和右下角坐标定义。
- 多边形(Polygons):对象的详细轮廓,比边界框提供更精确的标注。多边形用于实例分割等任务,在这些任务中对象的形状非常重要。
- 掩码(Masks):二进制掩码,其中每个像素要么属于对象,要么属于背景。掩码用于语义分割任务,以提供像素级的细节。
- 关键点(Keypoints):在图像中标记的特定点,用于识别感兴趣的位置。关键点用于姿态估计和面部关键点检测等任务。
- 旋转边界框:带有旋转角的矩形,用于在对象出现任意方向(如航拍图像)的 OBB 任务中。
常见标注格式#
在选择了一种标注类型后,选择合适的格式来存储和共享标注非常重要。最常见的格式包括:
| 格式 | 文件结构 | 常用于 |
|---|---|---|
| COCO | 单个 JSON 文件 | 目标检测、实例分割、关键点检测、stuff 和全景分割、图像描述 |
| Pascal VOC | 每张图像一个 XML 文件 | 目标检测 |
| YOLO | 每张图像一个 .txt 文件 | 目标检测、分割、姿态和旋转框 |
YOLO 格式为每个对象存储一行,类索引从 0 开始。对于目标检测,该行为 class x_center y_center width height 且带有归一化的 0-1 坐标。分割行用对象的归一化多边形点替换边界框,而姿态行保留边界框并在其后附加关键点坐标,当数据集声明 kpt_shape: [n, 3] 时带有一个每个关键点的可见性标志。OBB 行使用归一化的角点坐标存储 class x1 y1 x2 y2 x3 y3 x4 y4。
如果你的标注工具导出 COCO JSON,你可以将其转换为 YOLO .txt 标签,或者使用自定义数据集类直接在 JSON 上进行训练。
设置标注准则#
选定标注类型和格式后,下一步是建立清晰客观的标注规则。这些规则是整个标注过程中保持一致性和准确性的路线图。这些规则的关键方面包括:
- 清晰与细节:确保你的说明清晰明了。使用示例和插图来展示期望的效果。
- 一致性:保持你的标注统一。为标注不同类型的数据设定标准准则,确保所有标注遵循相同的规则。
- 减少偏见:保持中立。训练自己保持客观,最小化个人偏见以确保标注公平。
- 效率:工作要更聪明,而不是更努力。使用能自动化重复任务的工具和工作流,使标注过程更快、更高效。
定期审查和更新你的标注规则将有助于保持标注的准确、一致,并与你的项目目标保持一致。
标注工具#
一个好的标注工具可让你标记任务所需的每种类型,强制执行一致的指南,并以可用于训练的格式导出标签。Ultralytics Platform 提供了一个内置的标注编辑器,涵盖检测、实例分割、语义分割、分类、姿态和 OBB,并具有由 SAM 驱动的智能标注功能,可将单击转换为用于检测、实例分割、语义分割和 OBB 任务的掩膜。由于标注以每个任务期望的布局保存(用于空间任务的 YOLO .txt 行以及用于分类的类文件夹),因此你的带标签数据集可以直接进入训练而无需转换步骤。
标注质量:准确度、精密度和异常值#
在大规模标注之前,了解准确性、精确度、离群值和质量控制有助于避免以适得其反的方式标注数据。
理解准确性和精度#
理解准确性(Accuracy)和精确度(Precision)之间的区别及其与标注的关系非常重要。准确性是指标注数据与真实值的接近程度。它帮助我们衡量标签反映现实世界场景的程度。精确度表示标注的一致性。它检查你是否在整个数据集中为同一对象或特征赋予相同的标签。高准确性和精确度通过减少噪声并提高模型从训练数据中泛化的能力,带来更好的训练模型。
识别异常值#
异常值是偏离数据集中其他观察结果的数据点。就标注而言,异常值可能是标注错误的图像或与数据集其余部分不符的标注。异常值令人担忧,因为它们会扭曲模型的学习过程,导致预测不准确和泛化能力差。
你可以使用各种方法来检测和纠正异常值:
- 统计技术:要检测诸如像素值、边界框坐标或对象大小等数值特征中的离群值,你可以使用箱线图、直方图或 z 分数等方法。
- 可视化技术:要发现像对象类别、颜色或形状等分类特征中的异常,请使用绘图图像、标签或热力图等可视化方法。
- 算法方法:使用诸如聚类(例如 K-means 聚类、DBSCAN)和异常检测算法等工具,根据数据分布模式识别离群值。
标注数据的质量控制#
就像其他技术项目一样,质量控制对于标注数据来说是必不可少的。定期检查标注以确保其准确且一致是一种好的做法。这可以通过几种不同的方式完成:
- 审查标注数据的样本
- 使用自动化工具来发现常见错误
- 让另一个人复核标注
如果你与多人合作,不同标注者之间的一致性很重要。良好的标注者间一致性意味着指南很清晰,每个人都以同样的方式遵循它们。它让每个人保持同步,并保持标注的一致性。
在审查时,如果发现错误,请纠正它们并更新指南以避免将来犯错。为标注者提供反馈,并提供定期培训以帮助减少错误。拥有处理错误的强大流程可以保持数据集的准确和可靠。
高效的数据标记策略#
为了使数据标记过程更顺畅、更有效,请考虑实施以下策略:
- 清晰的标注指南:提供带有示例的详细说明,以确保所有标注者对任务的理解一致。例如,在标记鸟类时,明确是包含整只鸟还是仅包含特定部分。
- 定期质量检查:设定基准并使用特定的指标来审查工作,通过持续反馈维持高标准。
- 使用预标注工具:许多现代标注平台提供 AI 辅助的预标注功能,通过自动生成人工随后可以优化的初始标注,从而显著加快过程。
- 实施主动学习:这种方法优先标记最具有信息量的样本,可以在保持模型性能的同时减少所需的总标注量。
- 批处理:将相似的图像分组在一起进行标注,以保持一致性并提高效率。
这些策略有助于在减少标记过程所需时间和资源的同时,保持高质量的标注。
结论#
收集多样化、无偏见的数据并使用正确的工具对其进行一致标注是可靠计算机 vision 模型的基石。收集并标记数据集后,继续阅读计算机视觉项目步骤指南以进入训练和评估。如果在过程中遇到问题,请在 Ultralytics GitHub 存储库或 Ultralytics Discord 服务器上向社区求助。
常见问题解答#
为了最大限度地减少偏见,请从多样化的来源收集数据,确保所有相关群体(如不同的年龄、性别和种族)具有均衡的代表性,定期审查和更新数据集以捕捉新出现的偏见,并应用如过采样欠代表类、数据增强和公平感知算法等缓解技术。通过这种方式避免偏见,可以保持你的计算机视觉模型在各种现实场景中表现良好,并提高其泛化能力。
建立清晰、客观的标注准则,包含详细的说明、示例和图解,然后将其统一应用于所有数据类型,以便每个标注都遵循相同的规则。培训标注员保持中立以减少个人偏见,定期审查和更新准则,并使用自动化一致性检查和标注员间的反馈,以保持高准确度并与你的项目目标保持一致。
每个类别几百个标注对象就足以开始尝试迁移学习,但为了获得可靠的实际性能,Ultralytics 建议每个类别至少有 1,500 张图像和 10,000 个标注实例。将足够大的数据集与合理的训练计划相结合——大约 300 个周期是一个常见的起点,如果模型过早过拟合则会减少——并保持标注的严谨性,使其符合你项目的具体目标。在YOLO26 训练指南中探索详细的训练策略。
可以。Ultralytics Platform 包含一个内置的标注编辑器,在单个工作区中支持边界框、多边形、关键点、旋转框和分类标签。由 SAM 驱动的智能标注通过单击生成掩膜,从而加快了检测、实例分割、语义分割和 OBB 任务的标注速度,而姿态和分类则是手动标注的。标注存储在每个任务期望的布局中——空间任务使用 YOLO
.txt行,分类使用类文件夹——随时准备进行训练。