苹果解密:如何在手机上用深度神经网络进行人脸识别

苹果解密:如何在手机上用深度神经网络进行人脸识别
2017年11月17日 15:30 量子位

千平 编译整理

量子位 出品 | 公众号 QbitAI

苹果公司的计算机视觉机器学习团队,最近发表了一篇博客,介绍了苹果如何在手机上实现用深度神经网络进行人脸识别。

苹果首次公开发布人脸检测API,是通过Core Image框架的CIDetector识别类。这个API也用在“照片”等苹果的App中。CIDetector最早使用了基于Viola-Jones检测的算法。

随着深度学习的出现以及在计算机视觉问题中的应用,现在最好的人脸检测精度也产生了巨大的飞跃。我们必须彻底重新思考我们的方法,以便利用这一范式的转变。与传统的计算机视觉相比,深度学习的模型需要更多的内存、存储空间和计算资源。

与今天的手机一样,典型的高端手机并不是一个可行的深度学习视觉模型平台。大多数厂商都是通过基于云的API来解决深度学习的解决方案,即把图像发送到云端,然后再使用深度学习推理检测人脸。

基于云的服务通常使用性能强大的桌面级GPU,配备大容量的内存,以支持客户端(例如手机)利用大型深度学习系统的需求。但这种计算放在本地是不切实际的。

另一方面,苹果的iCloud照片库是一个基于云的照片和视频存储解决方案,但是出于隐私保护的目的,苹果无法再云端对这些照片进行处理。因此,为了给用户提供深度学习的计算机视觉解决方案,苹果需要在iPhone上解决问题。

这里有几个挑战。深度学习模型需要作为操作系统的一部分提供给用户,占用宝贵的NAND存储空间,还得加载到RAM内存之中,并且使用大量GPU或者CPU的计算时间。而且在设备端的计算需要共享资源,而且足够高效。

那么,

如何充分利用GPU和CPU?

如何为网络推断、图片加载和缓存等优化内存?

如何不妨碍iPhone性能同时运行网络?

从Viola-Jones到深度学习

2014年,当苹果开始研究用深度学习方法检测人脸时,深度卷积网络(DCN)刚刚开始崭露头角。其中最好的方法名叫“OverFeat”。

OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

论文在此:http://arxiv.org/abs/1312.6229

苹果基于OverFeat论文中的一些见解,构建了一个全卷积网络(如下图所示),其中包含多个任务目标:

一个二元分类器,检测图片中是否存在人脸

一个回归,用于定位图片中的人脸识别框

苹果尝试了几种方法来训练这个网络,训练完毕后,这个网络就能预测图片中是否存在人脸,并且提供相应的坐标和比例。

对于这样一个全卷积网络,可以建立一个标准的处理流程来执行人脸检测,包括一个多尺度的影像金字塔、人脸检测网络和一个后处理模块。如下图所示。

这一策略让苹果离在手机上运行深度卷积网络更进一步,但网络的复杂性和规模仍然是性能的关键瓶颈。克服这一挑战,不仅意味着将网络限制在一个简单的拓扑结构中,而且还要限制网络的层数、每层新到数量、卷积核的大小等。

但是一个能产生可接受精度的网络,通常都超过20层,还有一些网中网的模块。在手机上应用这种神经网络完全不可行,会严重影响性能和电池续航。实际上,这种网络根本无法加载大手机的内存之中。

怎么办?苹果决定采用一种“师生”训练方法。这个方法能训练出一个小而深的网络(学生),性能接近大型复杂网络(老师)。学生网络由一个简单的3×3卷积和池化层重叠构成,结构经过精心设计,可以最大限度的利用苹果的神经网络推理引擎。

最后,苹果得到一个能在手机上运行的人脸检测深度神经网络算法。接下来仍有大量工作要做,以便在数百万用户设备上部署。

其他优化

当然到这一步还不算完。

苹果在这篇博客中还介绍了如何优化图像pipeline、如何在手机上优化性能等问题。总而言之,最后苹果得到一个本地运行、低延迟、私密的深度学习推断,而且用户不会察觉到他们的手机每秒执行了近千亿次的神经网络计算。

关于这篇博客的全文,可以访问这个网址查看:

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

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部