万字干货 | 图像标明工具竞品剖析
优采云 发布时间: 2020-08-10 10:17通常,企业会有各式各样的标明需求,作为一款通用的标明产品,产品功能(如支持各类输入格式,各种标明类型,各种标明方式,以及额外功能)会是我们关注的一个重点。
另一方面,实际情况中标明是一件非常费时吃力的工作,例如须要标出上图中的大部分行人,而这样的图片起码得有几百上千张。由此可见,因此用户体验是我们须要关注的另一个重点。
综上,本文将主要从产品功能和用户体验这两个维度来剖析行业中的代表性产品。
2. 核心业务流程
完成图片标明训练的整个工作流程,通常须要经历”数据打算”、”数据标明”、“数据进化”三个环节。具体业务流程如下图所示:
图3:图像标明通用业务流程
2.1 数据打算
数据打算收录:数据采集、数据预处理两步。
1. 数据采集:采集途径好多如:本地上传,调用其他数据集数据,*敏*感*词*数据导出,从云服务调用获取数据等。
2. 数据预处理:数据清洗是获取高质量训练数据的前提,并且通过清洗不合格的数据也可以降低无意义的标明工作,提高标明效率。数据清洗一般的操作包括:清洗模糊数据,清洗相像数据,裁剪,旋转,镜像,图片色温,图片对比度,图片色阶等。
2.2 数据标明
数据标明包括:建立标明集、数据标明、标注初审。
2.2.1 建立标注集
标注集是标明工作的基本任务管理单元,在此不做过多赘言。
2.2.2 数据标明
具体方法见表1:
表1:数据标明具体形式
2.2.3 标注初审
针对“任务标明”,标注初审是对下发的标明任务进行管理并对标明结果初审,一般初审维度包括:标注进度、验收情况、标签数目、难例、标注质量等。
针对“自动标明”,标注初审是对手动标明的结果进行逐一检测确认,并更改标明有误的图片。
2.3 数据进化
数据进化包括:模型训练、模型推理。
2.3.1 模型训练:
是将标明数据进行训练得出模型结果的过程。
2.3.2 模型推理:
用于对训练的模型结果进行校准预测,并将错误或则有偏差的校准结果记录出来带入到下一次模型训练中用于模型的优化迭代,从而产生由数据标明到模型训练再到模型迭代优化的闭合支路。
3. 竞品简介
目前市面上标明工具较多,首先须要确定竞品选定原则:
综上,选取了以下3款竞品:
: Intel出品的开源标明工具,发布于2018年6月。其支持视频、图片等多种数据类型的标明,功能全面。 : 华为出品的机器学习平台,发布于2018年10月,其中收录了数据标明模块。其支持从数据导出到模型运维的全流程开发,训练速率较快。 : *敏*感*词*Deep System旗下的模型训练平台,发布于2017年8月。其数据标明功能强悍,特别是Smart Tool令人影响深刻:可以快速完成语义分割任务的标明。
表2:3款产品的概括对比
4. 功能对比
本节中,针对3款产品,我们从按照第2章的核心业务流程来探究产品功能间差别。
4.1 CVAT
CVAT的使用流程其实非常简单,但功能非常全面和丰富。
图4:CVAT的标明流程
4.1.1 创建数据集
CVAT中以标明任务(Task)的概念取代数据集,一个任务可以收录多个作业,每个作业可以分配一个标明人员。
在创建标明任务时,CVAT也提供了丰富的中级选项,例如:
支持使用Git LFS: Git Large File Storage, 大文件的git管理插件。 调整图片质量:通过增加图片质量(压缩比)来推动高清图片的加载。 作业数和重叠数:如果一个任务中的图片量很大,可以将其分成多个作业。再配合重叠数,可以实现分配一张图片到多个作业的疗效,不过暂时没有想到重叠数的使用场景。
总结来看,CVAT在标明任务模块汇中的一个优势是支持直接上传视频类型文件,上传完的视频会被按照用户设定的分辨率(Frame)转换成图片。
CVAT在该模块中也有个显著的劣势:缺少一个统一的视角去总览任务中所有的图片(如下图所示,任务详情页中仅能看见首张图的相片),以及每张图片上所有的标明,推测是因为因为一张图片可能存在在多个作业中所造成。
图5:CVAT的标明任务详情页
4.1.2 自动标明
由于CVAT并未提供模型服务的能力,其手动标明功能还处在发展的早期,仅能满足个人实验。
添加手动标明模型须要用户上传模型文件,而非镜像或API,这种非服务化的形式很容易由于运行环境差别(例如2个服务器上安装了不同版本的依赖包),而影响标明成功率以及准确率。
4.1.3 人工标明
4.1.3.1 人工标明支持3种标明模式,且各个模式之前可来回切换:
标准模式(Standard):用于常规标明。 属性标明模式(Attribute Annotation):在“属性模式”下用户可以专注于更改标明框属性和标签属性,提升了对标明属性检测和更改的效率。此模式专门用于对同一个物体设置一个或多个属性的场景,如人脸标明中须要标明年纪,性别等。 标签标明模式(Tag Annotation):在“标签模式”下用户可以迅速实现增删标签和对标签属性的选择和更改。同时为图片分类型标明订制的模式,还可为每位标签设置快捷键。极大提高了图片分类的标明效率。
4.1.3.2 针对CVAT我们体验出来总结了以下几点优势:
1)灵活的标签和属性定义
同一图片可以标明多个标签,且一个标签可以设置多个属性且平台将属性定义分为:多选(Select)、单选(Radio)、是否(Checkbox)、文本(Text)、数字(Number)五种。CVAT标签自定义的自由度基本满足了绝大部分的标明需求。
图6:CVAT中的5种标签属性
2)丰富的标明方式
为了支持各类类型的标明,CVAT提供了6种的标明方式,包括:标签、点、矩形、折线、多边形、长方体等。同时支持AI六边形标明:只需指定起码四个点就可以在系统的帮助下框选出一个目标的轮廓,这点同Supervisely相同,我们者体验出来在AI辨识速率上还是期盼进一步提高。
3)标注方法快捷键的统一
选择一个标明方法则快捷键”N“就代表这些标明形式。重新选择标明方法则”N”代表的形式急剧对应改变。快捷键的统一进一步增加了用户的操作成本。
4)任务剖析
通过任务剖析仪表板中的剖析,您可以查看每位用户在每位任务上耗费了多少时间,以及她们在任何时间范围内完成了多少工作,任务剖析拓展了CVAT的团队标明能力。
图7:CVAT中的Analytics仪表板(图片来源CVAT用户指南)
5)追踪模式(Track mode)
用于对视频文件进行标明。视频会根据分辨率被分割成若干画面(Frame)。用户仅需在关键画面(Key frame,和Flash中的关键帧太类似)上进行标明,关键画面之间的画面也会手动带上标明。CVAT目前仅支持包围框和点使用配准模式。Propagate功能很实用,场景:如果想将当前图片中的标明传递(Propagate)给前面的n张图片。同时CVAT的追踪模式结合合并(Merge)功能、分割(Split)功能共同支撑起CVAT颇具优势的视频或动图标明能力。
4.1.3.3 可能正由于其支持的功能过分丰富,导致使用上去有一定的学习成本,用户体验会有些差强人意。例如:
标注时图片未能预览难以得知图片的总体标明情况,当上次在步入作业时不能快速定位到未标明的图片,这点虽然对与效率不会有很大影响但会影响用户的操作体验。 另外假如是做用户图片分类的标明,则须要使用属性模式,这一点用户无法感知。(我们一开始还以为只能通过画一个完全覆盖图片的框能够实现) 4.2 ModelArts
Modelarts在2019年10月17日版本更新后(特别是团队标明功能),业务流程覆盖趋向完整。整体用户流程如下:
图8:ModelArts的标明流程(图片来自ModelArts官网)
由于本文以数据标明功能的讨论为主,数据标明以后的功能(包括训练、推理、数据校准等)不在本文的讨论范围内。
4.2.1 创建数据集
在创建图片数据集时,ModelArts将图象标明类型设定在了数据集层面,即创建数据集时就须要分辨标明类型.
这一点与Supervisely和CVAT区别较大,具体剖析见Supervisely的人工标明章节。目前支持图片分类及目标测量两种任务。
图9:ModelArts中倒入创建数据集
4.2.2 数据处理
华为的数据处理功能坐落对象存储服务中,其提供了便利且功能全面的图片处理能力。
华为对象存储服务中提供了“图形界面模式”和“代码编辑模式”两种图片处理操作方法,适用了普通用户和开发者用户的使用。
同时最终的处理结果储存于内容分发网络(Content Delivery Network,CDN)加速,后续恳求可以通过URL直接从CDN下载,可以将结果用于任意可以通过URL导出数据的标明平台,极大的拓展了平台的功能拓展性。
华为图片处理提供的能力主要包括:设置图片疗效(亮度、对比度、锐化、模糊)、设置缩略、旋转图片、剪切图片、设置水印、转化格式、压缩图片。
图10:华为对象存储中的图片处理模块
4.2.3 智能标明
ModelArts智能标明收录:主动学习(*敏*感*词*标明)和预标明(全手动标明), 目前只有“图像分类”和“物体检查”类型的数据集支持智能标明功能。下面简单剖析一下智能标明模块:
系统只对未标明图片进行标明,这样可以降低重复标明,减少对于运算资源的浪费。 使用疗效不理想,系统实际体验出来标明的准确性大约只能维持在60%。系统筛选难例的准确性也较低。 全手动标明支持选择自行训练的模型或ModelArts自带模型,在模型选择上灵活性较高,在上次进行作业时可以承继每次标明的结果进一步提高模型的准确率。 智能标明结果展示页面可以进行条件筛选,可选的条件包括:难例级,标签,样本创建时间,文件名,标注人,样本属性,置信度。精准的筛选可以满足大部分场景的需求。
4.2.4 人工标明
华为ModelArts人工标明的特征主要有以下三点:
4.2.4.1 目标测量标明支持多达6种方式的标明
包括圆形、多边形、正圆、点、单线、虚线(见图11),丰富的标明形式覆盖了更广泛的标明场景,同时可以提升标明的精度。
4.2.4.2 高效的标签选择方法
在数据标明的交互上,华为ModelArts在画完选框后会手动弹出标签下拉框早已展开的添加标签弹窗(见图11),省去了用户框选完成后自行点击标签下拉框的步骤。且弹出的标签选项卡就在选框门口(见图11),这样缩短了滑动键盘选择标签的键盘联通行程。
图11:ModelArts图象测量的数据标明界面
4.2.4.3 图片分组
在标明预览页面华为ModelArts提供了图片分组功能(见图12),此功能会使用聚类算法或按照清晰度、亮度、图像色调对图片进行分组。自动分组可以理解为数据标明的预处理,用户可依照分组结果,进行分组打标、图片清洗等操作。此功能可以提升图片标明效率,尤其是在图片分类标明的情况下再配合批量标明功能可以在标明速率上有质的提高。但我们在实际体验后觉得此功能分组的成功率较低。
图12:ModelArts中的图片手动分组
4.2.5 团队标明
华为ModelArts的团队标明功能设置挺齐全,有很多亮点,这里从创建,标注,审核三个方面阐述:
4.2.5.1 创建
华为启用团队标明后可以直接指定标明团队,也可以选择指定管理员之后由管理员分配标明人力并做初审工作。选则完类型后团队成员会收到系统电邮,按电邮提示可以太轻松的完成标明和初审。
可以选择是否将新增文件手动同步至标明团队。同时可以选择标明团队的文件是否加载智能标明结果。这些操作降低了管理员对任务分配和手动标明之间关系的调节自由度。
图13:ModelArts团队标明创建页面
4.2.5.2 标注
标注一张图片并保存后,图片手动步入“待初审”状态。我们觉得这样的状态切换超出用户预期,特别是用户假如还想再检测标明是否有误的话还需切换到“待初审”页面去检测,这样会给用户带来不便。
“待初审”的图片依然可以更改,在管理员发起初验前,修改有效。但在初验时,如果图片被抽样到则更改不会保存在数据集中,如果图片未被抽样到则更改会被保存在数据集中。这样的初审逻辑限定可以降低在初审中形成不必要的混乱,防止初审结果形成偏差。
4.2.5.3 审核
ModelArts将初审称为“验收”,验收分了2个层级:单张图片的初验和一批次图片的初验。流程是用户对一批图片做初验。审核层级过多,逻辑复杂,导致操作结果可能不符合用户预期。
标注状态混乱:例如管理员分配图片A给到标明人a,a标明完,管理员使用智能标明同时标明图片A,如果2个结果都被管理员确认,无论先确认哪种标明,最后只有智能标明的结果有效,而标明人a的标明则无效。
ModelArts提供了初审的仪表盘,仪表盘便捷了初审的统计环节,用可视化的方法展示了任务进度。仪表盘的衡量指标包括:验收进展统计、难例集数目、标签数与含标签的样本数、标注人进展统计等5个,见图14:
图14:ModelArts中的标明初审仪表盘
4.3 Supervisely
图15:Supervisely的标明流程
从图中可以见到团队标明一块的逻辑相比其他产品愈加复杂,分析背后的缘由:
表面上看好多步骤是为了满足团队标明这一需求(特别是外部标明团队),包括创建团队、邀请成员、创建标明作业、标注初审等等,但本质上则是安全把控和质量把控需求:
安全把控彰显在管理员可以分配给团队成员不同的角色以控制成员的权限,例如标注者(Annotator)只能查看自己任务中的图片; 质量把控彰显在标明完后都会有管理员初审标明情况以保证标明质量。
因此,这样复杂的链路是一个企业级标明产品应有的设计,尽管这样不可防止会导致用户认知成本的下降,以及用户体验的减少。
4.3.1 创建数据集
在Supervisely中,用户可以在一个数据集中完成4种标明(视频标明除外),即分类、检测、分割、姿态恐怕。
与ModelArts不同,Supervisely对数据集的定位更象是图片集。一批图片只须要导出一次,无论做哪种类型的标明都可以在同一个数据集上完成。且后续做训练时,可以直接得到一张图片上的所有标明。
综上,Supervisely统一的数据集模块,提升了图片导出,图片标明以及图片后处理的效率。但这些方法也有缺点:所有标明类型的操作模式固定,无法针对特定类型(例如Modelarts的图片分类可同时选择多张图片一起标明)做深入优化。
4.3.2 数据处理
Supervisely的数据处理模块称作DTL, Data Transformation Language,是一种基于JSON的脚本语言,通过配置DTL脚本可以完成合并数据集、标签映射、图片提高、格式转换、图片去噪、图片翻转等46种操作,满足各种数据处理需求。
图16:Supervisely中为图片加入高斯模糊
虽然功能相比ModelArts来说愈发强悍,但是因为仅提供代码方式操作,仅适宜工程师,然而大部分工程师已把握通过python处理图片的形式,再额外学习一种语言无疑会降低学习成本。
另一方面这些特殊的语言对效率的提高也存在未知数,例如用户想进行某种图片操作,但督查了半天发觉该语言不支持,最后还是要通过python来完成,到头来增加了效率。
4.3.3 自动标明
Supervisely目前提供了14款预训练的模型,训练用数据大部分来自COCO(微软发布的小型图象数据集),少部份来自PASCAL VOC2012, Cityscapes, ADE20K等其他公开数据集。
在手动标明部份,Supervisely的优势在于支持语义分割型的手动标明,加上产品在语义分割型的人工标明上拥有出众的体验,使这类型任务的标明效率得以急剧提高。
Supervisely的手动标明模块产品化程度较低,主要彰显在以下两点:
由于本身不提供模型训练及推理服务,需要用户自行打算手动标明所需的硬件环境,且限制较多(仅支持Nvidia GPU,需要Linux和Cuda驱动)。 通过JSON格式的配置文件来配置模型推理参数(见图17)。相比华为简单的配置界面,这种方式的灵活性其实更高,但用户真的须要这么配置还是指想系统直接给出一个手动标明的结果就好呢?
图17:Supervisely(左)与华为ModelArts(右)的全手动标明配置对比
4.3.4 人工标明
Supervisely的标明功能非常强悍,主要有以下2个特征:
丰富的标明方式:为了支持各类类型的标明,Supervisely提供了多达9种的标明方式,包括:标签、点、矩形、折线、多边形、长方体、像素图、智能工具 (Smart Tool)、关键点等。 复杂的标签系统:抽象出了对象(Object),类(Class),标签(Tag)三个实体,在复杂场景中增强了实体之间的复用性。
4.3.4.1 丰富的标明方式
在所有9种标明方式中,智能工具令人印象深刻:
智能工具用于分割类型的标明,用户只须要2次点击框选一个物体,通过算法对目标进行遮罩即可完成一个初步的分割,再通过标明积极点和悲观点完成精确标明,大大增加了分割类任务的标明成本。
图18:Supervisely中经过11次点击后完成了一个语义分割
4.3.4.2 复杂的标签系统
为了满足一个数据集囊括多种标明类型的需求,Supervisely有一套复杂的标签系统。我们通过对3款产品的ER图来具体剖析一下这套标签系统的好坏。
在图19的行人辨识场景中,我们会画一个个行人包围框。那么我们就须要定义一个标签叫:行人。
图19:Supervisely中的行人标明场景
但是每位行人的属性又有不同,例如行人A戴帽,行人B不戴帽.如果我们须要分辨戴帽的行人和不戴帽的行人,一种做法是创建两个标签:戴帽的行人、不戴帽的行人。
但这样的两个标签会失去关联性——如果模型只要检查行人,还须要对这两个标签进行转换,效率较低。
比较合理的做法是在行人标签下创建一个属性——是否戴帽;并具象出一个概念:对象。
用户每画一个包围框,系统还会创建一个对象(例如:行人A),每个对象会对应一个标签(例如:行人),然后每位对象可以设置该标签所具有的属性值(例如:是否戴帽=是)。
CVAT和ModelArts都是这样的做法,区别是CVAT可以直接为图片加上标签,用于图片分类。而ModelArts因为界定了图片分类和目标测量数据集,因此标签仅能在图片分类型数据中被应用在图片上。
图20:CVAT(左)和ModelArts(右)的图片-对象-标签ER图对比
而Supervisely则是把标签和属性分拆成了两个实体(如下图):
这种做法可以提升属性的复用,例如在Supervisely中,用户只须要定义一遍颜色属性,之后无论是标明行人还是汽车的颜色都可以应用同一个“颜色”下面的属性,提高了复杂标明集的打算效率。
但同时这些做法对用户体验设计提出了较大挑战,从上手难度来看,Supervisely无疑是三款产品中最难上手的。
图21:Supervisely的图片-对象-标签-对象ER图
5. 总结与展望 5.1 总结对比
下表为三款标明产品的功能总结:
表3:三款产品的功能总结对比
CVAT: 人工标明功能最为强悍,但手动标明功较为薄弱。独有的追踪模式免去了对视频的预处理,对标明效率的提高也非常巨大。CVAT的任务剖析功能因为环境诱因无法完全体验,从介绍来看应当会在这块加码。 ModelArts: 作为华为云的一个功能模块,ModelArts的产品战略也愈发偏向通用性,平台性。通过与华为OBS系统的结合给其带来了强悍的数据处理能力也加强了其平台的可拓展性和兼容性。同时手动标明和*敏*感*词*标明作为ModelArts的优势是CVAT和Supervisely所不具备的,也从侧面彰显了ModelArts借助华为云所带来的强悍运算力和算法优势。总体来说ModelArts是一个均衡的选手,具有优秀的业务拓展能力。 Supervisely:整体功能最为建立,适合企业级应用。对语义分割类任务支持较好,但部份功能(如数据处理,自动标明)需要通过代码形式完成,效率提高有限。
当然我们也发觉有一些功能在3款产品中都没有看见,例如水印功能,会适用于保密要求的场景,如看守所,银行等。
5.2 标注工具的未来趋势
5.2.1 人工标明这个环节不会消失
这似乎是个悖论:假设我需要训练一个CV模型,训练模型须要打算标明好的图片,如果图片标明只须要手动标明而无需人工干预,那意味着模型早已才能确切预测出结果.
如果能做到确切预测,说明早已这个模型早已被训练完全,不再须要训练,这就和假定偏颇了。
5.2.2 自动标明的价值主要彰显在单个标明须要耗费较长时间的标明类型中,如分割和姿态恐怕
既然人工标明一定会存在,那么手动标明存在意义就是提升人工标明效率,而非替代人工标明。在分类和测量任务这类单次标明历时较短的场景中,自动标明的价值较小。
假设从0开始完成一个标明耗费5秒钟,而早已进行了手动标明的情况下,修改一个标明须要花2秒,标注效率提高60%(假设跑手动标明模型是在上班以后,不影响人工标明时间)。
但我们听到可能有些图片上模型的标明结果误差很大,这样用户还须要话一秒来删除手动标明的结果,反而此次标明的效率增加了20% (IE,1/5),如此高的负利润致使整体效率算出来没有提升好多。
5.2.3 人工标明的主要内容将从创建标明转变为更改标明
虽然人工标明环节不会消失,但其实手动标明将会在标明环节起到越来越重要的作用,今后常见的标明流程将会从创建一个新标明,转变为更改一个由模型创建的标明。
因此,优化更改标明时的用户体验将会是一个提升标明效率的突破点。
作者:薛康杰,AIoT产品总监,AIops, CV和IoT等平台类产品;江海龙,AI产品实习生,主攻CV产品设计。