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

摘要

  本文基于权重和特征的L2归一化,提出了 c o s ( θ + m ) ,较 c o s ( m θ ) c o s ( θ ) m 能使用更多的鉴别特征,并在公开数据集上训练取得较好效果。
  

引言

  深度卷积网络提取特征通常是在人脸姿态修正之后,从而保证特征距离合适。人脸识别主要受三种属性影响:

  • 训练数据。包括VGG-Face、VGG2-Face、CAISA-WebFace、UMDFaces、MS-Celeb-1M、MegaFace。MS-Celeb-1M和MegaFace虽然样本容量大,但有噪声和长尾效应;而像Google、依图等公司的行业数据集达百万上亿,这种差异导致很多深度人脸识别结果不可复制。
  • 网络结构和设置。深度人脸识别的具体应用需要在速度和精度间权衡。
  • 损失函数设计。包括欧式距离裕度损失函数、角度或余弦裕度损失函数,欧式距离的方法需要在训练中间层消耗大量的资源,并保证样本均衡(难点,有效的训练集难以选择),代表有contrastive loss和Triplet loss;角度方面,从 Large margin softmax开始,包括sphereFace、AM-softmax等,较距离的方式增加了空间约束。
      

softmax发展介绍

1、softmax

L S = 1 n i = 1 n log ( e W y i T x i + b y i j = 1 n e W j T x i + b j )

   x i 表示第i维深度特征(本论文的特征共512维),属于第 y i 类,W表示最后一个全连接层中第j列的权重值,b是偏重项。

2、权重归一化

  通过取消b,并对权重归一化,可得:

W j T x i = W j x i c o s θ j L L S = 1 n i = 1 n log e | | x i | | c o s ( θ y i ) e | | x i | | c o s ( θ y i ) + j = 1 , j y i c e | | x i | | c o s ( θ j )

  但该方法在SphereFace中起到的效果不大。

3、Multiplicative Angular Margin

  SphereFace中对角度添加裕量m,并将余弦函数改为分段函数:

ψ ( θ y i ) = ( 1 ) k c o s ( m θ y i ) ) 2 k + λ c o s θ y i ) 1 + λ , θ [ k π m , ( k + 1 ) π m ] L A S = 1 n i = 1 n log e | | x i | | ψ ( θ y i ) e | | x i | | ψ ( θ y i ) + j = 1 , j y i c e | | x i | | c o s ( θ j )

  超参数 λ 从1000逐渐降到5来收窄每一类的角度空间,但也加大了模型训练的难度。

4、特征归一化及余弦裕度

  高质量人脸的L2范数较大,低质量的人脸L2范数较小,通过特征归一化能提高当前深度学习框架对人脸验证的性能。特征归一化和权重归一化的目的是消除径向变化,使每一个特征都分别在超球面上。余弦裕度损失函数如下:

ψ ( θ ) = c o s θ m L A M S = 1 n i = 1 n log e s ( c o s ( θ y i ) m ) e s ( c o s ( θ y i ) m ) + j = 1 , j y i c e s c o s θ j

  其特点为 :易实现、易收敛、性能好。

5、角裕度

  角度上的裕度相当于超球面的弧度,相较余弦裕度有更清晰的几何解释。

L A A M S = 1 n i = 1 n log e s ( c o s ( θ y i + m ) ) e s ( c o s ( θ y i + m ) ) + j = 1 , j y i c e s c o s θ j c o s ( θ + m ) = c o s θ c o s m s i n θ s i n m

  作者认为相较于余弦裕度,本公式的magin值能通过 s i n θ 实现动态调整。
几何解释
  PS:个人感觉那个 c o s θ 1 + m 的点应该是绿色角顶点映射到权重向量的位置,也就是说少了一条虚线。

综合比较

多种方法的综合比较表
多种方法的综合比较图
  PS:softmax相当于实现了类间分离,但没有类内聚集;sphereFace实现了较好的类内聚集效果,但超参数难调;CosineFace在实现聚集的情况下降低了超参数调节难度;ArcFace即本文方法,实现了超球面上的间隔分类,但为什么这么画没体现出magin的动态变化,不知道为什么这么画。
分析曲线
角度分布
  从Target Logit曲线可以发现ArcFace并不是单调递减,在151.35度后开始增加。但实际测试中分析 θ 的分布可以发现训练时的的高斯分布中心在90度,最大没有超过105度,因此不需要去考虑解决表达式问题。
  在训练的三个阶段的角度分布情况统计中发现ArcFace在30~90度之间低于CosineFace,因此ArcFace有更严格的边界惩罚。在训练结束时也取得了更好的收敛效果。
  对于 θ ,在30~60之间添加margin可以提高模型性能,因为这个区域存在很多semi-hard negative samples;在0~30之间添加margin不能提高模型性能,因为这里是最容易分类的样本;在60~90之间增加过多的margin会导致训练分化,可以理解为这里的样本过于难以分类,甚至有些是标注错误的。
  

实验

  作者使用VGG2和MS-Celeb-1M作为训练集,LFW、CFP、AgeDB作为验证集,MegaFace作为测试集;使用MxNet网络结构,学习率从0.1开始,在100k、140k、160k次迭代后均除以10,总共迭代200k次,动量为0.9,衰减系数为5e-4。

输入设置

  输入图像在对齐裁剪后resize到112x112,通过-127.5再/128实现归一化,并对网络输入层做了相应的修改(将 stride = 2、7x7卷积层改为 stride = 1、3x3卷积层)。

输出设置

  输出特征为512维,作者比较了多种输出方式,发现在最后一个卷积层后使用BN-Dropout-FC-BN效果最好。

残差单元设置

残差单元设置
  作者通过采用最新的残差结构设计方式,也取得了一定的模型性能提升。

模型结构选择

  作者对MobileNet、InceptionV2、DenseNet、SE、DPN分别测试,通过准确率、速度、模型大小进行评价。
多模型比较
  InceptionV2模型最大、训练时间较长,但取得最好效果;MobileNet 提取特征时间最快,且模型最小,性能只是略有下降。通过综合考虑,作者选择使用LResNet100E-IR作为测试模型。

损失函数设置

  作者将超参数margin从0.2调到0.8,在LMobileNetE进行测试,最后确定0.5是最佳值。通过比较多种损失函数:

  • SphereFace、CosineFace、ArcFace好于一般Softmax,特别是在姿态和年龄变化大的情况下。
  • SphereFace的超参数调节更复杂,以避免训练时崩溃。
  • ArcFace较CosineFace有更直观的几何解释。
      

Triplet loss改进

  由于GPU的现在,基于Softmax的方法的上百万目标都难以训练,一个有效的解决办法是Triplet loss。作者基于Softmax改进方法对Triplet loss进行改进,改善收敛慢的问题。

  • Softmax在小数据集上的训练结果可以通过大数据集的Triplet loss进行改进;
  • 在同一数据集上,softmax可以通过Triplet进一步改进,也证明局部优化能改善全局模型;
  • Softmax的改进特点,在Triplet的微调后,依然保持并进一步改进。

  关于具体的改进,作者说还在研究。
  

结论

  作者整理了大型公共数据集和测试集,测试了多种网络设置,提出了一种几何上更容易接收的ArcFace,并取得了更好的效果。
  

PS:

  本文对多种softmax型损失函数进行总结,也包含了大量不同参数设置下性能比较表格,但核心的ArcFace一直强调几何解释更容易,没有体现出 s i n θ 动态调整的优势。

猜你喜欢

转载自blog.csdn.net/yangjf91/article/details/79256774
今日推荐