摘要:本次由来自阿里巴巴的iDST高级技术专家易东带来了“iDST的人脸与文字识别技术”的主题分享,他将从三个方面向大家介绍阿里巴巴IDST近期在视觉计算方面所做的工作。对人脸识别与文字识别的识别技术和模型训练进行了解读,对如今已取得的成功案例进行了详细的介绍。
直播视频:https://yq.aliyun.com/video/play/1298
以下为精彩视频内容整理:
通用内容识别
通用内容识别现在在学术界做得比较多,比如说给一张图片有一只猫,我可以告诉你图片里有一只猫。或者有一个相对内容比较复杂的图片里面有多个内容,我把图片里面的所有内容给识别出来。通用一般是在用户的相册管理里面,国内很多手机相册里面都有这个功能,它可以根据图片的内容对照片做一个分组,然后可以进行搜索。
我们在通用方面有两个版本,一个是在线的版本,支持5000类。在端上有一个版本,支持1500类,端上的这个运行时间和它的模型大小都是经过裁减的。我们现在和一些手机厂商也有一些合作,主要应用场景一个是智能相册,还有一类是做短视频的搜索和推荐。
但是做了通用技术之后,我们分析用户的相册里面的数据发现在所有的照片里面人物的占比非常高,基本上一般用户手机里面存的照片50%以上肯定都有人,文字的占比也是很高的将近20%。比如说拍的自己的身份证,或者去办什么事拍的一个什么注意事项,或者流程什么的,所以我们在这两块投入的人力比较大,这两块也跟前面介绍的商品类似,属于系列识别。
人脸分析服务架构
这个是我们整个人脸分析服务的一个架构,底层训练部分用的是阿里云的PAI-Tensorflow,它跟标准Tensorflow一样都是支持多机多卡的,如果公司有多个GPU有多台机器,用Tensorflow是可以连起来的。但是阿里云这个PAI-Tensorflow它对带宽部分做了一些优化,就是当机器之间的网速不够快的时候,这个版本比标准的版本效率更高。右侧是一些数据,包括人工标注的数据,还有从业务层反馈回来的数据。
算法层主要有人脸检测,就是定位图片里面人脸的位置,关键点就是五官的位置还有一些属性,比如说性别,年龄,表情,还有质量评估,没有遮挡,模糊不模糊。识别的主要三种模式有:
(1)1:1,就是给两张图片判断是不是一个人。
(2)1:N,给一个包含N张图象的数据库,然后再给一个输入,查询里面它在N张图片里面是属于哪一个人。
(3)N:N,给N幅图片,把这一组图片按人的身份做一个分组。
后面还有针对视频的一些序列分析,可以把多帧进行一个融合,可以提升识别率,在一些流媒体的应用里面可以降低预算量。最后也是现在短视频比较火的人脸的编辑,比如说加一些特效,美颜,或者前不久腾讯用图做了一个军装照,换脸的这种类似的东西。
上面是偏于服务和业务层面的东西,业务方面在阿里的应用主要有明星的识别、政治人物的识别、新零售的线下的一些人群的属性分析、轨迹分析、还有天猫,我们跟天猫做了一款试装魔镜,直接对着一块镜子,可以把一些口红或者一些腮红的一些特效叠在脸上面,这样就省去了化妆的麻烦。
人脸分析技术
这个刚才已经介绍过了,人脸分析机做的几个主要的步骤,检测关键点属性、识别、防伪,然后这边是基于深度图的一个防伪,它可以比如说拿一个照片,想通过某一个门或者通过某一个关口,他会用深度图文来检测这个深度是不是跟你的轮廓一致,这个是跟阿里云合作的。我们把能检测出来的,然后把它的属性剥离出来,就可以做一个商店里面的人的画像。就把人的轨迹,还有每一个区域人的年龄段的分布,它的性别分布,还有它的心情都可以统计出来。
这个是关键点方面的一些技术细节,大概是支持50多个比较粗的关键点,器官点有一些比较精细的点有170多个,在手机上可以跑到100帧以上。这边进行一些比较细节的一个演示,应用场景就是刚才说的可以美颜,可以做一些贴纸,也可以做美妆,还有可以戴眼镜等特效。
第一个是试装,可以选口红的颜色也可以选腮红的颜色,或者美彤什么都是可以的。第二个是贴纸,这个在很多短视频里面都比较常见。第三个是换背景,稍微新一点的,可以把后面的这个背景给换掉,换成一个可以自己定义,也有一些简单的关键点,比如说头部还有肩膀,可以在这些关键点上叠加自己想要的一些特效。
人脸识别
前面讲到AI只是跟关键点有关,有了关键点以后我们可以对于脸部做一个配准,就可以用来做身份识别。身份识别我们现在有一个预制的一个库,因为现在做身份识别主要两类应用,一类是安防的。第二个是偏审核的业务,比如说明星识别、政治人物识别。在准确率方面我们检测的部分在FDDB上是93%,LFW上是99.72%,但LFW这个库比较简单,现在已经没什么人刷了。
模型训练
这个是模型的训练,比较有特色的就是有很多业务数据的回流,把数据用已有的模型做一个聚类,聚类完了之后再人工去把一些很明显的噪声给删掉,直接只要把这个数据模型拿去训练,这样对整个识别率是有帮助的。 第二个是模型的简化。还有一个是简化的模型训练好之后,可以在一些子命题级别对它做一些并行,比如说因特8的量化,还做指定级的运行。在CPU端指令级并行。损失函数方面做了一些比较细微的改进,可能对性能有一点提升。
人脸识别应用
(一)名人识别
这边是刚才前面讲的人脸比较重要的任务是明星时代,明星主要分两类,一类明星,一类政治人物,明星主要是给优酷、土豆或者是外面的一些短视频的网站使用,把里面的明星识别出来之后可以有利于搜索和推荐。第二个讲的是审核人物,识别政治人物,政治人物一般有两类,一类是正面的,比如说习大大的,还有一类是刚才讲的下马的负面的。
这一块是有挑战的,一般电视台或者视频网站的视频量比较大,所以它的运算量会比图片要大,然后我们就会对视频做一些镜头的切分,还有对里面的人进行跟踪,一个人只要跟踪上了之后,他每一个人是一个图象序列,我们从序列里面只用取一帧出来去做识别,这样可以降低它的预算量。对于质量评估,对质量差的就直接放过去的,质量好的才做识别。还有一个就是业务场景相关的,比如说审核类的场景,要求召回必须召的,只要觉得这个人可疑就给标出来。还有一个应用就是精度,只要给的结果必须是对的,如果不太肯定的话就不要输出,这样的话针对这两种场景得对目标做一些修改。
(二)人脸锁
还有一个就是现在IphoneX出来以后,最近比较流行的人脸锁。左边是用户注册的过程,在系统里面注册一张图片。因为它锁屏的照片无法录像,所以另外做了一个程序进行录像,可以做一个眨眼检测或者有深度相机就可以检测深度。
(三)面孔相册
这边是一个面孔相册也是跟一些手机厂商合作做的。它可以根据用户和用户的相册里面其他人在一张照片里面的一个频率,显示一个亲属关系的一个图。它有两个指标,一个叫全度,全度就是说是不是我把10张照片全部分到一组里面了,还是说漏了几张。第二个指标叫纯度,比如说每一个分组里面有没有把别人的照片混进来,这两个指标都是越接近100%结果越好。
(四)天猫无人超市
这个是前不久在互联网大会跟天猫合作做的一个无人超市,在入口的时候扫码就可以进店。进店了之后看到了什么想要的就随便拿。然后中间有一个表情检测一个终端,如果顾客笑得很夸张的话就可以给你打折。出门的时候会有一个摄像机拍你的脸,如果跟你入口的那个脸匹配上之后就直接支付宝扣钱你就出去了。
文字分析服务架构
文字方面跟人脸很类似,底层也是一个序列框架还有一些数据,但这方面数据有两部分,第一部分是真实数据,第二部分是合成数据。文字从整体的技术上没有人脸那么成熟,因为它有很多很特殊的问题,比如说多语言的问题,有一些文档字密密麻麻,这种差异比较大。所以一般是有一个通用的版本,然后上面根据各个场景来建一些特殊的版本,这样才能比较好的解决实际问题。服务层一般有三类,第一块是分析图片里面的字,第二块是分析视频里面的,视频里面可能将一些序列分析降低预算量。还有一块是NLU,就是自然语言理解,分析出来的字一般后面还需要接一个理解模块,才能判断里面的字到底是什么意思。
文字识别
现在我们文字识别服务的调动量每天大概在三千万,然后每一张图的响应时间100毫秒,主要应用场景有广告审核,比如说视频里面出现了一个什么非法的联系方式,或者不被法律允许的一些关健词什么的。还有证件识别,我们跟支付宝合作,做一些国际证件识别。还有照片搜索,就是如果你的用户的照片有某一些字,有身份证,或者一些感兴趣的字,通过输入文字就可以把你想要的照片找出来。
模型训练
模型的训练主要是两块,整个框架主要以合成数据为主,然后做一个跟前面讲的分割的网络类似的一个检测模型,然后对每一个文字行做一个规划,然后序列分析,CNN+BLSTM+CTC或者CNN+BLSTM+Attention的一个训练识别模型。在识别部分有一点特色,文字识别是一个序列信号,一个横向或者一个纵向的信号,输出也是一个序列的一个标签。一般有两种方法,下面一般是一个CNN+BLSTM,是一个标准的模块。目标函数一般有两类,一个是CTC,CTC就是一边配准标签跟序列信号,一边做一个Shared Encoder的分类。还有一种叫Seq2Seq,是先预测第一个字,然后根据第一个字再判断第二个字。这两个目标函数各有优点,CTC比较快,但是它的性能要比第二个差一点。第二个训练速度慢一点,但是它最后的精度比较高。如果我们把这两个目标函数融合到一起的话,最后能取得一个比较好的折中。
文字识别的应用
(一)文字内容审核
我们给优酷做的一个审核的业务,优酷有很多用户规则,比如说在视频里面不能出现私人的QQ号或者一些联系方式广告。比如说优酷给我们一百万视频,当然这一百万视频里面只有0.5%的图象帧里面是有广告的,我们是没法定位到这个视频里面哪一帧是有广告,哪一帧是没有的,所以这一块给训练造成了很多麻烦。最后达到的效果是,大概有95%的广告视频都可以被我们检测到,精度有70%,还有30%的虚景。但是其实这个虚景里面还有很多是人工标落了,因为现在有一个优酷那边的审核团队比较大,可能是几百人吧,只要有用户上传视频,他们就会有一个人把视频从头看到尾,如果人看久之后是非常容易累的。现在有了这个东西,他们会慢慢缩减人员的规模。
(二)国际证件识别
这个是跟支付宝合作的一个国际的证件识别,因为支付宝它的主要策略是大力发展海外市场。在海外的话一般你要做实名认证就得上传一张国家的证件。如果用通用的模型直接来检测证件,经常会出现哪个地方多一块哪个地方少一块,然后它对应的一些字段就提取不对。而我们现在的这个通用模型通过分支直接预测证件结构,就可以把分支选的比较好,因为在每一个框里面它的字的分布式是均匀的。有了大的结构之后如果漏了几行或者是多了几行,其实都不太影响,可以用一些简单的方法把它的噪声去掉,这样的话结果会更好。
(三)体育照片搜索
我们将人脸跟文字做了一个融合,然后现在是跟一个马拉松比赛的一个赛事组织商合作,他们公司大概每个星期都会有一场比赛,一般我们参加马拉松比赛跑完之后,赛事主办方会拍可能几千张照片,比如说要去几千张照片找自己的照片,基本上是找不到,或者通过人工的方式一张一张的看。现在如果有人脸和文字的话,只要在这个入口上传一张自己的照片,就会把你的所有照片全都列出来了。或者输入自己的号码牌也会把你的照片全部列出来。
多模态融合
这一块我们是把人脸还有一些运动信息和语音作了一个融合,可以做一些视频的分析。融合了这些信息之后我们参加了一个比赛,然后在这个比赛中得了第一,比第二稍微高一点点,之所以能得第一可能主要就是源于我们对于视频里面比如说音频信息更加充分一点。
多模态视频搜索
我们阿里云合作做的一个多模态视频搜索,用里面的触标性的分类,还有语音,还有文字,还有人脸做一个视频分析的系统,然后可以做人类检索、语音检索、文字检索,也可以用一些做短视频的推荐还有搜索。
达芬奇 (http://idst-open.alibaba.com)
最后就是IDST对外有一个网站,这个是网址http://idst-open.alibaba.com,大家可以上去体验一下,可能跟外面的一些创业公司的一些网站大同小异,但是也有一些比较有意思的独特的解决方案。
本文由云栖社区志愿者小组陈欢整理,百见编辑。