人脸识别之 Center Loss

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层的输入。

猜你喜欢

转载自blog.csdn.net/leewanzhi/article/details/80301480
今日推荐