【016】03周 苹果的 Face ID 是如何工作的?

子不语Rex
2017年09月14日

苹果的 Face ID 是如何工作的?

| 本文为付费栏目文章,您已订阅,可阅读全文 |
在全新的 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 背后的原理,来谈一谈它是如何具体工作的。需要注意的是,由于苹果并没有详尽公开所有的技术细节,并且部分特定领域的专业细节较为琐碎,本文将在尽可能准确的前提下,做到行文的通俗易懂。

传统的面部识别是怎么做的?

机器能够认出人脸,对于普通用户来说已经不是新鲜事了。无论是拍照过程中的人脸对焦,还是照片相册中的人脸聚合,都说明机器已经能够从一张照片当中回答这两个问题:这张照片中有没有人脸?如果有,这张人脸是不是我见过的?
实际上,这和我们每个人认脸,原理是类似的。这个人眼睛大、眉毛粗,那个人鼻子小、嘴唇厚……本质上,我们都在找出这张人脸的一些独一无二的特质,尽管大多数时候这个过程都是在潜意识中完成的。机器同样是在一张人脸上,识别出大量的关键特征点,并通过一些算法,将这些特征量化为可以比较的数学结果。
在这个基础上,各个公司还会引入一些安全上的优化。例如,为了降低在刷脸登录时,使用一张照片进行欺骗,往往会要求你转动头部、眨眨眼睛,来证明手机摄像头正在捕捉到的图像,是一个活体。
不过,这些技术性的修补并不能从本质上解决安全性问题,其根本原因在于,传统的面部识别是基于二维平面图像的,所有的特征只不过是这张图像上的像素点而已。

(图 / PetaPixel)

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 也能继续认出你,并不断根据新的数据来校准识别模型。

(图 / 9to5Mac)

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 实际到手测试后,我们才能确定。
  • 方案 1:解锁时,日间使用 2D 照片 + 景深信息,夜间仅使用景深信息;
  • 方案 2:解锁时,无论日间或夜间,都仅使用景深信息。


上一期
用 App 记录自己的成长 | Workflow 定制 002
下一期
Yoink、Sublime Text、Darkroom | App 奏折 003
 
精选评论(4) 我的评论
  • jared93
    根据爆料,基本可以确定苹果在工程机阶段考虑过屏下指纹和背部指纹两个方案,背部方案以苹果的尿性被否几乎毫无悬念,屏下指纹很有可能是因为技术没达到苹果的要求被砍,而面孔解锁也不太可能是指纹方案被否后才提上日程(时间太紧了),所以苹果心中最完美的方案可能是屏下指纹+面部识别,两种方案目前来讲都有局限性(指纹始终没解决沾水识别的问题,去淘宝看看home键防手汗贴膜的销量就可以看出,而且有的人指纹就是用不了,过几天就要重新录入。面部识别根据现场演示来看识别速度还是稍慢,识别速度大概是一两秒,实际上整个识别流程比指纹慢了不止一两秒,同时两者都有各自的安全隐患和不适用的生活场景),将两者结合起来可以极大提升安全性和适用程度,所以,我更期待的是明年iphone x的升级版会采取什么样的方案。
    2017年09月15日
  • Clear
    一篇很好的科普文,说的很详细,也让我们这些有一定基础的人了解了Face ID的原理。我认为现在Face ID面对的最大障碍就是用户习惯和安全性。Face ID在短时间内可能还不会像Touch ID一样被很多人接受,因为使用成本增加导致能接触到的人变少了(顺便吐槽一下官方的定价,对于我这种加入了Apple年年焕新的人来说还是太贵了),安全性方面我认为既然Apple敢拿出来就说明Face ID够安全,只不过由于用户接受度的不同而导致认同度不高。
    至于最后一个问题,我认为苹果应该是在日间使用2D+景深,在夜间使用景深。因为白天光线充足,可以清晰的识别人脸,并且双重技术可以保证一定的安全性。
    2017年09月15日
  • Jiahao
    感谢子不语详细的解释,通篇看完有几个问题和想法还没有得到解决。
    我个人并不认为 FaceID 是不 Touch ID 更优秀的解决方案,已经有媒体指出之所以推出 FaceID 是由于没能找到很好的屏幕下指纹识别的方案。指纹是独一无二的,但面孔会更容易相撞,双胞胎、整容等等都可以让两个人极为相似,不知道 FaceID 能否识别这样的差别。
    其次,脸孔的暴露程度比指纹大不少。我想在 iPhone X 推出后,一定看到过拿 FaceID 开的玩笑。这些玩笑所处的环境、情景比指纹识别复杂、多变,在现实生活中,如何避免非本人意愿强制性的 FaceID 解锁是需要考虑斟酌的事。
    最后,从本文和发布会上都没提到是否同时检测虹膜(我认为不会),等到实机拆解,谜团会少很多。
    2017年09月14日
    • 少数派编辑部
      文章里其实主要是指体验速度、安全性这两方面。安全性这个争议比较大,因为按苹果公布的数据来看,理论上 Face ID 是比 Touch ID 安全的,但是,如果考虑社会工程因素,这个问题就很难有一个令每个人信服的答案了。
      总的来说,最终会回归到那个命题上:任何不可更改的东西,都不能作为终极的安全方案。这就意味着,任何形式的生物识别,其实都有先天性的安全缺陷。(@子不语
      2017年09月14日 1
  • 木斯
    作为一直在用三星S8的顺便谈两句:
    三星S8的虹膜识别其实并没有网络上评价的那么不堪,它也是有红外LED传感器的,所以实际情况是:不管是在暗光环境还是戴眼镜的情况下,都已经可以做到非常快的识别速度了。但哪怕是做到三星这样,我还是觉得这个方案很鸡肋。
    虹膜是“扫眼睛”的,容错率极低,这已经天生局限了它的便利性和使用场景。最简单的情况,我们平时 iPhone 放在口袋里或平放在在桌上,是可以让“手机解锁”这件事变成一件“无意识操作”——手指摸一下手机底下的home键,头都不用动,需要思考吗?但图形解锁和数字密码都办不到,虹膜就跟别说了。
    虽然这只是很细节的东西但三番五次以后就很不爽了,尤其现在大家都是懒人,没人喜欢在解锁时还被手机要求必须对准自己的双眼,偶尔还会弹出如“请将手机举高一点”、“请将手机拿近一点”这样的提示,有多蠢用过的人大概都能理解。
    至于苹果的 Face ID,“刷脸”比起“刷眼睛”的容错率已经要高出不少,加上有 PrimeSense 的技术支持——同样方案的产品是微软初代的 Kinect,所以理应不用怀疑这项技术的成熟性。
    当然,拿 Face ID 和比 Touch ID 比快还是不现实,我对 Face ID 的预期基本就是:只要是在我盯着它的时候(无视距离远近和角度,非亮屏状态下),它就可以完成自动解锁,那其实已经能满足大部分用户的使用体验了。不过假如明年苹果能搞定屏下指纹,我估计这个 Face ID 八成要变备胎方案。
    2017年09月14日 8