本文主要讲centerloss 的原理,及其创新点。然后用caffe 跑自己的数据(CASIA-WebFace | MsCelebV1-Faces-Aligned)
Reference paper:A Discriminative Feature Learning Approach for Deep Face Recognition ECCV:2016
github:https://github.com/ydwen/caffe-face
1、简介
一句话:通过添加center loss 让简单的softmax 能够训练出更有内聚性的特征。
作者意图,在配合softmax适用的时候,希望使学习到的特征具有更好的泛化性和辨别能力。通过惩罚每个种类的样本和该种类样本中心的偏移,使得同一种类的样本尽量聚合在一起。
相对于triplet(Google FaceNet: A Unified Embedding for Face Recognition and Clustering:2015)和contrastive(汤晓鸥 Deep LearningFace Representation by Joint Identification-Verification:2014)来说,这个目标其实相对‘清晰’, 所以网络收敛的速度甚至比仅仅用softmax更快,而且不需要像前两者那样构造大量的训练对。
看一张图:
在左图中,我们发现一个类如果太胖,那么出现的结果就是类内距离>类间距离。(任意红点之间的距离应该小于红蓝之间的距离。)
左边时softmax一般结果,右边时centerloss结果。我们期望特征不仅可分,而且时必须差异大。如右边图。
2、centerloss
2-1 softmax loss
其中:xi 代表 d 维空间中第 i 个deep feature。属于第 yi 类。
d——特征空间的维度。
W——全连接层的参数矩阵。W={d*n}。d行n列。联想线性分类器 f=Wx+b。
Wj——W的第j 列
m——The size of mini-batch 。
n——and the number of class。
b——偏置。
将问题简化(人不要为难自己,看一大堆烂公式,还不明白,代个数试试呗)
假设batch=1. 也就是m=1. 数据集就一样图片。那么公式就是简化成: