标注指南
简介
在深度学习模型的设计和训练中,数据的标注质量对于模型的最终效果、训练过程的稳定程度、模型收敛的速度、模型的泛化性等诸多关系模型质量的指标有着至关重要的影响。因此,数据标注的质量,会直接影响到工业视觉智能平台产品的使用效果。为了帮助用户在使用平台时能选择合适的标注任务并获得高质量的标注数据,我们将跟数据标注有关的经验和建议总结于本文档中。
本文档的内容分为“标注任务定义”和“数据标注流程”两部分,用户可根据自身需要查看对应内容。
标注任务定义
本部分首先介绍计算机视觉领域中的主要任务,然后介绍工业视觉智能平台对应于这些视觉任务提供的标注能力,并举例说明用户该如何定义自己的数据任务范畴,选择适合自己需求场景的标注任务。
计算机基本视觉任务介绍
上图所示为计算机视觉问题的主要类型,包括分类、目标检测、目标分割和序列问题。
- 分类:输入一张图片,输出一系列标签,描述这张图片中所包含的目标类别名称,例如上图中的分类任务示意图,给出的结果说明图中含有bottle、cup,、cube三种类别的物品;
-
检测:相比分类更为精细,除了给出图片中含有哪些类别的目标,还会给出各个目标的位置,例如上图中的检测任务示意图,除了给出图中含有bottle、cup、cube三类物品外,还给出了这三类物品在图中的位置。位置信息通过一系列标注框给出,标注框的信息一般包含框左上角坐标和框右下角坐标,模型对某一个目标的检测结果输出形式一般为:
Prediction = [label, x-min, y-min, x-max, y-max]
其中label表示目标类别名称,(x-min, y-min)和(x-max, y-max)分别代表这个目标在图中相对位置的左上角坐标和右下角坐标,这一对坐标可以构成一个矩形。理想情况下,该矩形应该和目标的边缘轮廓外接。经过改造之后,检测模型还可以用于图像分类、物品计数、目标追踪、场景监控等场景;
-
分割:分割的精细程度相比检测更进一步,除了给出目标类别、目标位置以外,分割任务还要区别每一个目标的细粒度位置信息,信息内容详细到目标的边缘轮廓。一般来说,模型对某一个目标的分割结果的输出形式为:
Prediction = [label, (x-0,y-0), (x-1,y-1), (x-2,y-2), ...]
其中,label表示目标类别名称,(xi, yi)表示某一个点的坐标,一系列的点构成一个封闭的多边形区域,该区域即为分割的结果区域。
理论上,分割可以用于解决一切检测、分类可以解决的问题,但是分割模型的数据标注更为耗时,计算量更大,在解决实际问题时,需要综合考虑人力、算力、时间、时效等因素;
- 序列:主要解决视频处理场景中的需求,当前质检云暂未支持视频处理能力,但可通过将视频抽帧转变成图片,进行图片标注的方式获得视频处理的能力。
工业视觉智能平台标注能力介绍
平台提供丰富的标注工具,供用户根据使用习惯或者实际业务场景需求使用。
- 矩形框:最常见的检测模型标注方式,绘制一个矩形外接目标。
- 多边形:最常见的分割模型标注方式,依次延目标轮廓勾勒多个点后双击结束绘制创建封闭多边形。
- 折线:定义粗细后依次延目标绘制多个点形成一条折线
- 涂抹:定义粗细后对目标区域进行涂抹填充
- 交互式分割:智能标注工具,用户根据目标轮廓标注4个点后平台自动智能标注出整个目标的轮廓,可大幅提升标注效率
- 橡皮擦:橡皮擦仅对涂抹及交互式分割生成的标注生效,矩形框、多边形或折线标注通过双击标签后快捷键“Del”删除
- 清空标注:清空图片上所有标注
- 移动、放大、缩小、复位:可通过这些按钮/鼠标滚轮快速得到合适的标注视野
- 九宫格/十六宫格:将图片局部特征放大显示,常用于密集物体计数、微小缺陷标注等场景
以分割类任务为例,下图为平台的标注界面:
每种标注方式支持的模型如下表所示:
检测 | 分割 | 原子OCR | 通用OCR | 变化检测 | 无监督 | 矫正 | 分类 | |
---|---|---|---|---|---|---|---|---|
矩形框 | ✓ | ✓ | ✓ | ✓ | ||||
多边形 | ✓ | ✓ | ✓ | |||||
折线 | ✓ | ✓ | ||||||
涂抹 | ✓ | ✓ | ||||||
交互式分割 | ✓ | ✓ |
数据标注流程
确定目标场景
确定目标场景,指的是分析业务场景需求,将其转换成分类、检测、分割等机器视觉任务。该过程可参考计算机视觉任务的介绍,根据业务需求选择合适的计算机视觉技术方向。选型的主要依据可从以下三个角度出发:
- 对结果的精细化程度要求。如果需要给出检测结果的明确位置信息,应该选择检测或分割;
- 对模型服务的响应速度要求。如果对模型响应速度要求较快,则应该选择尽量简单的模型,一般来说响应延迟:分类 < 检测 < 分割;
- 标注成本。一般来说,标注的复杂度:分类 < 检测 < 分割,标注的时间、人力等成本也是相同的关系。
一般来说,检测可以解决大部分业务场景需求,相对分类和分割,检测技术在标注成本、响应时间、检测精细化程度都做到了较好的均衡,可以用适中的标注成本获取相当精度的检测效果,因此建议在技术方案验证阶段,可以先选用检测方案进行小规模验证,然后根据验证结果再进行方案调整,进一步决定是否需要精度更高、标注成本更高、响应时间更慢的分割模型还是选择成本和精度更低但是响应速度快的分类模型。
标注目标设计
确定标注目标是标注任务开始前的重要准备工作,主要指的是将业务逻辑转换成标注的目标,设计能够反应业务需求的标签体系,以更好的让标注任务产出的标注数据,可以更好的帮助模型拟合业务逻辑场景的需求。这个过程需要重点考虑以下几个问题。
- 业务逻辑关注的目标有几种?
业务逻辑关注的目标种类的数量,直接影响到标注任务的复杂程度、模型选型、标注成本等问题。另外,标注任务推进过程汇总,再进行目标新增,会直接影响到已有的标注任务推进流程,甚至有重新进行的风险,因此,在开始业务数据分析和标注之前,尽量将业务逻辑关注的目标全部明确和固化。
- 是否存在业务逻辑上是同一种目标,但实际视觉特征上差距较大的目标?
在开始标注任务设计之前,应首先明确业务逻辑关注的目标类别的粒度,该需求对标注任务的设计也有直接的影响。例如下图中有三款智能硬件设备。如果业务需求是,只需要确定图中是否含有百度智能硬件设备,a、b、c从业务逻辑上是同一种类别。但实际上,它们的图像特征差异非常大,如果共享同一个类别,可能会导致模型难以拟合。这种情况下,在设计标签体系的时候,可对标签进行适度拆分,例如,a、b、c的目标分别赋与“智能硬件-音箱”, “智能硬件-车载支架”, “智能硬件-百度机器人”三种标签类型。对于算法模型来说,这是三种截然不同的类别,对应三种截然不同的视觉特征表达,但是在模型检测效果上,它们依然是“智能硬件”这一大类别,符合业务逻辑的设定,平衡了业务需求和模型算法,更容易得到拟合效果优异的模型。
在考虑视觉特征差异性的时候,应充分考虑尺寸、颜色、形态等因素的差异。
- 是否存在业务逻辑上不属于同一类,但实际视觉特征上极易混淆的目标?
与第二点相反,该问题需要关注的是,不属于同一类别,但是视觉特征极其相似的场景。例如下图中的馒头和包子,在业务逻辑上属于不同的类别,但是从视觉特征上看非常接近,甚至人工审核都比较容易混淆。对于这种场景,可以从以下几个方面设计标注任务:
A. 明确接近的目标类别的特征差异和专家判别依据;
B. 上传更多的对照数据,扩充样本量,增加模型对特征学习的可能性;
C. 分析近似目标更多的是在同一张图片中出现还是不在同一张图片中出现。在标注任务设计时,将接近的类别单独放到一个数据集中进行单独标注和质量管控,不与其他简单的数据集进行混淆。如果接近的目标大部分处于同一张图片中,则将包含两种接近目标的图片单独筛出,创建标注任务;如果接近的目标基本都不同时出现,更多的是出现在不同的图片中,则将两类各自分成一个标注任务数据集,各自进行标注,且标注过程中,可选标签只包含其对应的类别,这样可以快速标注且不会误标。
- 各类目标的样本数量各有多少?
防止标注数量不均衡。例如,某一批图片中,共有类型A 1万张,类型B 200张。但是从视觉的角度看,A不是特别难判定(例如上图中的香蕉、辣椒、火龙果)。这种情况下,将A和B各标注适量(例如都标注200张)即可,如果后续发现类型A检测效果不达预期,再对类型A进行标注补充即可。这样可以节省标注时间,且保证关注的目标都可以有适量的训练数据,避免标注的资源都被数据量特别大的一类或几类独占。
- 是否存在数据量特别少的目标类型?
一般来说,某一类别在质检云平台上,能够被质检云平台的模型良好识别,需要相当数量的图片。根据目标的识别难易程度不同,所需要的样本数量也不同,但是根据经验,每种关注的类别的样本数量应在100张以上才能确保模型效果相对良好且具有较好的稳定性和泛化性,最少不应少于20张才能保证模型可以对该目标初步具备检测能力。如果某类数量少于20张,则属于样本量严重不足。平台在训练过程中,对数据量较少的类型会进行自动增广,但是依然难以保证涵盖真实场景下的特征表达。因此,对于数据量特别少的类别,可采取以下策略:
A. 尽量通过仿真、摆拍等方式,在符合业务场景的前提下采集更多数据;
B. 可将数据集重复上传,在标注过程中,标注的位置略微差异,这些差异会在一定程度上提高模型的拟合效果。
- 目标之间的尺度差异如何?
在业务场景中,可能会存在尺度差异较大的目标类别。如下图所示,是一个检测存档柜状况的场景。每一个图片中,应该含有3个标记用的磁钉和一张光盘,不应该含有1、2、3所指示的杂物异物。在该场景中,判断光盘是否存在、磁钉数量、颜色是否正确等都属于较易检测的问题,难点在于检测是否有1、2、3指示的异物,而且主要问题是这三类目标的尺寸差异较大。如果存在这种情况,在设计标注任务规则时,需要明确场景图片的尺度是否有较大变化,即目标在图片中所占的比例是否保持不变。例如,1、2、3所示的杂物是否一直保持在图中较小,还是存在拍照焦距变化等因素,导致同样的杂物在部分图片中会占据很大的比例。如果目标的相对尺度保持恒定,则需要从算法角度考虑,确定算法对该类目标的检测效果(算法对于特别小的目标的检测效果弱于正常尺寸目标的检测效果),如果模型可以正常检测,则将其当做一种普通类型标注即可,否则,需要确定是否将图片进行裁剪(例如切成九宫格),对每一张剪切后的图片进行处理,再将结果整合到一张图上。如果采取这种方式,则标注任务也最好基于剪切后的图片上进行。
- 样本数据集是否能够涵盖所有关注的目标?
如果对于某些业务逻辑中需要检测,但是实际上很难出现和采集样本的目标类型来说,可按需求暂时将该类别排除在标注任务和模型检测效果之外。由于质检云集成了模型自行迭代能力和标注任务灵活调整扩展能力,可在目标数据出现后再进行数据采集和标注设计,将数据补充后迭代已有模型。
具体操作中,可将业务逻辑需求标签先设计到标注任务中,但是在标注图片过程中,不要选中该标签(下图中,标注设计时,将该类型的目标取消勾选即可),否则容易误标注,对模型带来不良影响。
- 是否存在形态会在业务逻辑中发生较大变化的目标?
例如,在生产线中,某种产品的形态可能随着生产批次的不同发生改变,如果这种变化不大,标注任务不需要做出太大调整,可通过补充数据和标注、重新迭代模型的方式使模型效果可以保持更新。如果在视觉特征上发生较大变化,且历史数据所对应的目标类别不会再出现(例如某种外观造型的产品彻底停产),则应该重新收集数据,并在质检云中创建新的模型和新的标注任务进行解决,不建议将视觉特征发生较大变化的类别直接和之前的同种类别历史数据混合起来。
- 目标样本数据集的图片尺寸是否保持固定?
如果尺寸保持固定,标注任务中的图片尺寸应与实际应用场景中的数据尺寸保持严格一致。如果尺寸不固定,也应该尽量使用实际场景下拍摄的同等尺寸的多种尺寸的数据集进行标注。实际应用场景的尺寸不固定有两种:
第一种是,应用场景有多个子场景,每个子场景有固定的尺寸,但是子场景质检的尺寸不同。这种情况下,建议尽量创建与子场景数量相同的标注任务和模型,每个模型和标注任务对应一个子场景,且其图片尺寸是固定的。
第二种是,应用场景本身就会处理尺寸不固定的图片数据。例如处理用户自行提交的图片,此时图片尺寸取决于用户上传,无法固定,则应该将不同尺寸的数据进行混合,放在一起进行标注,并且可适当进行尺度增广(例如随机裁剪)。
确定标注标准
在经过上一步分析后,符合业务场景需求的标注标签体系和标注标准基本可以建立。在标注确定后应同步给所有参与标注的人员,以确保标注质量。除了与具体业务逻辑相关的标注标准以外,在标注过程中,有一些通用的标注标准,本部分进行介绍。
视觉AI任务标注过程中,有以下通用原则:
- 外接目标原则
指标注框在框选目标区域时,要尽量做到标注框能够与目标轮廓外接,即做到刚好包含目标。例如,下图一是好的标注样例,对火龙果、香蕉、辣椒都标注了各自目标的区域,且将关注的目标区域全部包含在框内,框与标注目标的边缘基本呈外接关系。下图二是错误的标注样例。图中,每个目标都包含了过多不属于目标的背景或其他目标。这种标注会对模型的特征提取、标注框回归等造成较大扰动,从而使模型的检测结果不精确。
- 无遗无漏原则
若一个图片中出现多个目标特征,则需逐一全部标注,不应有遗漏。否则模型会认为没有标注的特征为非目标特征,给模型的学习过程带来错误引导,导致指标下降。如下图一中有两个擦伤缺陷,正确的标注方法是两个都进行标注,假如向图二一样只标注了一个擦伤而忽略了另一个,则会造成模型对擦伤特征认知的偏差。
- 所标即所见原则
标注过程中,不要添加主观想象力和先验知识,只标注从视觉上看到确定是目标的部分。例如在下图中,假设在图像采集过程中,标注员知道馒头的位置确实放置了一个馒头,但是实际上从图片上看,其特征并不足以支撑该区域是馒头的判断,那么图中就不应该出现馒头的标注。
- 只标业务相关原则
假设业务逻辑规定只检测香蕉、辣椒和火龙果,那么在标签设计中,不应该设计其他类型标签,也不应该强行给清楚看到、但是不属于标签体系的目标强行标注。
标注任务迭代
在完成标注任务设计后,就进入标注任务实施阶段。通过工业视觉智能平台,可以将标注任务分配给多个标注员,以及提供查看标注进度等功能,同时利用平台,可将标注数据敏捷地添加到模型迭代训练任务中,尽快观察模型迭代的效果,如果模型效果反应出标注任务设计的不合理之处,需尽快调整标注任务的设计。