《MobileFaceNet:一种用于移动设备实时人脸验证的高效CNN》论文阅读

news2025/5/15 22:34:43

最近正好做到人脸识别的一点工作,在查阅资料的时候看到了这篇文章,就想花点时间来读一下。这里是自己的阅读记录,英语水平不够借助翻译软件来读的,感兴趣可以看下,也可以自行阅读原始英文论文。

摘要

我们提出了一类非常有效的CNN模型MobileFaceNet,它使用的参数不到100万,专门为移动和嵌入式设备上的高精度实时人脸验证而定制。首先简单分析了常用移动网络人脸验证的不足。我们专门设计的移动电话网很好地克服了这一弱点。在相同的实验条件下,我们的MobileFaceNets比mobilenetw2具有更高的准确率和2倍以上的实际加速比。经过ArcFace loss在改进的MS-Celeb-1M上的训练,我们的4.0MB大小的单个MobileFaceNet在LFW和92.59%上分别达到99.55%和92.59%TAR@FAR1e-6在MegaFace上,它甚至可以与数百MB大小的最先进的大型CNN模型相媲美。最快的一个MobileFaceNets在手机上的实际推断时间为18毫秒。对于人脸验证,MobileFaceNets比以前最先进的移动cnn具有更高的效率。
关键词:移动网络,人脸验证,人脸识别,卷积神经网络,深度学习。

1、简介

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

本文对常见移动网络在人脸验证方面的不足进行了简单的分析。我们专门设计的MobileFaceNets很好地克服了这一缺点,它是一类非常高效的CNN模型,专门用于在移动和嵌入式设备上进行高精度实时人脸验证。我们的MobileFaceNet使用的参数不到100万。在相同的实验条件下,我们的MobileFaceNets比mobilenetw2具有更高的准确率和2倍以上的实际加速比。在经过ArcFace loss从头开始的改进MS-Celeb-1M[4]训练后,我们的4.0MB大小的单个MobileFaceNet模型在LFW[6]和92.59%上实现了99.55%的人脸验证精度(见表3)TAR@FAR10-6(见表4)关于MegaFace Challenge 1[7],它甚至可以与数百MB大小的最新大型CNN模型相媲美。请注意,许多现有技术,如剪枝[37]、低比特量化[29]和知识提取[16]都能够提高移动通信网的效率,但这些技术不包括在本文的范围内。本文的主要贡献如下:

(1)在嵌入CNN人脸特征的最后一层(非全局)卷积层之后,我们使用全局深度卷积层而不是全局平均池层或全连通层来输出判别特征向量。从理论和实验两方面分析了这种选择的优越性。

(2) 我们精心设计了一类嵌入人脸特征的CNN,即MobileFaceNet,在移动和嵌入式设备上都具有极高的效率。

(3) 我们在LFW、AgeDB([8])和MegaFace上的实验表明,我们的MobileFaceNet在人脸验证方面比以前的先进移动CNN有显著提高。

2、相关工作

在过去几年中,调整深度神经结构以在精度和性能之间取得最佳平衡一直是一个活跃的研究领域[3]。对于常见的视觉识别任务,最近提出了许多有效的体系结构[1,2,3,9]。一些高效的体系结构可以从头开始训练。例如,SqueezeNet([9])使用瓶颈方法设计一个非常小的网络,并在ImageNet[11,12]上实现AlexNet级[10]精度,参数减少50倍(即125万)。MobileNet v1[1]使用深度可分离卷积构建轻量级深度神经网络,其中一个,即MobileNet-160(0.5x),在ImageNet上的精度比同等大小的SqueezeNet高4%。ShuffleNet[2]利用逐点分组卷积和信道混洗操作来降低计算成本并获得比MobileNetV1更高的效率。MobileNetV2[3]体系结构基于具有线性瓶颈的逆残差结构,提高了移动模型在多个任务和基准上的最新性能。移动NASNet[13]模型是一个具有强化学习的架构搜索结果,与MobileNetV1、ShuffleNet和MobileNetV2相比,它在移动设备上具有更复杂的结构和更多的实际推理时间。然而,当从头开始训练时,这些轻量级的基本架构对于人脸验证并不那么精确(参见表2)。专门为人脸验证设计的精确的轻量级体系结构很少被研究。[14] 提出了一种轻型CNN框架,用于学习大规模人脸数据的紧凑嵌入,其中轻型CNN-29模型在LFW上的人脸验证精度达到99.33%,参数为1260万。与MobileNetV1相比,Light CNN-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),在模型大小为4.0MB的LFW上实现了97.32%的准确率。在[1]中,通过从预训练的FaceNet[18]模型中提取知识来训练几个用于人脸验证的小型MobileNetV1模型,并且只报告了作者私有测试数据集上的人脸验证精度。不管小型学生模型在公共测试数据集上的准确性如何,我们的MobileFaceNet在LFW(见表3)和MegaFace(见表4)上的准确性与强大的教师模型FaceNet相当。

3、方法

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

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

在为常见视觉识别任务(例如,MobileNetV1、ShuffleNet和MobileNetV2)而提出的最新最先进的移动网络中,存在全局平均池层。对于人脸验证和识别,一些研究者([14]、[5]等)观察到,具有全局平均池层的CNN比没有全局平均池层的CNN准确度低。然而,对这一现象还没有进行理论分析。本文用感受野理论对这一现象作了简单的分析。一个典型的深度人脸验证流程包括对人脸图像进行预处理,利用训练好的深度模型提取人脸特征,并根据特征间的相似度或距离进行匹配。按照文献[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端角部和中心部的理论感受野大小相同,但它们位于输入图像的不同位置。典型的深度人脸验证流程包括:预处理人脸图像、利用训练好的深度模型提取人脸特征、利用特征间的相似度或距离匹配两个人脸。按照文献[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端角部和中心部的理论感受野大小相同,但它们位于输入图像的不同位置。FMap端角单元的感受野中心位于输入图像的角部,FMend端中心单元的感受野中心位于输入图像的中心,如图1所示。根据文献[24],位于感受野中心的像素对输出具有更大的影响,并且感受野内对输出的影响的分布接近高斯分布。FMap末端的角部单位的有效感受野比FMap末端的中央单位小得多。当输入图像是一个对齐的面时,FMap端的角单元比中央单元承载的面信息少。因此,不同的FMap端点单元对于提取人脸特征向量具有不同的重要性。在MobileNetV2中,平坦的FMap端点不适合直接用作人脸特征向量,因为它的维数62720太高。使用全局平均池(表示为GAPool)层的输出作为人脸特征向量是一种自然的选择,在许多研究人员的实验[14,5]和我们的实验(见表2)中实现了较低的验证精度。全局平均池层对FMap端的所有单元都是同等重要的,从上面的分析来看这是不合理的。另一种常用的方法是用全连通层代替全局平均池层,将FMap端投影到一个紧凑的人脸特征向量上,为整个模型增加大量的参数。即使人脸特征向量为低维128,FMap-end后的全连通层也会为MobileNetV2增加800万个参数。我们不考虑这一选择,因为小型模型是我们追求的目标之一。

3.2全局深度卷积

为了处理具有不同重要性的FMap端的不同单元,我们将全局平均池层替换为全局深度卷积层(表示为GDConv)。GDConv层是一个深度卷积(c.f.[25,1])层,其内核大小等于输入大小,pad=0,step=1。全局深度卷积层的输出计算如下:

当FMap-end后在MobileNetV2中用于人脸特征嵌入时,核大小为7×7×1280的全局深度卷积层输出1280维人脸特征向量,计算代价为62720个MAdds(即,通过乘法相加测量的运算次数,c.f.[3]),62720个参数。设MobileNetV2-GDConv表示具有全局深度卷积层的MobileNetV2。当MobileNetV2和MobileNetV2 GDConv都在CIASIAWebface[26]上进行训练,以通过ArcFace loss进行人脸验证时,后者在LFW和AgeDB上的准确性显著提高(见表2)。全局深度卷积层是我们设计移动通信网的一种有效结构。

3.3 MobileFaceNet体系结构

现在我们详细描述我们的MobileFaceNet体系结构。MobileNetV2[3]中提出的剩余[38]瓶颈被用作我们的主要构建块。为了方便起见,我们使用了与[3]中相同的概念。我们的主要MobileFaceNet架构的详细结构如表1所示。特别是,我们的体系结构中瓶颈的扩展因子比MobileNetV2中的要小得多。我们使用PReLU[27]作为非线性,这比使用ReLU(见表2)用于人脸验证稍微好一些。此外,我们在网络的开始部分采用快速降采样策略,在最后几个卷积层采用早期降维策略,在线性全局深度卷积层之后采用线性1×1卷积层作为特征输出层。在训练期间使用批量标准化[28],部署前应用批量标准化折叠(c.f.[29]第3.2节)。我们的主要MobileFaceNet网络的计算成本为2.21亿mAds,使用99万个参数。我们进一步定制我们的主要架构如下。为了降低计算量,我们将输入分辨率从112×112改为112×96或96×96。为了减少参数的数目,我们在MobileFaceNet的线性GDConv层之后去掉线性1×1卷积层,得到的网络称为MobileFaceNet-M。在MobileFaceNet-M中,在线性GDConv层之前去掉1×1卷积层,得到最小的网络称为MobileFaceNet-S。下一节的实验验证了这些MobileFaceNet网络的有效性。

4、实验

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

4.1 LFW和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次迭代时完成。然后,将LFW和AgeDB-30的人脸验证精度进行比较,如表2所示。

如表2所示,与普通移动网络的基线模型相比,我们的移动通信网具有更快的推理速度和更高的准确性。我们的主MobileFaceNet达到了最好的精度,输入分辨率为96×96的MobileFaceNet具有最快的推理速度。请注意,我们的MobileFaceNet比那些具有更大扩展因子的MobileFaceNet(扩展因子×2)和MobileNetV2-GDConv效率更高。为了追求最终的性能,MobileFaceNet、MobileFaceNet(112×96)和MobileFaceNet(96×96)也通过ArcFace loss在MS-Celeb-1M数据库[5]的清洁训练集上进行训练,其中包含85K受试者的3.8M图像。在LFW和AgeDB30上,我们的主要移动通信网的准确率分别提高到99.55%和96.07%。表3比较了三种训练模型在LFW上的精度,并将其与以前发表的人脸验证模型进行了比较。

4.2 MegaFace Challenge1评估

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

5、结论

我们提出了一种嵌入人脸特征的CNN,即MobileFaceNet,它可以非常有效地在移动和嵌入式设备上进行实时人脸验证。我们的实验表明,MobileFaceNets在人脸验证方面取得了显著的提高。

感兴趣的话可以自行阅读原论文,地址在这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业级快速开发框架 nbsaas-boot 1.1.8-2024 发布了

<parent><groupId>com.nbsaas.boot</groupId><artifactId>nbsaas-boot</artifactId><version>1.1.8-2024</version> </parent> 本次更新内容 1. 重构代码生成器&#xff0c;采用类提取和字段提取两种方式&#xff0c;提取功能…

神经网络代码实现(用手写数字识别数据集实验)

目录 一、前言 二、神经网络架构 三、算法实现 1、导入包 2、实现类 3、训练函数 4、权重参数矩阵初始化 5、参数矩阵变换向量 6、向量变换权重参数矩阵 7、进行梯度下降 7.1、损失函数 7.1.1、前向传播 7.2、反向传播 8、预测函数 四、完整代码 五、手写数字识别 一、前言 …

R语言神经网路模型应用(1)

数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集&#xff0c;heart_learning.csv是训练数据集&#xff0c;heart_test.csv是测试数据集。要求&#xff1a;target和target2为因变量&#xff0c;其他诸变量为自变量&#xff0c;用神经网络模型&#xff08;多层感知…

PC电脑技巧[笔记本通过网线访问设备CMW500]

笔记本局域网访问设备 现在我有一台CMW500,我要用笔记本去访问它,但是我发现没有路由器就是不能够访问,通过网线连接设备就是ping不通: 这里设置TCP/IPv4的IP地址如下,这时候就可以pin通了:

跟张良均老师学大数据人工智能——数据挖掘集训营开营

集训营特色&#xff1a; 知识点深入浅出&#xff0c;实现以学促用 以业务内容为主线&#xff0c;数据挖掘技能嵌入 多行业项目实战&#xff0c;全面提升职业素养 全程线上辅导&#xff0c;助力熟练掌握技能 惊喜优惠&#xff1a; 限时“六折”&#xff01; 师傅带练 方向…

VsCode中安装codeium 显示failed to start language server

一、在VsCode的SSH Remote插件中安装Codeium 失败&#xff1a; 1、在插件Remote Explore中的SSH安装Codeium插件后提示无法下载语言服务器&#xff0c;如下图所示 2、去Codeium的仓库中找到对应版本的语言服务器包下载&#xff0c;然后解压并拷贝到远程服务器Ubuntu中的如下目…

云手机:实现便携与安全的双赢

随着5G时代的到来&#xff0c;云手机在各大游戏、直播和新媒体营销中扮演越来越重要的角色。它不仅节约了成本&#xff0c;提高了效率&#xff0c;而且在边缘计算和云技术逐渐成熟的背景下&#xff0c;展现出了更大的发展机遇。 云手机的便携性如何&#xff1f; 云手机的便携性…

【jenkins+cmake+svn管理c++项目】创建一个项目

工作台点击"新建item",进入下图&#xff0c;选择Freestyle project,并输入项目名称&#xff0c; 点击确定之后进入项目配置页面&#xff0c;填写描述&#xff0c;然后在下边源码管理部分选择svn, 填写代码的url 上图的Credentials处填写svn的有效登录名和密码&#x…

5.1 物联网RK3399项目开发实录-Android开发之ADB使用(wulianjishu666)

物联网项目开发实例&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11VQMhHfIL9mZhNlls4wmjw?pwd0gfa 1. ADB 使用 1.1. 前言 ADB&#xff0c;全称 Android Debug Bridge&#xff0c;是 Android 的命令行调试工具&#xff0c;可以完成多种功能&#xff0c;如跟踪系…

DP:简单多状态模型

创作不易&#xff0c;感谢三连 多状态DP表示第i天的时候可能的状态不同&#xff0c;所以我们要去区分不同的状态。 一、打家劫舍&#xff08;1&#xff09; . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int rob(vector<int>& nums) {int n…

C++初步认识

一.开发环境 Dev-C是一个Windows环境下的一个适合于初学者使用的轻量级C/C 集成开发环境&#xff08;IDE&#xff09;&#xff0c;它是一款自由软件&#xff0c;遵守GPL许可协议分发源代码。 Dev-C 使用MingW64/TDM-GCC编译器&#xff0c;遵循C 11标准&#xff0c;同时兼容C98标…

jmeter二次开发发送java请求_保姆级教程!!!

一、引言 JMeter是Apache基金会开发的一款开源性能测试工具&#xff0c;广泛应用于软件性能测试领域。它能够模拟多线程并发用户对应用程序进行压力测试&#xff0c;以评估应用程序的性能和稳定性。然而&#xff0c;在实际使用过程中&#xff0c;用户可能会遇到需要发送Java请…

网上国网App启动鸿蒙原生应用开发,鸿蒙开发前景怎么样?

从华为宣布全面启动鸿蒙生态原生应用一来&#xff0c;各种各样的新闻就没有停过&#xff0c;如&#xff1a;阿里、京东、小红书……等大厂的加入&#xff0c;而这次他们又与一个国企大厂进行合作&#xff1a; 作为特大型国有重点骨干企业&#xff0c;国家电网承担着保障安全、经…

Python 全栈体系【四阶】(二十一)

第五章 深度学习 二、推荐系统 2. 协同过滤及实现 2.1 基于物品的协同过滤推荐技术(评分) 2.2 基于物品的协同过滤算法(Item_CF) 2.3 基于用户的协同过滤算法&#xff08;user-based collaboratIve filtering&#xff09; 2.4 基本原理 2.5 ICF 计算物品之间的相似度&#…

Set和Map数据结构

Set和Map数据结构理解 Set&#xff1a; 1、es6新的数据结构&#xff0c;类似数组&#xff0c;但成员唯一 2、实例属性&#xff1a;Set.prototype.size返回Set实例的成员总数 3、操作方法&#xff1a;add、delete、has、clear 4、遍历操作&#xff1a;forEach、keys、values、en…

求两个单链表的差集

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 但行前路&#xff0c;不负韶华&#…

搭建Hadoop HA

目录 前言 搭建前准备 搭建 前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;它允许用户在不了解分布式底层细节的情况下开发分布式程序&#xff0c;充分利用集群的威力进行高速运算和存储。Hadoop主要解决大数据存储和大数据分析两大核心问题&…

机器学习(二)

线性模型: 离散转为连续的变换: 检查是否有“序”的变化&#xff0c;若有“序”&#xff0c;则连续化&#xff1b;否则&#xff0c;转化为k维向量 最小二乘解: 多元线性回归: 广义线性模型: 线性判别分析: 由于将样例投影到一条直线(低维空间)&#xff0c;因此也被视为一种&q…

excel统计分析——协方差分析基本原理

参考资料&#xff1a;生物统计学 方差分析中&#xff0c;要求除试验因素外的其他条件保持在相同水平上才能对实验结果的差异显著性进行比较&#xff0c;然而有些非试验因素很难或不可能人为控制&#xff0c;此时如果使用方差分析法推断处理其差异显著性&#xff0c;往往会导致错…

深度学习-数据归一化与Batch Normalization

文章目录 数据归一化与Batch Normalization一、经典机器学习的归一化算法1.经典机器学习归一化方法回顾1.1 0-1标准化方法1.2 Z-Score标准化 2.经典机器学习归一化算法在深度学习中的实践3.Z-Score数据归一化的局限3.1 Zero-Centered特性消失3.2 Zero-Centered Data的作用局限 …