科技杂谈浅谈人脸识别

iPhone X带来的人脸识别变革——Face ID

苹果9月的发布会发布的iPhone X是完全盖过了8的风头,而且凭借其延迟一个多月的上市妥妥的霸占了科技界一个多月的热点。看着朋友圈一众土豪们晒的X大家是不是也流口水呢?

那么本次横空出世的iPhone X最为惊艳的便是其不一样的全面屏了。有别于小米MIX的下巴、三星S8的曲面屏,iPhone X选择了砍掉上额下颚,只留刘海的设计。并且iPhone X大胆的选择了抛弃后置指纹,也就是说,砍掉了Home键和Touch ID。取而代之的,前者用逐渐成熟的3D Touch带来新的交互,后者用前置摄像头来做人脸识别,既Face ID。

不过Face ID在刚出世时也是饱受质疑的——真真是刚出世——苹果发布会上第一次演示Face ID时竟然失败了(不过这应该是失误重启的原因)。然而事实上Face ID其实是非常安全的,苹果官方宣布它比指纹安全了20倍。关于安全问题,Face ID大概有下面几个特点:

  • 闭眼无法解锁
  • 化妆、戴眼镜、假发、口罩…都可以解锁
  • 照片、仿真人皮面具无法解锁
  • 双胞胎高概率可以互相解锁

那么Face ID到底是如何工作的呢?让我们带着这个疑问,来了解一下人脸识别的原理吧。

人脸识别:原理

事实上在ipX之前,人脸识别就已应用在了三星、小米、华为等手机和电脑(Windows Hello)的解锁等功能上。不过之前的人脸解锁与Face ID又有不同。

Face++与面部识别算法

使用普通电子摄像头的大多数面部识别可以说是2.5D,利用算法计算2D人面图像,提取出面部特征、空间位置等。

那么,我们可以把这种人脸识别看作是由2维图片向3维的一次“升维”,可以比对两张图片中的人脸。然而这也意味着理论上只需要一张照片就可以破解面部解锁了。当然这是理论上,由于面部识别的复杂算法(例如活体检测云云),以及不同的解锁方式,要破解也不是那么容易的;此外一些手机上的面部解锁(例如三星)还配合有虹膜识别等技术(准确来说是虹膜解锁需要面部识别配合),所以总体来说安全性是非常高的。

目前小米、联想、支付宝等厂商都使用的是旷视公司(既Face++)的方案。

北京旷视科技有限公司成立于2011年,是一家“人核心数据”公司,致力于通过深度学习与感知融合技术,让人的“身份”与“行为”数据可以被各类物联网设备实时获取并融入行业,并为行业提供基于每个人的金融信用数据、地产出入管理数据、智慧城市社会综治数据服务。

来源:旷视官网

事实上人脸识别也并不是什么高大上的东西,我们普通的开发者都可以调用他们公司的API,来给自己的软件加入人脸识别功能。我们可以看到Java、Python、Objecttive-C以及C#的示例代码。Face++ 人工智能开放平台——文档中心

如果大家并没有打算以图像识别为方向发展的话,只需要学会使用其他人造好的轮子就够了;但是若想进入该领域就需要了解轮子怎么造:

  • 开源人脸识别引擎SeetaFace
  • 人脸识别技术大总结1——Face Detection & Alignment

粗鄙之言概括一下,面部识别大体来言是三步:
1.Detect,找到你的脸在哪里;
2.Align,在你的脸上定下特征点;
3.Compare/Search,从数据库中找是否有你的脸。

Windows Hello

Windows Hello 能使你在两秒内登录 Windows 设备,比使用密码快 3 倍。使用摄像头来识别面部或尝试使用指纹读取器 – 无论哪种方式,Windows Hello 都能即刻识别。你可以始终将 PIN 作为备用登录方式。

来源:微软官网

目前大多数Win10电脑都配有指纹识别器,相信大家都是使用指纹登录系统的吧?但是可能许多人并没有用过Windows Hello的面部识别——你可以在电脑设置的账户-登录选项找到Windows Hello,但可能不少人并不能在这里看到所谓的面部识别。这是因为Windows Hello的面部识别也是需要硬件支持的。

与我们上面介绍的通过纯软件层面算法识别人脸的技术不同,Windows Hello使用了一个额外的红外摄像头(Surface Book上是Intel家的RealSense 3D摄像头),这也就意味着面部识别无需RGB数码摄像头,也就无须担心光线带来的解锁问题。下面是M$官方的原理介绍(英文,但不是太难读懂):Windows Hello原理

从官方文档中我们可以知道,在面部识别中,系统并不存储你的面部图像,而是存储面部特征点。

我们也可以在自己的软件中接入Windows Hello:Windows Hello开发者文档

M$ Azure的Face API,与Face++大同小异(注意这并不是Windows Hello)

另外,Windows Hello分辨出双胞胎的概率是很高的。

Kinect和深度摄像机

诸位就算没玩过应该也听过Kinect的大名,10年微软为了与任天堂Wii竞争而推出的体感设备,配合游戏主机来玩体感游戏。既然是体感游戏,Kinect就需要记录玩家的动作、位置,这就交给了机器上的深度摄像机了。

深度摄像机,顾名思义,是一种可以测深度的摄像机,可以获取像素点的位置远近。当然深度摄像机又分很多种,我们上面说的RealSense就是一种,它不仅是个红外摄像机,而且可以通过红外激光获得深度信息(激光测距)。不过Windows Hello只要求了红外摄像,毕竟深度摄像机成本和体积摆在那(摊手)。

说到技术路线,现在深度摄像头主流有三个技术路线:单目结构光、TOF(飞行时间)和双目视觉:
– TOF原理是传感器发出经调制的近红外光,遇物体后反射,通过计算光线发射和反射时间差或相位差来换算被拍摄物体的距离。
– 结构光(Structured Light)技术则要相对复杂一些,该技术将编码的光栅或线光源等投射到被测物上,根据它们产生的畸变来解调出被测物的三维信息。
– 双目视觉则是和人眼一样用两个普通摄像头以视差的方式来计算被测物距离。

来源:https://baijiahao.baidu.com/s?id=1567651440369484&wfr=spider&for=pc

Kinect1上使用的摄像头叫PrimeSense(原理是结构光),但是在2代上则使用了TOF(原理是双目视觉差)。而苹果则收购了PrimeSense。于是四年之后,深度摄像头出现在了新一代iPhone上。

Face ID

讲了这么多,我们大概了解到面部识别由硬件和软件两部分构成。软件就是图像识别算法,硬件方面,有普通的数码摄像头,有红外摄像头,还有深度摄像头。

先说硬件。iPhone X上搭载了一个前置深度摄像头,这也是为什么刘海这部分无法做小、后置双摄需要突起。不过能把深度摄像头塞进手机里,已经是非常大的进步了。当深度摄像头与人脸识别结合,就不再需要算法通过阴影颜色等来判断人脸各部分的远近了。也就是说,摄像头可以返回像素点以及其位置,凭此机器就可以直接建立起3D模型了。那么,照片什么的自然也就无法破解了。

软件部分呢,Face ID使用三万个锚点来标记人脸。这个数据在Face++中是106, 在Windows Azure中是27……并不是苹果有多厉害,这是因为Face ID需要三万个点来建立起3D模型,而后两者则是使用锚点来标记人脸特征(如五官、脸部轮廓等)。至于建立起面部模型后如何比对,由于苹果没有给出原理,我们不得而知。

此外,由于iPhone X的深度摄像头包括红外摄像头,Face ID可以在低光下识别解锁。

Face ID科普:知乎:如何评价 iPhone X 的 Face ID?——Shady L的回答

从人脸识别谈图像识别

人脸识别属于图像识别的内容,且是其中非常重要的一块。而图像识别又属于人工智能机器学习领域,所以往开了说可以说很多。

粗略的看一看旷视的产品,我们就会发现其实美图、视频美化都用到了人脸/人体识别。早些年红极一时的美图软件Prisma更是结合了图像识别和云计算两个大热技术。现在各大科技公司都在这些新技术方面做好了布局,我们只需要静待成果的出现。

想要了解这部分内容的同学,可以看看这个:

知乎专栏:机器学习原来这么有趣!第三章:图像识别【鸟or飞机】?深度学习与卷积神经网络

当然咯,如果没有了解过机器学习,你应该从第一章开始看。


了解完上面这些,我们会发现其实Face ID也不是什么伟大创新,原理与Windows Hello大同小异。科技公司的创举从来不是技术创新——技术创新总是最先出现在实验室里,是科研人员努力的结晶。科技公司的伟大之处是把新技术带给普罗大众,让每个人都可以用。拿面部识别来说,这并非苹果或微软或旷视哪一家独家的发明,但是要让面部识别从军方专用、车站机场专用进入寻常百姓家、进入我们的裤兜,科技公司们又付出了多少努力呢。