论文笔记:MobileFaceNet

原文:MobileFaceNets: Efficient CNNs for Accurate Real-time Face Verification on Mobile Devices

MobileFaceNet

1、四个问题

  1. 要解决什么问题?
    • 设计一个在手机或嵌入式设备上可实时运行且具有高精度的人脸验证CNN模型。
  2. 用了什么方法解决?
    • 以MobileNet v2网络为骨架,做了一些改进:
      1. 使用全局可分离卷积(global depthwise convolution,GDConv)替代全局平均池化层(global average pooling)。(注:我自己在训练MobileNet v2时,使用全局平均池化层的话也经常会遇到网络较难收敛的情况)
      2. 使用ArcFace的Loss函数。
      3. 使用PReLU替代ReLU,效果会稍微好一点。
      4. 通道扩张参数(expansion factors)比MobileNet v2的减小一些。
  3. 效果如何?
    • 由于是小网络,性能肯定会比大网络差一点。但在一定程度上已经与一些大网络的性能相当了。
    • 在使用MS-Celeb-1M从头开始训练后,在LFW上的准确率达到了99.55%,在MegaFace比赛中达到了92.59%的TAR@FAR1e-6 。
  4. 还存在什么问题?
    • 为了达到实时性,网络结构不得不进行缩减,这在一定程度上会限制网络的学习能力,文中只是使用了轻量化网络结构(MobileNet v2),并没有使用其他模型压缩方法,还可以再使用一些模型压缩方法(如剪枝(prunning)、量化(low-bit quantization)、知识蒸馏(knowledge distillation))进一步改进。

2、论文概述

2.1、改进方法

A、MobileNet v2的局限性

在这里插入图片描述

  • 以上图为例,主要说明一下global average pooling的缺陷。
    1. 预处理:使用MTCNN检测出人脸以及5个人脸特征点,之后将人脸对其到 112 × 112 112 \times 112 112×112的图片。对像素做归一化,归一化到-1到1(减去127.5再除以128)。
    2. CNN:假设这里用的CNN是MobileNet v2,将前面预处理后的人脸送入CNN,输出可以得到一个 7 × 7 × c 7 \times 7 \times c 7×7×c的特征图(c表示特征图的通道数),再使用全局平均池化提取特征向量。
    3. 从图中的RF1和RF2来看,RF2的感受野对应包括了整个图像,RF1的感受野只包括了人脸图像的一部分。但是使用全局平均池化,即意味着我们认为RF1与RF2等价,很显然这是不正确的。应该给RF2更大的权重,RF1更小的权重才对。
  • 全局池化将特征图上所有的值都视作同等重要,根据上面的分析来看,这是不太好的。而一种很常见的解决办法就是,将全局池化替换为全连接层,但是替换成全连接层会给模型带来非常多的参数,有悖于轻量化模型的初衷。
B、全局可分离卷积(global depthwise convolution)
  • 将全局池化替换为全局可分离卷积。
    • 如果输入特征图是 h × w h \times w h×w,那么全局可分离卷积的卷积核大小也是 h × w h \times w h×w。通道数即为特征维数。
C、网络结构

在这里插入图片描述

3、参考资料

  1. 论文阅读笔记:MobileFaceNets: Efficient CNNs for Accurate RealTime Face Verification on Mobile Devices
  2. MobileFaceNets: Efficient CNNs for Accurate Real-time Face Verification on Mobile Devices
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值