centor loss

A Discriminative Feature Learning Approach for Deep Face Recognition

卷积神经网络(CNNs)在计算机视觉领域得到了广泛的应用,对提高计算机视觉领域的研究水平具有重要意义。在现有的CNNs中,大多采用softmax损失函数作为监督信号来训练deep模型。为了提高深入学习特征的识别能力,本文提出了一种新的人脸识别监督信号,称为中心损失。具体来说,中心损失同时学习每个类的深层特征的中心,并惩罚深层特征与其对应的类中心之间的距离。更重要的是,我们证明了所提出的中心损失函数是可训练的,并且易于在CNNs中优化。在softmax损失和中心损失的共同监督下,我们可以训练一个鲁棒的CNNs,以获得具有两个关键学习目标的深层特征,即类间的离散性和类内的紧致性,这对人脸识别非常重要。

令人鼓舞的是,我们的CNN(在这样的联合监督下)在几个重要的人脸识别基准、(LFW)、YouTube人脸(YTF)和MegaFace Challenge上达到了最先进的准确性。特别是,我们的新方法在MegaFace(最大的公共域人脸基准)上达到了在小训练集(包含50万个图像和2万人以下)协议下的最佳结果,显著地改进了以前的结果,为人脸识别和人脸验证任务设置了新的技术水平。

1 Introduction

卷积神经网络(CNNs)在视觉领域取得了巨大的成功,在分类问题上,如物体[18,28,33,12,11]、场景[42,41]、动作[3,36,16]等方面都有了长足的进步。它主要得益于大规模培训数据[8,26]和端到端学习框架。

在一般的对象、场景或动作识别中,可能的测试样本的类别在训练集内,这也被称为闭集识别。因此,预测的标签控制了性能,softmax loss能够直接解决分类问题。这样,标签预测(最后一个完全连接的层)就像一个线性分类,并且深入学习的特征易于分离。

**对于人脸识别任务来说,深入学习的特征不仅需要是可分离的,而且需要是有区别的。**由于预先收集所有可能用于训练的测试身份是不实际的,因此CNNs中的标签预测并不总是适用的。深入学习的特征需要具有足够的识别性和泛化性,以便在没有标签预测的情况下识别出新的不可见类。区分能力表征了紧致类内变化和可分离类间差异的特征,如图1所示。

最近邻(NN)[7]或k-最近邻(k-NN)[9]算法可以很好地分类判别特征,这些算法不一定依赖于标签预测。然而,softmax的损失只会鼓励特点由此产生的特征对于人脸识别来说不够有效。

在CNNs中构造高效的判别特征学习损失函数是非常重要的。由于随机梯度下降(SGD)[19]优化了基于小批量的cnn,不能很好地反映深部特征的全局分布。由于训练集规模庞大,在每次迭代中输入所有的训练样本是不切实际的。作为替代方法,对比损失[10,29]和三元组损失[27]分别构造图像对和三元组损失函数。

然而,与图像样本相比,训练二元组或三元组的数量显著增加。它不可避免地会导致收敛速度慢和不稳定。通过仔细选择图像对或三元组,可以部分地缓解该问题。但这明显增加了计算复杂度,训练过程变得不方便。

本文提出了一种新的损失函数,即中心损失函数,有效地提高了神经网络中深度学习特征的识别能力。具体来说,我们学习每个类的深层特征的中心(与特征具有相同维度的向量)。在训练过程中,我们同时更新中心,并最小化深度特征与其对应的类中心之间的距离。

CNN在softmax损失和中心损失的联合监督下训练,并用一个超参数来平衡这两个监督信号。直观地说,softmax损失迫使不同类的深层特征保持分离。损失丢失有效地将同一类的深层特征拉到它们的中心。

在联合监督下,不仅扩大了类间特征差异,而且减少了类内特征差异。因此,深度学习的特征的辨别能力可以得到高度增强。我们的主要贡献总结如下。

1.我们提出一个新的损失函数(称为中心损失)来最小化深度特征的类内距离。据我们所知,这是第一次尝试使用这种损失函数来帮助监督CNNs的学习。实验结果表明,在中心损失和softmax损失的共同监督下,可以获得高分辨的特征,从而实现鲁棒的人脸识别。

2.结果表明,提出的损失函数在CNNs中易于实现。我们的CNN模型是可训练的,并且可以通过标准SGD直接优化。

3.我们对MegaFace Challenge[23]的数据集(最大的公共域人脸数据库,有100万张人脸可供识别)进行了广泛的实验,并在小训练评估协议下建立了最新的技术设定。我们同时验证我们的新方法在野生标记脸(LFW)[15]和YouTube上的出色性能面(YTF)数据集[38]。

3 The Proposed Approach

在本节中,我们将详细介绍我们的方法。我们首先使用一个玩具例子直观地展示了深入学习的特征的分布。受分布的启发,我们提出了中心损失来提高深度学习特征的判别能力,并进行了讨论。

3.1 A toy example

在本节中,给出了MNIST[20]数据集上的一个玩具示例。我们将LeNets[19]修改为一个更深更宽的网络,但将最后一个隐藏层的输出数目减少到2(这意味着深度特征的维数是2),因此我们可以直接在二维表面上绘制特征可视化。更多表1给出了网络体系结构的详细信息。softmax损失函数如下所示。

LS=Σi=1mlogeWyiTxi+byiΣj=1neWjTxi+bj\mathcal{L}_S=-\Sigma^m_{i=1}log\frac{e^{W^T_{y_i}x_i}+b_{y_i}}{\Sigma^n_{j=1}e^{W^T_jx_i}+b_j} (1)

图2绘制了由此产生的二维深部特征,以说明分布情况。由于最后一个完全连接层的作用类似于线性类,因此不同类的深层特征由决策边界来区分。从图2我们可以看到:i)在softmax损失的监督下,深度学习的特征是可分离的;ii)深度特征没有足够的区分性,因为它们仍然显示出显著的类内变化。因此,直接利用这些特征进行识别是不合适的。

centor loss

3.2 The center loss

那么,如何开发一个目标损失函数来提高深度学习特征的识别能力呢?直观地说,在保持不同类的特征可分离的同时最小化类内变化是关键。为此,我们提出了中心损失函数,如等式2所示。

LC=12Σi=1mxicyi22\mathcal{L_C}=\frac{1}{2}\Sigma^m_{i=1} \parallel x_i-c_{y_i} \parallel^2_2 (2)

cyiRdc_{y_i}\in \R^d代表第yiy_i类深度特征的中心。该公式有效地刻画了类内变量。理想情况下,cyic_{y_i}应该随着深度特性的变化而更新。换句话说,我们需要考虑整个训练集,并平均每个迭代中每个类的特征,这是低效的,甚至是不切实际的。因此,中心损失不能直接使用。这可能是这样一个中心损失从未在CNNs使用到现在的原因。

为了解决这个问题,我们做了两个必要的修改。首先,我们不是针对整个训练集更新中心,而是基于小批量执行更新。在每次迭代中,中心是通过平均相应类的特征来计算的(在这种情况下,一些中心可能不会更新)。第二,为了避免少量的误标记样本造成的大扰动,我们使用标量α\alpha来控制中心的学习速率。梯度的计算公式为:

centor loss

如果条件被满足,δ(condition)=1\delta(condition)=1α\alpha的范围在[0,1]间。

我们采用softmax损失和center loss的联合监督来训练神经网络识别特征学习。公式如式5所示。

centor loss

明显,监督学习的中心损失的神经网络是可训练的,可以通过标准的SGD操作。标量λ\lambda用于平衡两个损失函数。如果λ\lambda设为0,则传统的softmax损失可被视为此联合监控的特殊情况。在算法1中,我们在联合监督下总结了CNNs中的学习细节。
centor loss

我们还进行了实验来说明λ\lambda如何影响分布。图3显示了不同的λ\lambda导致不同的深度特征分布。适当的λ\lambda,可以显著提高深层特征的分辨力。此外,特征在很大范围内是有区别的,因此,联合监督有利于深入学习特征的鉴别能力,这对人脸识别至关重要。

centor loss

4.2 Experiments on the parameter λ\lambda and α\alpha

超参数 λ\lambda 支配着类内的变化,α\alpha 在模型c中控制中心c的学习率。两者对我们的模型都是必不可少的。因此我们进行了两个实验来研究这两个参数的灵敏度。
centor loss

是必不可少的。因此我们进行了两个实验来研究这两个参数的灵敏度。

[外链图片转存中…(img-HzdmG6iH-1594109777229)]

在第一个实验中,我们固定α\alpha为0.5,使λ\lambda在0到0.1之间变化来学习不同的模型。这些模型在LFW数据集上的验证精度如图5所示。很明显,仅仅使用softmax loss(在本例中 λ\lambda 为0)不是一个好的选择,这会导致验证性能差。适当选择 λ\lambda 值可以提高深度学习特征的验证精度。我们还观察到,我们模型的验证性能在 λ\lambda 很大范围上保持了稳定。在第二个实验中,我们固定 λ=0.003\lambda=0.003α\alpha在0.01到1之间变化来学习不同的模型。这些模型在LFW上的验证精度如图5所示。同样,我们模型的验证性能在α\alpha很大范围上保持了稳定。