MobileFaceNets论文

Abstract

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

Keywords: Mobile network, face verification, face recognition, convolutional neural network, deep learning.

介绍

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

在这里插入图片描述
图1. 嵌入CNN和感受野(RF)的典型面部特征。最后一个7x7特征图表示为FMap-end。RF1和RF2分别对应于FMap端的角单元和中心单元。角单元的重要性应低于中心单元。当使用全局深度卷积(GDConv)作为全局算子时,对于固定的空间位置,由所有信道中的GDConv权重组成的权重向量的范数可以被视为空间重要性。我们发现GDConv在训练后在不同的空间位置学习非常不同的重要性。

在本文中,我们简单分析了普通移动网络在人脸验证方面的弱点。我们专门设计的MobileFaceNets已经很好地克服了这一弱点,这是一种非常高效的CNN模型,专为移动和嵌入式设备上的高精度实时人脸验证量身定制。我们的MobileFaceNets使用不到100万个参数。在相同的条件下在实验条件下,我们的MobileFaceNets实现了显著优越的准确性,并且比MobileNetV2的实际速度提高了2倍以上。经过ArcFace loss[5]从头开始的优化MS-Celeb-1M[4]训练后,我们的4.0MB大小的单一MobileFaceNet模型在LFW[6]实现了99.55%的人脸验证准确率(见表3),在MegaFace Challenge 1[7](见表4)上实现 92.59%TAR@FAR10-6,它甚至可以与数百MB大小的最先进的大型CNN模型媲美。请注意,许多现有技术,如剪枝[37]、低位量化[29]和知识蒸馏[16],能够额外提高MobileFaceNets的效率,但这些都不在本文的范围之内。

本文的主要贡献总结如下:(1) 在人脸特征嵌入CNN的最后一个(非全局)卷积层之后,我们使用全局深度卷积层而不是全局平均池化层或全连接层来输出鉴别特征向量。从理论和实验两方面分析了这种选择的优越性。(2) 我们仔细设计了一类人脸特征嵌入CNN,即MobileFaceNets,在移动和嵌入式设备上具有极高的效率。(3) 我们在LFW、AgeDB([8])和MegaFace上的实验表明,我们的MobileFaceNets在人脸验证方面比以前最先进的移动CNN实现了显著提高的效率。

相关工作

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

专门为人脸验证设计的精确轻量级架构很少被研究。[14] 提出了一个轻型CNN框架来学习大规模人脸数据的紧凑嵌入,其中具有1260万个参数的轻型CNN-29模型在LFW上实现了99.33%的人脸验证精度。与MobileNetV1相比,Light CNN-29对于移动和嵌入式平台来说并不轻量级。轻CNN-4和轻CNN-9比轻CNN-29精确得多。在[5]中,MobileNetV1的一个改进版本,即LMobileNetE,实现了与最先进的大模型相当的人脸验证精度。但LMobileNetE实际上是一个112MB的大模型,而不是一个轻量级模型。以上所有模型都是从头开始训练的。

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

方法

在本节中,我们将描述实现高效CNN模型的方法,用于移动设备上精确实时人脸验证的模型,克服了普通移动网络用于人脸验证的弱点。为了使我们的结果完全可重复,我们使用ArcFace损失在公共数据集上训练所有人脸验证模型,遵循[5]中的实验设置。

常用移动网络在人脸验证中的弱点

在最新的最先进的移动网络中,有一个全局平均池化层,用于常见的视觉识别任务,例如MobileNetV1、ShuffleNet和MobileNetV2。对于人脸验证和识别,一些研究人员([14]、[5]等)观察到,具有全局平均池化层的CNN比没有全局平均池化层的CNN更不准确。然而,尚未对这一现象进行理论分析。在这里,我们在感受野理论中对这一现象进行了简单的分析[19]。

典型的深度人脸验证pipeline包括预处理人脸图像、通过训练的深度模型提取人脸特征以及通过特征的相似性或距离匹配两个人脸。按照[5,20,21,22]中的预处理方法,我们使用MTCNN[23]检测图像中的人脸和五个人脸标志。然后根据五个地标通过相似性变换对人脸进行对齐。对齐的面部图像的大小为112×112,RGB图像中的每个像素通过减去127.5然后除以128进行归一化。最后,人脸特征嵌入CNN将每个对齐的人脸映射到特征向量,如图1所示。在不失一般性的情况下,我们在下面的讨论中使用MobileNetV2作为嵌入CNN的面部特征。为了保持与具有224×224输入的原始网络相同的输出特征图大小,我们在第一卷积层中使用步幅=1的设置,而不是步幅=2,后者的设置导致非常低的精度。因此,在全局平均池化层之前,最后一个卷积层的输出特征图(为方便起见称为FMap-end)具有7×7的空间分辨率。虽然FMap-end的角单元和中心单元的理论感受野大小相同,但它们位于输入图像的不同位置。如图1所示,FMap端的角单元的接收场中心位于输入图像的角,FM端的中心单元的接收区中心位于输入图片的中心。根据[24],感受野中心的像素对输出的影响要大得多,感受野内对输出影响的分布几乎是高斯分布。FMap-end的角单位的有效感受野[24]尺寸远小于FMap-end中央单位的有效接受野。当输入图像是对齐的人脸时,FMap-end的角单元携带的人脸信息比中央单元少。因此,FMap-end的不同单元对于提取人脸特征向量具有不同的重要性。

在MobileNetV2中,打平的FMap端不适合直接用作面部特征向量,因为它的维数太高62720。使用全局平均池化(表示为GAPool)层的输出作为人脸特征向量是一个自然选择,这在许多研究人员的实验[14,5]和我们的实验中实现了较差的验证精度(见表2)。全局平均池层将FMap-end的所有单元视作同等重要,根据上述分析,这是不合理的。另一个流行的选择是将全局平均池化层替换为一个完全连接的层,以将FMap-end投影到一个紧凑的面部特征向量,这将为整个模型添加大量参数。即使面部特征向量为低维128,FMap-end后的完全连接层也会为MobileNetV2带来额外的800万个参数。我们不考虑这个选择,因为小模型尺寸是我们的追求之一。

Global Depthwise Convolution

为了以不同的重要性处理FMap-end的不同单元,我们将全局平均池层替换为全局深度卷积层(表示为GDConv)。GDConv层是深度卷积层,其内核大小等于输入大小,pad=0,step=1。全局深度卷积层的输出计算为:
G m = ∑ i , j K i , j , m ⋅ F i , j , m (1) G_{m} = \sum_{i,j} K_{i,j,m} \cdot F_{i,j,m}\tag{1} Gm=i,jKi,j,mFi,j,m(1)

其中, F F F是输入特征图, W × H × M W \times H \times M W×H×M K K K是深度卷积核, W × H × M W \times H \times M W×H×M G G G是输出, 1 × M × M 1 \times M \times M 1×M×M G G G中的 m t h m_{th} mth通道仅有一个元素 G m G_{m} Gm ( i , j ) (i, j) (i,j)表示 F F F K K K中的空间位置, m m m表示通道序号。

全局深度卷积的计算成本为:

W × H × M (2) W \times H \times M \tag{2} W×H×M(2)

当在MobileNetV2中的FMap-end后用于人脸特征嵌入时,内核大小为7×7×1280的全局深度卷积层输出1280维人脸特征向量,计算成本为62720 MAdds(即,通过乘法相加计算的操作次数)和62720个参数。用MobileNetV2-GDConv表示具有全局深度卷积层的MobileNetV2。当MobileNetV2和MobileNetV2-GDConv都在CIASIA-Webface[26]上接受训练,通过ArcFace损失进行人脸验证时,后者在LFW和AgeDB上获得了明显更好的准确性(见表2)。全局深度卷积层是我们设计MobileFaceNets的有效结构。

表1. 用于功能嵌入的MobileFaceNet架构。我们使用的标记几乎和MobileNetV2相同[3]。每行描述一系列运算符,重复n次。相同序列中的所有层具有相同数量的输出通道c。每个序列的第一层有一个步幅s,所有其他层都使用步幅1。bottleneck中的所有空间卷积都使用 3 × 3 3 \times 3 3×3。扩展因子t始终应用于输入大小。GDConv7x7表示 7 × 7 7 \times 7 7×7的GDConv核。

在这里插入图片描述

MobileFaceNet结构

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

我们的主要MobileFaceNet网络的计算成本为2.21亿MAdds和使用99万个参数。我们进一步定制我们的主要架构,如下所示。为了降低计算成本,我们将输入分辨率从112×112更改为112×96或96×96。为了减少参数数量,我们从MobileFaceNet中删除线性GDConv层之后的线性1×1卷积层,其网络称为MobileFaceNet-M。从MobileFaceNet-M中,除去线性GDConv层之前的1 × 1卷积层,生成最小的网络MobileFaceNet-S。这些MobileFaceNet网络的有效性将在下一节的实验中得到证明。

实验

在本节中,我们将首先描述MobileFaceNet模型和基线模型的训练设置。然后,我们将比较我们训练的人脸验证模型与之前发布的一些人脸验证模型的性能,包括一些最先进的大模型。

Training settings and accuracy comparison on LFW and AgeDB

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

表2. 在CASIA-Webface上训练的移动模型之间的性能比较。在最后一列中,我们报告了具有4个线程的高通Snapdragon 820 CPU(使用NCNN[30]推理框架)上的实际推理时间,单位为毫秒(ms)。

在这里插入图片描述
如表2所示,与普通移动网络的基线模型相比,我们的MobileFaceNets以更快的推理速度实现了更好的准确性。我们的主要MobileFaceNet实现了最佳的准确性,而输入分辨率较低的MobileFace Net(96×96)具有最快的推理速度。请注意,我们的MobileFaceNets比那些具有更大扩展因子,如MobileFaceNet(扩展因子×2)和MobileNetV2-GDConv的更高效。
为了追求终极性能,MobileFaceNet、MobileFace-Net(112×96)和MobileFace-Net(96×96)也在清理过训练设置的MS-Celeb-1M数据库训练集[5]上进行了ArcFace丢失训练,其中有来自85K受试者的3.8M张图像。我们的主要MobileFaceNet在LFW和AgeDB-30上的准确率分别提高到99.55%和96.07%。表3将三个训练模型在LFW上的准确度与先前发布的人脸验证模型进行了比较。

表3. 与之前发布的LFW人脸验证模型的性能比较

在这里插入图片描述

Evaluation on MegaFace Challenge1

表4. Megafce Challenge 1面部验证评估。“VR”指面部在10-6 FAR(错误接受率)下验证TAR(真实接受率)。MobileFaceNet(R)根据MegaFace数据集的改进版本进行评估

在这里插入图片描述

在本文中,我们使用Facesrush[36]数据集作为probe set,评估我们的主要MobileFaceNet在Megaface Challenge 1上的验证性能。表4总结了我们在Megaface的两个协议上训练的模型的结果,其中,如果训练数据集的图像少于50万张,则视为较小,否则视为较大。我们的主要MobileFaceNet在两种协议上的验证任务显示出相当的准确性。

结论

我们提出了一类人脸特征嵌入CNN,即MobileFaceNets,在移动和嵌入式设备上具有极高的实时人脸验证效率。我们的实验表明,与之前最先进的移动CNN相比,MobileFaceNets在人脸验证方面实现了显著提高的效率。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值