《列宁与卫兵》是每一个经历过八九十年代中国教育的人都耳熟能详的故事。大意就是卫兵不认识领袖,不让列宁同志进克林姆林宫,领袖刷脸失败。
时光荏苒,白驹过隙。转眼2016年,到了电影《天空之眼》Eye in the Sky的反恐行动中,已经是机器甲虫进入恐怖组织活动区域拍张照片,这边通过人脸识别确认身份,那边无人机上的导弹呼啸着就来了。
如果你以为电影有科幻的成分,那么这家已经把这都提供到你的面前了。
生物特征识别,作为一项快速发展的技术,相对于传统的密码识别方式,显然避免了容易遗忘的问题,大大降低了各类涉及身份识别问题的产品,特别是金融产品的使用门槛。人脸识别在众多生物特征如指纹、眼纹、声纹、DNA等识别手段中有着自己独特的优势,那就是采集便捷。
回顾人脸识别的发展历程,首先实现的是在PC机上的
人脸检测
。而它第一个真正意义上的实际应用是在相机上实现人脸检测,算法2000年出现,迅速成为主流。然后是在手机上实现
人脸检测
和
面部追踪
,到2012年已经出现了在手机上通过面部追踪的操作的游戏。再之后到了2015年,手机上的人脸识别已经出现,进而
人脸识别+生活场景
的应用在手机端出现。
在今天这个人人言必及人工智能AI的时代,不知道大家有没有好奇一下人脸识别到底是怎么实现的呢?
从人脸识别的发展历程看,我们不难想到人脸识别的第一步是
人脸检测
。也就是找出一张图片中所有的人脸。第二步就是根据人脸的特征给
人脸编码
。当然希望这样的编码方法能够使用同一张脸在各种条件下编码相同,至少极其相似;对不同的脸尽可能的体现人脸特征的不同。最后一步就是利用这样包含了人脸特征的编码,和已知的所有人脸编码进行
比对识别
。
其实我们人类自己实现人脸识别,也是这么个过程,只是我们每一步实现的时候可能我们自己没有总结过其中的方法。世事洞明皆学问,下图其实是在一个教儿童在受到暴力侵害时如何向警察更好的描述施暴者特征的网站上找到的。
当然机器和算法显然没有那么强的泛化能力,我们还需要用机器可以实践的算法来实现上面说的每一步。
人脸检测
这一步,从2000年发展到现在有很多方案,介绍一种非常著名的方向梯度直方图(Histogram of Oriented Gradients)的方法,简称HOG。这种方法先把图转成灰度图,只考虑黑白明暗,每个像素点就是一个灰度值。然后考虑每个像素点根据和周围像素的明暗计算梯度反映明暗变化的方向。为了避免一叶障目,一定区域内若干个像素点只用明暗变化最强的点的信息代替。这样原始图像就表示成了HOG形式,再利用一般人脸的HOG形式比对,就可以快速找到人脸所在的区域。当然如果计算力可以,还有更复杂可靠的算法。
人脸编码
这一步,为了实现同一张脸在各种情况下能相似,会先抽取人的面部特征。现在业界流行的是Vahid Kazemi和Josephine Sullivan在2014 年发明的方法。这一算法的基本思路是找到若干个人脸上普遍存在的特定点(称为特征点,landmarks)——包括下巴的顶部、每只眼睛的外部轮廓、每条眉毛的内部轮廓等。接下来训练一个机器学习算法,让它能够在任何脸部找到这些特定的点。再使用那些能够保持图片相对平行的基本图像变换,例如旋转和缩放(仿射变换)。现在无论人脸朝向哪边,算法都能将眼睛和嘴巴向中间挪动到大致相同的位置。
下图是给支付宝等一系列支付级应用做人脸识别的Face++旷视提供的算法中两组人脸特征点(Landmark)。
然后就是
最核心的关键点
,如何区分不同的脸。大体思路的出发点相信你已经在各种刑侦剧,比如《犯罪现场调查》中看过:测量各种数值。该测哪些值,显然又到了机器学习特别是深度学习算法的用武之地。比如训练一个深度神经网络生成脸部的若干个测量值。每次加载一张脸的一张照片和另一张脸的两张不同照片,让算法根据自己为这三个图片生成的测量值,稍微调整神经网络,以确保第一张和第二张生成的测量值接近,而第二张和第三张生成的测量值略有不同。在为几千个人的数百万图像重复该步骤数百万次之后,神经网络也就学习了如何可靠地为每个人生成我们需要的这些测量值。专业的说法是生成了人脸的一个嵌入(embedding)。最终我们将复杂的原始数据缩减为可由计算机生成的一个数列的方法,这种脸部提取方法是由 Google的研究人员在 2015年发明的。
有了由大量数据和强大计算力训练实现的人脸提取方法,一旦模型训练完毕,对于任何一张脸,我们都可以快速的生成它的测量值,就可以开始和我们已知的面孔的测量值进行
比对识别
了。这也就使我们已经可以在手机这类的计算平台实现人脸识别(1对1乃至1对N,如果N不太大)。当然已知面孔的库可以取得丰富一些,每个面孔多几幅图及其测量值,甚至计算能力和时间允许,还可以给已知的面孔库再配上一个机器学习算法里的分类器,比如线性支持向量机SVM,提高准确性。
任何算法技术的实际应用,都需要实践者有着强大的实现能力。Google公司旗下的DeepMind以其惊人的工业实现能力,使得算法上的进步在下棋这个应用上,给世人带来了从Alpha Go到Alpha Go Zero,再到Alpha Zero的令人瞠目结舌的表现。
而人脸识别算法技术的实际应用,还有一切生物特征识别技术面临的共同挑战,假体攻击。特别是在安全等级要求高的金融支持级应用中,都是要搭配活体检测技术的。
除了利用图像处理中基于先验知识的异常检测技术(如上图)外,还可以利用光源和接收器的属性进行活体检测。比如利用红外光源减少自然光的明暗影响,利用光路传播时间进行3D成像,利用反射光和入射光的性质变化分辨材质等。当然这些都是要付出代价的,不然以苹果一个如此注意用户体验的公司,在猛推全面屏的时候,也不至于非要给用户留个这么难看的“刘海”。
魔和道的较量总在不断进行中,在金融支付这种有极高安全性要求而又有的具体利益驱动的应用中,人脸识别还可以通过采集环境的限制,或者和其他生物特征识别技术结合的方式,来尽可能的保证安全。
电子支付渠道,最大的优势是便利性,互联网企业日新月异的发展速度和勇于开拓创新的特性正好契合这一特点,因此优势巨大。而银行业安身立命的根本是其关于安全的信用保证,在电子支付渠道上的进步肯定要落后于互联网企业。但随着刷脸走进我们的日常生活,刷脸时代的到来,银行业也必会在刷脸支付的道路上稳步前进。
大数据+AI算法+场景
,是当今时代的发展的特征和方向。列宁和卫兵的故事,很自然的就会想到在人员管理身份验证场景(比如门禁、验票、挂号)的刷脸应用。而这一应用显然在各种行业都可以使用,如果你关注科技方面的新闻,应该已经在各家的宣传片中看过。
金融行业,尤其是银行业,在各种申请审批环节,随着技术的发展,特别是监管的要求,已经采集了客户的影像资料。而在自身的运营和为客户提供服务的工程中已经积累了大量的客户数据,在数据部门团队的努力下,利用各种数据分析和数据挖掘技术已经并持续的在形成面向场景应用的数据产品。随着人脸识别算法技术的成熟和广泛使用,设计出对自身客户价值提升的场景应用,已然成为现实。
最近我们数据分析团队就利用自身积累的数据产品,结合人脸识别技术,做了一次有趣的尝试。
利用人脸识别技术,结合网点的应用场景,在重要客户到来时快速识别,对客户经理进行提醒。同时利用我们掌握的客户画像数据,结合我们数据分析结果和数据挖掘模型,快速地向网点运营人员和客户经理提示要客的在我行的情况,到来的原因,可能的产品推荐。