2016年的 ECCV
1. Introduction
对于人脸识别来说,不仅要将不同类的特征分开,还应该将同一类内样本的特征变得紧凑。
本文提出一个新的损失函数:center loss,有效增强CNN对学到的深度特征的辨别力。
什么是辨别力?
如图:
不同类分开了,但是同一类的样本距离也比较大(图左)。
有了辨别力后,同一类内样本变得更紧凑了(图右)。
center loss为每一个类学习一个特征中心,让属于这个类的样本特征靠近特征中心。训练时,同时更新特征中心并最小化深度特征与所属类特征中心的距离。
本文采用softmax loss和center loss共同监督。
softmax 可以让不同类的深度特征分开。center loss可以将同一类的特征吸引到类中心。
这样,不仅可以扩大不同类的特征区别,还可以减小同一类的特征的区别。
另外提到3元组(非本文算法)的缺点,3元组的问题在于3元组数量巨大,需要挑选合适的三元组。挑选过程需要很大的计算资源,同时训练流程变得不方便。
2. The Proposed Approach
2.1 center loss
c_yi表示第yi个类的特征中心,xi表示属于第yi个类的样本的特征
随着提取的特征变化,计算出的特征中心也会变化,反向传播时还会对计算出的中心进行修正,因为CNN提取的特征不好会导致特征中心不能代表该类。
理论上特征中心应该将所有的训练集考虑,计算特征中心。但每一次迭代都这样做不现实。
为了解决这个问题,我们:
(1)计算mini-batch的特征中心
(2)为了避免由错误标签引起的巨大扰动,设置一个权重来控制特征中心的学习率。
将softmax loss也加进来,新的loss funtion为
Ls指softmax loss, Lc指center loss
lambda用于平衡两个损失,lambda的值对特征的辨别很重要。
如图,lamda = 1,可以让类内的特征离特征中心更近
具体学习细节:
(1)计算softmax loss与center loss
(2)反向传播,求梯度
(3)更新权重W
(4)更新特征中心
(5)更新卷积层的初始化参数
2.2 Disccussion
联合监督的必要性
如果只选择softmax loss,将会有很大的类内变化
如果只选择center loss,所有类的特征中心都会非常小,接近0,导致类间的区分就不大
3. Architecture
这里需要注意的是,第4个池化层输出的feature map会和第3个LC层输出的feature map相拼接,作为FC层的输入。