对于iPhone的faceID,你有没有细思极恐?

道机书生


因为我职业是算法工程师,当我看到iPhone的Face ID,说真的,我被它的模型设计所感叹,确实是很有想象力,真的会“细思极恐”,怎么有这么优雅的工业设计,我就从我的角度来说说它吧。

Apple开始在iOS 10中使用深度学习进行人脸检测。随着Vision框架的发布,开发人员现在可以在其应用程序中使用该技术和许多其他计算机视觉算法。在开发框架时面临着严峻的挑战,以便可以保护用户的隐私并在设备上高效运行。

介绍

苹果首先通过CIDetector类在Core Image框架的公共API中发布了人脸检测。Apple应用程序(例如,照片)在内部也使用了此API。最早发布的CIDetector使用了一种基于Viola-Jones检测算法的方法。苹果基于传统计算机视觉的进步对CIDetector进行了后续改进。

随着深度学习的出现及其在计算机视觉问题中的应用,最新的人脸检测精度取得了巨大的飞跃。但与传统的计算机视觉相比,深度学习中的学习模型需要更多数量级的内存,更多磁盘存储以及更多计算资源。

苹果的iCloud照片库是用于照片和视频存储的基于云的解决方案。但是,由于Apple对用户隐私的坚定承诺,苹果无法将iCloud服务器用于计算机视觉计算。发送到iCloud照片库的每张照片和视频在发送到云存储之前均已在设备上加密,并且只能由向iCloud帐户注册的设备解密。因此,为了将基于深度学习的计算机视觉解决方案带给大家使用,所以必须直接解决在iPhone上运行深度学习算法的挑战。

深度学习模型需要作为操作系统的一部分提供,占用宝贵的NAND存储空间。它们还需要加载到RAM中,并在GPU和/或CPU上需要大量的计算时间。与基于云的服务(其资源只能专门用于视觉问题)不同,必须在与其他正在运行的应用程序共享这些系统资源的同时进行设备上计算。最后,计算必须足够有效,以在相当短的时间内处理大型照片库,而又不会显着降低功耗或热量增加。

本文的其余部分讨论了我们基于深度学习的人脸检测的算法方法,以及如何成功应对挑战以实现最新的准确性,有如下难点:

  • 如何充分利用我们的GPU和CPU(使用BNNS和Metal);
  • 网络推理以及图像加载和缓存的内存优化;
  • 如何以不干扰iPhone预期执行的许多其他同时任务的方式实施网络。

从Viola-Jones转向深度学习

苹果基于OverFeat论文的一些见解构建了初始体系结构,从而形成了具有以下各项的多任务目标的完全卷积网络(请参见图1):

  • 二进制分类,以预测输入中是否存在人脸;
  • 进行回归以预测最能在输入中定位人脸的边界框参数。

研究室尝试了几种训练这种网络的方法。例如,用于训练的简单过程是创建固定大小的图像图块的大型数据集,该图像图块的大小对应于网络的最小有效输入,以使每个图块从网络生成单个输出。训练数据集在理想情况下是平衡的,因此一半的图块包含一个脸(正类),另一半不包含一个脸(负类)。对于每个正片,研究人员会提供脸部的真实位置(x,y,w,h)。所以在训练网络时会优化前面描述的多任务目标。训练完成后,网络就可以预测图块是否包含人脸,如果这样,它还可以提供图块中人脸的坐标和比例。

由于网络是完全卷积的,因此它可以有效地处理任意大小的图像并生成2D输出图。地图上的每个点都对应于输入图像中的图块,并包含来自网络的有关该标题中存在或不存在人脸及其在输入图块中的位置/比例的预测。

有了这样的网络,就可以构建一个相当标准的处理管道来执行面部检测,该管道由多尺度图像金字塔,面部检测器网络和后处理模块组成。而且需要一个多尺度的金字塔来处理各种尺寸的面孔。然后将网络应用于金字塔的每个级别,并从每一层收集候选检测。最后使用处理模块将这些候选检测结果跨比例组合在一起,以生成与网络对图像中人脸的最终预测相对应的边界框列表。

优化设备性能

苹果实施了几种策略来最大程度地减少内存占用和GPU使用率。为了减少内存占用,测试过程中通过分析计算图来分配神经网络的中间层。这使可以将多个图层别名到同一缓冲区。在完全确定性的同时,此技术可减少内存占用空间,而不会影响性能或分配碎片,可在CPU或GPU上使用。

对于视觉,检测器运行5个网络(每个图像金字塔比例一个,如图2所示)。这5个网络共享相同的权重和参数,但其输入,输出和中间层具有不同的形状。为了进一步减少占用空间,在由这5个网络组成的联合图上运行了基于活动度的内存优化算法,从而大大减少了占用空间。同样,多个网络重复使用相同的权重和参数缓冲区,从而减少了内存需求。

为了在深层神经网络在后台运行时确保UI响应性和流畅性,苹果为网络的每一层划分了GPU工作项,直到每个单独的时间都小于一毫秒。这允许驱动程序及时将上下文切换到优先级较高的任务,例如UI动画,从而减少并有时消除帧丢失。

结合所有这些策略,可以确保Apple用户可以享受本地的,低延迟的私有深度学习推理,而无需知道他们的手机正在以每秒数百吉比特的速度运行神经网络。

总结

与当今的手机一样,典型的高端手机对于深度学习视觉模型而言并不是可行的平台。业界大多数人通过基于云的API提供深度学习解决方案来解决此问题。在基于云的解决方案中,图像被发送到服务器以使用深度学习推理来检测人脸进行分析。这些基于云的服务通常使用功能强大的台式机级GPU,具有大量可用内存。大型网络模型以及潜在的大型模型集合可以在服务器端运行,从而使客户端(可能是手机)可以利用大型的深度学习架构,而这些架构在本地无法运行。而iPhone却可以将这些技术无缝融合到这台手机上而且不影响用户体验,我觉得这已经很难得了。


大魔王Hacker


“细思极恐”是你“思”的方向偏了。对一件事物恐惧,尤其是对新生事物恐惧,往往是因为对它不了解。也就是俗话说的“恐惧源于未知”。所以,“细思”之后,你应该“不恐”,而不是“极恐”。

FaceID的技术很先进,但原理其实非常简单。用深度相机(简单来说,创建立体图像的相机)和红外相机(为了改善复杂光照条件下的表现)捕捉人脸的图像,然后用深度学习(Deep Learning)技术学习人脸的细节。学习之后,就可以用人脸来识别身份了。

罗马大学人工智能和机器人研究生Norman Di Palo就用Keras实现了类似FaceID的人脸识别功能。他认为,苹果使用的是类似siamese卷积神经网络(孪生卷积神经网络)的模型。siamese卷积神经网络由一对共享权重的“双生”神经网络构成,它可以将人脸映射到一个低维的潜空间(latent space),通过计算人脸表示间的对比损失(contrastive loss)来区分不同的人脸。而胡须、帽子、眼镜之类的东西,可以通过添加参考向量计算出同一人脸的不同表示。当然,由于手机硬件资源受限(虽然iPhone X有专门的机器学习芯片,但由于功耗的限制,算力仍然是有限的),模型的训练应该主要是在部署之前完成的,然后通过迁移学习(transfer learning)迁移到手机上的“离线”模型。这样可以实现FaceID的单样本学习(one shot learning)。实际上,苹果发布会的keynote提到过FaceID用的是单样本学习,Norman Di Palo的猜测正是基于这一蛛丝马迹做出的。


P.S. Norman Di Palo基于Keras和siamese卷积神经网络的FaceID实现代码地址:

github.com/normandipalo/faceID_beta


论智


本人从事苹果产品工作多年,认真来回答这个问题。

对于iPhone X的Face ID技术,(面容解锁)相比于前几代的Touch ID技术(指纹解锁)确实更加高科技和方便。

之前也在网络上新闻出现过两位长得极其相似的人都可以解开iPhone。

可能是因为其中一个人通过几次面容解锁失败后,iPhone X的处理器是a11仿生处理器,具有学习的功能,通过几次解锁失败之后,手机的处理器会稍微更改和认知面容的扫描,那么就可以另外一个人就可以解开这部iPhone。

但是这样的情况呢是很少见的,不是说普遍的现象。手机本人录入面容之后,无论是化妆,戴眼镜,戴帽子等等的情况下都可以轻松的解锁这部iPhone。

Face ID相比较指纹解锁来讲,会更安全一些。

比如说我们在用手机付款的时候,只需要扫一下面容就可以付款,不需要输入指纹或者输入密码。这样可以达到防偷窥,安全系数特别高。

科技的发展就是这样,它要一步步逐渐的完善,我们要接触新鲜的事物,并且接受新鲜的事物。容忍它的一些小缺点,相信以后的Face ID技术会越来越完善,没有想象的那么细思极恐。



希望我的回答,大家喜欢。


爱赫本的纪梵希


“细思恐极”是惊叹于这种技术的想象力。

当我第一次制作faceID模组内的一个滤光片时就被震惊了,感觉第一个想到应用光学原理到3D人脸识别的人是个“妥协”的奇才,在物理原理和现有材料/工艺的夹缝中找出了一条可行的小道。

网上有很多关于三维红外人脸识别原理的讲解(指iPhone X - Face ID的结构光方法,不是一般的二维图像人脸识别),即向人脸投射红外激光点阵,加上泛光照明+感应元件补光,再读取物体表面反射的光信息来确定人脸的形状,精度可达毫米级别。


可是有没有想过一个问题,为什么在晴朗的中午,环境光中的红外光也非常强烈,识别系统是如何排除环境光的红外干扰呢?


这涉及到模组中一个关键的滤光片——近红外窄带滤光片(Near Infrared Narrow Bandpass Filter, 缩写NIR-BP Filter)。


首先得感谢地球大气层中的水蒸气对太阳光的吸收,在红外波段留下了多个吸收峰,对应到吸收后的光谱就形成了一个个“坑”(见下图的红色区域)。在这些“坑”中,环境光(阳光的散射和反射)的光强很弱,这就成了BP filter发明的基础。如果将激光器和红外相机的波长设在该波长附近,就可以去除大部分环境光的噪声影响。

(图片来自Wikipedia)

问题是940nm、1100nm、1400nm、1900nm附近都有坑,跳哪个坑更合适呢?

单从识别信号上来说,后面三个坑都比940nm更好。但在窄带的光学设计中,在其他光学性能相同的情况下,中心波长越大意味着膜层总厚度更大,比如中心波长为1900nm的窄带要比940nm厚一倍以上,这在成本上无法接受。在工艺上也很难实现,因为手机薄型化的要求,当前主流的玻璃基底厚度常在0.2-0.3mm,940nm窄带滤光片的厚度一般在5um左右,膜层的应力已经大到限制单片玻璃的尺寸(涉及到产能)。所以,最终主流厂商都选择940nm作为激光器的工作波长和滤光片设计的中心波长。

滤光片的中心波长确定后,还要确定带宽(bandwidth)。主流的滤光片规格中,带宽常在40~50nm(与坑的宽度接近),这样能把带宽外的光给过滤掉(见下图)。

(图片来自Balzers官网的窄带产品Datasheet,中心波长不准)

评估对窄带波长范围外的阻隔效果用Optical Density表示,简称OD,单位dB。透过率越小,阻隔越好。透过率1%=2dB,0.01%=4dB。通常来说,阻隔区的平均OD要≥5dB,绝对OD≥ 3或4dB。

还有参数叫AOI shift,表示斜入射时窄带中心波长的偏移,通常要求30°斜入射时偏移小于12nm,确保手机未完全对准人脸时也能准确识别。

就这样,通过选择一个合适的吸收峰波长,设计并通过现有的镀膜工艺制作这种窄带滤光片,解决红外人脸识别中的抗干扰问题。


木欣的光之谷


没有感觉到细思极恐。

只感叹到科技发展太快,而手机则是最能让我们体验到科技的东西。

还有,国产厂商不要动不动和苹果比,真的不是一个级别的,苹果的每次创新基本上都推动了行业的进步,没有十足的把握,苹果不会冒然在新产品上搭载不成熟技术。

而国产手机,经常把一些不成熟技术用在新机上,搞一些噱头。


玩机小胖纸


Face ID睡觉的时候能解锁?用过吗?反倒是指纹解锁。。。。。。


侃侃车云


一看就是没用过苹果手机


哒哒怪大虾


没有用过faceid吧?没用过苹果吧,睡着的时候是不可以的,他能检测你是醒着的状态

才可以解锁

应该是判断有没有睁眼吧。


分享到:


相關文章: