Abstract
文章提出了一类非常高效的CNN模型MobileFaceNets,该模型使用少于100万个参数,专门针对移动和嵌入式设备上的高精度实时人脸验证而量身定制。作者首先分析了普遍的人脸识别的移动网络的缺点,然后MobileFaceNets都克服了这些缺点。在同样的实验环境下,MobileFaceNets 不仅具有显著的准确性,并且实际速度是 MobileNetV2 的两倍。在精简的MS-Celeb-1M上经过ArcFace损失培训之后,我们的4.0MB大小的单个MobileFaceNet在LFW上达到了99.55%的精度,在MegaFace上达到了92.59%的TAR @ FAR1e-6,这甚至可以与最新技术媲美 数百MB大小的大型CNN模型。最快的MobileFaceNets之一在手机上的实际推断时间为18毫秒。 对于人脸验证,MobileFaceNets与以前的最新移动CNN相比,效率大大提高。
Introduction
人脸识别是重要的技术用在手机端和嵌入设备上:解锁,应用登陆,手机支付等等。为了以有限的计算资源实现用户友好性,期望在移动设备上本地部署的面部验证模型不仅准确,而且体积小且快速。然而,现代高准确率的人脸识别模型是建立在深度并且大的CNN上,在训练阶段这些神经网络由新颖的损失函数进行监督。这些模型需要高的计算资源,对于很多嵌入应用是不合适的。
一些高效的神经网络架构:
MobileNetV1:Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., et al.: Mobilenets: Efficient convolutional neural networks for mobile vision applications. CoRR, abs/1704.04861 (2017)
ShuffleNet:Zhang, X., Zhou, X., Lin, M., Sun, J.: Shufflenet: An extremely efficient convolutional neural network for mobile devices. CoRR, abs/1707.01083 (2017)
MobileNetV2:Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., Chen, L.C.: MobileNetV2: Inverted Residuals and Linear Bottlenecks. CoRR, abs/1801.04381 (2018)
是用于视觉识别任务而不是人脸识别。虽然是有意义的把这些方法用在人脸识别上,但是没有取得好的实验结果。
在这篇文章中,首先对已经有点方法的缺点进行了分析,然后用这个模型克服了这些缺点。MobileFaceNet 使用不超过一百万的参数。在同样的实验条件下,MobileFaceNets 不仅具有显著的准确性,并且实际速度是 MobileNetV2 的两倍。经过ArcFace从零开始损失对精致的MS-Celeb-1M进行培训之后,我们的4.0MB大小的单个MobileFaceNet模型在LFW上实现了99.55%的面部验证精度,在MegaFace Challenge 1上达到了92.59%的TAR @ FAR10-6,甚至可以与之媲美 数百MB大小的最先进的大型CNN模型。
主要的贡献:
- 在嵌入CNN的人脸特征的最后一个(非全局)卷积层之后,我们使用全局深度卷积层而不是全局平均池化层或完全连接层来输出判别性特征向量。 理论和实验都对这种选择的优势进行了分析;
- 我们精心设计了一类面部特征嵌入CNN,即MobileFaceNets,在移动和嵌入式设备上具有极高的效率;
- 在 LFW,AgeDB,和 MegaFace上证明了效果好
相关工作
-
SqueezeNet:
Iandola, F. N., Han, S., Moskewicz, M.W., Ashraf, K., Dally, W.J., Keutzer, K.: Squeezenet: Alexnet-level accuracy with 50x fewer parameters and 0.5 mb model size. arXiv preprint, arXiv:1602.07360 (2016)
SqueezeNet使用瓶颈方法设计了一个非常小的网络,并在ImageNet 上实现了AlexNet级的精度,而参数却减少了50倍(即125万)
-
MobileNetV1:
MobileNetV1使用深度方向可分离的卷积来构建轻型深度神经网络,其中之一(即MobileNet-160(0.5x))在ImageNet上的精度比SqueezeNet高约4% -
ShuffleNet:
ShuffleNet利用逐点组卷积和信道随机操作来降低计算成本,并获得比MobileNetV1更高的效率 -
MobileNetV2:
基于具有线性瓶颈的反向残差结构,可提高移动模型在多个任务和基准上的最新性能 -
NASNet:
移动NASNet模型是具有增强学习功能的体系结构,具有比MobileNetV1,ShuffleNet和MobileNetV2更复杂的结构,并且在移动设备上的实际推断时间更长
但是,这些轻量级基本体系结构从零开始训练时对于面部验证而言不够准确。
准确的用于人脸识别的轻量级别的架构很少被研究。
-
Wu, X., He, R., Sun, Z., Tan, T.: A light cnn for deep face representation with noisy labels. arXiv preprint, arXiv:1511.02683 (2016) 提出了轻量的CNN框架在大型人脸数据上来学习紧凑的嵌入。Light CNN-29用1260万参数在LFW上实现了99.33%的准确率。
-
ShiftFaceNet:
Wu, B., Wan, A., Yue, X., Jin, P., Zhao, S., Golmant, N., et al.: Shift: A Zero FLOP, Zero Parameter Alternative to Spatial Convolutions. arXiv preprint, arXiv: 1711.08141 (2017)
有78万个参数,在LFW上只有96.0%的准确率。
获取轻量级人脸验证模型的另一种方法是通过知识蒸馏来压缩预训练的网络。
Approach
The Weakness of Common Mobile Networks of Face Verification
在最近提出的用于常见视觉识别任务的最新移动网络中,存在一个全局平均池层,例如MobileNetV1,ShuffleNet和MobileNetV2。用于面部验证和识别中,有这个全局平均池化层的准确率比没有这个全局平均池化层的准确率低。但是没有理论分析,在这里,这篇文章根据感受野进行简单分析。
一个经典的深度人脸识别包括:人脸预处理,通过训练好的深度模型提取人脸特征,通过特征的相似度或者距离匹配两张人脸。
本文使用的是 MTCNN 来检测图像中的面部和五个面部标志。然后根据五个面部标志通过相似度转换来对齐人脸。
对齐的人脸大小:112 x 112 x 3,(经过标准化,减去127.5,除
以128)
最后,嵌入CNN的人脸特征将每个对齐的人脸映射到特征向量,如图1所示。
图 1
last 7 x 7 feature map 里面,不同位置的点的重要性不一样,中心点绝对会比边缘重要。
在MobileNetV2里面,使用global average pooling 会没有区分的看待每一个点,所以准确率不高。并且这时候的维度是 62720,很高,加个全连接层输出128维,这时候的参数量是很大的,62720 * 128 + 128 参数量。
Global Depthwise Convolution
为了用不同的重要性对待 FMap-end 里面每个单元,使用 global depthwise convolution layer (GDConv) 来代替 global average pooling layer。GDConv层是深度卷积层,其内核大小等于输入大小,pad = 0,stride = 1。
GDConv的输出计算方式是:
其中,是输入特征图的,是 GDConv 的核,,中第个通道只有一个元素,标记着的空间位置,表示的是通道索引。
GDConv 的计算复杂度是
MobileFaceNet Architectures
在 MobileNetV2 中被提出的residual bottlenecks 被使用作为主要的组成部分。MobileFaceNet 架构的细节如表 1 所示。
表 1
特别是,我们架构中瓶颈的扩展因子比MobileNetV2中的要小得多。使用 PReLU 作为非线性,这比 ReLU 在人脸识别上更有用。
除此之外,一开始使用下采样策略,一个早的降维策略在最后几个卷积层。一个线性的 1 x 1 的卷积成跟在一个个线性 GDConv之后作为特征输出层。
这个模型有些地方没看懂,但是他说是基于 MobileNetV2,估计把 MobileNetV2 看完了,应该就懂了吧
参考资料:MobileFaceNets: Efficient CNNs for Accurate RealTime Face Verification on Mobile Devices
网友评论