移动设备面部识别

自配备原深感摄像头并且以面容 IDFace ID 替代了触控 IDTouch ID 的 iPhone X 发布以来,移动端面部识别一下子进入了消费者的视野,近期发布的小米8也有些出人意料地配备了类似的技术。越来越多新手机开始拿面部识别当作卖点,那么这些面部识别在技术上有什么不同,这段时间翻了翻各大厂商的网站和一些资料,聊一聊我所了解的面部识别。

旧时代的面部识别

相信很多人都知道或者在 iPhone X 发布之后被科普过(比如少数派的这篇文章),早先的 Android 其实提供了面部识别作为解锁的选项。我接触智能手机比较晚,曾经似乎在一台已经过气多年的三星手机上看到过这个选项,但从来没试过。不过我倒是很清楚地记得自己曾经用的联想 F50A 笔记本电脑附带的软件光盘里附带了一个面部识别软件,可以在 Windows XP 下登录系统。
但必须注意的是,这些面部识别使用的都是基于前置摄像头捕捉的平面图像并以简单的算法进行判断,这些面部识别在软硬件上都存在致命的缺陷。
摄像头是面部识别的硬件基础,我的那台老联想的前置摄像头是130万像素的视频摄像头,其成像质量在现在看来简直不堪入目;至于手机,在厂商们开始重视自拍之前它们的前置摄像头成像质量也几乎都在这种「上个时代的水平」,它们所捕捉的信息根本不足以进行足够可靠的识别。
算法是面部识别的软件基础,有些时候硬件次一点没关系,可以用软件来补偿啊,比如苹果系产品……呃算了这个各有各的看法(笑)Google 就在 Pixel 2 上通过算法使用单镜头实现本来只有双镜头手机才能实现的景深效果,还把算法开了源。但旧时代的面部识别用的都是简单的算法,「人工智能」这方面,智能是不可能智能的,这辈子不可能人工智能的,复杂的算法写不出,就是拿 OpenCV 的算法改一改,才能识别得了面部这样子,活体识别什么的不存在的,照片和屏幕里的人也是人嘛你说是不是?

总之,旧时代的面部识别真的就只是「玩具」而已。

自拍和人工智能

也不记得是从什么时候开始的,各大手机厂商开始重视起手机的自拍功能,原来的只用来视频通话的前置摄像头变得和比后置摄像头还更重要,硬件性能突飞猛进,单是像素数就从百万出头一路飙升到千万级别,各种软硬件优化百花齐放。
另一方面,「人工智能」最近几年也发展得很迅速,虽然在我这个啥都不懂的人看来所谓「人工智能」好像就是一堆复杂上天然后用大量样本进行机器学习回归和修正出来的算法,不过除去那些拿「人工智能」作幌子的东西来看的话,实际效果……貌似可还行?人工智能的应用领域包括生物识别(至少维基百科是这么说的),作为具体应用的面部识别当然也要加入人工智能的行列啦。

在 iPhone X 发布后,很多厂商在新手机以及旧手机的系统更新中增加了面部识别解锁的功能,它们自然不能用旧时代的木头轮子,不然分分钟翻车打脸。于是基于高性能摄像头、高性能处理器和人工智能的新时代的面部识别出现了,一家叫旷视科技的公司和国内大厂们开始合作,通过这家公司提供的算法(Face++),新的面部识别可以在一定程度上克服活体识别等一系列障碍,在软件上提供全面超越旧时代的可靠性。

其实我对这里面的部分技术细节还是蛮感兴趣的,比如他们是怎么用照片建立人脸模型的?是像 VisualSFM 那样捕捉有细微角度差别的图像然后进行三维重建的吗?学摄影测量学的时候了解过这个软件,感觉蛮有趣的。

不过软件终究是软件,算法是有效的,但不总是有效的,那些美颜算法再人工智能也会有错误识别错边缘、特征点然后翻车的时候。面部识别也是,有些本质上的差距,除了改变本质之外是没有第二条路可走的,就像你不能把一台手机连上27寸触控显示器然后适配一下桌面和办公软件就能把它们变成工作站。

所以我们接下来着重看看硬件上的改进。

Windows Hello

如果用过较新款的 Surface 系列电脑或者一些带指纹识别的电脑,应该对 Windows Hello 不陌生。Windows Hello 是微软在 Windows 10 上新推出的一套登录验证解决方案,它支持的验证设备包括指纹读取器、虹膜识别器,以及近红外摄像头

微软在自家的 Surface 系列上全都配备了符合 Windows Hello 标准的摄像头,并且称其安全性是「企业级」的。微软的自信很大一部分原因来自其硬件上的保证——一颗高像素摄像头加一颗近红外摄像头。

使用高像素摄像头的原因就不用解释了,看得清楚脸才能晓得你是哪个迈,这里的重点是近红外摄像头,关于它的作用,微软专门写了一篇文档来解释,字多排版乱看不懂都不要紧,字不重要(而且翻译得也不咋的,不如看看英语原文),看图就好,然后我们来划一下重点:

近红外的优点
在带有面部识别功能的首版 Kinect 发布之后,微软意识到依赖环境光来获取一致的图像会带来较差的用户体验。人们在有着各种照明条件的不同环境中生活和工作。传统的颜色识别系统依赖于调高亮度、曝光或其他设置以获取可使用的图像——所有这些操作都将系统稳定性暴露在人为因素的影响中。

然后是那几幅对比图,可以看出近红外摄像头有如下两大优势:

  1. 不受环境光线影响,提供明暗均匀的图像
  2. 利用电磁波本身的特性反制图片、视频等伪造攻击

微软利用近红外摄像头,正好解决了通过普通摄像头进行面部识别的痛点。

看到红外摄像头,顺便提一下新任天堂 3DS(Newニンテンドー3DS / New Nintendo 3DS),这台过气游戏机在旧 3DS 的基础上增加了面部追踪功能,以此调整视差屏障从而避免过气功能裸眼 3D 的重影问题,为此增加了一颗红外发射器,黑暗中也可以愉快地追踪面部。

使用类似技术的手机,我暂时只找到了小米8(非透明探索版),其它一些网上有说是,但官网上不知为何压根儿没提……找到的话我会加上的(小声)

结构光

啊写到这里的时候突然不太想写了,因为我感觉网上的文章都说得很详细了,又有技术性,文笔也比我高到不知道哪里去……不过既然都写到这里了,那就简单谈谈我的认识吧。

前面有提到通过图片建立三维模型,我不知道那种技术有没有实际应用到普通的面部识别中去,但 iPhone X 和小米8透明探索版的人脸识别应该是使用了建模技术的,并且是人脸识别系统中的重点,不过方法不一样。

iPhone X 和小米8透明探索版使用结构光对人脸进行建模,核心的大致过程应该也差不多:

  1. 通过点阵投影器将一个红外点阵投影到头部,并用红外相机捕捉投影画面
  2. 通过算法,根据光的物理特性解算出距离信息,从而获得脸部表面模型

这里涉及到很多物理上电磁波的知识,类似的技术似乎在GPS和遥感中也有应用(感兴趣的话可以了解一下 GPS 的测距方法和 InSAR 干涉合成孔径雷达,虽然不叫结构光但这是我印象中基本原理比较类似的技术),但可惜的是我这三门都没学好(在此给老师们道歉并索要学费),大概就是电磁波在被不同距离远的物体反射后,其某些物理性质(比如相位)会不一样,经过精心设计(也就是编码)的点阵光电磁波被物体反射后就有了距离信息,被红外相机捕捉后就能解算出这些信息。

可能你已经注意到了,这完全变成了一个物理上的光学问题。相较图像处理,结构光面部识别更接近遥感测量,这也是这个技术与之前提到的所有面部识别技术最本质的区别。

目前使用这项技术的,应该只有 iPhone X 和小米8透明探索版了。

总结

单从技术的先进性和可靠性的角度来看,结构光应该是目前手机上最好的面部识别方案,但受制于技术的复杂性和高昂的成本,短期内应该不会在除苹果系之外的手机里普及,最多像小米那样在旗舰机里试试水。
基于普通相机和先进算法的面部识别因为其几乎为零的成本,仍然会是各大手机厂商的首选,但它不可能成为大多数消费者的首选,因为硬件的限制决定了其可靠性是有极限的。
至于红外人脸识别,现在越来越多的笔记本都为 Windows Hello 配置了红外摄像头,技术在不断成熟,成本不高而可靠性和用户体验都比传统面部识别有很大的提升,因此个人认为这个相对「折衷」的方案前景还是比较广的。

参考资料

0%