摘要: 本次由来自阿里巴巴的 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% 的虚景但是其实这个虚景里面还有很多是人工标落了, 因为现在有一个优酷那边的审核团队比较大, 可能是几百人吧, 只要有用户上传视频, 他们就会有一个人把视频从头看到尾, 如果人看久之后是非常容易累的现在有了这个东西, 他们会慢慢缩减人员的规模
(二) 国际证件识别
这个是跟支付宝合作的一个国际的证件识别, 因为支付宝它的主要策略是大力发展海外市场在海外的话一般你要做实名认证就得上传一张国家的证件如果用通用的模型直接来检测证件, 经常会出现哪个地方多一块哪个地方少一块, 然后它对应的一些字段就提取不对而我们现在的这个通用模型通过分支直接预测证件结构, 就可以把分支选的比较好, 因为在每一个框里面它的字的分布式是均匀的有了大的结构之后如果漏了几行或者是多了几行, 其实都不太影响, 可以用一些简单的方法把它的噪声去掉, 这样的话结果会更好
(三) 体育照片搜索
我们将人脸跟文字做了一个融合, 然后现在是跟一个马拉松比赛的一个赛事组织商合作, 他们公司大概每个星期都会有一场比赛, 一般我们参加马拉松比赛跑完之后, 赛事主办方会拍可能几千张照片, 比如说要去几千张照片找自己的照片, 基本上是找不到, 或者通过人工的方式一张一张的看现在如果有人脸和文字的话, 只要在这个入口上传一张自己的照片, 就会把你的所有照片全都列出来了或者输入自己的号码牌也会把你的照片全部列出来
多模态融合
这一块我们是把人脸还有一些运动信息和语音作了一个融合, 可以做一些视频的分析融合了这些信息之后我们参加了一个比赛, 然后在这个比赛中得了第一, 比第二稍微高一点点, 之所以能得第一可能主要就是源于我们对于视频里面比如说音频信息更加充分一点
多模态视频搜索
我们阿里云合作做的一个多模态视频搜索, 用里面的触标性的分类, 还有语音, 还有文字, 还有人脸做一个视频分析的系统, 然后可以做人类检索语音检索文字检索, 也可以用一些做短视频的推荐还有搜索
来源: https://yq.aliyun.com/articles/433676