在全新的 iPhone X 中,苹果带来了一项全新的生物认证技术:Face ID,可以用于解锁手机、iTunes 和 App Store 购买、支付 Apple Pay。许多人可能会不以为然,Face ID 不就是个面部识别吗?三星 Galaxy S8 也有面部识别,甚至支付宝的登录也早早就支持了刷脸登录,苹果的 Face ID,有什么不同呢?
作为下一世代 iPhone 的主打宣传特性,苹果甚至让 Face ID 彻底取代了 Touch ID,并且不仅仅用于解锁手机,还可以用于支付,这意味着至少在这两个方面,苹果有足够的信心,Face ID 已经达到了和 Touch ID 同样的水准,甚至更好。
速度与体验:解锁手机作为我们进入第二世界的入口,是一个高发多频的操作,Touch ID 经过几代的优化,几乎已经做到了毫无感知的地步,想像一下,如果换用 Face ID 后,每次解锁手机,也需要花费像支付宝登录那样数秒钟的时间,显然是不可接受的。这意味着 Face ID 的面部识别,也必须在毫秒级别内完成,并且最好是用户毫无感知的。另一方面,在体验上也应该尽可能简单,Touch ID 需要你把手指放在指定的位置,这个操作比较简单,而 Face ID 涉及的因素就复杂得多,在面部识别时,人与传感器的距离、面部与手机的角度、光线的强弱等等因素,都有可能限制 Face ID 的发挥。例如,在 iPhone X 正式发布前,人们对于 Face ID 最大的疑问就是:在黑暗中还能正常解锁吗?
安全性:三星 Galaxy S8 的面部识别仅仅只局限于手机解锁,而不可用于支付。这么做主要是出于安全方面的考虑,在 S8 发售不久,网上就已经发现,只需要一张静态的照片就可以骗过其面部识别,直接解锁手机。显然,这样的安全系数,无法应用到支付上。
本文就通过介绍 Face ID 背后的原理,来谈一谈它是如何具体工作的。需要注意的是,由于苹果并没有详尽公开所有的技术细节,并且部分特定领域的专业细节较为琐碎,本文将在尽可能准确的前提下,做到行文的通俗易懂。
传统的面部识别是怎么做的?
机器能够认出人脸,对于普通用户来说已经不是新鲜事了。无论是拍照过程中的人脸对焦,还是照片相册中的人脸聚合,都说明机器已经能够从一张照片当中回答这两个问题:这张照片中有没有人脸?如果有,这张人脸是不是我见过的?
实际上,这和我们每个人认脸,原理是类似的。这个人眼睛大、眉毛粗,那个人鼻子小、嘴唇厚……本质上,我们都在找出这张人脸的一些独一无二的特质,尽管大多数时候这个过程都是在潜意识中完成的。机器同样是在一张人脸上,识别出大量的关键特征点,并通过一些算法,将这些特征量化为可以比较的数学结果。
在这个基础上,各个公司还会引入一些安全上的优化。例如,为了降低在刷脸登录时,使用一张照片进行欺骗,往往会要求你转动头部、眨眨眼睛,来证明手机摄像头正在捕捉到的图像,是一个活体。
不过,这些技术性的修补并不能从本质上解决安全性问题,其根本原因在于,传统的面部识别是基于二维平面图像的,所有的特征只不过是这张图像上的像素点而已。
Face ID 是基于 3D 的面部识别
Face ID 最大的不同,是在于它是基于 3D 的面部识别。这意味着,你的面部深度信息,成为了识别的特征。据苹果在发布会上的透露,iPhone X 一共会投射 3 万个红外点光源,作为特征点,这大大丰富了识别的特征元素。
想像一下,我们有时候会在照片上发现两个人长得很像,然而当站在真人面前时,这种念头就被打消了。一个很重要的原因是,在真实的现实世界中,我们还能额外感知到景深,两个在平面照片上相像的人,在现实世界中却可能因为鼻子突出一些、耳朵靠后一些等特征,让我们得以将两人区隔开来。
在安全方面,据苹果在发布会的介绍,原先的 Touch ID,任意 50,000 人中,可能会有一人能用他的指纹解锁你的手机。而使用 Face ID,在 1,000,000 人中,才会有一个人可能会被误判解锁成功。为了提高 Face ID 的安全性,并且避免使用照片、头像模具来解锁,苹果一共使用了 1,000,000,000 张照片来训练 Face ID 所依赖的神经网络,让 Face ID 不被照片或模具所欺骗。
此外,Face ID 在解锁 iPhone X 时,会检测你的眼睛是否正注视了屏幕。如果你在睡觉的时候,别人把手机放在你面前,并不能成功解锁。同时,在保证安全的前提下,Face ID 利用人工智能,还可以持续地学习一个用户的长相。在完成首次对 Face ID 的录入后,当你戴了眼镜,长了胡子,戴了帽子等情况,Face ID 也能继续认出你,并不断根据新的数据来校准识别模型。
iPhone 是如何获得 3D 模型的
不难猜测,iPhone 之所以能获得 3D 模型用于 Face ID 以及 Animoji 等特性,在硬件基础上,主要依赖于前置的这一排传感器。在两只耳朵(notch)中间,不要看只有这么小小一块区域,苹果一共在这里埋下了五个传感器,它们共同构成了 iPhone X 中的「True Depth Camera」:从左到右依次为红外镜头(即结构光接收器,Infrared camera)、泛光感应元件(Flood illuminator)、距离传感器(Proximity sensor)、前置摄像头(Front camera)、点阵投影器(即结构光发射器,Dot projector)。
大致的过程是,由结构光发射器和结构光接收器来获取面部的深度信息,由前置摄像头获取传统的平面照片,然后通过算法,构建出 3D 模型。根据苹果著名分析师郭明池的消息,结构光的工作范围最多只能在手机屏幕的 50-100 厘米范围内,这时候需要距离传感器首先感知,这个范围内有没有物体存在,以便给出相应的提示,如告知用户没有发现面部等信息。而为了使 Face ID 能够在夜间工作,当环境光不足时,前置的泛红外光照明会投射出辅助的不可见红外光源,使 Face ID 正常工作。
结构光传感器到底是怎么工作的?
在上述的这个过程当中,最神秘的莫过于结构光传感器的工作原理了,毕竟,是它们拿到了现实世界的景深。那么,你可能会问,结构光到底是什么光?它们又是如何获得探测物的深度信息的?
事实上,要想获得现实世界的深度信息,结构光是三种主流的解决方案之一。除此之外,另外两种常见的解决方案主要有双摄像头、ToF 传感器。例如,Google 的 AR 项目 Project Tango、微软的第二代 Kinect,都使用的是 ToF 方案。苹果选用结构光方案,业内早有猜测,早在 2013 年,苹果就收购了一家名为 PrimeSense 的以色列公司,这家公司的主要技术解决方案,就是通过结构光来获取 3D 信息。就像 Touch ID 的技术原型来自于苹果 2012 年收购 AuthenTec,这次 3D 成像的解决方案,很大程度上来自于 PrimeSense。
获取深度信息的三种主流解决方案
那么,不妨先简单说一说,三种主流解决方案,各自的原理与特点。
ToF:ToF 的全称是 Time of Flight,从字面意思来看,就是飞行时间。原理也正如它的名字一样,这种传感器会记录光从传感器发出,到接收的时间差,那么在光速已知的情况下,相应的光子走过了多少距离,就是一个简单的数学问题了。
实际上,从 iPhone 7 开始,苹果已经在 iPhone 上引入了 ToF 传感器。别急,在下一部分我们再来详细说说这个问题。
双摄像头:在 iPhone 7 Plus 中,双摄像头的引入带来了「人像模式」,即可以拍出背景虚化的照片。你猜到了,双摄像头同样可以获取到景深信息。原理也非常简单,现在,抬起头看着正前方,只睁开左眼,然后只睁开右眼,是不是发现了两只眼睛看到的景物,有一点点位移?离得越近,物体的位移也就越大。没错,手机也可以通过两个摄像头拍摄内容的这种微小位移,来计算出景物的深度。
结构光:结构光可能是三种解决方案中,最难以直观理解的方案了。首先在于结构光这个名字很悬乎,到底什么是结构光?为什么看到有的地方说结构光是红外线,有的地方又说是激光?
其实,结构光就是有排列特征的光。比如排成间隔相等的竖线,或者像棋盘一样的小点等等,只要有一定的排列规律,它就是结构光。结构光是激光,又是红外光,这两点并不冲突。激光是发光性质,意味着它的指向性和收束性强;红外光是光的波长,意味着它是肉眼不可见光,波长在 760 奈米(nm)至 1 毫米(mm)之间。
知道什么是结构光以后,其实如何通过它来得到探测物的距离,原理上和前一种「双摄像头」的方案是类似的,都是通过位移。结构光发射器把具有某种排列特征的光照射到物体上后,结构光接收器得到的光,会产生形变,通过分析这种形变,就能得到深度信息。想像一下,你(结构光发射器)在凹凸不平的地面上,贴上三条间距相等的白带,你站在正对面看时,会觉得这是三条笔直的线段,然而如果你移动到侧面观察(结构光接收器),三条笔直的线段,在凹凸不平的平面上,就变成了波澜起伏的曲线。
三种方案各有什么优劣?
这三种方案,并没有绝对的好坏,那么,为什么苹果选用了结构光的方案呢,其实也不难理解。
ToF 方案在软件和算法实现上最简单,测量的准确度和对光照的要求,都相对较小。但缺点也非常明显,要做成可以探测环境景深的 ToF,在硬件体积和功耗上,目前并没有非常成熟的解决方案。
双摄像头的方案,对算法的要求较高,而且相应的精度也不是特别好,在响应时间上需要的时间较长(iPhone 7 Plus 人像模式的对焦就是个例子)。
结构光可以说是比较平衡的一个方案,在现有的技术条件下,已经能够较好地控制能耗和体积,同时在近景的景深探测中,精度和时间都相对较好。不过,一个潜在的缺陷是,当光照过强时,会有较多的干扰光影响接收器工作。
结构光传感器的工作流程
前面说了,结构光传感器主要由发射器和接收器两个部分组成。一个在最左边,一个在最右边,这么排布是有原因的。回想一下我们刚才的例子,观察者想要看到光线发生明显的形变,要从比较侧面的一个位置观察,形变会比较明显。
而这两个传感器中,其实又细分了许多小模块,我们来简单说一说它的主要原件与工作流程。
首先,结构光发射器中的 VCSEL 是负责发出红外光源的生成器,之后,光线通过 6 层的 Wafer Level Optical,它其实是一种准直镜头,通过光的折射增强光的激光特性,即从发散的光源变为收束性较强的平行光。这时候的光,依然没有前面提到的排列特征,这时候需要通过 Diffractive Optical Element,将光变成具有某种排列特征的点或线光源,并通过进一步的衍射,复制扩大这个具有排列特征的结构光。最后,通过一层红外光滤镜,过滤出特定波长的红外光,这时候的结构光就彻底生成了。
而结构光的接收器相对就比较简单了。你可以把它理解成,专门用来拍红外光照片的摄像头。和传统摄像头的构造几乎一样,它有红外镜头、140 万像素的感光元件。和发射器一样,为了排除环境中的干扰光,所有进入的光线,都必须经过红外光滤镜,只有特定波长的红外波才能进入镜头成像。
至此,手机的结构光接收器,相当于拍摄了一张红外照片,通过分析这张照片上红外光源原有排列特征的变形情况,得到被探测物表面各处的距离信息,通过算法合成 3D 模型。
一些猜测和可能性
至此,你应该已经大概清楚了,苹果的 Face ID 背后的技术原理。加入的景深信息生成了 3D 模型,带来了更多可以判断的特征值,这种特征值的复杂程度是高于指纹的,相比于基于 2D 图像的只能用于解锁手机的面部识别,苹果的 Face ID 的安全性足以用于支付。同时,结构光技术方案,相比于 ToF 方案更能节省能耗和体积,而相比于双摄像头方案则在时间上更快速。同时,再一次得益于苹果对软硬件一体的掌控能力,可以做出大量的算法和调优,使得 Face ID 的响应速度,在毫秒级别。
不过,还有一些具体的实现细节和技术选型,由于无法得到苹果的公开资料,我们只能根据现有的资料,做一些猜测和推理。感兴趣的朋友,可以一起继续思考下这几个问题。
面部解锁是否使用了前置摄像头的数据?
Face ID 在暗光或无光情况下,也可以正常解锁手机。可想而知,这时候传统的前置摄像头,肯定是无法正常工作的。也就是说,这时候的面部识别解锁,仅仅是根据可以在弱光或无光条件下工作的结构光来实现的。
这自然让我们思考,在正常光照环境下,面部识别解锁是否也仅仅只景深了景深信息,而并没有根据前置摄像头的 2D 照片信息?这两种方案,苹果具体使用的是哪一种,恐怕要等到 iPhone X 实际到手测试后,我们才能确定。