A Discriminative Feature Learning Approach for Deep Face Recognition

Yandong Wen1, Kaipeng Zhang1, Zhifeng Li1(B), and Yu Qiao1,2

1 Shenzhen Key Lab of Computer Vision and Pattern Recognition,
Shenzhen Institutes of Advanced Technology, CAS, Shenzhen, China
yandongw@andrew.cmu.edu, {kp.zhang,zhifeng.li,yu.qiao}@siat.ac.cn

2 The Chinese University of Hong Kong, Sha Tin, Hong Kong,Sha Tin,Hong Kong

Abstract.

卷积神经网络 (CNN) 已广泛应用于计算机视觉社区,显着提高了最新技术水平。在大多数可用的 CNN 中,使用的是 softmax 损失函数作为训练深度模型的监督信号。为了增强深度学习特征的判别能力,本文提出了一种新的监督信号,称为中心损失,用于人脸识别任务。具体来说,中心损失同时学习每个类的深度特征的中心,并惩罚深度特征与其对应的类中心之间的距离。更重要的是,我们证明了所提出的中心损失函数在 CNN 中是可训练且易于优化的。在 softmax loss 和 center loss 的联合监督下,我们可以训练一个鲁棒的 CNNs 来获得具有两个关键学习目标的深度特征,类间分布和类内紧凑性,这对人脸识别非常重要.令人鼓舞的是,我们的 CNN(在这种联合监督下)在几个重要的人脸识别基准测试、野外标记人脸 (LFW)、YouTube 人脸 (YTF) 和 MegaFace Challenge 上实现了最先进的准确性。特别是,我们的新方法在小型训练集(包含 500000 张以下图像和 20000 人以下)的协议下在 MegaFace(最大的公共领域人脸基准)上取得了最好的结果,显着改善了以前的结果并设置了人脸识别和人脸验证任务的最先进性能。

Keywords: Convolutional neural networks · Face recognition · Discriminative feature learning · Center loss

5 Conclusions

在本文中,我们提出了一种新的损失函数,称为中心损失。 通过将中心损失与 softmax 损失结合起来共同监督 CNN 的学习,可以高度增强深度学习特征的判别能力,以实现鲁棒的人脸识别。 在几个大规模人脸基准上的大量实验令人信服地证明了所提出方法的有效性

3 The Proposed Approach

3.1 A Toy Example

在本节中,展示了一个关于 MNIST [20] 数据集的玩具示例。 我们将 LeNets [19] 修改为更深更宽的网络,但将最后一个隐藏层的输出数量减少到 2(这意味着深度特征的维度为 2)。 所以我们可以直接在二维表面上绘制特征以进行可视化。 表 1 给出了网络架构的更多细节。 softmax 损失函数如下所示在这里插入图片描述在方程式(1)中,xi∈Rd表示第i个深度特征,属于第 yi 类。 d 是特征维度。 Wj ∈ Rd 表示最后一个全连接层中权重 W ∈ Rd×n 的第 j 列,b ∈ Rⁿ 是偏置项。 mini-batch 的大小和类的数量分别为 m 和 n。 为了简化分析,我们省略了偏置 b。 (实际上,性能几乎没有区别)在这里插入图片描述Table 1. 我们在玩具示例中使用的 CNN 架构,称为 LeNets++。 一些卷积层之后是最大池化。 (5, 32)/1,2 × 2 表示具有 32 个大小为 5 × 5 的滤波器的 2 个级联卷积层,其中 stride 和 padding 分别为 1 和 2。 2/2,0 表示网格为 2 × 2 的最大池化层,其中 stride 和 padding 分别为 2 和 0。 在 LeNets++ 中,我们使用参数整流线性单元 (PReLU) [12] 作为非线性单元

由此产生的二维深度特征绘制在图 2 中以说明类的分布。 由于最后一个全连接层就像一个线性分类器,不同类别的深层特征通过决策边界来区分。 从图 2 中我们可以观察到:(i)在 softmax 损失的监督下,深度学习的特征是可分离的,(ii)深度特征的区分度不够,因为它们仍然表现出显着的类内变化。 因此,不适合直接使用这些特征进行识别.
在这里插入图片描述Fig. 2. (a) 训练集 (b) 测试集中深度学习特征的分布,均在 softmax 损失的监督下,我们使用 50K/10K 训练/测试分割。 不同颜色的点表示不同类别的特征。 Best viewed in color. (Color figure online)

3.2 The Center Loss

那么,如何开发一个有效的损失函数来提高深度学习特征的判别能力呢? 直观地说,在保持不同类的特征可分离的同时最小化类内变化是关键。 为此,我们提出了中心损失函数,如等式(2)所示:在这里插入图片描述cyi ∈ Rd 表示深度特征的第 yi 个类别中心。 该公式有效地表征了类内变化。 理想情况下,cyi 应该随着深层特征的变化而更新。 换句话说,我们需要考虑整个训练集,并在每次迭代中平均每个类的特征,这是低效甚至不切实际的。 因此不能直接使用中心损失。 这可能是直到现在 CNN 中从未使用过这种中心损失的原因.

为了解决这个问题,我们进行了两个必要的修改。 首先,我们不是根据整个训练集更新中心,而是基于小批量执行更新。 在每次迭代中,通过平均相应类的特征来计算中心(在这种情况下,一些中心可能不会更新)。 其次,为了避免由少数错误标记的样本引起的大扰动,我们使用标量 α 来控制中心的学习率

LC 相对于 xi 的梯度【梯度这不是向量吗?】和 cyi 的更新方程计算如下:
在这里插入图片描述其中 δ(condition) = 1 如果满足条件,则 δ(condition) = 0 如果不满足。 α 受限于 [0, 1]。 我们采用 softmax 损失和中心损失的联合监督来训练 CNN 进行判别特征学习。 公式在方程式(5)中给出:在这里插入图片描述显然,由中心损失监督的 CNN 是可训练的,并且可以通过标准 SGD 进行优化。 标量 λ 用于平衡两个损失函数。 如果 λ 设置为 0,则传统的 softmax 损失可以被视为这种联合监督的特例。 在算法 1 中,我们总结了具有联合监督的 CNN 中的学习细节。在这里插入图片描述我们还进行了实验来说明 λ 如何影响分布。 图 3 显示不同的 λ 导致不同的深度特征分布。 通过适当的λ,可以显着增强深度特征的判别能力。 此外,特征在很宽的 λ 范围内具有判别性。 因此,联合监督有利于深度学习特征的判别力,这对人脸识别至关重要。在这里插入图片描述Fig. 3. softmax loss 和 center loss 联合监督下深度学习特征的分布。 不同颜色的点表示不同类别的特征。 不同的 λ 导致不同的深度特征分布(α = 0.5)。 白点 (c0, c1,…,c9) 表示深度特征的 10 个类别中心。Best viewed in color. (Color figure online)

3.3 Discussion
The necessity of joint supervision. 如果我们只使用 softmax 损失作为监督信号,那么得到的深度学习特征将包含较大的类内变化。 另一方面,如果我们仅通过中心损失来监督 CNN,那么深度学习的特征和中心将退化为零(此时中心损失非常小)。 简单地使用它们中的任何一个都无法实现判别特征学习。 因此有必要将它们结合起来共同监督 CNN,正如我们的实验所证实的那样

Compared to contrastive loss and triplet loss. 最近,还提出了对比损失 [29,37] 和三重损失 [27] 来增强深度学习的面部特征的判别力。 然而,当从训练集中构成样本对或样本三元组时,对比损失和三元组损失都会遭受剧烈的数据扩展。 我们的中心损失与 softmax 损失具有相同的要求,并且不需要对训练样本进行复杂的重组。 因此,我们 CNN 的监督学习更加高效且易于实现。 此外,我们的损失函数更直接地针对类内紧凑性的学习目标,这对判别性特征学习非常有利

4 Experiments

必要的实现细节在Sect. 4.1中给出。然后我们在Sect 4.2. 中研究了参数λ和α的敏感性。在Sect 4.3 和 4.4 中,在几个公共领域人脸数据集(LFW [15]、YTF [38] 和 MegaFace Challenge [23])上进行了大量实验,以验证所提出方法的有效性。在这里插入图片描述Fig. 4. 用于人脸识别实验的 CNN 架构。 采用联合监督。 卷积层和局部卷积层中的滤波器大小均为 3×3,步长为 1,然后是 PReLU [12] 非线性单元。 三个局部卷积层中的权重分别在 4 × 4、2 × 2 和 1 × 1 区域中局部共享。 卷积层的特征图数为 128,局部卷积层的特征图数为 256。 最大池化网格为 2 × 2,步长为 2。第 4 个池化层和第 3 个局部卷积层的输出连接起来作为第 1 个全连接层的输入。 全连接层的输出维度为512。

4.1 Implementation Details

Preprocessing. 最近提出的算法[40]检测到图像中的所有人脸及其标志。 我们使用 5 个标志(两个眼睛、鼻子和嘴角)进行相似变换。 当检测失败时,如果图像在训练集中,我们简单地丢弃该图像,但如果它是测试图像,则使用提供的标志。 人脸被裁剪为 112 × 96 RGB 图像。 遵循先前的约定,RGB 图像中的每个像素(在 [0, 255] 中)通过减去 127.5 然后除以 128 进行归一化

Training data. 我们使用网络收集的训练数据,包括 CASIA-WebFace [39]、CACD2000 [4]、Celebrity+ [22]。 删除测试数据集中出现的带有身份的图像后,大约有 17,189 个人的 0.7M 图像。 在小节 4.4,我们只使用0.49M的训练数据,遵循小训练集的协议。 图像被水平翻转以进行数据增强。 与[27](200M)、[34](4M)、[25](2M)相比,是小规模的训练集

Detailed settings in CNNs. CNN 中的详细设置。 我们使用 Caffe [17] 库和我们的修改来实现 CNN 模型。 本节所有的CNN模型都是相同的架构,细节如图4所示。 为了公平比较,我们分别在 softmax loss(模型A)、softmax loss和对比损失(模型 B)、softmax loss 和 center loss(模型 C) 的监督下训练了三种模型。 这些模型在两个 GPU (TitanX) 上以 256 的批量大小进行训练。 对于模型 A 和模型 C,学习率从 0.1 开始,并在 16 K、24 K 次迭代时除以 10。 一次完整的训练在 28 K 次迭代后完成,大约需要 14 小时。 对于模型 B,我们发现它收敛得更慢。 因此,我们将学习率初始化为 0.1,并在 24 K、36 K 次迭代时将其切换。 总迭代次数为 42 K,花费 22 小时

Detailed settings in testing. 测试中的详细设置。 深层特征取自第一个 FC 层的输出。 我们提取每个图像及其水平翻转图像的特征,并将它们连接起来作为表示。 分数由 PCA 后两个特征的余弦距离计算得出。 最近邻 [7] 和阈值比较用于识别和验证任务。 请注意,我们只使用单一模型进行所有测试

4.2 Experiments on the Parameter λ and α

超参数 λ 主导类内变化,α 控制模型 C 中心 c 的学习率。它们对我们的模型都是必不可少的。 所以我们进行了两个实验来研究这两个参数的敏感性。在这里插入图片描述图 5. LFW 数据集上的人脸验证精度,分别由(a)具有不同 λ 和固定 α = 0.5 的模型实现。 (b) 具有不同 α 和固定 λ = 0.003 的模型。

在第一个实验中,我们将 α 固定为 0.5,并将 λ 从 0 变化到 0.1 以学习不同的模型。 这些模型在 LFW 数据集上的验证精度如图 5 所示。很明显,简单地使用 softmax 损失(在这种情况下 λ 为 0)并不是一个好的选择,导致验证性能不佳。 正确选择λ的值可以提高深度学习特征的验证准确性。 我们还观察到,我们模型的验证性能在很宽的 λ 范围内基本保持稳定。 在第二个实验中,我们固定 λ = 0.003 并将 α 从 0.01 变化到 1 以学习不同的模型。 这些模型在 LFW 上的验证精度如图 5 所示。同样,我们模型的验证性能在很宽的 α 范围内保持基本稳定。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值