Center-Loss

摘要

  • 这篇博客是对论文A Discriminative Feature Learning Approach for Deep Face Recognition的总结。这篇论文中,作者提出了一种新的辅助损失函数(center loss),结合 softmax交叉熵损失函数,在不同数据及上提高了识别准确率。

简介

  • 卷积神经网络在许多领域都取得了state-of-the-art的结果,包括检测,识别等。通常情况下,CNN作为特征提取器提取deep features(最后一个隐层的输出)用于之后的识别/确认。在诸如动作识别、场景识别情况下,可能的测试样本类别包含在训练集中(closed-set),这种情况下模型性能下降较小;在人脸识别中,因为我们不可能实现收集所有人的人脸图像,因此在使用中总会遇到不在训练集中的人脸,这种情况下就要求CNN提取的deep features不仅是可分的,而且要具有较高的判别度。

相关工作

  • 基于triplet loss的image pair方法
    在这种方法中,训练样本两个样本对pair_1 : (positive_1, positive_2), pair_2 : (positive_1, negative_1),训练的目标是使得pair_1之间的距离小于pair_2之间的距离。这种方法的缺点在于样本对的数量会爆炸,假设有10个人,每个人10张图片,则共有81000( C110C210C12C190 C 10 1 C 10 2 C 2 1 C 90 1 )个样本对。
  • 基于孪生网络的方法
    着这种方法中,训练时输入一对图片,标签为0或者1,0表示图片属于不同的人,1表示图片属于相同的人。训练的目标在于使得属于同一个人的图片距离尽可能小,属于不同人的图片距离尽可能大。与triplet loss相同,这种方法同样面临样本对爆炸的可能。假设有10个人,每个人10张图片,则共有900( C110C210+C210C110 C 10 1 C 10 2 + C 10 2 C 10 1 )个样本对。

提出的方法

  • 通常在用CNN做人脸识别等分类问题时,我们通常采用softmax交叉熵作为损失函数,在close-set测试中模型性能良好,但在遇到unseen数据情况下,模型性能会急剧下降。在做分类时,模型的最后一层通常是全连接(很难不用全连接而使得最后一层的维度刚好和类别数相等),可以将最后一层看做线性分类器。一个直观的感觉是:如果模型学到的特征判别度更高,那么再遇到unseen数据时,泛化性能会比较好。为了使得模型学到的特征判别度更高,论文提出了一种新的辅助损失函数,之说以说是辅助损失函数是因为新提出的损失函数需要结合softmax交叉熵一起使用,而非替代后者。两种损失函数如下所示:
    这里写图片描述
    这里写图片描述

  • 在结合使用这两种损失函数时,可以认为softmax交叉熵负责增加inter-class距离,center-loss负责减小intra-class距离,这样学习到的特征判别度会更高。

实验

  • 作者在LFW和YTF上做了对比试验,结果如下表:
    Center-Loss_第1张图片

  • 从表中可以看出,在这两个数据集上,论文提出的方法取得了最高的acc。

结论

  • 虽然新提出的方法取得了良好的结果,但是也有一些不足之处,最麻烦的地方在于如何选择训练样本对。在论文中,作者也提到了,选取合适的样本对对于模型的性能至关重要,论文中采用的方法是每次选择比较难以分类的样本对重新训练,类似于hard-mining。同时,合适的训练样本还可以加快收敛速度。

引用

  1. A Discriminative Feature Learning Approach for Deep Face Recognition
  2. Linear classifier
  3. Closed set

你可能感兴趣的:(算法)