ACR Loss: Adaptive Coordinate-based Regression Loss for Face Alignment
Introduction
Introduction 行文虽未有明显的结构划分,但是整体结构区分是明显的。主要分为四部分:背景介绍,相关方法,
提出的方法,实验效果, 基本贡献。Introduction 是全文的浓缩,需要先提出问题,介绍为解决这个问题提出的方法, 介绍这个方法的性能(是否有效),这是贯穿Introduction的主线,也是全文的一条主线。
背景介绍
提出当前人脸对齐的痛点问题-- 在面部遮挡、场景照明和大姿态变化下效果不好。这个是本文针对性解决的问题。
相关方法
介绍热力图回归的方法和坐标回归的方法的优势与不足。
提出的方法
核心:We proposed a piece-wise loss function called ACR Loss designed to find the most challenging points during the training stage and guide the network to pay more attention to them.
提出一个分段损失函数(ACR Loss) 用于寻找在训练阶段最具有挑战性的点(困难的样本),在此后的训练中更加关照他们(增大权重) ,这是Focal Loss的思想。
哪些是具有挑战性的点? ----- 自然联想到前面所提的遮挡、大姿态下的点。
提出的方法呼应前面提出的问题
方法简要介绍
想法来源于 Active Shape Model。建模了一个face object, 由平均的face object添加多样性的变化产生,而多样性的变化由协方差矩阵的特征向量所引入。假定,与平均人脸具有更少的相似性的点认为是较困难的点,而与平均人脸具有更高相似性的点作为较容易的点。考虑到这个属性,我们提出的 ACR 损失会根据面部中的每个标志点的预测困难水平调整其曲率,以对网络训练进行优化。
实验效果
数据集:300W,COFW
baseline network: MobileNetV2, EfficientNet-B0, and EfficientNet-B3
实验设计:对比ACR 损失相比 L2损失的性能提升。
实验结果:使用ACR Loss 相比于提升 L2 Loss 性能明显提升
基本贡献(创新点)
- 提出了一个方法用于衡量每个关键点在face object 的困难水平
- 提出ACR Loss, 可以根据关键点的困难水平调整曲率
Related Work
这部分的行文主要分为四个层次:深度学习之前的方法,基于坐标回归的方法,基于热力图回归的方法,对比两种方法。
对比两种方法
这里的介绍类似捧一踩一,需要理由充分的过渡到所选择的研究方向上。虽然热力图回归方法精度较高,但是他们在诸多方面都有缺陷,而本文更关注的是在某一方面优势较大的模型(比如推理速度,模型大小),因此使用坐标回归的模型作为主要研究方向。
Proposed ACR Loss
此部分主要分为三个部分
当前CBR损失函数的问题
- 对于 L2 损失,其梯度是 ∣ x ∣ |x| ∣x∣ , 即对于较大的error,其梯度值较大,反之,较小。但是会存在一个问题,当我们在优化的过程中,是以batch为单位优化的,假设batch-size大小为 b b b, 而 每幅图像的关键点为 M M M个,所以一次使用 M × b M \times b M×b个关键点的损失去优化,这样损失较大的关键点会占主导,而损失较小的关键点会被忽略,所以L2 损失有可能进行负优化。
- 对于L1损失, 其梯度值是1,众生平等,因此,对于error的大小,他并不关心,所以收敛较慢。
- 提出了一个分段损失函数:对于较小的error,是log形式,而对于较大的error, 是二次方形式。
y = l n ( ∣ x ∣ 2 − Φ + 1 ) , Φ ∈ [ 0 , 1 ] y = ln(|x|^{2-\Phi} + 1),\Phi \in [0,1] y=ln(∣x∣2−Φ+1),Φ∈[0,1]
对于有挑战性的点 Φ ≈ 1 \Phi \approx 1 Φ≈1, 对数的部分为 y ≈ l n ( ∣ x ∣ + 1 ) y \approx ln(|x|+1) y≈ln(∣x∣+1)
对于较小的有挑战性的点 Φ ≈ 0 \Phi \approx 0 Φ≈0, 对数的部分为 y = l n ( x 2 + 1 ) y = ln(x^2+1) y=ln(x2+1)
因此, 对于面部的每一个关键点,我们定义与之相关的权重 Φ \Phi Φ, 用来调整对数部分的影响。
因此,损失函数的设计中不仅考虑到了误差的大小同时考虑到了关键点的难易水平
ACR Loss
使用 M M M维向量表示 Face object
F a c e M × 1 ≈ M e a n _ F a c e M × 1 + V M × k b k × 1 Face_{M\times1} \approx Mean\_Face_{M\times 1} + V_{M \times k} b_{k \times1} FaceM×1≈Mean_FaceM×1+VM×kbk×1
这里 M M M 表示关键点的数量。ASM模型中使用了PCA的方法,首先在训练集上计算出均值(Mean_Face)和协方差( Σ \Sigma Σ),然后对协方差进行特征值分解,选取最大的 k k k个特征值对应的特征向量, 然后对PCA变换进行解码,这里的 b k × 1 b_{k\times1} bk×1相当于PCA变换后的坐标, V b Vb Vb相当于解码过程,由于并不是选取的所有特征向量,因此是 ≈ \approx ≈。
b k × 1 = V k × M T ( F a c e M × 1 − M e a n _ F a c e M × 1 ) b_{k\times1} = V_{k\times M}^T(Face_{M\times1}-Mean\_Face_{M\times1}) bk×1=Vk×MT(FaceM×1−Mean_FaceM×1)
如下定义Smooth_Face(平滑后的人脸),即在平均的人脸上添加多样性的变化(由 V b Vb Vb带来)
S m o o t h _ F a c e M × 1 = M e a n _ F a c e M × 1 + V ^ M × k b k × 1 Smooth\_Face_{M\times1} = Mean\_Face_{M\times1} + \hat{V}_{M\times k}b_{k\times1} Smooth_FaceM×1=Mean_FaceM×1+V^M×kbk×1
定义 l ∈ { 0 , 1 , . . . , k } l\in\{0,1,...,k\} l∈{0,1,...,k}表示用于创建Smooth_Face的特征向量。
所使用的特征向量的数目 表示了 origin face object 和 Mean_Face object 的相似性。如果特征向量的数目为0,Smooth_Face object 和 Mean_Face object 相等。如果使用所有的特征向量,Smooth_Face object则与origin face object相等,与Mean_Face object 有最少的相似性。
对于每幅图像,我们使用origin face的关键点和Smooth_Face的对应点之间的距离来度量关键点是否有挑战性, 如下,gt face object 表示为 Face_i, Smooth_Face object 表示相应的face object。 m m m表示关键点的索引, i i i表示第 i i i幅输入图像,这样我们可以使用 Φ i , m \Phi_{i,m} Φi,m表示关键点的困难水平,然后对损失函数进行相应的调整。注意 Φ i , m \Phi_{i,m} Φi,m与网络的训练过程无关,是可以预先计算好的,并且, S m o o t h _ F a c e i , m Smooth\_Face_{i,m} Smooth_Facei,m是可以根据特征向量的数目动态调整的。
Φ i , m = ∣ S m o o t h _ F a c e i , m − F a c e i , m ∣ m a x q ∈ M ( ∣ S m o o t h _ F a c e i , q − F a c e i , q ∣ ) \Phi_{i,m} = \frac{|Smooth\_Face_{i,m}-Face_{i,m}|}{max_{q\in M}(|Smooth\_Face_{i,q}-Face_{i,q}|)} Φi,m=maxq∈M(∣Smooth_Facei,q−Facei,q∣)∣Smooth_Facei,m−Facei,m∣
如下定义损失函数:
Δ i , m = ∣ F a c e i , m − P r _ F a c e i , m ∣ \Delta_{i,m}=|Face_{i,m}-Pr\_Face_{i,m}| Δi,m=∣Facei,m−Pr_Facei,m∣
l o s s _ f a c e i , m = { λ l n ( 1 + Δ i , m 2 − Φ i , m ) I f : Δ i , m ≤ 1 Δ i , m 2 + C I f : Δ i , m > 1 loss\_face_{i,m}= \begin{cases} \lambda ln(1+\Delta_{i,m}^{2-\Phi_{i,m}}) & If: \Delta_{i,m} \leq 1 \\ \Delta^{2}_{i,m} + C & If: \Delta_{i,m} >1 \end{cases} loss_facei,m={λln(1+Δi,m2−Φi,m)Δi,m2+CIf:Δi,m≤1If:Δi,m>1
L o s s A C R = 1 M N ∑ i = 1 N ∑ m = 1 M l o s s _ f a c e i , m Loss_{ACR} = \frac{1}{MN} \sum_{i=1}^N \sum_{m=1}^M loss\_face_{i,m} LossACR=MN1i=1∑Nm=1∑Mloss_facei,m
对于较大的误差 ( Δ i , m > 1 \Delta_{i,m}>1 Δi,m>1), 损失函数定义为平方的形式,对于较小的误差( Δ i , m ≤ 1 \Delta_{i,m} \leq 1 Δi,m≤1) , 根据 Φ i , m \Phi_{i,m} Φi,m调整损失的曲率,如下图所示。
Experiments
实验设计
数据集:300W, COFW (好奇为什么没有WFLW?)
基本网络结构: MobileNetV2, EfficientNet-B0, EfficientNet-B3
baseline(使用L2 Loss): M N b a s e MN_{base} MNbase, E F − 0 b a s e EF-0_{base} EF−0base, E F − 3 b a s e EF-3_{base} EF−3base
改进后的: M N A C R MN_{ACR} MNACR, E F − 0 A C R EF-0_{ACR} EF−0ACR, E F − 3 A C R EF-3_{ACR} EF−3ACR
COFW的评估
从表1可以看出,使用MobileNetV2 作为网络, 当使用ACR Loss时,相较于使用L2 Loss, NME下降了1.15%, FR下降了0.2%,相应的AUC 增加了 8.77%。其他网络基本如此,不予赘述。表1主要是固定网络结构,对比L2 Loss和ACR Loss, 证明了ACR Loss损失的有效性。
表2 主要是将当前的模型与主流的模型(SOTA模型)性能的对比,表明EF-3ACR达到了 SOTA的性能。
300W的评估
从表1可以看出, 相较于L2 Loss, 300W的challenge training set 的NME 指标分别提高了 1.16%,0.21 %, 0.65%等。证明了 ACR Loss 相比于 L2 Loss 更有优势。表2主要对比了EF-3(ACR)与当前的SOTA模型,发现 在300W的challenging set 上, EF-3(ACR) 已经可以与SOTA模型相当。
Ablation Study
消融实验中主要讨论了参数 λ \lambda λ的影响, λ \lambda λ参数可以调整 ACR Loss 的曲率。文章中进行了6组实验去研究超参数 λ \lambda λ的不同值带来的影响。在我们的实验中,使用EfficientNet-B3作为模型,在300W测试集上进行评估,使用 NME指标。
对于300W的 Common 和 Full subsets , λ ∈ { 1 , 2 , 3 } \lambda \in \{1,2,3\} λ∈{1,2,3}对NME的影响并不大,作为对比,在Challenging subset上NME 从 λ = 1 \lambda=1 λ=1到 λ = 4 \lambda=4 λ=4一直处于下降的状态, λ \lambda λ继续增加到5然后10,NME明显上升。因此, λ = 4 \lambda=4 λ=4是最好的一组值。
Conclusion
提出了一个自适应的分段损失函数(ACR Loss), 通过与相关的Smoothed face object对比,定义了一个度量标准用于衡量关键点预测的难易水平,ACR Loss 可以自适应的调整其损失函数的曲率以使得网络更关注于具有挑战性的点。后续的研究中,计划使用提出的损失函数应用到其他计算机视觉的任务中比如human body joint tracking.