点击我爱计算机视觉标星,更快获取CVML新技术


作者 | Mengjia Yan、Mengao Zhao、Zining Xu、Qian Zhang、Guoli Wang、Zhizhong Su

译者 | 刘畅

编辑 | Jane

出品 | AI科技大本营(ID:rgznai100)

【导读】为了提高用于人脸识别的轻量级网络的判别和泛化能力,本文提出了一种有效的可变组卷积网络,称为VarGFaceNet。VarGNet引入了刻板组卷积,以解决小计算量与块内计算强度不平衡之间的冲突。

作者采用可变组卷积来设计了网络,该网络可以支持大规模人脸识别,同时减少计算成本和参数。具体来说,作者对头部(head)进行设置,用于在网络开始时保留基本信息,并提出特定的嵌入方法以减少用于嵌入的全连接层的参数。

为了提高解释能力,作者采用等效的角度蒸馏损失来指导我们的轻量级网络,并应用递归知识蒸馏来缓解教师模型和学生模型之间的差异。值得一提的是,该算法获得deepglintlight轻量级人脸识别比赛冠军,证明了本文模型和方法的有效性。

论文地址:

https://arxiv.org/abs/1910.04985v2

VarGFaceNet代码开源网址:

https://github.com/zma-c-137/VarGFaceNet

引言

随着计算资源的激增,基于深度表示的人脸识别已广泛应用于监控,营销和生物识别等许多领域。然而,由于需要进行大规模的身份分类,因此在有限的计算成本系统(例如移动端和嵌入式系统)上实现人脸识别仍然是一项艰巨的任务。

许多工作提出了用于常见计算机视觉任务的轻型网络,例如SqueezeNet,MobileNet ,MobileNetV2,ShuffleNet,SqueezeNet。它们大量的使用1×1卷积,与AlexNet 相比,可减少50倍的参数,同时在ImageNet上保持AlexNet级别的准确性。

MobileNet 利用深度可分离卷积来实现计算时间和准确性之间的权衡。基于这项工作,MobileNetV2 提出了一种倒置的bottleneck结构,以增强网络的判别能力。

ShuffleNet 和ShuffleNetV2 使用逐点组卷积和通道随机操作进一步降低了计算成本。即使它们在推理过程中花费很少的计算并在各种应用程序上有良好的性能,但嵌入式系统上的优化问题仍然存在于。

为了解决这个冲突,VarGNet 提出了一个可变组卷积,可以有效地解决块内部计算强度的不平衡。同时,作者探索了在相同卷积核大小的情况下,可变组卷积比深度卷积具有更大的学习能力,这有助于网络提取更多的信息。

但是,VarGNet是针对常用任务设计的,例如图像分类和目标检测。它将头部的空域减小到一半,以节省内存和计算成本,而这种方式并不适合人脸识别任务,因为它需要更详细的面部信息。而且,在最后的conv和全连接层之间,只有一个平均池化层,可能无法提取足够的区分性信息。

基于VarGNet,作者提出了一种有效的用于轻量级人脸识别的可变组卷积网络,简称VarGFaceNet。为了增强VarGNet对大规模人脸识别任务的判别能力,作者首先在VarGNet的块上添加SE块[13]和PReLU [8]。然后,在网络开始时删除了下采样过程,以保留更多信息。为了减少网络参数,作者用可变组卷积将特征张量缩小到fc层之前的1×1×512。

VarGFaceNet的性能表明,这种设置方法可以保留判别能力,同时减少网络参数。为了增强轻量级网络的解释能力,我们在训练过程中采用了知识蒸馏方法。目前有几种方法可以使深层网络更小,更高效,例如模型修剪,模型量化和知识蒸馏。最近,ShrinkTeaNet 引入了一个角度蒸馏损失来关注教师模型的角度信息。

受角度蒸馏损失的启发,作者采用等效损失和更好的实现来指导VarGFaceNet。此外,为了减轻教师模型和学生模型之间优化的复杂性,作者引入了递归知识提炼,它将递归的学生模型视为下一代的预训练模型。

LFR挑战赛是关于轻量级人脸识别挑战,它要求FLOPs数在1G以下且内存占用在20M以下的网络。VarGFaceNet在这一挑战上实现了SOTA的性能,这在第3节中有介绍。总之,本文贡献如下:

  • 为了提高VarGNet在大规模人脸识别中的判别能力,作者采用了不同的头部并提出了一个新的嵌入块。在嵌入块中,作者先通过1×1卷积层将通道扩展到1024,以保留基本信息,然后使用可变组conv和逐点conv将空域缩小到1×1,节省计算成本。如下文所示,这样的操作能提高人脸识别任务的性能。

  • 为了提高轻量级模型的泛化能力,作者提出了递归知识蒸馏,以减少教师模型和学生模型之间的泛化差距。

  • 作者分析了可变组卷积的性能,并在训练过程中采用了等效的角度蒸馏损失。实验证明了本文方法的有效性。

方法

与VarGNet不同,本文在网络开始时使用步长为1的3×3 Conv,而不是VarGNet中步长为2的3×3 Conv。VarGNet中第一个转换的输出特征尺寸将被下采样,而本文的输入特征尺寸将保持与输入尺寸相同,如图1(c)所示。

表1和图2说明了本文的轻量级网络(VarGFaceNet)的总体结构。VarGFaceNet的内存占用量为20M,而FLOPs为1G。作者根据经验将S = 8设置为一组。得益于可变组卷积,头部设定和特定的嵌入设定,VarGFaceNet可以以有限的计算成本和参数在人脸识别任务上实现良好的性能。在第3节中,我们将展示我们的网络在数百万个干扰物面部识别任务上的有效性。

实验

  • 数据集和评价标准

采用LFR2019的数据作为训练集。Trillion-parrs作为测试集,它包含两部分:celeLFW和DELFW。采用TPR@FPR=1e-8作为评价标准

  • 从头训练VarGFaceNet

为了验证VarGFaceNet网络的效率和有效性,作者从头开始训练了网络,然后将其性能与mobilefacenet(y2)进行比较。作者将arcface损失作为训练过程中分类的目标函数。表2列出了VarGFaceNet和y2。可以看出,在1G FLOP的限制下,VarGFaceNet能够在验证集上达到更好的人脸识别性能。

针对性能的提高,作者分享了两点直觉:1.当限制FLOPs时,本文的可变组卷积网络可以包含比y2更多的参数。y2中最多的channel数是256,而本文的最大channel数是320。2.本文的嵌入方法可以提取更多重要信息。y2将通道数从256扩展到512,然后使用7×7depthwise卷积获得fc层之前的特征张量。本文将通道数从320扩展到1024,然后使用具有更大网络容量的可变组卷积和逐点卷积。

  • 使用ResNet指导训练VarGFaceNet

为了获得比从头开始训练更高的性能,作者使用角度蒸馏损失函数进行知识蒸馏。进行了实验以研究不同教师模式对VarGFaceNet的影响。结果显示在Tabel 3中。可以观察到:1.尽管教师和学生的体系结构完全不同,但VarGFaceNet仍接近ResNet的性能;2. VarGFaceNet的性能与教师模型高度相关。

  • 采用递归知识蒸馏进行训练

当教师模型与学生模型之间存在巨大差异时,仅靠一次的知识蒸馏可能不足以进行知识转移。为了验证它,作者使用ResNet 100模型作为教师模型,并在VarGFaceNet上进行递归知识蒸馏。当训练下一迭代模型时,表5中显示了性能改进。LFW和CFPFP的变化结果增加了0.1%。

结论

在本文中,作者提出了一种有效的轻量级网络,称为VarGFaceNet,可用于大规模人脸识别。用于人脸识别的头部和嵌入方法能有助于保留更多信息,且同时减少参数。此外,为了提高轻量级网络的解释能力,作者采用了一种等价的角度蒸馏损失作为目标函数,并提出了递归知识蒸馏策略。LFR挑战赛的结果证明了本文方法的优异性。


人脸技术交流群

关注最新最前沿的人脸检测、对齐、识别、重建技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:人脸)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

地平线开源轻量级、有效可变组卷积的人脸识别网络VarGFaceNet相关推荐

  1. VarGFaceNet:地平线提出轻量级、有效可变组卷积的人脸识别网络

    作者 | Mengjia Yan.Mengao Zhao.Zining Xu.Qian Zhang.Guoli Wang.Zhizhong Su 译者 | 刘畅 编辑 | Jane 出品 | AI科技 ...

  2. python人脸识别门禁系统毕设_开源|手把手教你用Python进行人脸识别(附源代码)...

    原标题:开源|手把手教你用Python进行人脸识别(附源代码) 全球人工智能 来源:Github 翻译:黄玮 想要了解目前世界上最简洁的人脸识别库吗?现在小编带大家来学习使用Python语言或命令行进 ...

  3. python机器学习库keras——CNN卷积神经网络人脸识别

    全栈工程师开发手册 (作者:栾鹏) python教程全解 github地址:https://github.com/626626cdllp/kears/tree/master/Face_Recognit ...

  4. 开源真香 离线识别率高 Python 人脸识别系统

    以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪. 由此可以看出,人脸识别系统 ...

  5. 离线识别率高达99%的Python人脸识别系统,开源~

    来源:https://zhuanlan.zhihu.com/p/46931078 大家好,我是辰哥 以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已 ...

  6. python人脸识别系统早已开源,离线识别率高达99%以上!

    以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪. 由此可以看出,人脸识别系统 ...

  7. Python的开源人脸识别库:离线识别率高达99.38%【源码】

    以往的人脸识别主要是包括人脸图像采集.人脸识别预处理.身份确认.身份查找等技术和系统.现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测.行人跟踪.甚至到了动态物体的跟踪.由此可以看出,人脸识别系统已 ...

  8. 开源代码准确率99%+,人脸识别问题真的被解决了吗?

    人脸识别作为当下人工智能落地最广泛的技术之一,已经被广泛应用于金融.安防反恐.教育.社交娱乐.门禁/考勤.交通.智能商业等众多行业.早在2018年,我国的人脸识别市场规模就已经高达151.7亿元(数据 ...

  9. (论文阅读)基于融合深度卷积神经网络的人脸识别方法研究-褚玉晓

    一.基于融合深度卷积神经网络人脸识别方法设计 1.PCA算法提取人脸特征 主要成分分析法(Principal Component Analysis,PCA) 第一步,计算人脸图像的平均值并执行归一化的 ...

最新文章

  1. 并发编程基础篇——第一章(并发相关基础概念理解)
  2. python argparse中action 的可选参数store_true
  3. 计算机一级在线解析,2014年计算机一级考试MSOffice第三章考点解析 18
  4. SAP 采购订单税金抓取方法
  5. Winform中设置ZedGraph的曲线符号Symbol以及对应关系
  6. 我为什么用docker-compose来打包开发环境
  7. c语言exit_看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大
  8. python csdn博客_GitHub - 1783955902/CSDNBlogBackup: Python实现CSDN博客的完整备份
  9. (自定义组件)通用- X轴横向:溢出滚动 (含代码)- 案例篇
  10. 对计算器软件的测试报告,Win7计算器软件测试报告.doc
  11. 所有图形得面积和周长公式
  12. 微信直播王者荣耀设置教程(微信教程)
  13. MOS管导通条件概述-过程-压降-提高效率等详解
  14. java18.取球游戏,12种球类游戏,想怎么玩就怎么玩!
  15. PMSG孕马血清促性腺激素适用的应用方案
  16. 明月当空照,python3D编程初阶:坐标、模型、纹理与光
  17. 苹果手机换品胜电池后还能保持峰值状态吗?
  18. 想学明白PostgreSQL,得先捋一捋体系架构
  19. 如何写出简洁明了的开发功能说明书
  20. 飞天加速计划初体验-阿里云开发者社区

热门文章

  1. 在VC++中使用Tab Control控件
  2. 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
  3. python数组删除最后一个元素_删除numpy数组中的最后一个元素
  4. c语言实验五函数答案,C语言程序设计实验五 参考答案.doc
  5. mysql数据传输完整性_Mysql——数据库完整性
  6. 保存blob到本地_用12行代码提取浏览器自动保存的密码
  7. 车辆动力学及控制_第一届国际轮胎动力学仿真技术峰会在长春举行
  8. ccs 移植创建新工程_3D生物打印器官新突破,模拟肺与肝脏,未来可能实现定制人类器官...
  9. chrome 63 android分类,Chrome 63 Beta新特性介绍
  10. C#设计模式之单例模式