深度学习在人脸识别中的应用

2019-06-13

近年来人工智能浪潮的核心技术“深度学习”正在经历前所未有的迅猛发展,它通过少则近几层多则上百层人工神经网络不断地对高维的输入数据块进行抽象与理解并最终做出“智能”的决策,达到或已超越人类的最高水平。例如自然语言理解、语音识别和人脸识别达到甚至超越普通人的识别水平。这些人工智能技术,在悄悄的改变人类生活的方方面面。它们以点带面完成越来越多的“简单任务”,为人们提供更加简洁、方便和安全的服务。

回顾——人脸识别的“浅”时代

在介绍深度学习技术在人脸识别中的应用之前,我们先看看深度学习技术兴起前的“浅”时代人脸识别技术。在机器自动人脸识别技术研究的早期研究者们尝试过用一些非常简单的几何特征来进行人脸识别, 然而由于稳定性差、区分能力弱和难以自动化等原因,这种做法很早就被抛弃。研究人员们发现,设计各种几何特征,折腾大半天还不如直接比较像素区域的差别准确,也就是所谓的模板匹配技术。然而,直接比对像素误差有个很容易想到的缺点,不同人脸区域对区分人的身份的重要性并不一样。事实上研究表明眉毛和眼睛是区分人身份最重要的区域,其次是嘴巴,而大片脸颊区域所包含的身份信息是有限的。如图1所示,人类最难鉴别身份的是去掉眉毛和眼睛的人脸。

图1:不同区域对人脸识别的重要性

为了解决这样的问题,很长时间人脸识别都非常依赖于判别性特征的学习,最有代表性的工作莫过于fisherfaces[3],所谓判别性信息就是那种独一无二特征,就好像图2中所示,成龙的大鼻子,姚晨的大嘴,李勇的招牌马脸,姚明的魔性笑容。总而言之,只要能找到你独特的“气质”就能更好的认识你。

图2:具有判别性的人脸

判别性特征的想法非常直观有效也取得了一定成功,但是由于人脸的像素特征非常不稳定,不同拍摄设备和拍摄场景、不同的光照条件和拍摄角度等都会造成相同人脸的像素差异巨大。想要在各种复杂影响因素下找到一张人脸稳定且独特的特征就很难了。为了解决这些问题,研究人员开始研究比简单像素值更加稳定的图像描述子。其中比较主流的一种描述子Gabor描述子借鉴了人类大脑的视觉皮层中对视觉信息进行预处理的过程。大脑皮层中对视觉信息加工处理的操作主要有两种,一种是在简单细胞中进行的线性操作,一种是在复杂细胞中进行的非线性汇聚。如图3所示的是MIT大脑和认知科学学院人工智能实验室的主任Poggio教授提出的一个叫HMAX[4]的类脑视觉信息处理流程:

图3:HMAX图像信息处理过程

在深度学习诞生前的“浅”时代,人脸识别研究人员不断改进预处理过程、使用更好的描述子,提取更有判别性的特征,这些都在慢慢的提高计算机识别人脸的能力。然而直到深度学习横空出世前,“浅”时代的各种人脸识别方法,对人类本身所具有的人脸识别能力仍然望尘莫及。

拥抱——人脸识别的“深”时代

要赋予计算机完整的人脸识别能力,除了能认识人外其实还有几步非常重要的预处理过程。如图4所示,完整的人脸自动识别算法需要能自己从图像里找到哪有人脸,学界称之为人脸检测?哪里是眼睛鼻子嘴,学界称之为人脸特征点定位?最后才是提取前面说到的具有判别性的特征进行身份的识别,即狭义上的人脸识别。

图4:完整的自动人脸识别流程

在深度学习出现以前关于人脸检测、特征点定位和人脸识别这三个子任务的研究都是相对独立的展开的。从上个世纪90年代开始到2010年左右,经过不断的摸索,研究人员们对每个子任务都发现了一些比较有效的特征与方法的组合来解决问题如图4所示。然而由于研究人员需要根据每个子任务本身的特点设计不同的特征,选择不同的机器学习方法,因此技术的发展相对缓慢。

从2012年左右,受深度学习在整个机器视觉领域迅猛发展的影响,人脸识别的“深”时代正式拉开序幕。短短的四年时间里,基于深度卷积神经网络的方法不断在这三个子任务中刷新人工智能算法的世界记录。人脸识别“浅”时代让人眼花缭乱的各种技术和方法仿佛一页之间成为历史。人脸识别研究人员,不需要在挖空心思的设计特征,也不需要担心后面需要什么样的学习算法。所有的经验的积累过程转换为了深度神经网路算法自动学习过程。这正式深度学习算法最大的优点:自动学习对特定任务最有用的特征!

图5:人脸识别

考察一个单项的“弱”人工智能技术是否成熟,达到乃至超过人类的平均水平应该是一个比较通用的准则。说到这里不得不提一个人脸识别的标准评测数据库LFW(Labeled Face in the Wild)数据库。在2014年,Facebook使用一个叫做DeepFace的深度学习方法,第一次在LFW数据库上接近人类的识别水平(DeepFace: 97.35% VS. Human: 97.53%),其结果如图6所示:

图6: DeepFace深度学习网络

“Talk is cheap, show me the code”,自从DeepFace在人脸识别领域一战成名,让研究人员们看到了超越人类识别能力的曙光。随着几大开源深度学习项目(例如CAFFE,TORCH, TensorFlow)的发展壮大,基于深度学习的方法真正如雨后春笋般席卷整个人脸识别领域。事实也证明深度学习确实能够做到,短短一年以后就有很多基于深度学习的方法在LFW数据库上超过人类的识别能力。

深度学习为什么如此神奇,能在短短的几年时间里一统江湖呢?抛开技术细节不谈,原理上来说最为关键的两个因素就是:层级式抽象和端到端可学习。

在回顾“浅”时代人脸识别方法历史时曾经介绍了基于几何特征的方法和基于判别性特征的方法。下图这些特征无疑都是针对人脸的某种抽象。由于原始图像输入的搜索空间巨大,只有通过恰当的抽象缩小搜索范围,才能最终做出合理的决策。对一个复杂的概念想要通过一层的抽象就将所有结构梳理清楚会是很难甚至不可能的,而深度神经网络这种多层结构给自底向上的逐级抽象提供了天然的模具。只要将足够多的数据输入到具有多层结构的深度神经网络并告知它你想要的输出结果,网络可以自动的学习中间层的抽象概念,如图6所示,好奇的研究人员将一个能够识别1000类物体的神经网络中的特征进行了可视化:

图7:深度神经网络特征可视化结果

从图中可以看到在深度神经网络的第一层有点类似人类科学家积累多年经验找到的Gabor特征。第二层学习到的是更复杂的纹理特征。第三层的特征更加复杂,已经开始出现一些简单的结构,例如车轮、蜂窝、人头。到了第四、五层机器输出的表现已经足以让人误以为它具备一定的智能,能够对一些明确的抽象概念例如狗、花、钟表、甚至键盘做出特别的响应。研究人员们积累几年甚至十几年设计出来的特征例如Gabor、SIFT,其实可以通过深度神经网络自动的学习出来(如图7中“Layer 1”),甚至自动学习出它的人类“爸爸”难以言喻的更高层次抽象。从某种意义上来说,人工智能科学家就是机器的父母,需要“教”机器宝宝认识这个世界。谁都希望自己有个聪明宝宝,只用教它“知其然”,它自己慢慢总结消化然后“知其所以然”。深度神经网络就像个聪明的机器宝宝自己会学习、会抽象、会总结。

端到端可学习,乍一听这个名词可能觉得头有点“方”,其实可以简单理解为全局最优。图4中总结了在“浅”时代,人脸识别的各个子问题都需要通过两个甚至更多个步骤来完成,而多个步骤之间完全独立的进行优化。这是典型贪心规则,很难达到全局最优。事实上,受限于优化算法深度神经网络也很难达到全局最优解,但是它的优化目标是全局最优的。近几年深度学习在各种任务上的成功经验,表明机器宝宝也是需要有梦想的,直接对准“远方”的全局最优目标进行学习,即使得不到最优解也也远远好过小碎步的局部贪心算法。想要达到真正的“强”人工智能,深度神经网络还有很长的路要走,星爷的名言对神经宝宝同样适用,做人没有梦想和咸鱼有什么分别?