ArcFace Additive Angular Margin Loss for Deep Face Recognition 阅读笔记

这篇论文的成果在 MegaFace 百万人脸识别挑战中,获得了state-of-art的效果,可以说是CNN在人脸领域的又一进步。它的优势主要有3点:

  1. 使用了Additive Angular Margin,在对feature 和 weights进行了L2 normalization的基础上,再计算决策边界时使用cos(θ+mθ+m) 函数,比起以前的loss function,可以得到more discriminative deep features
  2. 对网络架构进行新设计
  3. 进行了data refinement

1.介绍

CNN在人脸的运用已经到很成熟的地步,不同技术之间的差别主要体现在3个attribute 。而这篇论文也在这三个方面做出自己的改进。下面简述一下这些attribute的体现和改进的地方

1.1数据

学术界与工业界有许多不同的数据集,其中有些,如 MegaFace,虽然有很多identities,但是有annotation noises和long tail distribution的干扰。因为不同数据集间差别很大,有些好的人脸成果是不可模仿的

1.2 网络架构

high capacity CNN,像ResNet和Inception-ResNet 比起VGG和Google Inception V1能够获得更好的效果。

本文设计网络确保了在不同姿态和年龄下的鲁棒性,并且对最新的网络做了速度和准确度上的权衡

1.3 LOSS FUNCTION

下面是历史上一些发展历程

  1. Euclidean margin based loss

    主要是用Softmax, 还会加上margin作为改进,但是在GPU的运算量太大了

    contrastive loss 和 the Triplet Loss 使用了pair training 策略,但是太依赖于选择有效的训练数据

  2. Angular and cosine margin loss

    怎样从Softmax function演化到SphereFace可以看我另一篇文章。后面又出现additive cosine margin cos(θθ)-m把margin移到cos 空间,这样有利于实现与优化的达成,它是reproducible的并且在MegaFace上达到state-of-art效果

本文的话,使用了Additive Angular Margin,在对feature 和 weights进行了L2 normalization的基础上,再计算决策边界时使用cos(θ+mθ+m) 函数,比起以前的loss function,可以得到more discriminative deep features

2. From Softmax to ArcFace

2.1 From Softmax to SphereFace

详见我的另一篇文章:SphereFace-From-Softmax-to-Angular-Margin

  1. Softmax
  2. Weights Normalization
  3. SphereFace: Multiplicative Angular Margin

2.2 Feature Normalization

由Softmax学来的feature的L2 norm可以体现这张人脸图像的质量。好的正面人脸的feature的L2 norm更高,模糊的姿态极端的人脸feature的L2 norm低。使用L2 normalization可以将feature 投射到固定半径的超球面上,得到好的效果

对于feature 和 weight使用L2 normalization 是很重要的一步,可以去除他们的极端差异性,把它们投射到超球面高维流形(hypersphere manifold)上

我们把||xi||||xi|| rescale 为 超参数s,本文中设定为64。于是得到如下式子

(其实我觉得$\theta {j}应该换成∗\theta {j,i}$* 更好一些,表示这是第i个样例)

2.3 Additive Cosine Margin

m被移出cos,使用如下式子

也是对$\theta {yi}更严苛了,原来只要cos (\theta {yi}) > cos (\theta {j})就是分类正确,现在需要cos (\theta {yi}) > cos (\theta_ {j}) +m$ 。这样就形成margin

在这片paper中把m设为0.35,它比起Sphere Face有三个好处

  • 不用神奇的超参数,就可以实现
  • 更清晰,不需要和Softmax联合训练(Softmax supervision)就可以收敛
  • 显著的performance improvement

2.4 Additive Angular Margin

在角度上增加固定的Margin,在Cosine Margin的基础上,更具有几何解释性(角度)并获得更好性能,角度上的margin对应超球面流形角度距离(arc distance on the hypersphere)

由于cos(θ+mθ+m) < cos(θθ) 当θ[0,πm]θ∈[0,π−m] ,所以分类的要求更严苛了。

如果展开(expand) cos(θ+mθ+m) ,我们得到cos(θ+m)=cos(θ)cos(m)sin(θ)sin(m)cos(θ+m)=cos(θ)cos(m)−sin(θ)sin(m) 。比起additive cosine margin 的cos(θθ) -m , ArcFace 很相像但是因为sin(θθ) 显得更dynamic

(不同颜色代表不同类的feature space)

2.5 二元分类下的比较

把决策边界放在一起展示

2.6 Target Logit Analysis

为了搞清楚为什么性能能被这些结构优化,我们画出了训练中的target logit curve (WTx+bWTx+b)和 θθ 分布 .

3. Experiments

3.1 Data

  • Training data 用的VGG2(在姿态,年龄,光照等方面有大量差异性,但质量都很高) 和 MS-Celeb-1M(进行了refinement,删去一些质量太差的 图片)
  • Validation data。使用LFW, CFP, AgeDB
  • Test data 用了MegaFace(最大的测试基准,用来测验百万级的数据)。对MegaFace 做了清理,移除了噪声的随机性,并且移除了与probe-set重复的训练集任务

3.2 Network Settings

3.2.1 输入设定

根据人脸的 5 个关键点(眼睛中心,鼻尖和嘴角)进行对齐,并且切割设置大小到 112x112,并且每个像素(范围在[0,255])被normalize(-127.5再除以128)。因为图片大小是ImageNet输入的1/4,为了保证,我们用(conv3 3 stride 1)来替换(conv 7 7 stride 2)。这个放大版网络结构被标记为L

3.2.2输出设定

这儿指的是特征向量那一层,实验了五种从最后一个卷积层如何连接到特征向量的方法,选择了最优代号E,即(Conv - BN - Dropout - FC - BN)

3.2.3 RESNET 单元设定

通过比较,发现第二个Conv 的stride 设为1好于第一个Conv, PReLU好于Original ReLU

我们把这个标记为IR

3.3 最终结果

经过实验比较(具体比较情况见论文),我们最终选择输入- L ,输出 - E, block setting -IR,weight decay value 选择5e-4, loss 中 m=0.5

Reference

  1. https://zhuanlan.zhihu.com/p/34477873
  2. ArcFace Additive Angular Margin Loss for Deep Face Recognition
  3. https://github.com/deepinsight/insightface

猜你喜欢

转载自blog.csdn.net/u011808673/article/details/80971820