MobileFaceNets Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices

MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices

我们展示了一类非常高效的CNN模型,MobileFaceNets,它使用不到100万个参数,专门为移动和嵌入式设备上的高精度实时人脸验证而定制。本文首先简单分析了常用的移动人脸验证网络的不足之处。我们专门设计的MobileFaceNet已经很好地克服了这一弱点。在相同的实验条件下,我们的MobileFaceNet获得了显著优于MobileNetV2的准确率以及超过2倍的实际加速比。经过ArcFace Loss在改进的MS-Celeb-1M上的训练,我们4.0MB大小的单个MobileFaceNet在LFW上达到99.55%的准确率,在MegaFace上达到92.59%的tar@FAR1e-6,这甚至可以与最先进的数百MB大小的CNN模型相媲美。在MobileFaceNet中,最快的一个在手机上的实际推理时间为18毫秒。在人脸验证方面,MobileFaceNets实现了比以前最先进的移动CNN显著提高的效率。

1 Introduction

人脸认证是一项重要的身份认证技术,应用于设备解锁、应用登录、移动支付等越来越多的移动和嵌入式应用中。一些搭载人脸验证技术的手机应用,比如智能手机解锁,需要离线运行。为了在有限的计算资源下实现用户友好,部署在移动设备上的人脸验证模型不仅要准确,而且要小巧、快速。然而,现代高精度人脸验证模型是建立在深度和大型卷积神经网络(CNNs)的基础上的,CNN在训练阶段由新的损失函数进行监督。需要高计算资源的大型CNN模型不适合许多移动和嵌入式应用。近年来已经提出了几种高效的神经网络结构,例如MobileNetV1[1]、ShuffleNet[2]和MobileNetV2[3],用于常见的视觉识别任务而不是人脸验证。使用这些未改变的常见CNN进行人脸验证是一种直接的方法,根据我们的实验,与最先进的结果相比,这只达到了非常低的精度(参见表2)。

在这里插入图片描述

在这里插入图片描述

图1.一个典型的人脸特征嵌入CNN和感受野(RF)。最后的7x7特征图用FMAP-END表示。RF1和RF2分别对应于FMAP-End中的角单元和中心单元。跟中心单元相比,角单元显得没那么重要。当使用global depthwise convolution(GDConv)作为全局算子时,对于一个固定的空间位置,由GDConv权重组成的权重向量的范数可以看作是空间重要性。我们发现,GDConv在训练后的不同空间位置上学习的重要性有很大的不同。

本文简单分析了普通移动网络在人脸验证方面的不足。我们专门设计的MobileFaceNets已经很好地克服了这一弱点,这是一种非常高效的CNN模型,专为移动和嵌入式设备上的高精度实时人脸验证量身定做。我们的MobileFaceNet使用不到100万个参数。在相同的实验条件下,我们的MobileFaceNet获得了显著优于MobileNetV2的准确率以及超过2倍的实际加速比。经过用ArcFace[5]损失函数从头开始对精细化MS-Celeb-1M[4]数据集的训练,我们4.0MB大小的单个MobileFaceNet模型在LFW[6]上达到了99.55%的人脸验证准确率(见表3),在MegaFace Challenge1[7]上达到了92.59%的tar@FAR10-6(见表4),甚至可以与最先进的数百MB大小的CNN模型相媲美。

请注意,许多现有的技术,如剪枝[37]、低位量化[29]和知识提炼[16]都能够额外提高MobileFaceNet的效率,但这些不在本文的讨论范围内。本文的主要贡献如下:(1)在人脸特征嵌入CNN的最后一层(非全局)卷积层之后,我们使用全局深度卷积层而不是全局平均池化层或全连接层来输出判别特征向量。从理论和实验两方面分析了这种选择的优越性。(2)我们精心设计了一类在移动设备和嵌入式设备上都具有极高效率的人脸特征嵌入CNNs,即MobileFaceNets。(3)我们在LFW,AgeDB([8])和MegaFace上的实验表明,我们的MobileFaceNet在人脸验证方面的效率比以前最先进的移动CNNs有了显著的提高。

2 Related Work

调整深层神经结构以在精确度和性能之间取得最佳平衡一直是过去几年的一个活跃研究领域[3]。对于常见的视觉识别任务,最近提出了许多有效的架构 [1,2,3,9]。一些高效的架构可以从头开始训练。例如,SqueezeNet ([9]) 使用bottleneck approach设计一个非常小的网络,并在 ImageNet [11,12] 上实现 AlexNet 级别的 [10] 准确性, 参数少 50 倍。MobileNetV1 [1] 使用深度可分离卷积构建轻量级深度神经网络,其中之一,即,MobileNet-160 (0.5x),在大约相同尺寸的情况下,在 ImageNet 上的精度比 SqueezeNet 高 4%。与 mobilenetv1 相比,ShuffleNet [2] 利用逐点组卷积和通道洗牌操作来降低计算成本并实现更高的效率。MobileNetV2[3]架构基于一个线性瓶颈的反向残差结构,提高了移动模型在多个任务和基准上的最新性能。移动 NASNet [13] 模型是一种带有强化学习的架构搜索结果,与 MobileNetV1 、 ShuffleNet 和 mobilenetv2 相比,它在移动设备上具有更复杂的结构和更多的实际推理时间。然而,当从头开始训练时,这些轻量级的基本架构对于人脸验证来说并不那么准确 (见表 2)。

专门为人脸验证设计的精确的轻量级架构很少被研究。[14]提出了一个light CNN框架,学习大规模人脸数据的紧凑嵌入,其中light CNN-29模型在1260万个参数的LFW上实现了99.33%的人脸验证精度。与MobileNetV1相比,Light cn -29对于移动和嵌入式平台来说并不是轻量级的。轻型CNN-4和轻型CNN-9比轻型CNN-29的精度低得多。

[15]提出了基于ShiftNet-C模型的ShiftFaceNet,该模型参数为78万个,仅在LFW上实现了96.0%的人脸验证精度。在[5]中,MobileNetV1的一个改进版本,即LMobileNetE,实现了与最先进的大型模型相当的人脸验证精度。但是LMobileNetE实际上是一个112MB大小的大模型,而不是一个轻量级模型。以上模型都是从零开始训练的。

另一种获得轻量级人脸验证模型的方法是通过知识蒸馏[16]压缩预先训练好的网络。在[17]中,通过从教师网络DeepID2+[33]中提取知识来训练一个紧凑的学生网络(记作MobileID),在LFW上实现了97.32%的准确率,模型大小为4.0MB。在[1]中,通过从预先训练好的FaceNet[18]模型中提取知识,训练了几个小型的MobileNetV1人脸验证模型,并且只报告了作者的私有测试数据集上的人脸验证准确性。无论小型学生模型在公共测试数据集上的准确性如何,我们的MobileFaceNets在LFW和MegaFace(见表4)上实现了与强大的教师模型FaceNet相当的准确性。

3 Approach

在本节中,我们将描述我们对极其有效的 CNN 模型的方法,以在移动设备上进行准确的实时人脸验证,这克服了常见的移动网络进行人脸验证的弱点。为了使我们的结果完全可重复,我们使用 ArcFace loss 在公共数据集上训练所有人脸验证模型,遵循 [5] 中的实验设置。

3. 1 The Weakness of Common Mobile Networks for Face Verification

在为常见的视觉识别任务提出的最新最先进的移动网络中,有一个全局平均池化层,例如 MobileNetV1 、 ShuffleNet 和 mobilenetv2。对于人脸的验证和识别,一些研究者([14],[5]等)观察到,具有全局平均池层的CNNs比没有全局平均池层的CNNs准确率低。然而,对于这一现象还没有给出理论分析。本文在接受域理论[19]中对这一现象进行了简单的分析。

一个典型的深度人脸验证pipeline包括预处理人脸图像,通过训练的深模型提取人脸特征,并根据特征的相似性或距离匹配两个人脸。按照[5,20,21,22]中的预处理方法,我们使用MTCNN[23]来检测图像中的人脸和5个面部关键点。然后根据五个landmarks,通过相似变换对人脸进行对齐。对齐的人脸图像大小为 112 × 112,RGB 图像中的每个像素通过减去 127.5 然后除以 128 进行归一化。最后,嵌入的人脸特征 CNN 将每个对齐的人脸映射到特征向量,如图 1 所示。在不丧失通用性的情况下,我们在下面的讨论中使用 MobileNetV2 作为嵌入 CNN 的面部特征。为了保持与 224 × 224 输入的原始网络相同的输出特征映射大小,我们在第一个卷积层中使用 stride = 1 的设置,而不是 stride = 2,后一种设置导致非常差的准确性。

因此,在全局平均池层之前,最后一个卷积层的输出特征图,为了方便起见,表示为 FMap-end,空间分辨率为 7 × 7。虽然FMap-end的角单元和中心单元的理论接受域大小相同,但它们位于输入图像的不同位置。FMap-end角落单元的接受域中心位于典型的人脸验证管道中,包括预处理人脸图像、利用训练好的深度模型提取人脸特征、根据特征的相似度或距离匹配两个人脸。按照[5,20,21,22]中的预处理方法,我们使用MTCNN[23]来检测图像中的人脸和5个面部关键点。然后根据五个关键点,通过相似变换对人脸进行对齐。对齐的人脸图像大小为 112 × 112,RGB 图像中的每个像素通过减去 127.5 然后除以 128 进行归一化。最后,嵌入的人脸特征 CNN 将每个对齐的人脸映射到特征向量,如图 1 所示。在不丧失通用性的情况下,我们在下面的讨论中使用 MobileNetV2 作为 面部特征嵌入的CNN 。为了保持与 224 × 224 输入的原始网络相同的输出特征映射大小,我们在第一个卷积层中使用 stride = 1 的设置,而不是 stride = 2,后一种设置导致非常差的准确性。

因此,在全局平均池层之前,最后一个卷积层的输出特征图,为了方便起见,表示为 FMap-end,空间分辨率为 7 × 7。虽然FMap-end的角单元和中心单元的理论接受域大小相同,但它们位于输入图像的不同位置。FMap-end的角单元的接受域中心在输入图像的角上,FM-end的中心单元的接受域中心在输入图像的中心上,如图1所示。根据[24],感受域中心的像素对输出的影响要大得多,感受域内的影响对输出的分布接近高斯分布。FMAP-End的角部单元的有效感受野[24]比FMAP-End的中心单元的有效感受野[24]小得多。因此,不同的FMap-end单元对于提取人脸特征向量具有不同的重要性。在MobileNetV2中,平面化的fmap-end维度太高,不适合直接用作人脸特征向量62720。使用全局平均池(记为GAPool)层的输出作为人脸特征向量是自然而然的选择,这在许多研究人员的实验[14,5]和我们的实验[14,5]中都取得了较差的验证精度(参见表2)。

全局平均池层对FMAP-End的所有单元同等重要,根据上述分析,这是不合理的。另一种流行的选择是用全连接替换全局平均池层,将FMAP-End投影到紧凑的人脸特征向量,这给整个模型增加了大量的参数。即使面部特征向量是低维128,FMAP-END之后的全连通层也会给MobileNetV2带来额外的800万个参数。我们不考虑这个选择,因为小模型是我们的追求之一。

3.2 Global Depthwise Convolution

为了处理具有不同重要性的FMAP-End的不同单元,我们用global depthwise convolution layer(记为GDConv)代替了全局平均池层(Global Average Pooling Layer)。GDConv层是深度卷积(c.f.。[25,1])核大小等于输入大小的层,pad=0,stride=1。全局深度卷积层的输出计算如下:
在这里插入图片描述

其中F是大小为 W × H × M W\times H\times M W×H×M 的输入特征图,K是depthwise convolution的核的个数,G是大小为 1 × 1 × M 1\times1\times M 1×1×M的输出,G中的第 m t h m_{th} mth个通道只有一个元素, G m , ( i , j ) G_{m},(i,j) Gm,(i,j)代表在空间位置F和K,m代表通道索引。全局深度卷积的计算代价为:

W ⋅ H ⋅ M W\cdot H\cdot M WHM (2)

当在MobileNetV2中的fmap-end之后用于人脸特征嵌入时,核大小为7×7×1280的全局深度卷积层输出1280维人脸特征向量,计算成本为62720 MAdds(即,通过乘加运算测量的次数,c.f。[3])和62720个参数。设MobileNetV2- gdconv表示具有全局深度卷积层的MobileNetV2。

当在CIASIA-Webface[26]上训练MobileNetV2和MobileNetV2-GDConv进行ArcFace Lost人脸验证时,后者在LFW和AgeDB上的准确度要高得多(参见表2)。全局深度卷积层是我们设计MobileFaceNet的一种有效结构。
在这里插入图片描述

3.3 MobileFaceNet Architectures


现在我们详细描述一下我们的MobileFaceNet架构。MobileNetV2[3]中提出的residual [38] bottlenecks被用作我们的主要构建块。为方便起见,我们使用与[3]中相同的概念。我们的主要MobileFaceNet架构的详细结构如表1所示,特别是我们架构中bottlenecks的扩展因子比MobileNetV2中的要小得多。我们使用PReLU[27]作为非线性度,这比使用RELU(参见表2)更适合人脸验证。此外,我们在网络开始时使用快速下采样策略在最后几个卷积层使用早期降维策略,并在线性全局深度卷积层之后使用线性1×1卷积层作为特征输出层。训练时使用批量归一化[28],部署前使用批量归一化折叠([29]第3.2节)。见表一

我们的主要MobileFaceNet网络的计算成本为2.21亿MAdd,使用了99万个参数。我们进一步定制了我们的主要架构,如下所示。为了降低计算量,我们将输入分辨率从112×112改为112×96或96×96。

为了减少参数的数量,我们从MobileFaceNet中去掉了线性GDConv层之后的线性1×1卷积层,得到的网络称为MobileFaceNet-M。从MobileFaceNet-M中,去掉线性GDConv层之前的1×1卷积层,产生最小的网络,称为MobileFaceNet-S。这些MobileFaceNet网络的有效性将在下一节的实验中得到演示。

4.1 Training settings and accuracy comparison on LFW and AgeDB

我们使用MobileNetV1、ShuffleNet和MobileNetV2(它们的第一卷积层使用STRIDE=1,因为设置STRIDE=2会导致精度非常低)作为基准模型。所有的MobileFaceNet模型和基线模型都是通过ArcFace Lost在CASIA-Webface数据集上从头开始训练的,以便进行公平的性能比较。我们将权重衰减参数设置为4e-5,除了最后一层的全局运算符(GDConv或GAPool)权重衰减参数为4e-4。我们使用动量为0.9的SGD对模型进行优化,批量为512。学习率从0.1开始,在36K、52K和58K迭代时除以10。训练以60K迭代完成。然后,在表2中比较了LFW和AgeDB-30的人脸验证精度。

在这里插入图片描述

如表2所示,与普通移动网络的基线模型相比,我们的MobileFaceNet以更快的推理速度获得了明显更高的准确性。我们的原始MobileFaceNet达到了最好的精度,而输入分辨率较低(96×96)的MobileFaceNet的推理速度最快。

为了追求极致的性能,MobileFaceNet、MobileFaceNet(112×96)和MobileFaceNet(96×96)也通过ArcFace Lost在MS-Celeb-1M数据库[5]的清理训练集上进行了训练,训练集包含来自85K受试者的3.8M图像。我们的初级MobileFaceNet在LFW和AgeDB-30上的准确率分别提高到99.55%和96.07%。表3中比较了三种训练模型在LFW上的准确率,并与之前发表的人脸验证模型进行了比较。

FaceNet在LFW和AgeDB-30上的准确率分别提高到99.55%和96.07%。表3中比较了三种训练模型在LFW上的准确率,并与之前发表的人脸验证模型进行了比较。

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值