Support Vector Guided Softmax Loss for Face Recognition 论文学习

论文地址:https://128.84.21.199/abs/1812.11317
代码: https://github.com/xiaoboCASIA/SV-X-Softmax

Abstract

由于深度卷积神经网络的到来,人脸识别见证了巨大的提升,它的核心挑战就是特征判别度。为了解决这个挑战,有些研究组尝试 mining-based 策略(如 hard example mining 和 focal loss),有的研究组则尝试设计 margin-based loss 函数,(如 angular loss, additive loss, additive angular margins)来增加 ground truth 类之间的边界。这两个方法都充分验证了它们可以学习判别特征。但是,它们要么需要面对 hard examples 的不明确性,要么需要面对其它类别判别力不强的窘境。在这篇论文中,我们设计了一个新的损失函数,support vector guided softmax loss (SV-Softmax),它能自适应地关注那些错误分类的点(支持向量),引导判别特征的学习。所以,SV-Softmax 能够避免 hard examples 的不明确性,也能吸收其它类别的判别力,因此能够产生更具判别度的特征。据我们所了解,这是领域内第一次尝试将 mining-based 损失和 margin-based 损失融合在一个框架中使用。我们在几个基准上进行了实验,结果显示出此方法的有效性,是 state of art 的。

1. Introduction

在计算机视觉和模式识别领域,人脸识别是一个基础而且应用价值很大的方向。人脸识别(face recognition)任务主要包括两个类别,人脸识别(face identification)将给定的一张脸分类为某一个人;以及人脸验证(face verification)决定是否一对人脸照片属于同一个人。尽管这个课题已经研究了几十年,想要精准地识别人脸仍有不少挑战,尤其是在大规模测试数据集上,如 MegaFace Challenge 和 Trillion Pairs Challenge。

在近些年,先进的人脸识别模型都是建立在深度卷积网络上的,对判别特征的学习至关重要。为了训练这些模型,CNN 一般都会配备一个分类损失函数,或距离学习(metric learning)损失函数。距离学习损失函数如 contrastive loss 或 triplet loss 通常需要承受高昂的计算成本。为了避免这个问题,它们需要精心设计的样本挖掘策略,模型的性能对这些策略的选择是非常敏感的。因此越来越多的研究人员开始把关注点放在如何重新设计分类损失函数上。

直觉上,如果人脸的类内距离较小,而类间距离较大,人脸特征就可以很容易区分。但是,如很多论文指出的,当前流行的分类损失函数(如 softmax loss)对于深度人脸识别通常缺乏特征判别力。为了解决这个问题,有一组研究人员提出了 mining-based 损失函数,设计了一个 hard mining softmax (HM-Softmax),利用 high-loss 样本来构建 mini-batches,提升特征分辨度。hard examples 所占的比例是经验选取的,而 easy examples 不被考虑。相反,Lin 设计了一个相对 soft 的 mining softmax,叫做 Focal Loss(F-Softmax),将训练关注在一个由 hard examples 组成的稀疏集合上。Focal Loss 比简单的 hard mining softmax 的测试结果要好。Yuan 基于模型复杂度选择 hard examples,训练了一组模型,对不同级别难度的样本进行建模。另一组研究人员则更青睐于设计margin-based 损失函数。他们的关注点不在 hard examples 的优化,而是直接提升不同类别特征间的 margin。Wen 设计了一个center loss 学习每个样本的中心位置,增强类内的紧凑度。Wang 和 Ranjan 提出使用一个比例参数来控制 softmax loss 的温度,对于良好区分的样本产生较高的梯度,以此收缩类内的差异。Liu 在 ground truth 类和其它类别间提出了angular margin (A-Softmax),以此来增大类间的差异。但是,它通常不稳定,而且参数很难决定。为了增强 A-Softmax 的稳定性,好几个替代方法都被提出。Wang 设计了 additive margin (AM-Softmax) 损失来稳定优化过程,获得了很好的结果。Deng 提出了 additive angular margin (Arc-Softmax) 损失,有着更清晰的几何含义。

尽管这两组都充分验证了其可以学习人脸识别中的判别特征。mining-based 损失函数的动机是关注在 hard examples 上,而 margin-based 损失函数的动机是增大特征不同类别间的间距。同时,他们各自独立发展,而且也有各自的缺点。对于 mining-based 损失函数,hard examples 的定义不明确,通常是通过经验选取的。如何从语义层面上决定 hard examples 仍待探索。对于 margin-based 损失函数,他们中的绝大多数方法都是从 ground truth 类的视角,学习判别特征,增大特征间距。它们经常忽略其它非 ground truth 类别的视角产生的判别力。而且,mining-based 和 margin-based 方法之间的关系仍不明确。

为了克服上述的缺点,这篇论文尝试设计一个新的损失函数,它可以自适应地关注在支持向量上,连接 margin-based 和 mining-based 损失函数间的鸿沟,在语义层面将它们二者结合在一个框架里。总之,这篇论文的主要贡献如下:

  • 提出了一个新的 SV-Softmax 损失,去除了 hard examples 的不确定性,通过聚焦支持向量来获取其他类别的判别力。据我们所知,这是第一次有人去尝试在语义上融合 mining-based 和 margin-based 损失函数在同一个框架中。
  • 我们深入地分析了 SV-Softmax 和目前 mining-based 以及 margin-based 损失的关系,进一步提出了一个改进版本的 SV-X-Softmax 损失函数,增强特征区分度。
  • 在 LFW, MegaFace Challenge, TrillionPairs Challenge 基准上进行了大量的实验,验证了我们的新方法相较于 Softmax loss, margin-based, mining-based Softmax loss 等方法的优越性。

2. Preliminary Knowledge

Softmax

Softmax 损失函数定义在最后一个全连接层上,将 softmax 函数和交叉熵损失结合起来。在人脸识别领域,权值 ω k , ( k { 1 , 2 ,   , K } ) \omega_k, (k \in \{1,2,\cdots,K\}) K K 是类别的个数。特征 x x 和最后的全连接层通常会做归一化处理,magnitude 被一个比例参数 s [ 32 , 30 , 4 ] s[32,30,4] 替代。结果就是,给定一个输入特征向量 x x ,以及它对应的 ground truth 标签 y y ,softmax 损失可被定义为如下:

L 1 = l o g e s c o s ( θ ω y , x ) e s c o s ( θ ω y , x ) + k y K e s c o s ( θ ω k , x ) L_1=-log \frac{e^{s \cdot cos(\theta_{\omega_y, x})}}{e^{s \cdot cos(\theta_{\omega_y, x})} + \sum_{k\neq y}^K e^{s \cdot cos(\theta_{\omega_k, x})}}

c o s ( θ ω k , x ) = ω k T x cos(\theta_{\omega_k,x})=\omega_k^T x 是余弦相似度, θ ω k , x \theta_{\omega_k,x} ω k \omega_k x x 之间的角度。正如其它论文所指出的,softmax loss 学到的特征更容易被分隔开(separable),而不是具有人脸识别中的判别性(discriminative)。

Mining-based Softmax

Hard example mining 已经成为训练深度网络中一个有效的常用手段。它的思想就是聚焦在信息量大的样本上训练,因此它可以带来更加具有判别度的特征。有些方法是基于损失值或模型复杂度来选择 hard examples,学习判别特征。通常,它们可表述如下:

L 2 = g ( p y ) l o g e s c o s ( θ ω y , x ) e s c o s ( θ ω y , x ) + k y K e s c o s ( θ ω k , x ) L_2 = -g(p_y) log\frac{e^{s \cdot cos(\theta_{\omega_y, x})}}{e^{s \cdot cos(\theta_{\omega_y, x})}+\sum_{k\neq y}^K e^{s \cdot cos(\theta_{\omega_k, x})}}

p y = e s c o s ( θ ω y , x ) e s c o s ( θ ω y , x ) + k y K e s c o s ( θ ω k , x ) p_y=\frac{e^{s \cdot cos(\theta_{\omega_y, x})}}{e^{s \cdot cos(\theta_{\omega_y, x})}+\sum_{k\neq y}^K e^{s \cdot cos(\theta_{\omega_k, x})}} ,是预测概率, g ( p y ) g(p_y) 是指标函数。基本上,对应于 soft mining 方法 Focal Loss(F-Softmax), g ( p y ) = ( 1 p y ) γ g(p_y)=(1-p_y)^\gamma γ \gamma 是一个调节因子。对于 hard mining 方法 HM-Softmax,当样本被标记为容易时, g ( p y ) = 0 g(p_y)=0 ;当样本被标记为难时, g ( p y ) = 1 g(p_y)=1 。但是,困难的定义是不明确的,它们通常导致模型性能很敏感。

Margin-based Softmax

为了直接增强特征区分度,近些年学者们提出了若干个 margin-based softmax 损失函数。总之,它们可被定义如下:

L 3 = l o g e s f ( m , θ ω y , x ) e s f ( m , θ ω y , x ) + k y K e s c o s ( m , θ ω k , x ) L_3=-log\frac{e^{sf(m,\theta_{\omega_y,x})}}{e^{sf(m,\theta_{\omega_y,x})}+\sum_{k\neq y}^K e^{s \cdot cos(m,\theta_{\omega_k,x})}}

f ( m , θ ω y , x ) f(m,\theta_{\omega_y,x}) 是一个精心设计的 margin 函数。基本上,

  • f ( m 1 , θ ω y , x ) = c o s ( m 1 θ ω y , x ) f(m_1,\theta_{\omega_y,x}) = cos(m_1\theta_{\omega_y,x}) 是 A-Softmax 损失函数, m 1 1 m_1 \geq 1 是个整数。

  • f ( m 2 , θ ω y , x ) = c o s ( θ ω y , x ) m 2 , m 2 > 0 f(m_2,\theta_{\omega_y,x})=cos(\theta_{\omega_y,x})-m_2, m_2>0 是 AM-Softmax 损失函数。

  • f ( m 3 , θ ω y , x ) = c o s ( θ ω y , x + m 3 ) , m 3 > 0 f(m_3,\theta_{\omega_y,x}) = cos(\theta_{\omega_y,x}+m_3), m_3>0 是 Arc-Softmax 损失函数。

Margin 函数可以概括为如下版本: f ( m 2 , θ ω y , x ) = c o s ( m 1 θ ω y , x + m 3 ) m 2 f(m_2,\theta_{\omega_y,x})=cos(m_1 \theta_{\omega_y,x} + m_3)-m_2 。但是,所有这些方法都只是从 ground truth 类 y y 的角度获取的特征 margin。它们没认识到其它非 ground truth 类别的重要性。

3. Problem Formulation

3.1 Naive Mining-Margin Softmax Loss

mining-based 损失函数目的是关注在 hard examples 上,而 margin-based 损失函数目的是增大不同类别间的特征 margin。因此,这两个分支可以彼此无缝地结合。如下:

L 4 = g ( p y ) l o g e s f ( m , θ ω y , x ) e s f ( m , θ ω y , x ) + k y K e s c o s ( θ ω k , x ) L_4 = -g(p_y)log\frac{e^{sf(m,\theta_{\omega_y,x})}}{e^{sf(m,\theta_{\omega_y,x})}+\sum_{k\neq y}^K e^{s \cdot cos(\theta_{\omega_k,x})}}

但是,这个等式只吸收了它们自己的优点,却没有弥补它们各自的缺点。它通过 f ( m , θ ω y , x ) f(m,\theta_{\omega_y,x}) 只促进了 ground truth 类别的特征 margin,忽略了其它非 ground truth 类别的特征判别力。而且,hard examples 仍然是通过指标函数 g ( p y ) g(p_y) 凭借经验选取的,没有语义上的引导。换句话说,hard examples 的定义仍然很模糊。

3.2 Support Vector Guided Softmax Loss

直觉告诉我们,良好区分的特征向量在学习问题上起到的作用很小。也就是说,那些误分类的特征向量对增强特征区分度更重要些。受这个启发,学者们提出了 hard example mining 和最近的 Focal Loss,将训练聚焦在一个由 hard examples 组成的稀疏集合上,在训练中忽略那些数量巨大的容易样本。但是,它们要么是依据损失值选取 hard examples,要么通过一个调节因子来降低容易样本的权重。换句话说,hard examples 的定义是很模糊的,没有直观的解释。

为了解决这个问题,我们提出了一个更加优雅的方法,将训练聚焦在信息量大的特征上(即,支持向量)。特别地,我们定义了一个 binary mask 来自适应地表明,在当前阶段通过一个特殊的分类器,一个样本是否被选做支持向量。最后,binary mask 定义如下:

I k = { 0 , c o s ( θ ω y , x ) c o s ( θ ω k , x ) 0 1 , c o s ( θ ω y , x ) c o s ( θ ω k , x ) < 0. I_k=\left\{ \begin{aligned} 0 & , & cos(\theta_{\omega_y,x})-cos(\theta_{\omega_k,x})\geq 0 \\ 1 & , & cos(\theta_{\omega_y,x})-cos(\theta_{\omega_k,x})<0. \end{aligned} \right.

从这个定义,我们可以看到如果一个样本被错误分类,即 c o s ( θ ω y , x ) c o s ( θ ω k , x ) < 0 cos(\theta_{\omega_y,x})-cos(\theta_{\omega_k,x})<0 ,它会暂时地被强调。在这种方法下,hard examples 的定义就清晰了,我们主要关注在这样一个由支持向量组成的稀疏集合上。最后,我们的 SV-Softmax 损失函数定义如下:

L 5 = l o g e s c o s ( θ ω y , x ) e s c o s ( θ ω y , x ) + k y K h ( t , θ ω k , x , I k ) e s c o s ( θ ω k , x ) L_5 = -log\frac{e^{s \cdot cos(\theta_{\omega_y, x})}}{e^{s \cdot cos(\theta_{\omega_y, x})}+\sum_{k\neq y}^{K}h(t,\theta_{\omega_k,x},I_k)e^{s \cdot cos(\theta_{\omega_k, x})}}

t t 是预先设定的超参数,指标函数 h ( t , θ ω k , x , I k ) h(t,\theta_{\omega_k,x},I_k) 定义如下:

h ( t , θ ω k , x , I k ) = e s ( t 1 ) ( c o s ( θ ω k , x ) + 1 ) I k . h(t,\theta_{\omega_k,x},I_k)=e^{s(t-1)(cos(\theta_{\omega_k},x)+1)I_k}.

明显,当 t = 1 t=1 时,此 SV-Softmax 损失函数和原先的 Softmax Loss 函数一样。图1对 SV-Softmax Loss 给了集合介绍。

3.2.1 Relation to Mining-based Softmax Loss

为了表现 SV-Softmax 相较于其它传统的 mining-based 损失函数(Focal Loss)的优势,我们使用了二元分类作为例子。假设,我们有两个样本 x 1 x_1 x 2 x_2 ,都是类别1里面的。图2给了一个图表, x 1 x_1 相对难一些, x 2 x_2 相对容易一些。传统的 mining-based Focal Loss 将容易和困难样本进行了再赋权值,于是

l o s s 1 l o s s 2 > l o s s 1 l o s s 2 \frac{loss_1*}{loss_2*} > \frac{loss_1}{loss_2}

通过这种方法,hard examples 的重要性就体现了出来。这个策略直接来自 loss 的视角,hard examples 的定义是不明确的。然而,我们的 SV-Softmax 损失则来自另一个角度。首先,我们依据决策边界在语义上定义 hard examples(支持向量)。然后,对于支持向量 x 1 x_1 ,我们降低它的概率,于是

l o s s 1 l o s s 2 > l o s s 1 l o s s 2 \frac{loss_1*}{loss_2} > \frac{loss_1}{loss_2}

总之,SV-Softmax 和 mining-based Focal Loss 的差异在图2中有展示。

3.2.2 Relation to Margin-based Softmax Losses

类似地,假设我们有一个属于类1的样本 x x ,它和 ground truth 类距离有一点远(图4中的红点)。原来的 softmax loss 目的是让 ω 1 T x > ω 2 T x c o s ( θ 1 ) > c o s ( θ 2 ) \omega_1^T x>\omega_2^T x \Longleftrightarrow cos(\theta_1)>cos(\theta_2) 。为了让目标函数更加的严苛,margin-based 损失函数通常从 ground truth 类视角,引入一个 margin 函数 f ( m , θ 1 ) = c o s ( m 1 θ 1 + m 3 ) m 2 f(m,\theta_1)=cos(m_1 \theta_1 + m_3)-m_2

c o s ( θ 1 ) f ( m , θ 1 ) > c o s ( θ 2 ) cos(\theta_1)\geq f(m,\theta_1)>cos(\theta_2) .

相反,我们的 SV-Softmax 损失函数从其它的非 ground truth 类别上增大特征 margin。尤其,我们对误分类的特征引入了一个 margin 函数 h ( t , θ 2 ) h^*(t,\theta_2)

c o s ( θ 1 ) h ( t , θ 2 ) > c o s ( θ 2 ) cos(\theta_1)\geq h^*(t,\theta_2)>cos(\theta_2) .

这里, h ( t , θ 2 ) = l o g [ h ( t , θ 2 ) e c o s ( θ 2 ) ] = t c o s ( θ 2 ) + t 1 h^*(t,\theta_2)=log[h(t,\theta_2)e^{cos(\theta_2)}]=t\cdot cos(\theta_2)+t-1 。此 SV-Softmax 损失在语义上从其它非 ground truth 类中增大特征 margin,而 margin-based 损失函数只在 ground truth 类中训练。图4展示了它们的几何上比较。图3 演示了 SV-Softmax 损失函数的流程,以及它和 margin-based 与 mining-based 损失函数的关系。

3.2.3 SV-X-Softmax

依据上面的讨论,我们的 SV-Softmax 损失函数在语义上将 mining-based 和 margin-based 损失函数融合为一个框架,但是从不同的角度。因此,我们能够在 SV-Softmax 损失函数中吸收二者的长处。尤其,为了加大 mining 范围,我们采取 margin-based 决策边界来表示为支持向量。因此,改进的 SV-X-Softmax 损失函数能够表述为:

L 6 = l o g e s f ( m , θ ω y , x ) e s f ( m , θ ω y , x ) + k y K h ( t , θ ω k , x , I k ) e s c o s ( θ ω k , x ) L_6 = -log\frac{e^{sf(m,\theta_{\omega_y,x})}}{e^{sf(m,\theta_{\omega_y,x})}+\sum_{k\neq y}^K h(t,\theta_{\omega_k,x},I_k)e^{s \cdot cos(\theta_{\omega_k,x})}}

X X 是 margin-based 的损失函数。它可以是 A-Softmax,AM-Softmax,或者 Arc-Softmax。指标函数 I k I_k 依据 margin-based 决策边界计算:

I k = { 0 , f ( m , θ ω y , x ) c o s ( θ ω k , x ) 0 1 , f ( m , θ ω y , x ) c o s ( θ ω k , x ) < 0. I_k=\left\{ \begin{aligned} 0 & , & f(m,\theta_{\omega_y,x})-cos(\theta_{\omega_k,x})\geq 0 \\ 1 & , & f(m,\theta_{\omega_y,x})-cos(\theta_{\omega_k,x})<0. \end{aligned} \right.

图5显示了 SV-X-Softmax 损失函数的几何含义。它非常优秀,因为从 margin-based 损失函数的动机出发,SV-X-Softmax 损失函数增大了特征 margin,通过将自驱动的 ground truth 类和其它类整合为一个框架。而从 mining-based 损失函数出发,它在语义上扩大了 mining 范围。

4. Optimization

这一节,我们证明 SV-Softmax 损失函数是可以训练的,而且通过传统的随机梯度下降很容易优化。原来的 softmax 损失函数和 SV-Softmax 相比较,区别在于最后一个全连接层 v = [ v 1 , v 2 ,   , v K ] T = [ c o s ( θ ω 1 , x ) ] T , [ c o s ( θ ω 2 , x ) ] T ,   , [ c o s ( θ ω K , x ) ] T v=[v_1,v_2,\cdots,v_K]^T=[cos(\theta_{\omega_1,x})]^T,[cos(\theta_{\omega_2,x})]^T,\cdots,[cos(\theta_{\omega_K,x})]^T .

对于前向传播,当 k = y k=y 时,它与原来的 softmax 损失函数一样(即 v y = c o s ( θ ω y , x ) v_y=cos(\theta_{\omega_y,x}) )。当 k y k\neq y ,它有两种情况。如果特征向量对于某一类很容易,它就和原来的 softmax loss 一样,即 v k = c o s ( θ ω k , x ) v_k=cos(\theta_{\omega_k,x}) 。否则,通过 l o g [ h ( t , θ ω k , x ) e c o s ( θ ω k , x ) ] = t c o s ( θ ω k , x ) + t 1 log[h(t,\theta_{\omega_k,x})e^{cos(\theta_{\omega_k,x})}]=t\cdot cos(\theta_{\omega_k,x})+t-1 。对于反向传播,我们用 chain rule 来计算偏微分。 W W 的导数和CNN中最后全连接层的特征 x x 通过如下来强调:

L 5 W = { L 5 v v ω y = L 5 v x , k = y L 5 v v ω k = L 5 v x , k y ; v y v k . L 5 v v ω k = t L 5 v x , k y ; v y < v k . \frac{\partial L_5}{\partial W}=\left\{ \begin{aligned} \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial \omega_y}=\frac{\partial L_5}{\partial v} x & , &k=y \\ \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial \omega_k}=\frac{\partial L_5}{\partial v}x & , & k\neq y;v_y \geq v_k.\\ \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial \omega_k}=t \frac{\partial L_5}{\partial v}x & , & k\neq y;v_y < v_k. \end{aligned} \right.

L 5 x = { L 5 v v x = L 5 v ω y , k = y L 5 v v x = L 5 v ω k , k y ; v y v k . L 5 v v x = t L 5 v ω k , k y ; v y < v k . \frac{\partial L_5}{\partial x}=\left\{ \begin{aligned} \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial x}=\frac{\partial L_5}{\partial v} \omega_y & , &k=y \\ \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial x}=\frac{\partial L_5}{\partial v} \omega_k& , & k\neq y;v_y \geq v_k.\\ \frac{\partial L_5}{\partial v}\frac{\partial v}{\partial x}=t \frac{\partial L_5}{\partial v} \omega_k& , & k\neq y;v_y < v_k. \end{aligned} \right.

L 5 v \frac{\partial L_5}{\partial v} 和原来的 softmax loss 一样。对于单张图片输入的整个流程如算法1所示。

5. Experiments

Pls read paper for more details.

猜你喜欢

转载自blog.csdn.net/calvinpaean/article/details/85603804
今日推荐