人脸识别技术分析
1、人脸识别(FR技术)产品的优势
1)非接触:
人脸图像的采集不同于指纹、掌纹需要接触指掌纹专用采集设备,指掌纹的采集除了对设备有一定的磨损外,也不卫生,容易引起被采集者的反感,而人脸图像采集的设备是摄像头,无须接触。
2)非侵扰:
人脸照片的采集可使用摄像头自动拍照,无须工作人员干预,也无须被采集者配合,只需以正常状态经过摄像头前即可。
3)友好:
人脸是一个人出生之后暴露在外的生物特征,因此它的隐私性并不像指掌纹、虹膜那样强,因此人脸的采集并不像指掌纹采集那样难以让人接受。
4)直观:
我们判断一个人是谁,通过看这个人的脸就是最直观的方式,不像指掌纹、虹膜等需要相关领域专家才可以判别。
5)快速:
从摄像头监控区域进行人脸的采集是非常快速的,因为它的非干预性和非接触性,让人脸采集的时间大大缩短。
6)简便:
人脸采集前端设备——摄像头随处可见,它不是专用设备,因此简单易操作。
7)可扩展性好:
它的采集端完全可以采用现有视频监控系统的摄像设备,后端应用的扩展性决定了人脸识别可以应用在出入控制、黑名单监控、人脸照片搜索等多领域。
2、FR三大识别场景
1)人脸确认(1:1):
(1)简介:
将某人面像与指定人员面像进行一对一的比对,根据其相似程度来判断二者是否是同一人,相似 程度一般以能否超过某一量化阀值为依据。简单的说就是A/B两张照片比对,产生的计算数值是否达到要求。
(2)产品应用:
快速的人脸识别比对,移动支付认证、安全性身份核对、作为身份确认的一种新方式,比如考生身份确认、公司考勤确认、各种证件照和本人确认。
(3)实际问题:
产品在系统设计的逻辑上,需要先考虑调取已储存对象信息的先验条件。通过界面/语音的提示,使得待认证者预先知道自己正处于被核对的过程中,且已预先了解拟核对对象的身份。
(4)比对来源的三种主要方式:
1. 用户自传照片,比如支付宝的人脸比对,用户自传的照片最大的问题是照片质量的合格率太低,拍照的光线、角度等因素会导致采集源的质量下降,不利于后期的大批量人脸特征码管理。
2. 使用身份证读卡器,读取身份证上的照片,遗憾的是这张照片2K的大小,不过也是目前用最多的源照片提取方式,比较适合签到场合。
3. 使用公安部旗下NCIIC的人脸比对接口(注意,不是网纹照片接口,这个接口已经不对外),使用的是直接的人脸比对接口。
2)人脸辨认(1:N):
(1)简介:
将某人面像与数据库中的多人的人脸进行比对,并根据比对结果来鉴定此人身份,或找到其中最相似的人脸,并按相似程度的大小输出检索结果。
(2)产品应用:
人脸开门、人脸检索,排查犯罪嫌疑人、失踪人口的全库搜寻、一人多证的重复排查等。
(3)实际问题:
1、走失儿童的项目中去: 这一类系统的部署需要两个条件:A. BCD基本库(比如1000万人) B. 强大的算法硬件
2、零售店中的刷脸支付长江,需要用户预先输入全手机号,确定用户身份再进行人脸识别,将原本为1:N的问题转化为了1:1的问题。
(4)产品难点:
1、1:N中的N能够支持多大
① 场景多样化
从一个班级百号人刷脸签到,到一个公司千号人的刷脸打卡,再到一个学校的几万人,一个四线城市几十 万人,一个一线城市的几千万人,难度是呈指数上升的。
② 公司实际情况
目前各家公司的成熟人脸识别应用能够支持几万到几百万人不等的应用场景,而且还有一个错误率的概念。比如,公司宣称千万分之一的错误率的情况下(1/10000000),人脸通过率其实只有93%,这是因为很难做到一定不发生错误,而且每个人都能识别通过。(假如一家公司说自己能做到亿分之一的错误率,通过率能做到98%以上,多半是虚假宣传,在实际使用中是很难达到的)
2、非配合场景
在配合场景下:比如ATM机刷脸取款,用户会自主配合,将人脸以一个理想的角度通过识别。
而在非配合应用场景下,比如监控视频下的人脸识别,追踪违法犯罪分子的身份信息,情况就要困难得多。这种情况下,用户脸部会发生角度偏大,遮挡,光线不可控等问题。
3、跨人种,跨年龄识别问题
研究发现,在一个数据集上训练好的模型,想到迁移到另外一个人种上,效果会出现较大程度的下降。另 外,人脸随着年龄的变化带来的改变也给人脸识别带来不小的挑战。
要改善这样的问题,一个必要条件是需要建立一个足够完备的跨人种,跨年龄的人脸数据库;在国内的话,是 以汉族人为主,同时跨年龄的人脸数据库也比较难收集,需要不短的时间跨度。
4、产品体验
① 近来备受关注的刷脸支付,很多时候都会要求用户输入全手机号,或手机号后四位,以缩小用户搜索库大 小,实际上这是比较影响体验的。
② 西安一高校晨读刷脸签到,由于系统实际响应匹配时间过长,导致学生排百米长队。
3)多人脸检索(N:N):
(1)简介:
1:N同时作业就是N:N了,同时相应多张照片检索需求。
(2)实际产品问题中:
1、在视频级N:N的校验中,如果要提高通过率,很多时候是采取降低准确率的方式,降低算法队列数量;同样在一些比赛中为了降低误识率,大大提高了准确率,所以算法在校验的过程中必须遵循至少一个固定标准,追求的是速度效率还是最高准确率。
2、视频流的帧处理所用,对服务器的计算环境要求严苛,目前的算法系统所支撑的输出率非常有限。
主要的限制如下:
海量的人脸照片解析需要大量运算(目前很少看到在采集端直接解析的,都是照片剪裁) 海量的人脸照片传输需要大量的带宽(常见的720布控摄像头抓取最小的人脸照片为20K) 海量的人脸照片在后台检索需要耗费大量的运算(国内主流主机为例,最多到24路摄像头
3、产品实战中的物理问题:
1)光照问题
(1)简介:
光照问题是机器视觉重的老问题,在人脸识别中的表现尤为明显。由于人脸的3D结构,光照投射出的阴影,会加强或减弱原有的人脸特征。
(2)解决思路:
A、对其进行包括光照强度和方向、人脸反射属性的量化,面部阴影和照度分析等,尝试建立数学模型,以利用这些光照模型,在人脸图像预处理或者归一化阶段尽可能的补偿乃至消除其对识别性能的影响,将固有的人脸属性(反射率属性、3D表面形状属性)和光源、遮挡及高光等非人脸固有属性分离开来。
B、基于光照子空间模型的任意光照图像生成算法,用于生成多个不同光照条件的训练样本,然后利用具有良好的学习能力的人脸识别算法,如子空间法,SVM等方法进行识别。
2)人脸姿态问题
(1)简介:
与光照问题类似,姿态问题也是目前人脸识别研究中需要解决的一个技术难点。姿态问题涉及头部在三维垂直坐标系中绕三个轴的旋转造成的面部变化,其中垂直于图像平面的两个方向的深度旋转会造成面部信息的部分缺失。针对姿态的研究相对比较的少,目前多数的人脸识别算法主要针列正面、准正而人脸图像,当发生俯仰或者左右侧而比较厉害的情况下,人脸识别算法的识别率也将会急剧下降。面部幅度较大的哭、笑、愤怒等表情变化同样影像着面部识别的准确率。
(2)解决思路:
1、第一种思路:
是学习并记忆多种姿态特征,这对于多姿态人脸数据可以容易获取的情况比较实用,其优点是算法与正面人脸识别统一,不需要额外的技术支持,其缺点是存储需求大,姿态泛化能力不能确定,不能用于基于单张照片的人脸识别算法中等。
2、第二种思路:
是基于单张视图生成多角度视图,可以在只能获取用户单张照片的情况下合成该用户的多个学习样本,可以解决训练样本较少的情况下的多姿态人脸识别问题,从而改善识别性能。
3、第三种思路:
是基于姿态不变特征的方法,即寻求那些不随姿态的变化而变化的特征。中科院计算所的思路是采用基于统计的视觉模型,将输入姿态图像校正为正面图像,从而可以在统一的姿态空间内作特征的提取和匹配。
3)遮挡问题
对于非配合情况下的人脸图像采集,遮挡问题是一个非常严重的问题。特别是在监控环境下,往往彼监控对象都会带着眼镜,帽子等饰物,使得被采集出来的人脸图像有可能不完整,从而影响了后面的特征提取与识别,甚至会导致人脸检测算法的失效。
4)年龄变化
随着年龄的变化,面部外观也在变化,特别是对于青少年,这种变化更加的明显。对于不同的年龄段,人脸识别算法的识别率也不同。一个人从少年变成青年,变成老年,他的容貌可能会发生比较大的变化,从而导致识别率的下降。对于不同的年龄段,人脸识别算法的识别率也不同。
5)人脸相似性
不同个体之间的区别不大,所有的人脸的结构都相似,甚至人脸器官的结构外形都很相似。这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的
6)图像质量
人脸图像的来源可能多种多样,由于采集设备的不同,得到的人脸图像质量也不一样,特别是对于那些低分辨率、噪声大、质量差的人脸图像(如手机摄像头拍摄的人脸图片、远程监控拍摄的图片等)如何进行有效地人脸识别是个需要关注的问题。同样的,对于高分辨图像对人脸识别算法的影响也需要进一步的研究。
7)样本缺乏
基于统计学习的人脸识别算法是目前人脸识别领域中的主流算法,但是统计学习方法需要大量的训练。由于人脸图像在高维空间中的分布是一个不规则的流形分布,能得到的样本只是对人脸图像空间中的一个极小部分的采样,如何解决小样本下的统计学习问题有待进一步的研究。
8)海量数据
传统人脸识别方法如PCA、LDA等在小规模数据中可以很容易进行训练学习。但是对于海量数据,这些方法其训练过程难以进行,甚至有可能崩溃。
9)大规模人脸识别
随着人脸数据库规模的增长,人脸算法的性能将呈现下降
10)动态识别
非配合性人脸识别的情况下,运动导致面部图像模糊或摄像头对焦不正确都会严重影响面部识别的成功率。在地铁、高速公路卡口、车站卡口、超市反扒、边检等安保和监控识别的使用中,这种困难明显突出;
11)人脸防伪
伪造人脸图像进行识别的主流欺骗手段是建立一个三维模型,或者是一些表情的嫁接。随着人脸防伪技术的完善、3D面部识别技术、摄像头等智能计算视觉技术的引入,伪造面部图像进行识别的成功率会大大降低。
12)丢帧和丢脸问题
需要的网络识别和系统的计算机识别可能会造成视频的丢帧和丢脸现象,特别是监控人流量大的区域,由于网络传输的带宽问题和计算能力问题,常常引起丢帧和丢脸问题。
13)摄像机的头像问题
摄像机很多技术参数影响视频图像的质量,这些因素有感光器(CCD、CMOS)、感光器的大小、DSP的处理速度、内置图像处理芯片和镜头等,同时摄像机内置的一些设置参数也将影响质量,如曝光时间、光圈、动态白平衡等参数。
4、实战中的数据标注
1)数据标注
(1)一般来说,数据标注部分可以有三个角色
1. 标注员:标注员负责标记数据。
2. 审核员:审核员负责审核被标记数据的质量。
3. 管理员:管理人员、发放任务、统计工资。
只有在数据被审核员审核通过后,这批数据才能够被算法同事利用。
(2)数据标记流程
1. 任务分配:假设标注员每次标记的数据为一次任务,则每次任务可由管理员分批发放记录,也可将整个流程做成“抢单式”的,由后台直接分发。
2. 标记程序设计:需要考虑到如何提升效率,比如快捷键的设置、边标记及边存等等功能都有利于提高标记效率。
3. 进度跟踪:程序对标注员、审核员的工作分别进行跟踪,可利用“规定截止日期”的方式淘汰怠惰的人。
4. 质量跟踪:通过计算标注人员的标注正确率和被审核通过率,对人员标注质量进行跟踪,可利用“末位淘汰”制提高标注人员质量。
2)模型训练
数据标记完成后,交由算法同学进行模型的训练,期间发现的问题可与产品一起商讨。训练过程中,最好能可视化一些中间结果。一来可以检测代码实现是否有Bug,二来也可以通过这些中间结果,来帮助自己更好的理解这个算法的过程。
3)模型测试
测试同事(一般来说算法同事也会直接负责模型测试)将未被训练过的数据在新的模型下做测试。
如果没有后台设计,测试结果只能由人工抽样计算,抽样计算繁琐且效率较低。模型的效果,需要在精确率(识别为正确的样本数/识别出来的样本数)和召回率(识别为正确的样本数/所有样本中正确的数)中达到某一个平衡。
测试同事需要关注特定领域内每个类别的指标,比如针对识别人脸的表情,里面有喜怒哀乐等分类,每一个分类对应的指标都是不一样的。测试同事需要将测试的结果完善地反馈给算法同事,算法同事才能找准模型效果欠缺的原因。同时,测试同事将本次模型的指标结果反馈给产品,由产品评估是否满足上线需求。
(1)测试环境说明
例如:
CPU:Intel(R) Core(TM) i7-4790 CPU @ 3.60 GHz
内存:8GB
系统:Ubuntu 14.04 x86_64/Windows 7 SP1 64bit
GCC版本:4.8.2
(2)测试集和测试需求说明(比如“图片包含人脸大小应超过96*96像素,测试结果达到XX程度满足需求)
1. 经典人脸身份识别测试集LFW,共包含13233 张图片 5749 种不同身份;世界记录99.7%。
2. CK+ (一个人脸表情数据集),包含固定表情和自发表情,包含123个人的593个表情序列。每个序列的目标表情被FACS编码,同时添加了已验证的情感标签(生气、厌恶、害怕、快乐、悲伤、惊讶)。
(3)需要说明“有效距离,左右角度,上下角度,速度”等参数值(范围)
注:这和“部署的灵活性”相关——由于不同客户不同场景的需求不同,所以技术方的人脸检测模块,一般可以通过调整参数得到N种亚型,以适应不同应用场景(光照、角度、有效距离、速度) 下对运算量和有效检测距离的需求。
(4)测试结果——欠拟合
1、定义:模型没有很好地捕捉到数据特征,不能够很好地拟合数据
欠拟合
左图表示size与prize关系的数据,中间的图就是出现欠拟合的模型,不能够很好地拟合数据,如果在中间的图的模型后面再加一个二次项,就可以很好地拟合图中的数据了,如右面的图所示。
2、解决方法:
1)添加其他特征项,有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。
2)添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。例如上面的图片的例子。
3)减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。
4)尝试非线性模型,比如核SVM 、决策树、DNN等模型。
(5)测试结果——过拟合
1、定义:模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差。例如下面的例子。
过拟合
上面左图表示size和prize的关系,我们学习到的模型曲线如右图所示,虽然在训练的时候模型可以很好地匹配数据,但是很显然过度扭曲了曲线,不是真实的size与prize曲线。
二、解决方法:
从产品角度
1)重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,噪音太多影响到模型效果,如果出现了过拟合就需要我们重新清洗数据。
2)增大数据的训练量,还有一个原因就是我们用于训练的数据量太小导致的,训练数据占总数据的比例过小。
从算法角度
1)交叉检验,通过交叉检验得到较优的模型参数;
2)特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间;
3)正则化,常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择;
4)如果有正则项则可以考虑增大正则项参数 lambda;
5)增加训练数据可以有限的避免过拟合;
6)Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等.
4)标注流程中遇到的问题
(1)项目过程中的不确定性:
1、出现原因:
一般情况下,只要数据标注的规范清晰,对规则的界定从一而终,标注工作的流程还是比较简单的。
数据标注规范可能会在测试后根据结果情况进行调整,那么,规则修改前后“数据标注的一致性”就出现了问题,会导致多次返工,在时间和人工成本上颇有影响。
2、解决方法:
1)如是分类性质的解析工作,建议标注规则先从非常肯定的非黑即白开始;规则设定由简到繁,带有疑虑数据再另外作记号。随着规则一步步深入,可能会出现交叉影响,此时就需要放弃一些低频问题的规则,余下的未标注的数据就根据新的规则标注。
2)如是多类规则同时进行的标注工作,需要把每类规则定得足够细致。
3)实例:
1、如询问机器人会干什么的语料中出现,“你说你会干什么?”可以理解为询问,也可能是嫌弃,这两类应对的策略不同,有歧义,所以不能把它归纳如询问类,需要把它从训练集里剔除。
2、如人脸情绪识别中,一个人在流眼泪,有时可以理解为伤心落泪,有时可以理解为喜极而泣,还有时可以理解为激动落泪,甚至是感动落泪等,所以在看到此类照片时,不能简单的凭借惯性化思维将其归纳到悲伤一类中,当人眼都很难判别清楚时,需要把它从训练集里剔除。
5、实际案例分析
1)某领域的人脸识别监测与身份确认
(1)案例问题:
光照影响:过暗或过亮等非正常光照环境,会对模型的效果产生很大干扰。在解决光照影响这个问题上,可以通过两种方式:
(2)解决方案:
1、从产品角度控制
A. 在用户可以更换环境的前提下(比如银行刷脸取钱等),可语音/界面提示用户目前环境不理想(头歪、头发、眼镜等),建议进行正确的正脸取照。
B. 在用户不能控制更换环境的情况下(比如人脸识别、车辆识别等摄像头固定的场景),只能通过调试硬件设施弥补这个问题。
C. 晚上:由于摄像头在晚上会自动切换到黑夜场景(从图片上看就是从彩色切换为黑白),因此在晚上强光下(例如路灯照射)人脸就会过曝,这时,我们可以通过强制设置摄像头环境为白天(图像为彩色)来避免。而过暗的情况,从节省成本角度看,可以在摄像头旁边增加一个光线发散、功率不高的灯来弥补。当然这两个问题也可以通过购买高质量的摄像头解决,但这样做也意味着更高的成本。
D. 白天:白天也会出现光线过亮的情况,这种情况可以考虑用滤光片等等。
2、从算法角度控制
用算法将图片进行处理,可以将图片恢复得让人眼看清的程度。
2)某款人脸年龄识别产品
(1)案例问题:
一款识别人脸年龄的产品对女性某个年龄阶段(25—35)的判断,误差较大,经过发现,是因为该年龄阶段有以下特点:
A. 女性在这个年龄阶段面貌变化不是很大,有时人眼给出的判断误差都很离谱。
B. 在这个年龄层次的女性注重打扮,化妆品很大程度上掩盖了其真实年龄,有时30多的跟20岁没多大差别;
C. 精装打扮的和素颜的差别有时变化不大、有时变化很大。
(2)解决方案:
1. 补充数据:针对该年龄层次的人脸图片数据做补充。不仅补充正例(“XXX”应为多少岁),还应补充负例(“XXX”不应为多少岁)。
2. 优化数据:修改大批以往的错误标注。
3. 数据总结:对化妆和不化妆的人脸图片进行分析,以便调整算法参数。
(3)需求研究:
1. 自拍:如女性群体一般都希望自拍时,年龄的判别在心里预期中能越小越好,当在和一群人自拍中可以适当的将主人公的年龄判别结果调低至达到用户心理满足感。此时可适当降低算法的参照度。
2. 婚恋交友:在婚恋网站交友过程中,双方都希望知道彼此的真实年龄信息,此时运用人脸年龄识别可以分析双方的年龄、皮肤等物理信息为彼此提供参考。此时的信息就不能以达到心理满足感为主了,应当追求准确度。
3)某款AR美颜相机
(1)无法定位出人脸:
在背景出现多人或宠物时,相机有时并未能精确定位出目标用户,而定位到背景图片中的人、宠物、身旁的其他人;有时屏幕一片漆黑;有时显示未检测出人脸。
1、从产品角度:
界面提醒用户远离复杂背景,或美颜时最好屏幕中只出现一人,或给出方框图让用户自己手动选择主要定位区域进行AR美颜;屏幕一片漆黑时可提醒用户是否是光线太暗,或是摄像头被障碍物遮挡等;
2、从算法角度:
可对人脸关键点进行定位,计算目标用户与摄像头的距离或计算人脸在频幕的区域占比来确定目标用户(一般几何距离近的、频幕区域占比较大的为美颜目标),结合活体检测来排除背景图片人物的干扰等。
(2)图像模糊昏暗:
光线太暗、运动、对焦等造成模糊(摄像头距离因素,造成图像低频存在,高频流失等)
1、从产品角度:
可提醒用户在光线较温和的区域进行美颜操作;或是擦除前置摄像头的障碍物;或文字提示动作太快;或是更换高清前置摄像头;或提示对焦失败,给与对焦框图让用户手动对焦等。
2、从算法角度:
在美颜前可在后台中调取手机亮度调节功能,用算法调节光线的亮暗程度以适应美颜所需的物理条件;用算法设法补齐高频部分从而减少对照片的干扰。
(3)人脸关键动作抓捕太慢:
在进行AR美颜搞怪时(如张嘴动作,屏幕出现音符、唾沫星子等)对动作抓捕太慢(半天才抓捕到张嘴动作)。
1、从产品角度:
文字提示不支持快速移动或提示缓慢移动(如,亲!您的动作太快了,奴家还未反应过来等)
2、从算法角度:
人脸姿态估计、关键点定位来捕捉人脸动作。
(4)关键位置添加虚拟物品失败(如在嘴上叼烟、耳朵吊耳环、眼镜戴墨镜、脸显红晕)
1、从产品角度:
文字/图片提醒用户摆正人脸位置。
2、从算法角度:
可利用算法对人脸关键区域进行分割并定位,来达到人脸精准定位添加虚拟物品
4)人脸开门和人脸检索
(1)人脸开门等跨网方案需要关注的因素
1、远程算法更新:
远程算法更新必然会造成本地局域网功能暂时性无法使用。因此远程算法更新的频率、时间、更新效果都需要产品在更新前精确评估。
2、增删改人脸数据与本地数据的同步:
本地局域网和互联网是无法直接交互的,因此用户在互联网一旦对人脸数据库进行增删改的操作,下发程序的稳定性和及时性都需要重点关注。
3、硬件环境:
本地存储空间的大小和GPU直接影响到本地识别的速度。服务器的稳定性影响到功能地正常使用。
4、守护程序:
断电等外置情况意外情况发生又被处理完善后,程序能自动恢复正常。
(2)人脸检索等某一局域网方案需要关注的因素
1、速度:
除了算法识别需要消耗一定时间外,该局域网下的网速会影响到识别结果输出的速度。
2、数据库架构:
通过检索结果关联结构化数据。
3、阈值的可配置性:
在界面设置阈值功能,从产品层面输入阈值后,改变相对应的结果输出。
4、输出结果排序:
根据相似度排序或结构化数据排序内容地抉择
5、云服务的稳定性。