【深度学习:计算机视觉项目 】如何为您的计算机视觉项目选择正确的数据

在这里插入图片描述

对于开发商业应用程序的机器学习从业者来说,找到训练计算机视觉模型的最佳数据对于实现所需的性能至关重要。但这种以数据为中心的方法的效果取决于您是否有能力将正确的数据放入模型中。

为了帮助您获取这些数据,本文将探讨:

  • 找到最佳训练数据的重要性
  • 如何确定标签内容的优先级
  • 如何决定开始训练模型的数据子集
  • 如何使用开源工具为计算机视觉应用程序选择数据

为什么要关注数据来训练计算机视觉模型?

有几个原因可以解释为什么您在处理计算机视觉模型时应该主要关注构建训练数据。我们将简要研究训练数据的三个主要方面:

数据质量

首先,用于训练的数据质量直接影响模型的性能。人工智能模型学习和推广新的、未见过的数据的能力取决于它所训练的数据的质量。

对于计算机视觉模型,数据类型可以是图像、视频或 DICOM。无论哪种类型,当数据涵盖广泛的可能场景和边缘情况(即它代表问题空间)时,数据质量都可以被认为是良好的。如果用于训练的数据有偏差或不具有代表性,则模型可能在训练数据范围之外的真实数据上表现不佳。这可能是因为模型对训练数据过度拟合或欠拟合,并且不能很好地推广到新数据。

其次,用于培训的数据应该与手头的任务相关。这意味着数据中使用的特征应该是有意义的并且可以预测目标变量。如果训练数据中包含不相关或冗余的特征,模型可能会学习到对做出准确预测无用的模式。

例如,假设您想要检查为分类任务构建的数据集的质量。在分类的情况下,数据集质量的一个很好的衡量标准是数据点的可分离程度。如果数据点可以分为可分离的簇,那么模型将学会轻松地对这些簇进行分类。如果数据点不可分离,模型就无法学习分类。为了定义数据集的可分离性,使用分解算法(例如主成分分析,自动编码器,变分自动编码器等)

在这里插入图片描述
通过使用分解模型绘制二维特征,您可以看到在此数据集中,数据点无法分成簇。因此,对于分类任务来说,数据质量将被认为是低的。

在这里插入图片描述
通过使用分解模型绘制二维特征,您可以看到在此数据集中,数据点可以轻松地分成簇。因此,对于分类任务来说,数据质量将被认为是高的。

当然,不同的计算机视觉任务都需要不同的衡量标准来定义数据的整体质量。

数据量

足够的数据对于计算机视觉模型也很重要。训练所需的数据量取决于任务的复杂性和所使用的模型(例如,复杂的深度学习模型分割任务有一个要求,而简单的分类任务可能有不同的要求)。

对于大多数用例,大量训练数据更好,因为它允许模型学习计算机视觉任务的更强大的表示(阅读我们关于数据增强的博客,了解如何有效地向数据集添加更多训练图像)。然而,需要重申的是,数据收集、数据处理和数据注释非常耗时且资源密集,因此您必须找到适当的平衡点。

标签质量

除了数据源的质量之外,数据的标记方式也产生了巨大的差异。

标签质量是指计算机视觉任务中分配给数据的注释或标签的准确性和一致性。它是决定机器学习算法在目标检测、图像分类和语义分割等任务中性能的关键因素。

高质量的标签为模型提供了准确的信息,使其能够很好地学习和泛化新数据。相反,低质量或不一致的标签可能会导致过度拟合、性能不佳和预测不正确。因此,确保用于训练计算机视觉模型的标签具有高质量并准确反映图像的视觉内容非常重要。

您可以通过多种方法来减少可用数据集中的标签错误,例如:

  • 清晰的标签说明:在开始注释过程之前,团队之间共享的一套清晰的指南至关重要。它将确保标记标签之间的一致性,并向使用这些带注释数据的机器学习工程师提供有关标签的信息。
  • 质量保证系统:构建计算机视觉模型的最佳实践是建立一个质量保证系统。在这里,您有一个额外的步骤来审核标记数据的子集。当您处理大量数据集时,这特别有用。添加此步骤还可以使您的模型更加适合生产。
  • 使用经过训练的模型来检测标签错误:有一些可用的工具(例如 Encord Active)具有帮助您检测标签错误的功能。通过能够轻松找到标签错误,您可以确保在它们开始降低模型的准确性之前对其进行纠正。

要了解有关不同标签错误以及如何有效处理这些错误的更多信息,请阅读我们的三部分指南“计算机视觉中的数据错误:查找并修复标签错误”(第 1 部分)。

一旦您收集了所需的图像或视频数据并且您对数据集的质量充满信心,您就需要开始对其进行标记。但标记数据是一个耗时且费力的过程。因此,至关重要的是,您首先能够确定应该标记哪些数据,而不是尝试标记所有数据。

您如何决定应该标记哪些数据?

标记哪些数据的决定通常取决于特定任务和您可用的资源。以下是在为下一个计算机视觉项目选择数据时应考虑的几个因素:

  • 问题定义:您试图解决的问题应该指导要标记的数据的选择。例如,如果您正在构建二元分类器,则应该标记包含两个类示例的数据。
  • 数据质量:高质量数据对于构建准确的机器学习模型至关重要,因此优先考虑标记高质量数据非常重要。例如,如果您正在构建对象检测模型,则需要从数据集中的不同角度表示感兴趣的对象。注释还应该指定哪个是感兴趣的对象,哪个不是(即使它们“看起来”相似)。
  • 数据多样性:为了确保您的模型具有良好的泛化能力,标记多样化且能代表您要解决的问题的数据非常重要。
  • 注释成本:视频或图像注释可能既耗时又昂贵,因此根据可用资源确定要标记的最重要数据的优先级非常重要。
  • 模型要求:应根据您要使用的机器学习算法来选择数据。这些算法是根据您想要解决的问题来选择的。有些算法比其他算法需要更多的标记数据,因此在选择要标记的数据时考虑这一点很重要。
  • 可用资源:可注释的数据量通常受到可用资源(例如时间和预算)的限制。选择要注释的数据应考虑这些限制。

在这里插入图片描述
这些因素有助于您了解数据的属性。

了解数据对于管理训练数据集至关重要,这将有助于计算机视觉算法更好地解决手头的任务。一种方法是首先标记一小部分数据,以了解需要学习的模式类型。

然后,该初始标记阶段可用于识别哪些数据特别难以分类或识别对应用程序成功至关重要的数据。

使用注释工具时,此类实验会更容易。这还可以为需要学习的模式类型提供有价值的见解。

另一种方法是利用现有的注释数据或使用专家注释者或领域专家。该数据可以提供标记的起点。这种方法可能更昂贵,但需要的实验较少。

如何确定用于模型训练的数据子集

标记数据后,下一步是将数据拆分为训练、验证和测试子集。

训练集用于训练模型,验证集用于调整模型的超参数,测试集用于评估模型在看不见的数据上的性能。

现在,在决定开始训练 ML 模型的数据子集时,可以考虑以下因素:

  • 数据集的大小:较小的子集最初可用于快速训练和评估模型,而较大的子集用于构建可靠且经过微调的模型。
  • 数据的代表性:选择一个代表整个数据集的子集非常重要,以避免模型预测中的偏差。
  • 注释质量:如果数据已手动注释(使用边界框、多边形或其他任何内容),请务必确保注释具有高质量,以避免使用不正确或不一致的信息训练模型。
  • 计算资源:可用于训练的计算资源量会影响可以使用的子集的大小。
    在这里插入图片描述
    最终目标是选择一个子集,该子集在足够小以快速训练和足够大以准确表示整个数据集之间取得平衡。

有些数据注释工具提供的功能可以让您轻松地理解、注释和分析数据。让我们来看看这样一款开源工具,以及如何使用它来理解您的数据。

使用开源工具选择培训数据

在这里,我们将在 RarePlanes 数据集(包含真实和合成的卫星图像)上使用开源工具 Encord Active。为此,让我们用 Python 下载 Encord Active(或查看 GitHub 上的 Encord Active 代码库):

python3.9 -m venv ea-venv source ea-venv/bin/activate # within venv pip install encord-active

RarePlanes 是一个开源数据集,可作为 Encord Active 上的沙盒项目使用,并可通过 CLI 下载。如果要自行下载,则需要一个 AWS 账户,并安装和配置 AWS CLI。让我们下载 RarePlanes 图像数据集:

# within venv encord-active download #select the rareplanes dataset  #to visualize cd rareplanes encord-active visualize

现在,您可以看到数据集已导入平台,并可视化数据和标签的不同属性。

首先,我们来讨论数据属性。选择 "数据质量"→"摘要 "后,就可以直观地看到数据属性的概览。

在这里插入图片描述

Encord Active 中的数据质量摘要

您可以从摘要中选择显示严重异常值的属性,如绿色值。这样就可以分析数据集的质量。它们还提供了一些功能,让你在将数据分成训练、验证和测试数据集时,可以将离群值平均分割,或者完全消除离群值。

例如,使用 "操作→过滤和导出 "功能,最初我们可以看到它有 9524 个数据点。

在这里插入图片描述
现在,我们看到数据中包含 35 个模糊异常值。因此,在对这些模糊异常值进行评估后,创建新数据集时,我们只需从下拉菜单中进行选择,就能轻松消除这些异常值。模糊的阈值也可以改变。

在这里插入图片描述
现在让我们看看该工具如何帮助检查标签质量。选择 “标签质量"→"摘要”,就能直观地看到标签的不同属性。这有助于检查数据的标签质量如何,是否适合机器学习项目。

在这里插入图片描述

Encord Active 中的标签质量摘要页面

它可以让你看到数据集中需要解决的主要问题。因此,您可以直接过滤掉异常值,轻松解决这些问题。例如,在上面的示例中,您可以看到 RarePlanes 数据集中有 483 个注释重复。

在这里插入图片描述

注释重复示例

在这里插入图片描述

Encord Active 的资源管理器页面显示重复注释的分布情况

"标签质量"→"探索 " 中,选择 "重复注释 "后,就可以轻松分析异常值。现在,可以根据异常值的数量和类型对其进行不同的处理。上述数据集中有近 7% 的重复图像。这些图像不会为模型学习提供任何额外信息。因此,最好删除或合并这些图像。

选择数据后的后续步骤

在数据整理和标注之后,项目工作流程可以根据您在 ML 模型生命周期中所处的阶段朝着不同的方向发展。

如果您刚刚完成数据集的整理工作,那么下一步就应该检查数据量是否足够。

如果您对自己策划的数据集感到满意,那么建立基线模型将是一个良好的开端。这可以帮助您判断是否需要更改机器学习算法的架构,或进行特征提取以改进算法的输入。

创建基线模型

这是一个在数据集基础上建立的简单模型,不需要进行特征工程。创建基线模型的目的是为评估模型性能提供一个起点,并为比较其他更复杂的模型提供一个标准。重要的是要记住,基线模型的性能通常是有限的,但它为建立更复杂、更训练有素的模型提供了一个有用的起点。

检查数据量是否足够

机器学习项目所需的数据量取决于多个因素,包括模型的复杂性、学习算法的复杂性以及所需的精确度。

一般来说,数据越多,模型就越准确,但也有一个收益递减点,即增加数据量并不能显著提高性能。

粗略地,在计算机视觉中,每类 1000 张图像就足够了。如果使用预训练模型,这个数字可能会显着下降(来源)。根据一项研究,视觉任务的表现会根据训练数据量的大小进行对数增加。因此,大型数据集始终是可取的。但如今,从头开始构建神经网络并不常见,因为有许多高性能的预训练模型可用。在这些预先训练的模型上使用迁移学习,您可以使用更小的数据集来提高许多计算机视觉任务的性能。

特征提取

计算机视觉中的功能是图像的可量化方面,特定于您尝试识别的对象。它可以是图像中的突出色调,也可以是特定形状,如图像的线条、边缘或部分。特征提取是一个重要的步骤,因为输入图像有太多的额外信息,而这些信息对于模型来说是没有必要学习的。因此,数据集准备后的第一步是通过提取重要信息并丢弃非必要信息来简化图像。

通过提取重要的颜色或图像片段,我们可以将复杂和大型的图像数据转换为更小的特征集。这使计算机视觉模型能够更快地学习。可以使用传统方法或深度神经网络进行特征提取。

在传统的机器学习问题中,您需要花费大量时间进行手动特征选择和工程设计。在这个过程中,我们依靠我们的领域知识(或与领域专家合作)来创建使机器学习算法更好地工作的功能。用于特征提取的一些传统方法是:

  • 哈里斯角检测:使用高斯窗口函数检测角。
  • 尺度不变特征变换 (SIFT):用于角点检测的尺度不变技术。
  • 加速分段测试(FAST)的功能:用于角点检测的SIFT的更快版本,主要用于实时应用。

在深度学习模型中,我们不需要手动从图像中提取特征。网络会自动提取要素,并通过对其连接应用权重来了解它们在输出中的重要性。您将原始图像馈送到网络,当它通过网络层时,它会识别图像中的模式以创建要素。用作特征提取器的神经网络的几个示例包括:

  • Superpoint: Self-Supervised Interest Point Detection and Description:提出一个完全卷积的神经网络,在单次前向传递中计算类似SIFT的兴趣点位置和描述符。
  • D2-Net:一种用于联合描述和检测局部特征的可训练CNN:本文提出了一种既是密集特征描述符又是特征检测器的单个CNN。
  • LF-Net:从图像中学习局部特征:本文建议使用稀疏匹配的深度架构,并在具有相对姿态和深度图的图像对上使用端到端训练方法。他们在第一个图像上运行检测器,找到最大值,然后优化权重,以便在第二个图像上运行时,它们会生成一个干净的响应图,在正确的位置具有清晰的最大值。

结论

我们介绍了您在管理数据集时可以遵循的步骤。我们的下一个重点是选择应该标记哪些数据以及应该用于训练计算机视觉模型的数据子集。我们还研究了如何使用开源工具来帮助我们进行数据处理。最后,我们讨论了处理数据后可以采取的后续步骤,以及从那里需要做什么。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jcfszxc

赏我点铜板买喵粮吃吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值