这篇论文 Centerloss来自Eccv2016。本文主要讲解其核心原理以及源码和实验。
论文地址:https://ydwen.github.io/papers/WenECCV16.pdf
代码地址:https://github.com/ydwen/caffe-face
简介
在人脸识别中,就是要学习到一种判别性好的特征。作者通过增加centerloss使得学习的特征类内距离更小。
在人脸识别的任务中,特征不仅仅是要可分,而且还要能够容易判别,如上图,左边的特征虽然可分,但是类间距离不够大,因此会导致错分现象,而好的特征应该像有图那样,很容易区分。
在人脸认证任务中,常用的步骤是通过提取神经网络最后一层的通过计算余弦或者欧式距离进行判断。作者通过分析softmax学习到的特征,发现softmaxloss后的特征每一类特征较分散,如下图所示,因此作者提出了centerloss,目的是想让每一类特征更加聚合。
Centerloss
首先回忆下softmax的公式:
softmax使得每一类可分,关注的是类间的距离,但并没有关注类内的问题。因此作者希望在每一个batch中,每一个样本都能向同一类的中心靠拢。即在分类时,也要向类心靠近,Loss如下:
因此中心的求解也是学习的过程,当x和c不一样则计算两者距离,同时c移到两者距离的中心处。
中心学习过程如下,在实现的过程,可将 c 等同于w的更新方式,具体可参考代码的实现过程。
实验
我们如果要想进行实验,可以使用自己的数据集在预训练的模型上微调,可参考论文的预处理方式,lfw 99.多不是问题。