ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别

Paper name

ArcFace: Additive Angular Margin Loss for Deep Face Recognition

Paper Reading Note

URL: https://arxiv.org/pdf/1801.07698.pdf

TL;DR

该篇文章出自CVPR2019,在SphereFace与CosFace的基础上提出Additive Angular Margin Loss用于进一步增加提取特征的类内紧凑性与类间区分度,在十个公开数据集上取得了SOTA效果。


Introduction

  • 作者认为近年来人脸识别最主要的工作都集中在loss函数的设计上

    • center loss 通过在欧式空间中惩罚人脸特征与他们对应的类别中心的距离来达到增加类内紧凑性
    • SphereFace假设网络最后一层的线性变换矩阵可以将特征表示在一个超球面的特征空间中,同时通过增加超球面上的角度margin来提升类间区分度。作者认为angular softmax loss需要一系列的近似才能被计算,导致了网络训练过程的不稳定。为了解决训练不稳定SphereFace使用了结合标准softmax loss的hybrid loss形式,这可能使softmax loss主导了整个训练过程,因为基于整数相乘的angular margin使得目标logit曲线非常陡峭,从而阻碍了收敛
    • CosFace直接使用cosine margin 来惩罚目标logit,在SphereFace的基础上获得了更佳的结果,同时支持了更简单的训练过程,而不需要使用标准softmax loss进行联合优化
  • 作者提出了Additive Angular Margin Loss (ArcFace) 来进一步提高人脸识别模型的判别能力,并且支持更稳定的训练过程


Dataset/Algorithm/Model/Experiment Detail

实现方式

  • 如下图所示,在经过将fc层权重和输出feature进行规范化处理后,两者的点积就可以看做是深度卷积网络输出的人脸feature。作者使用了arc-consine 函数来计算输出feature与目标权重的角度。然后作者在目标角度上增加了附加角边距 (additive angular margin)。最后作者通过固定的特征规范化将所有的logits进行重新缩放,剩下的步骤就与基于标准softmax loss的步骤一致。
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第1张图片

  • ArcFace使用的loss 函数推导

    • 原始softmax loss如下所示,原始softmax loss不直接优化特征embedding来增加类内相似性与类间区分度。那么在测试样本具备较大的类内差异性(如姿态变化、年龄变化等)或者大规模测试场景下(如千万级别测试集对类间差异性要求较高)表现不佳。
      ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第2张图片
    • 与SphereFace与CosFace类似,作者通过规范化fc层权重值,并为了简单表示将fc的偏移量设置为0,同时将特征进行规范化以及re-scale到s,则得到以下loss函数:
      在这里插入图片描述
    • 将fc输出的特征进行规范化操作可以使人脸识别预测结果仅仅依赖于特征与权重之间的角度,所以能够将人脸映射到超球面的特征空间上
    • 作者增加了一个额外角边距(additive Angular margin)惩罚项用于进一步增加类内紧凑性与类间区分度,如下式所示:
      在这里插入图片描述
  • 与之前人脸识别文章的套路一样,作者也做了一个toy实验用于对所提出的loss的能力进行可视化展示
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第3张图片

  • 与SphereFace和CosFace的比较

    • 作者画了图片展示了三种方法在使用相应最佳的margin设置时的目标logit曲线,画图区间选取在20°到100°之间,这是因为随机初始化的角度一般90°,训练收敛后角度值集中在30°左右,如下(a)所示。其中(b)图中不仅分别画了三种方式的logit曲线,同时还画了结合三种方式的logit曲线:
      ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第4张图片
    • 结合三种方式的loss函数如下所示:
      在这里插入图片描述
    • 三种方式的几何差异如下所示,SphereFace与CosFace都是一个非线性的角度margin,而ArcFace拥有一个线性的角度margin,这对于不同的角度能够施加平等的约束:
      ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第5张图片
    • 其实三种方法加入这个m的作用机制都是加大分类的难度,从而来使模型学习到的feature具有更强的判别能力。只是与SphereFace与CosFace相比,作者认为他们提出的加入m的方式对于人脸识别任务能够有更佳的决策面

实验结果

作者的实验做得十分丰富,在十个测试集上进行了验证

  • 实现细节

    • 数据集使用了CASIA、VGGFace2、MS1MV2和DeepGlint-Face训练模型
    • 作者在多个验证集上进行了测试,数据集信息如下所示
      ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第6张图片
    • 实验设置:
      • 基于检测的五个人脸关键点进行人脸区域提取
      • backbone使用了ResNet50和ResNet100
      • 同时使用了BN-Dropout-FC-BN 的结构来提取512-D的人脸特征
      • batchsize设置为512,四卡NVIDIA Tesla P40(24GB)的GPU进行训练
      • momentum设置为0.9
      • weight decay设置为5e-4
      • 测试阶段使用去除fc的backbone用于提取512-D的特征
  • LFW等数据集上的实验结果,可以看到ArcFace能够取得最佳的结果,值得注意的是作者提出的将SphereFace、CosFace和ArcFace相结合的方式(CM1、CM2)能够取得很好的效果,但是并没有赶上ArcFace的结果
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第7张图片

  • 与Triplet-loss的对比结果,有相似的类内紧凑性,但是类间区分度Triplet-loss更差
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第8张图片

  • 不同方法的实验结果对比,取得了最优结果
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第9张图片

  • MegaFace上的实验结果对比
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第10张图片
    ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别_第11张图片

Thoughts

ArcFace在SphereFace与CosFace的基础上改进了loss函数,改动不大,效果提升很明显。这一系列的loss函数变化,以及该篇论文中将三种loss的设计思路进行结合的实验,可以看出loss的设计确实是人脸识别任务中最重要的环节,感觉这篇文章应该是Angular softmax loss系列的尾声了。

你可能感兴趣的:(paper_reading,人脸识别,计算机视觉,人工智能)