为了让你分清人脸识别与人脸检测,苹果要亲自给你科普

2017 年 11 月 17 日 AI前线 总有好内容
审校 | Tina&Natalie
编译 | Debra
编辑 | Vincent
AI 前线导语:苹果在博客上对 iPhone 上应用的人脸检测深度神经网络原理进行了解读。很多人会把人脸识别和人脸检测这两个词搞混,实际上,人脸识别和人脸检测是两个不同的概念,本文将就人脸识别与人脸检测在技术上的区别进行对比,希望能够帮助读者更好地理解这两种技术。

更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)

人脸识别是对已知人脸进行分类的过程,大致可以分为人脸检测、人脸预处理、搜索和学习人脸,以及人脸识别这四个步骤。而人脸检测是在图像中定位人脸区域的过程。

苹果在用户端设备上应用深度学习技术,始于 iOS 10。而在苹果今年发布了 Vision 图像识别框架后,开发者现在可以把深度学习和其他计算机视觉算法应用到 App 上。苹果表示,如何在保护用户隐私的前提下,在设备上高效运行深度学习神经网络还面临着不少挑战。

苹果的人脸检测算法具体是怎样的?苹果在设备上应用这些技术面临的挑战有哪些?

人脸检测算法

苹果首次发布人脸检测,是借助 CIDetector 磁心映像框架中的公共 API。苹果内部的应用,如 Photos 也使用这个 API。最早发布的 CIDetector 版本是基于 Viola-Jones 检测算法, 改进后比传统的计算机视觉更先进。

深度学习使得目前的面部检测精度大大提高。与传统的计算机视觉相比,深度学习模型需要更大量级的内存、硬盘和运算资源。

如今的高端手机并不是深度学习视觉模型的可行平台,业界大多是通过云端 API 提供深度学习解决方案,来解决这个问题。 在云端解决方案中,图像被传到服务器上,使用深度学习推理进行分析以检测人脸。云端服务通常使用功能强大的桌面级 GPU,并提供大量内存。大型的网络模型以及潜在的大型模型组合可以在服务器端运行,从而让客户端(可能是手机)可以使用大型深度学习体系结构,而这在本地运行是不切实际的。

苹果面临的挑战不少。 深度学习模型作为操作系统的一部分,占用宝贵的 NAND 存储空间。 它们还需要加载到 RAM 中,并且在 GPU 和 / 或 CPU 上需要大量的计算时间。 与基于云计算的服务不同,云计算的资源只专注于视觉问题,而手机终端的计算必须与其他正在运行的应用程序共享这些系统资源。 最后,计算必须足够高效,在相当短的时间内处理大容量的照片库,而且没有耗电量和热量不能有显著的增加。

苹果面临的挑战包括深度学习人脸检测算法,提高识别精确度、使用 BNNS 和 Metal 平衡 GPU 和 CPU 空间、优化神经网络推理存储,以及图像加载和超高速缓存,让神经网络和苹果手机上运行的其他程序互不干扰。

从 Viola-Jones 到深度学习

2014 年,一种名为“OverFeat”的方法证明了深度卷积网络(DCN)在图像扫描方面效果显著。苹果最初的架构就是基于 OverFeat,建造了一个多任务组合的卷积网络(图 1):用二进制分类来检测图像中是否有面部存在,以及通过预测边界框参数的回归,来进行面部定位。

经过创建一个固定大小的图像块大数据集,苹果对神经网络进行训练。该图像块对应神经网络的最小有效输入,使得每个块产生来自网络的单个输出。 训练数据集是均衡的,其中一半包含面部(正类),另一半不包含面部(负类),并为每个正类图像提供真实位置(x,y,w,h)。随后,对网络进行训练,以优化多任务目标。一旦训练完毕,网络就能够预测一个图块是否包含一张人脸,如果是,神经网络还能提供该图块中人脸的坐标和比例。

(图 1)

由于网络是完全卷积的,因此可以高效地处理任意大小的图像并生成 2D 输出图。 图上的每个点对应于输入图像中的图块,并且包含神经网络对于该图块中是否存在人脸的预测,以及其位置或比例(参见图 1 中的 DCN 的输入和输出)。

有了神经网络,可以建立一个标准的人脸检测处理流水线,这个流水线由一个多尺度的图像金字塔、人脸检测器网络和一个后处理模块组成。 多尺度的金字塔用来处理各种尺寸的面孔,将网络应用到金字塔的每个层,并从每一层收集预测信息。 (见图 2)。随后,后处理模块将这些检测结果进行组合, 产生神经网络对图像中的面部检测最终结果对应的边界框列表。

(图 2:面部监测工作流程)

这种策略使苹果能用设备内置的深度卷积网络更彻底地扫描图像,但神经网络的复杂性和大小仍然是制约性能的瓶颈。解决这个问题不仅需要将网络限制于一个拓扑,还限制了神经网络的分层,每层的通道数,以及卷积过滤器的内核大小。这些限制导致一个问题:准确度高的神经网络是非常简单的,网络成熟最多不超过 20 层,由几个 network-in-network 模块组成。 在前面描述的图像扫描框架中使用这样的网络是完全不可行的。  事实上,我们甚至无法将网络加载到内存中。 当时的挑战是如何训练一个简单而紧凑的网络,以模拟准确但复杂的网络行为。

为此,苹果使用了一种叫做“教师 - 学生”的训练,“学生网络”(Student Network)由简单的  3x3卷积重复结构和分层集合组成,以更适用于神经网络推理引擎。(图 1)最后,苹果得出了可以在终端运行的深度学习人脸检测算法,经过训练,得到了在应用中足够精准的神经网络模型。

优化图像通道

随后,苹果意识到大运算还不足以建造一个简单易行的框架,还需要优化图像通道,让用户可以处理任何形式的图像。

为了解决能耗和内存占用的问题,苹果还用通过采样解码(partial subsampled decoding)和自动平铺(automatic tiling)技术,来进行大型图像计算机视觉任务。另一个挑战是色彩匹配。Vision 框架可以处理色彩搭配,从而降低了计算机视觉应用到 App 的门槛,并通过高效处理和重复使用中间图像使之得到优化。从中心接口的角度来看,苹果可以将算法向更好地重复使用和共享中间图像的方向引导。

优化设备性能

如果人脸检测 API 无法在实时应用程序和后台系统进程中使用,那么易用性的快感将很快消失。

用户希望在对照片库和拍摄的照片进行人脸识别和分析时,能够获得流畅的体验,并且不希望这个过程耗电太多,或拖慢系统运行。苹果的移动设备是多任务设备,因此,背景计算机视觉处理不能影响手机其余程勋的运行。

我们实施了几种策略来最大限度地减少内存占用和 GPU 使用。 为了减少内存占用,苹果通过分析计算图来分配神经网络的中间层,将多个图层分到同一个缓冲区,以减少内存占用,而不会影响性能和碎片分配,并且在 CPU 和 GPU 上均可以使用。

Vision 检测器运行 5 个神经网络。 这 5 个神经网络共享相同的权重和参数,但其输入、输出和中间层具有不同的形态。 为了进一步减少占用空间,苹果在由这 5 个网络组成的联合图上运行活性内存优化算法,大大减少了占用空间。 此外,多个网络重复使用相同的权重和参数缓冲区,也减少内存需求。

为了获得更好的性能,苹果利用了网络的完全卷积性:动态调整尺度以匹配输入图像的分辨率。与将图像拟合在方形网络视网膜(由无效带填充)相比,将网络匹配图像的尺寸大大减少了总操作量。由于操作的拓扑结构并没有因分配器其余部分的重构和高性能而改变,所以动态重构不会引起性能开销。

为了确保深层神经网络在后台运行时 UI 的反应速度和流畅性,苹果将神经网络每一层 GPU 的任务项拆分,直到每个任务项的时间少于一毫秒。这使得用户能够及时切换到最优先级的任务,如 UI 动画,从而减少并消除丢帧的情况发生。这样,在不降低体验的前提下,用户可以享受更加本地化、低延迟、私密性的深度学习推理服务。

AI 能识别被遮住的人脸吗?

其实,神经网络学习在人脸识别方面的进展已经超出了“面部”识别。不久前,Amarjot Singh 在一篇论文中提出一套系统,称在人脸被遮盖的情况下,研究人员通过训练神经网络,可以识别人类。对此,萨里大学研究家 Patrik Huber 这不可信,他称,这套系统不是通过面部照片或图像来识别被遮住的面部,而是通过一些“面部关键点“,如眼间距、鼻子、嘴唇等作为识别的依据。

尽管这篇论文存在缺陷,已经有不少团队开始研究这个课题,并且取得了进展。例如 Facebook 已经可以训练出能够通过人类特征,如毛发、体型和动作来识别人的神经网络。其他识别人类的方法也不断出现,例如 AI 可以通过步态分析精确识别人类,甚至通过低分辨率的闭路监控就可以做到。

有隐私倡导者称,尽管面部识别系统存在缺陷,但却受到执法部门的欢迎。如今年在伦敦举行的诺丁山狂欢节上,警方就利用安装在大道上的实时面部识别系统相机,扫描参加狂欢的人群。根据人权组织 Liberty 提供的结果,这个系统仅成功识别出一名通缉犯(已经过期),误判断了 35 人。但警方仍认为这是一次成功的尝试。

当然,这也引起了人们关于公众隐私的讨论,AI 技术的应用可能会侵犯公众隐私,造成潜在的安全威胁。

“任何事情都具有两面性,就像一辆车,关键看以什么样的方式使用”, Amarjot Singh 称。

参考资料

https://machinelearning.apple.com/2017/11/16/face-detection.html

https://www.theverge.com/2017/9/6/16254476/facial-recognition-masks-diguises-ai


登录查看更多
5

相关内容

人脸检测(Face Detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。
最新《知识蒸馏》2020综述论文,20页pdf,悉尼大学
专知会员服务
156+阅读 · 2020年6月14日
【浙江大学】人脸反欺诈活体检测综述
专知会员服务
31+阅读 · 2020年4月15日
【CVPR2020-谷歌】多目标(车辆)跟踪与检测框架 RetinaTrack
专知会员服务
44+阅读 · 2020年4月10日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
24+阅读 · 2019年11月2日
旷视研究院新出8000点人脸关键点,堪比电影级表情捕捉
人工智能前沿讲习班
19+阅读 · 2019年5月4日
人脸检测库:libfacedetection
Python程序员
15+阅读 · 2019年3月22日
在浏览器中使用tensorflow.js进行人脸识别的JavaScript API
人工智能头条
6+阅读 · 2018年7月2日
抖音的 2017 和它背后的黑科技
PingWest品玩
8+阅读 · 2018年1月4日
从Face ID说起,浅析人脸识别之刷脸技术
互联网架构师
6+阅读 · 2017年9月25日
咦,用浏览器做人脸检测,竟然这么简单?
机械鸡
4+阅读 · 2017年9月11日
Arxiv
5+阅读 · 2019年2月28日
Simplifying Graph Convolutional Networks
Arxiv
12+阅读 · 2019年2月19日
Arxiv
8+阅读 · 2018年5月15日
VIP会员
相关资讯
旷视研究院新出8000点人脸关键点,堪比电影级表情捕捉
人工智能前沿讲习班
19+阅读 · 2019年5月4日
人脸检测库:libfacedetection
Python程序员
15+阅读 · 2019年3月22日
在浏览器中使用tensorflow.js进行人脸识别的JavaScript API
人工智能头条
6+阅读 · 2018年7月2日
抖音的 2017 和它背后的黑科技
PingWest品玩
8+阅读 · 2018年1月4日
从Face ID说起,浅析人脸识别之刷脸技术
互联网架构师
6+阅读 · 2017年9月25日
咦,用浏览器做人脸检测,竟然这么简单?
机械鸡
4+阅读 · 2017年9月11日
Top
微信扫码咨询专知VIP会员