演讲全文>>
各位来宾,大家好!我是朱翔昱,来自中国科学院自动化研究所,今天很荣幸与大家分享我们的工作。
相信大家平时都常用“人脸识别”功能,比如说上下班打卡、电子支付,进出火车站等等。今天我想由小见大,给大家介绍人脸识别的一个细分方向,带大家了解人脸识别是如何一步步克服困难,走向大家生活的。
时值2012年,我进入中国科学院自动化所,跟随人脸识别的资深专家李子青老师从事人脸识别的研究。当时我进到课题组里,发现人脸识别的各个方向都有师兄在做,有的研究识别、有的研究检测、有的研究跟踪。我发现我没什么可做的,没办法,我去找李老师商量。
老师说,正好海关提出了一个需求,现有技术很难做,你看看能不能解决这个问题。当时人脸识别里正脸的识别率是很高的,但是一旦遇到侧脸,它的识别性能就会下降。
然而海关里人来人往,你很难去限制这些人的行为,所以拍摄出来的照片大多数都是侧脸图像。那么,能不能想办法把这张侧脸图像转到正脸,再送去识别?这就是我开始接触人脸转正这个工作的契机。
我们先来看一下,人脸转正为什么很重要。首先,姿态是影响人脸识别的一个关键因素。大家可以想象一下,那些仅有数面之缘的陌生人,你还记得他的侧脸长什么样吗?进一步来说,我给你一张陌生人的侧脸图片,你能不能想象出他的身份证照长什么样子?一般来说是很难的,除非经过专业训练。就像图中这个小孩的侧脸和正脸的外观变化是很大的,很难匹配到一起。
除了姿态之外,表情也是影响人脸识别一个很关键要素。有个生动的例子,就是《九品芝麻官》里周星驰靠这种搞怪的表情骗过了官差的“人脸识别系统”。
我们就想到,如果能从一张人脸图像生成他正面的无表情图像,再送去识别,不就解决这个问题了吗?像上面这样,侧脸图像被校正成正脸,这时候就可以进行匹配了。
我们进一步分析,人脸的姿态和表情变化到底来源于什么?人脸其实是个三维物体,我们在拍摄人脸图像的时候,人脸是可以旋转的,可以用正面、侧面、甚至下巴面对镜头。
这种旋转行为就导致了人脸图片的姿态变化。下面这一行显示人的表情变化。也就是说,无论是姿态变化还是表情变化,都是在三维空间中发生的。人脸校正之所以困难,就是因为我们在拍摄人脸图像的时候,把人脸从三维结构变成了二维图像。在这个过程中,人脸的三维结构就丢失了。
那么反过来,如果我们能够生成一张图像对应的三维人脸结构,再基于这个三维结构进行姿态和表情的校正,这个工作就变得非常直接和可靠。分析到这里,我和李老师就确定了这个技术路线。
显然,这个过程包含了两个技术,第一个是三维重建,第二个是人脸校正。
我们先来看第一个技术三维重建。三维重建是依赖于一些工具的,其中最关键就是三维人脸模型。
三维人脸模型是这么构建的:我们找来一个三维的扫描仪,然后再找来男男女女、老老少少200个人,尽可能覆盖更多的脸形变化。然后扫描出他们的三维人脸,再进行点对点的配准,再经过一些数理统计的办法,就能得到这个三维人脸模型。
三维人脸模型其实是由一系列参数控制的,比如说通过控制形状参数,可以改变脸形;通过控制表情参数可以控制人脸的行为;通过控制姿态参数,可以控制人脸的旋转。也就是说,我给定姿态、形状和表情参数,我就能获得一个三维人脸。
基于这个三维人脸模型,我们就想出来第一个办法——分析合成法。这个方法就是通过模拟一张人脸图像的生成过程,再使生成图像去逼近目标人脸,完成三维重建。
我们来看一下这个流程。这是我们的三维人脸模型,加上姿态、形状、纹理、光照参数,就生成了一张人脸图像。然后我们搜索这些参数,使得生成的图像跟目标图像尽可能相似。一旦他俩长得一样,我们就认为三维人脸重建就成功了。
这个视频就显示了如何通过三维人脸模型进行三维人脸重建。这也是我们组第一个三维人脸重建的结果,当时用到了各种人脸识别系统中,取得了不错的效果。
然而,很快李老师又来找上我说,系统性能是不错,但是速度实在是太慢了。它是通过不断地迭代慢慢地去搜索,然后重建一张三维人脸。重建一张人脸图像的过程通常需要一分钟,这在很多识别系统尤其是实时人脸系统识别里很难接受的。那么接下来,我就去想怎么把这个速度给提升上来。
恰好那时候人工神经网络开始流行。所谓人工神经网络是你通过训练它,让它看懂一张图像。应用在这个任务里,就是你需要通过训练一个神经网络,让它看懂图像中的人脸,然后把图像中人脸的姿态形状和表情参数返回给我,我去做三维重建。
我很快就在神经网络上尝试了一下,可是发现这个重建结构整体偏差是很大的。我就去分析这个原因,把神经网络输出的200个参数逐个分析了一下,发现了问题所在。
三维人脸姿态、形状和表情这三组参数,它们的重要性是完全不一样的。其中姿态参数最关键,只要姿态参数偏上一点,整个人脸就偏掉了,其次是表情参数,最后才是形状参数。如果不加区分把这些参数都送给神经网络学习,神经网络就会浪费资源在那些不重要的参数上,也就是说它不会抓住重点。
所以我们经过一系列的研究,提出来一系列的学习策略,让神经网络自己能够知道哪些参数最重要,哪些参数次重要。它在学习的时候就会先学重要参数,再学不重要参数。
最终,我们就实现了基于神经网络的三维人脸重建办法。最重要的一个特性就是在速度上有了重大的进化,从原来的分析合成法一分钟一张的速度,进化到了现在每秒钟一百张的速度,这个速度快到甚至可以在手机端进行实时的重建。即便是在这种飞速变化的人脸上,三维重建也能够准确地去捕捉到人脸的细微动作。
并且进一步在这种大姿态上它也能够稳定地重建,比如说完全的侧脸以及超大的俯仰角,它都可以稳定重建。到此,我们就实现了整个流程中的第一步——三维人脸重建。
接下来,我们要考虑如何使用这个重建的三维人脸去把一张图像转正。
要把一张人脸转正,需要先把这张图像背后的三维世界重建出来。人脸内部我们可以使用刚才重建的三维人脸获得,那么在人脸外部我们就只能粗略估计它的深度信息,这个信息不需要很准确,有就行。这样就把整张图像变成了一个三维物体。
左图是二维的图像,到右边就把整张图像变成了一个三维物体。它既然是个三维物体,显然可以在三维空间中旋转。
我们看上面这张小动画,我们把图像在三维空间中旋转到正面,然后再把表情给校正到位,重新成像,就得到了一个初步的校正结果。
就是这张图像,整个人脸的结构都已经转过来了,可是图像有一个缺陷,它有一个黑边。
这个黑边怎么产生的呢?因为原图本来是一个侧脸,有半边脸是看不见的,一旦把它转到正脸以后,看不见的半边脸就暴露出来。这部分在原图中是没有像素的,所以它只能空着,就形成了一个黑边。显然需要去填充它,生成一张更完整的人脸图像。
那如何填充这个黑边呢?大家会很自然地想,人脸不是对称的,可以用左半边脸的纹理去填充右半边脸纹理。但是很遗憾,虽然人脸本身是对称的,但是加上光照就不一定是对称的。
想象一下,假设一束光从人脸一侧打过来,人脸会变成一半明一半暗的状态,也就是俗称的“阴阳脸”。在室外环境下,光照就会更加复杂,我们就更无法使用对称性的假设。如果直接进行对称性的填充,只能得到一个非常不自然的结果,就像图中她的右半边脸有不自然的发黑现象,这显然是我们不想看到的。
经过上面分析,我们就想,能不能把人脸的光照和人脸本身分解开,然后再单独对人脸进行填充?
基于这个想法,我们就提出一个光照模型。我们通过分析人脸的明暗变化,就可以把人脸光照那一部分给分解出来,然后再用原图减去这个光照的部分,就得到一个跟光照无关的、面部细节的部分,这一部分是满足对称性的要求的。
由于面部细节是对称的,所以我们就用对称性对它进行一个填充,然后再加回到刚才我们估计的光照部分,就得到最终的校正结果。大家看这个校正结果,不自然发黑去除了,这就是一个非常高保真的校正结果。
到此我们就可以回顾一下整个人脸转正的流程。首先根据一张输入图像,我们重建它的三维人脸;其次,将整张图像变成一个三维物体,在三维空间中对它进行转正;然后,把表情校正,重新成像;再把暴露出来的这半边脸给填充好,就得到了最终的校正结果。
通过人脸校正,我们就提升了人脸识别系统对带姿态人脸的一个校正识别能力。其实人脸校正不光可以给人脸识别系统等机器看,还可以给人看。举个例子,在刑侦领域经常只能获得一张嫌疑人侧脸低质量的图像,这时候如果使用我们这个系统,就可以尝试把正脸恢复出来,然后再去交给警官进行比对和侦查,提升刑侦的效率。
其实,人脸校正背后蕴含的技术还有更广阔的应用范围。
比如这个三维人脸重建的虚拟试装。
大家可能在手机端试用过这类面部产品的虚拟试用功能。它背后的逻辑就是通过手机采集到的人脸图像,把三维人脸给恢复出来,然后在三维人脸上化妆或者穿戴配饰,再重新成像返回给客户,就可以让客户体验到产品的虚拟效果。
还有现在非常火的元宇宙,虚拟主播、虚拟带货背后也依赖三维重建。
它把重建出来的三维人脸的表情和姿态系数映射到一个数字人身上,就实现了数字人的驱动。也就是说你做什么动作,这个数字人就做什么动作,来完成虚拟的交互。
有些应用也对三维人脸重建提出了更高层次的需求,就比如为用户定制个性化的虚拟形象。这就要求神经网络能够准确地捕捉人脸面部细节,让重建出来的三维人脸一看就是你。这属于一个新兴的方向,称之为精细三维人脸重建。
理解人脸的三维结构,不仅对前面所说的身份识别、虚拟现实、增强现实的应用很关键,在安全领域上也非常关键。
就比如这个视频是一种对人脸识别的攻击性行为,通过把其他人的照片打印出来放给人脸识别系统看,让系统误以为这个照片上的人脸就在它面前,从而通行放过。这就产生了一个非常大的安全隐患。
如果我们能够理解、发现人脸的三维结构,就可以很自然地区分真实人脸和一些伪造的东西。比如说照片是平面的,显然就是假的,而人脸有特定的三维结构,是真的,这时候它才放行。这个领域称为人脸防伪,也是现在人脸识别研究的一个前沿方向,用于保证人脸识别系统的安全性。
伴随着解决一个个像人脸校正这样的小问题,人脸识别不断提升自身的性能,最终走进大家的生活中。但是我相信,人脸的潜力远不止于此,人脸作为人类社会生活中至关重要的对象,除了包含身份信息以外,还包含有更深层次的信息,比如说社会学上的情感信息,甚至更深层次的健康信息。
在未来,我们通过更深入地理解人脸,就可以理解人类的深层次需求,使得人工智能系统更加人性化。
谢谢大家!