时间:2023-01-06 12:36:50
作者:景联文科技
浏览: 次
在这篇文章中,让我们探索数据标注的世界。我们将从基础开始定义数据标注,讨论不同类型的标注和数据标记技术,包括对行业的调查,并涉及与此过程相关的一些限制和挑战。然后,我们将通过消除对图像和视频进行标注的需要来探索模拟数据提供的前景和可能性。
计算机视觉的概念自 1970 年代就已存在。这些想法令人兴奋,但必要的技术堆栈(算法、计算能力、训练数据等)无法将概念变为现实。2012 年,多伦多大学的一个团队参加了 ImageNet 大规模视觉识别挑战赛 ( ILSVRC ),这种情况发生了变化。他们提出了一个名为AlexNet的深度神经网络,这改变了人工智能和计算机视觉项目的格局。从那时起,随着新网络的快速发展、更易访问的计算资源以及对网络训练所需数据的更好理解,计算机视觉呈爆炸式增长。这个领域的发展步伐只会加快。但是,该领域仍然存在挑战,尤其是在数据标注和数据标记方面。
在现代计算机视觉中,团队最关键的瓶颈是缺乏有效、可扩展的训练数据。大多数计算机视觉生产模型都基于监督机器学习模型。监督模型需要大量标注数据。传统上,获取这些数据集涉及两个主要阶段:数据采集和数据标注。尽管我们的手机、社交媒体、相机和无数其他方法一直在采集数据,但这些数据可能不足以或无法用于计算机视觉训练的原因有很多。因此,团队花费大量时间思考他们如何采集这些数据以满足其网络的需求。
由于我们在这里专注于数据标注,让我们假设一个团队已经采集了他们训练网络所需的数据。下一步是标注数据集。本质上,数据标注是向数据添加信息的过程,以便我们的模型了解图像包含的内容并可以进行相应的推理。一个例子:如果你正在训练一个网络来识别各种上下文中的手,仅仅显示包含手的网络图像是不够的。这些图像还包含其他内容:背景、其他对象(如手机或宠物)以及任何其他令人分心的事物。您的网络并非“天生”具有区分这些事物的能力——这就是您训练它的原因。除非你展示它,否则它不知道什么是手,什么是狗。因此,您的训练数据需要确定每个图像的哪一部分包含手。仅使用此信息 - 通过数据标注添加– 网络可以开始学习吗?有了足够的标注,模型开始为手的外观建立自己的规则。它开始猜测。然后,模型将其预测与标注进行比较,并进行调整以产生更好的未来预测。接下来是更多的“学习”,然后进行测试以确保您的模型达到您设定的指标。很快,您的模型就可以识别其他未标记图像中的手。
有不同复杂程度的不同数据标注方法用于将必要的信息添加到收集的数据中。归根结底,数据标注的目标是实现完美的 Ground Truth——您添加的标注与现实完美匹配(例如,您的手部标注不会意外漏掉拇指或意外将狗识别为手同样)。虽然可以对文本、音频、图像或视频执行数据标注,但我们将重点关注依赖于视觉数据标注的计算机视觉应用程序。在讨论了各种方法之后,我们将帮助您了解哪种方法可能适合您的模型,然后如何实际完成标注。
图像标注是通过几种不同的方法完成的,这会导致图像的不同结果和标签。标注的类型是我们想要为我们的数据实现的结果,而技术是我们如何实现该标签。例如,该技术可能是在猫周围画一个框,这会导致图像的那部分被标记为“猫”。该技术正在绘制我们所说的边界框,结果是将图像的选定部分分类为“猫”。有些技术更适合不同类型的标注。
1. 图像分类——这是最基本的数据标注类型. 它的目的是训练一个模型,通过简单的数据标注来识别图像中对象的存在。这是一个简单的二进制文件——例如,图像是否包含猫?这是一种高级形式的标注,因为它适用于整个图像。分类也可以很广泛——例如,图像是否包含动物,无论是猫、狗还是鸭子。显然,这是一种非常有限的方法——它将图像过度简化为一个标签,从而遗漏了对理解图像真实本质至关重要的细微差别和细节。现实生活中的场景很少只包含一个对象。它可以教模型如何回答问题——图像是否包含猫?– 但不是如何识别猫在图像中的位置。
2. 物体检测——物体检测旨在识别图像中一个或多个物体的存在、位置和数量,并正确标记它们。这个过程可以训练一个模型来识别未标注图像中的对象,也可以对它们进行定位和计数。可以结合使用不同的标注技术来帮助单个图像中的对象检测。对象检测帮助我们定义图像中的内容以及它的位置。但是,它没有明确定义对象的形状或大小。这种方法的一个挑战是,只要猫以训练数据中捕获的某种方式摆姿势,它就可以在帧中定位猫。但是,例如,如果猫伸展、跳跃或背对镜头,模型可能会挣扎。
3. 分割——图像分割是一种更复杂的数据标记类型。这意味着将我们的图像分成不同的部分,称为段。通过将图像分成几段,我们可以更深入地了解图像中发生的事情以及各种对象之间的关系。
图像分割分为三种类型:
语义分割也称为类分割,它区分不同的对象类,并为对象类的每个成员分配相同的标签。例如,在一张街道图片中,此数据标注可能会将所有人类标记为红色,将所有汽车标记为蓝色,但它无法帮助您区分每个特定的人或汽车。这种类型的分割非常适合对对象进行分组,并且擅长帮助我们了解对象的存在和位置。但是,如果您需要计数或跟踪对象,此方法将不会很有帮助。
实例分割跟踪和计算图像中对象的形状、大小、位置和数量。这不仅可以对对象进行分类,还可以区分对象的实例,并使我们能够对特定类别的对象进行计数。图像中的每个人和汽车都被分配了不同的颜色,但图片中未分类的部分没有得到任何聚焦,背景只是消失了。
全景分割统一了语义分割(为每个像素分配一个类标签)和实例分割(检测和分割每个对象实例)的不同任务。这是最详细的分割形式,因 为它结合了其他两种分割形式来创建真实图像的高度粒度和详细表示。
二、哪种类型的数据标注适合我?
团队必须决定哪种类型的数据标注适合他们的应用程序。这是一个重要的问题,因为数据标注可能既昂贵又耗时,但它对模型的成功至关重要。因此,当需要标注他们的数据时,团队会陷入通常复杂的成本效益分析。虽然采用图像分类可能很诱人——它可能是最便宜和最容易实现的——但它的应用非常有限。如果我们考虑一个面向复杂城市环境的自动驾驶汽车计算机视觉模型,我们会开始发现仅仅识别其视线中是否有人是不够的。为了避免撞到人,汽车还需要知道人在哪里。如果我们采用医学计算机视觉应用程序——识别癌细胞的形状,我们需要实例分割,以区分不同的细胞实例。
但是在很多情况下,您需要哪种类型的数据标注并不明显。这对团队来说是一个高风险的决定。如果他们使用错误的标注方法或向图像中添加了错误的信息,他们的模型可能无法工作,他们将需要重新开始数据标注过程。
一旦你选择了你的标注方法,还有更多的选择要做;现在您必须选择一种标注技术。这是标注者将用于将标注附加到您的数据的实际方法。例如,他们可能会在对象周围绘制正方形、绘制多边多边形或附加地标。理解这些技术很重要,因为同样需要在成本、时间和有效性之间进行权衡。
· 矩形框——最基本的数据标注类型。它包括在目标对象周围绘制一个矩形或正方形,并且由于其简单性和多功能性而非常常用。当物体相对对称时(例如食品盒或路标),或者当对物体的确切形状不太感兴趣时,这很有用。另一方面,复杂的对象没有直角,使用边界框实现地面实况标注是不可能的。此外,我们没有关于盒子“内部”发生的事情的标注。例如,如果我们关心一个人的运动、姿势、步态或其他动态指标,则边界框不太可能有帮助。
· 多边形分割——边界框技术的一种变体。通过使用复杂的形状(多边形),不仅是边界框的直角,更准确地定义了目标对象的位置和边界。提高准确度可以剔除可能混淆分类器的不相关像素。这适用于形状更不规则的物体——汽车、人物、标志、动物。虽然多边形比边界框更准确,但重叠的对象可能会被捕获在单个多边形内,因此无法相互区分。
· 折线——绘制由一个或多个线段组成的连续线。当重要特征具有线性外观时,最好使用它。这在自动驾驶汽车环境中很常见,因为它很容易应用于定义车道和人行道。但是,对于大多数用例来说,这根本不相关,因为对象不是线性的,而且宽度超过单个像素。
· Landmarking – 这也称为点标注。它涉及在图像上创建点。这些小点有助于检测和量化数据中的特征。它经常用于面部识别以检测面部特征、情绪和表情。它可用于帮助标注人体、对齐姿势以及探索不同身体部位之间的关系。另一个有趣的用例是在航拍镜头中查找感兴趣的对象,例如汽车、建筑物等。显然,这种方法既费时又容易不准确。例如,在数千张图像中手动标记面部特征(如虹膜)很难一致且准确地进行。
· 跟踪- 这是一种数据标注技术,用于绘制跨多个帧的对象移动。一些工具包括插值,它使标注者能够标记一帧、跳过帧,然后标注新位置。标注工具会自动填充运动并通过框架跟踪对象。虽然这在理论上很好,但成功标注需要大量工作和高水平的准确性。通常,由于需要逐帧标注,因此标注视频数据的成本很快变得令人望而却步。
现在,您已经收集了数据并决定了最适合您的模型的数据标注方法和技术。是时候将标注添加到您的图像中了。这个标注过程涉及人们坐着,并在图像后手动标记图像。理想情况下,您可能会得到一些自动化工具的帮助,但总的来说,这是一个手动且劳动密集型的过程。 在当今的标注环境中,有几种不同的解决方案可供您使用:
· 众包– 众包涉及支付工人 - 通常分布在全球并作为自由职业者工作 - 以执行微任务或分配。他们通常会根据他们完成的工作量获得少量报酬。出于显而易见的原因,众包劳动力的质量和一致性往往较低。工人接受了轻微的审查,或者可能对他们在做什么或常见的陷阱知之甚少。管理它们的重担落在了你身上。还有一些平台可以众包工作但管理工作流程和工人的采购。所以在你的项目中工作的人没有反馈循环,也没有办法随着时间的推移对他们进行培训。数据安全也是一个挑战,因为这些人经常在不安全的计算机上独立工作。
· 内部解决方案——一些公司选择尝试在内部解决数据标注需求。对于小型、易于标注的数据集,这可能是一个不错的选择。但是,许多公司经常将这种低级别的工作分配给他们的数据科学家和工程师,这并不能很好地利用他们的时间。在内部雇佣标注者的替代方案——带来了流程控制和质量保证的好处——带来了巨大的间接成本。通常,这种方法不可扩展,因为您投资于招聘、管理和培训员工,而您的数据需求可能会随着时间的推移而剧烈波动。尝试自动化这些流程或构建内部技术解决方案的团队经常发现自己会分散宝贵的开发团队的注意力,因为这些项目可以更有效地外包。
· 外包——有许多数据标注公司——通过使用标注器,这些公司能够更好地控制质量,可以在了解您的特定需求时随着时间的推移提高质量,并且可以提供比其他选项更好的时间估计。但是,最终这仍然是一个手动过程,任何成本节约都来自廉价的劳动力成本。您仍然需要投入运营资源来管理这种关系,并且归根结底,您仍然依赖于遭受各种延迟、不一致和挑战的第三方供应商。
如您所见,所有这些选项都面临着重大的操作、质量控制和流程挑战。它们通常会迫使您将时间和精力投入到核心技术任务之外的事情上。
此外,无论您采用哪种手动数据标注方法,都存在一些固有的挑战和限制,这使得这个过程更加痛苦。
3D 图像数据 – 根据您需要使用的标注类型和技术,标注 3D 数据几乎是不可能的。例如,假设可以创建手动标注的 3D 深度图,但并非全部实用。它需要从多个角度捕捉图像,对每个角度进行标注并对齐它们。这需要手动无法实现的一致性。然而,现实世界中的许多高级任务都需要了解场景中存在的对象、它们的物理位置和底层物理知识,才能理解场景。例如,室内机器人需要深度图才能在其位置适当地排列物品。需要深度图来训练机器人将物体精确地插入或插入其他物体。机器人在导航时必须了解地板如何弯曲或弯曲以调整其路径。
物理 –压力、力、加速度和速度等不同的物理相互作用只能通过数学模拟进行标注。手动将数据压入视频是根本不可能的。
视频——视频数据的动态特性使得逐帧标记是必要的,但效率低下。通过大量帧进行一致和准确标记的需求非常耗时、困难且昂贵。
遮挡——在许多现实世界的场景中,物体或人至少部分被其他物体遮挡。部分被遮挡的对象更难检测和准确标注。想象一下拥挤的街道上有许多行人,或者手指重叠并相互挡住的手的图像。如果照片是在错误的时间拍摄的,手动标注者可能不得不假设他们看不到的东西的位置,或者可能会完全错过被遮挡的项目。
所有这一切都是在说:高质量的数据标注需要很多选择并且需要时间。时间就是金钱。谷歌的研究人员计算出,从 COCO 数据集中标注一张图像平均需要 19 分钟,而对来自 Cityscapes 数据集的单个图像进行完全标注需要 1.5 小时。这甚至不适用于复杂的分割方法。标注一个完整的数据集很容易花费 15,000 小时的劳动。当然,这是假设您甚至可以捕获您正在寻找的数据。人工成本会迅速增加,即使您支付的解决方案不能完全满足您的需求。