摘要
本文基于权重和特征的L2归一化,提出了
,较
能使用更多的鉴别特征,并在公开数据集上训练取得较好效果。
引言
深度卷积网络提取特征通常是在人脸姿态修正之后,从而保证特征距离合适。人脸识别主要受三种属性影响:
- 训练数据。包括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
表示第i维深度特征(本论文的特征共512维),属于第 类,W表示最后一个全连接层中第j列的权重值,b是偏重项。
2、权重归一化
通过取消b,并对权重归一化,可得:
但该方法在SphereFace中起到的效果不大。
3、Multiplicative Angular Margin
SphereFace中对角度添加裕量m,并将余弦函数改为分段函数:
超参数 从1000逐渐降到5来收窄每一类的角度空间,但也加大了模型训练的难度。
4、特征归一化及余弦裕度
高质量人脸的L2范数较大,低质量的人脸L2范数较小,通过特征归一化能提高当前深度学习框架对人脸验证的性能。特征归一化和权重归一化的目的是消除径向变化,使每一个特征都分别在超球面上。余弦裕度损失函数如下:
其特点为 :易实现、易收敛、性能好。
5、角裕度
角度上的裕度相当于超球面的弧度,相较余弦裕度有更清晰的几何解释。
作者认为相较于余弦裕度,本公式的magin值能通过 实现动态调整。
PS:个人感觉那个 的点应该是绿色角顶点映射到权重向量的位置,也就是说少了一条虚线。
综合比较
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一直强调几何解释更容易,没有体现出
动态调整的优势。