CenterLoss原理详解(通透)

文章目录

(一)CenterLoss研究背景和意义

1.1、Research background

1.人脸识别规模大,尤其集外的样本不仅需要特征separable(可分离的),更加需要separable(可分离的)。

问题一:separable(可分离的)和separable(可分离的)这两个词怎么理解?

首先我们看一张图片(绿色框中的两个部分):

CenterLoss原理详解(通透)
先记住这两个图形样式的区别,后面自然就懂了。(区别就是人脸识别的Loss Function 不同于CNN中图像分类的Loss Function。在作者论文的Introduction做了详细的介绍。下面我会细讲。)
  1. 之前的方法在训练数据处理上面相当复杂(例如FaceNet中的Triplets Loss,并且Triplets Loss显著增加了计算的复杂度,使训练过程变得不方便。)

3、之前的主要方法:

1.基于pair的contractive loss, Deepid2
2.基于facenet的Triplet loss的方法
缺陷:

1.训练数据的选取复杂度太高
2.也不能用到明确的类别信息

; 1.2、研究成果以及意义

1.使得训练出来的特征对于同一个类别来讲更加紧致
2.使得训练更加简单方便,尤其输入训练数据这一块
3.能用到每一个类别的信息,信息丢失很少

(二)论文精度

2.1、Abstract

摘要核心

  1. 在此之前大部分分类还是基于softmax的准则
  2. 提出center loss,以及其作用:每个类别的样本距离其中间很近
  3. Softmax + center loss联合训练,容易优化
  4. 取得很好的性能

2.2、Introduction

  1. 很多任务都是Close-Set Identification,比如分类网络就ok,只用Separable的特征就能解决。

问题二:Close-Set Identification是什么意思?

答:Close-Set Identification:字面意思闭集合分类。比如我们的大部分图像分类就是Close-Set Identification,就是检测出的结果必须包含在训练数据集的种类中,比如ImageNet数据集,我们检测的图形中的目标类别必须包含在ImageNet数据集的1000个种类中。

  1. 人脸识别任务不是close-set identfication的,需要足够强的泛化能力去解决集外的人脸,这就需要人脸特征discriminative 。

作者论文中的原话:在人脸识别任务中,深度学习的特征不仅需要可分离,而且需要具有辨别性。由于预先收集所有可能的测试身份以进行训练是不切实际的,因此在cnn中的标签预测并不总是适用的。深度学习的特征需要具有足够的区别和普遍性,才能识别没有标签预测的新的不可见类。

  1. 构建discriminative的loss训练很难,包括之前讲的triplet loss,在数据处理很复杂.

  2. 提出center loss:

意义:
efficiently enhance the discriminative power of the deeply learned features in neural networks

(三)LossFounction

3.1、Softmax 与 CenterLoss 输出的区别

CenterLoss原理详解(通透)
Center Loss是通过将特征和特征中心的距离和softmax loss一同作为损失函数,使得类内距离更小,有点L1,L2正则化的意思。最关键是在训练时要使用2个Loss函数:Softmax Loss + lamda * Center Loss:
CenterLoss原理详解(通透)

; 3.2、SoftMax Loss

这篇文章对Softmax vs. Softmax-Loss: Numerical Stability写的超好,可以进一步加深理解。

The softmax loss function ispresented as follows:

CenterLoss原理详解(通透)
x i ∈ R d x_i\in R^d x i ​∈R d:表示属于y i y_i y i ​类(y y y指输出,i i i指y y y的第i i i行,即第i i i个类别。)的第i i i层的深层特征。;
d d d:指特征维度;
W j ∈ R d W_j \in R^d W j ​∈R d:表示最后一个全连接层中权重W ∈ R d × n W \in R^{d \times n}W ∈R d ×n的第j j j列;
b b b: 偏置,不用多说了;
m m m:The size of mini-batch(Batch Size);
n n n: The number of class;

上面的这些参数可以结合下图理解奥

CenterLoss原理详解(通透)
CenterLoss原理详解(通透)

The resulting 2-D deep features如下图所示

CenterLoss原理详解(通透)

由于最后一个完全连接的层就像一个线性分类器,所以不同类的深度特征通过决策边界(就是超平面)来区分。

CenterLoss原理详解(通透)
所以我们得出结论:

(1)在softmax loss的监督下,深入学习的特征是可分离的
(2)深度特征没有足够的辨别力,因为它们仍然显示出显著的类内变化。因此,不适合直接使用这些特征进行识别。

; 3.3、CenterLoss

CenterLoss公式如下:该公式有效地描述表征类内变化(the intra-class variations)。

CenterLoss原理详解(通透)
c y i ∈ R d c_{y_i}\in R^d c y i ​​∈R d:代表类别为y i y_i y i ​的所有feature的中心。具体来说即在训练过程中对每个类别在minibatch尺度上统计出该类别feature的中心,希望所有feature离中心的距离都尽量小。

Center Loss不能直接使用的原因?

答:

c y i c_{y_i}c y i ​​会随着深层特征的改变而更新。换句话说,我们需要考虑到整个训练集,并在每次迭代中平均每个类的特征,这是低效的,甚至是不切实际的。因此,Center Loss不能直接使用。这可能是这种Center Loss直到现在从未使用于CNN中的原因。

如何解决Center Loss不能直接使用。

答:

1、我们不是针对整个训练集更新中心,而是基于小批量进行更新。在每次迭代中,中心是通过平均相应类的特征来计算的(在这种情况下,一些中心可能不会更新)。
2、为了避免由于少数错误标记的样本而引起的大扰动,我们使用标量α \alpha α来控制中心的学习率。

CenterLoss原理详解(通透)
上图中:公式(3)是Center Loss基于x i x_i x i ​计算的梯度。
公式(4)中δ ( c o n d i t i o n ) δ(condition)δ(c o n d i t i o n ) 非0即1,指当y i y_i y i ​的类别与c j c_j c j ​的类别不一样时,c j c_j c j ​是不进行更新的。含义是类别中心的更新距离方式,具体来说就是对于每个类别j j j,将j类别中心减去每个j j j类别feature中心的值取平均,以此作为类别中心更新的步进值。

3.3、基于上述center loss的特征学习算法

结合Center Loss输出的内类聚合结果图

CenterLoss原理详解(通透)

; (四)推导反向传播的全过程

下图是论文中给出的更新过程:

CenterLoss原理详解(通透)

本人详细推导更新的完整过程

CenterLoss原理详解(通透)

Original: https://blog.csdn.net/weixin_54546190/article/details/124504683
Author: ☞源仔
Title: CenterLoss原理详解(通透)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/623774/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球