人工智能时代相较于过去的数据处理方式,除了在数据量级上的差别之外,最大的差别是对非结构化数据的处理与运用。本文将介绍如何通过数据标注工具将非结构化的数据处理为可用于建模的结构化数据。
什么是数据标注
著名杂志《经济学人》将数据类比为21世纪的石油,但石油是不能直接使用的,需要经过复杂的炼制过程才能成为可以被利用的资源。同样,非结构化的数据也是无法直接使用的,需要根据使用者的需要,将其中有用的部分标记出来,转变为计算机可以理解的结构化数据,才可以被用于AI建模,这个过程就称之为数据标注。
结构化数据就是常见的二维表结构,excel或sql数据库都是以二维表的形式存在的。而非结构化的数据例如一张图片,本质上是一堆265色的像素点按一定的顺序进行排列组合,如果要知道这张图片上是否有一只鸟,就得人工用一个框把物体框出来,并做好标记,告诉计算机在这个框里有一只鸟,这样计算机就可以把框内的像素点当做鸟的特征进行学习,构建出识别鸟的模型。
在2012年,谷歌首席科学家李飞飞教授带领的团队在计机器视觉方面取得了重大突破,利用神经网络算法让计算机具备了在图片中识别出猫的能力,这份成就一方面得益于计算机算力和AI算法的发展,但更为重要的基石是ImageNet图像数据集提供的一千多万张带有拉框标注的图片,正是这些经过了标注的图片,让计算机在视觉方向有了新的发展。
机器学习领域有句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。可见数据和特征在人工智能领域的重要性,对于同一个目标,将时间和精力花在改良算法上远不如花在构建更加精确的数据集上更有效,一个具有高质量标注的数据集对于模型的提升效果远高于优化算法带来的效果。
这就是数据标注对于人工智能的重要性,但ImageNet这类开源数据集虽然数量非常多,但是标注的精度并不高,且无法满足所有类型的建模要求,所以AI团队需要根据自己的需要构建自己的数据集。根据应用方向的不同,大致可以分为推荐算法,语音语义和计算机视觉三个方向。
从发展阶段来看,推荐算法的发展应该是最为成熟的,一方面是传统的机器学习算法已经非常成熟,另一方面是因为在这一领域有着大量的结构化数据积累。例如淘宝在上传商品时需要选择商品的分类,网站上线时也需要设置SEO关键词。在教育行业则有专业的老师给习题打上对应知识点的标签。而用户的人口数据和行为偏好数据只需要进行埋点就可以收集到了,将商品和用户两者的数据结合推荐算法即可构建推荐系统。
在语音语义方向,有着例如科大讯飞,海量大数据等公司长达近20年的积累,在中文分词,语音模型,语言模型等方面都已经较为成熟,可以达到商用的阶段。目前对于语音语义的数据标注常见的有音频识别、语义分析、文本分类等。
而计算机视觉方向,目前处于刚刚起步的阶段,但发展极为迅速,人脸识别,图像转化方向上已经有了大量的商用产品。这一方向对于高质量的标注数据需求非常大,例如上文提到的图片拉框以及图片描点,语义分割,视频跟踪标注等都是这一方向的数据需求。
数据标注工作流程
数据标注工作流程通常是这样的:
- 先由产品经理确定用户需求,根据用户需求准备对应的原始数据
- 产品经理与人工智能训练师一起细化对于数据标注的需求
- 人工智能训练师根据标注需求创建标注教程,将教程与原始数据集发放给数据标注员
- 标注员根据教程完成对数据进行标注
- 人工智能训练师及产品经理对标注后的数据进行验收,将不合格的数据打回重新进行标注
- 将标注好的数据交付人工智能工程师进行算法建模
这其中对于数据标注人员来说,最重要的就是标注教程,什么样的需要进行标注,标注的精细度要达到多少,什么样的情况不需要进行标注,很多对于标注的细节都要在教程中对标注员进行说明。如果未对标注进行严谨的细节说明的话,可能会对最终的算法产生极大的影响。
例如在一个图片标注任务中,标注需求是要对图片中的鸟进行框选并进行标注,那么鸟在水中的倒影要不要框选,图片中画在油画中的鸟要不要框选,鸟只有一部分在图片中要不要框选等等细节问题,都需要在标注教程中进行详细的说明。
数据标注工具
对于非结构化的数据标注需要使用专门的标注工具进行,这里介绍两款工具
1. LabelImg
LabelImg是一款由python编写的跨平台标注软件,由个人开发,是业内有名的一款标注工具,标注之后可以导出pascal-voc格式的数据。
但这个工具门槛有点高,一来是英文版,二来需要使用命令行工具下载python以及对应的pyqt4和lxml等第三方库来使用,对于不会使用python命令行的来说,这个不是特别友好,就不再过多的介绍了。
2. 精灵标注助手
与LabelImg类似的一款国产工具,但在用户使用上比前者友好太多。直接在官网即可下载并免费使用。支持目前市面上所有常见的标注需求,并且除了pascal-voc和CoreNLP之外,还可以导出XML,JSON,MongoDB这些常见的数据格式,操作上也非常方便,基本不需要学习就可以直接上手使用。如果是自己进行数据标注的话首选这款工具。
当然,也有一些大公司会自己开发标注工具,但因为数据标注并不需要太高的技术含量,且对于标注的需求大多是项目性质的,所以大多数公司会选择将数据标注的工作交给众包团队来进行。
如何做数据标注
图像类
框选类
对图片中指定的物体进行拉框选择,根据业务的不同,来框选不同的物品,如果一张图中有多个指定物品则需要说明什么样的情况下可以一起框选,什么样的情况下需要分别框选,以及判断框选的物品是否被遮挡或截断等。
应用场景:识别图片中是否存在某种物品,以及识别是什么物品。例如自动驾驶中判断交通标示牌,拍照购物中识别物品,儿童认知类产品等。
描点类
常见的需求有描绘人体的关节点,手部的关节点,以及嘴唇的关键点,脸部的关键点,我还见过有对猫和狗的脸部进行打点的需求。
应用场景:描点类的应用场景很多,例如人脸识别,以及美颜类的产品,还有最近在直播和短视频应用中比较流行的智能换脸,换发型等,以后应该还可以应用到电商购物领域。对于关节点的识别可以应用在动作识别上,例如安防领域,课堂教学领域等等。
语义分割类
将一张图片上不同的物品进行描边,然后标注为指定的标签,常见的有将人体的头发,人脸,身体分割成不同部分,还有自动驾驶中对道路,建筑物,行人等进行的标注。
应用场景:语义分割是图像识别的一个重要领域,对于计算机理解图像进而作出决策有重要意义,例如自动驾驶场景中,需要判断看到的物品是什么,进而决定接下来的驾驶行为。
语音语义类
音频转写
目前讯飞,搜狗等做语音方向的公司只能提供通用的语音模型,对于一些特定领域的语音识别,或语音本身不是特别清晰,或少数民族语言例如藏语维语等语言的识别则需要进行人工的语音转写。
应用领域:语音转文本,语音模型构建,语言模型构建。
文本分类
主要是针对文本的内容及性质进行分类,例如判断一段文本是积极还是消极,判断一段文本属于哪个领域知识等。
应用领域:舆情监控,新闻类别自动分类,垃圾邮件识别,商品评论情感识别等
实体标注
对于一些专业领域的词语或者同义词,近义词需要进行实体的标注,以帮助计算机理解不同的词代表的含义是什么,同时在标注实体的时候,还可以标注实体的属性,实体与实体之间的关系等。
应用领域:命名实体识别,知识图谱构建等。
众包数据平台
数据众包是指公司将数据标注的任务发布到众包平台上,然后由个人或团队来承接任务,并根据任务要求进行标注的一种工作形式。
相较于公司自己组建数据标注团队,数据众包的方式在成本和效率上都有着明显的优势,目前中国从事数据众包的标注员近百万人。
众包带来了成本降低的同时,也带来了标注质量的问题,因为从业人员能力参差不齐,所以众包进行标注之前,要先对标注人员的能力进行考核,只有考核通过的人员才能进行后续的正式标注。
例如,在提供标注教程之后,会先提供10个左右的标注题作为考核的题目,由系统进行判断标注员的标注与正确的标注之间是否存在差异,如果存在较大差异的话则考核不通过,需要重新学习标注教程,直到考核通过之后才可以进行正式的标注。下面的左图是一个错误的人脸标注,与标准的贴合度不够,正确的标注应该如右图。
除了在工具上设置自动比对的功能,专门做数据标注众包公会,通常会设置专门的审核员对所有标注后的数据进行审核,对于不合格标注进行打回,以此确保数据标注的质量。
对于众包平台来讲,国外首选亚马逊众包平台,ImageNet就是通过这个平台进行标注的。而国内也有百度众包、京东众智、龙猫数据等众包平台可供选择。
在选择数据众包平台上,通常需要考虑以下几个方面:
标注员专业度
人工智能虽然是高科技领域,但数据标注却是一个典型的劳动密集型工作,有经验的数据标注员在工作的效率和质量上都会比新手要高,是个熟能生巧的工作。所以在挑选众包团队时要注意选择那些经验丰富的标注团队,这点跟招聘面试的道理是一样的。功能完善度
众包平台都会自己开发一套标注工具供标注员使用,在选择之前需要看一下平台提供的功能是否满足标注的需求,例如目前有些平台还不支持三维图形的标注。还有一些平台为了提高标注的效率,会提供预标注功能,在人工标注之前先根据过往数据形成的算法对数据进行预标注,人工只需要对预标注进行审核或修改即可。另外平台的审核流程是否完善也是需要考察的重点,有些平台只提供抽检或一重审核,但是对于一些较为复杂的标注需求则需要平台能支持多重的审核流程。数据安全性
有一些团队例如银行对于标注数据的安全性有较高的要求,则需要数据平台提供API进行对接,确保标注数据只存在公司内部而不会外泄,标注员只能访问到当前需要标注的数据,“标后即焚”,保护数据的安全性。
数据整理与留存
在标注工作结束之后,拿到的数据根据业务和模型的需求,不同类型的数据要分开进行存储。例如人脸标识中,戴帽子和不戴帽子,正脸和侧脸,光线的明暗对于算法模型都有很大的影响,为了可以随时调整建模数据,需要用不同的文件夹进行存储。
除了根据不同的数据特征进行区分之外,还需要根据数据是训练集,测试集还是验证集来对文件进行划分,根据模型训练的效果可能要对标注好的数据做一些增删,所以在一开始就做好数据的分类就很有必要了。
对于文件夹的命名方面,可以参考之前提到的驼峰命名法和下划线命名法,例如“Train_Data”,“Test_Data”等来进行命名。
数据标注是一件费时费力的工作,所以对于公司所有标注好的数据,最好有一份整合的数据清单文档进行留存,标明有一些什么数据,数量是多少,是否已经做了标注,标注了一些什么内容。这样如果以后还有类似的需求,或者公司内部其他项目组有类似需求的时候,就可以直接拿来使用而不需要再重新进行标注了。
数据标注的未来
在一个人工智能项目中,数据的准备工作要占到整个项目至少70%的时间,整个产业链都在想尽办法提高数据准备和标注的效率。
例如众包平台除了提供标注服务外,还可以提供数据的采集服务,根据业务方的需求采集特定的图片,视频,文本,语音等数据,节省业务方在数据采集上的时间,同时也给自己带来额外的收费点。在算法的研究上,也希望能用尽可能少的训练数据来达到建模的效果。
高质量的标注数据是人工智能的基石,现在才处于一个刚刚起步的阶段,未来的几年随着应用场景的拓展,会有越来越多数据标注的需求,带来可观的就业增长。同时随着时间的积累,可通用的高质量标注数据集越来越多,也将极大地降低智能产品落地的门槛,提高人工智能的发展速度。