阅读A Discriminative Feature Learning Approach for Deep Face Recognition

来源:互联网 发布:c语言自定义标识符 编辑:程序博客网 时间:2024/05/16 03:47

论文链接:http://101.96.10.64/ydwen.github.io/papers/WenECCV16.pdf

原作者代码链接

Caffe:https://github.com/kpzhang93/caffe-face

MxNet:https://github.com/pangyupo/mxnet_center_loss


What:

对于分类任务来说,最后预测的是一个联合概率。这个概率可以由卷积获得。

打个比方:[1,0,0,1],[0,1,1,0]我可以预测为同一类。只要用[1,0,1,0]的filter。那么对于这个filter的卷积结果都是1,没毛病。

同时,我们发现了一个问题。这两个虽然是同一类,但是特征完全不同。也就是说,如果我们拿CNN中间的特征出来,也可能发现这种乌龙事件。

虽然分类效果很好,但是中间层的特征并不是按我们预想的那样分布的。

为了解决这个问题,常见的方案是 contrastive loss 和 triplet loss。作者则提出了一个center loss和softmax loss 联合训练。


How:

1.为每一类设置一个中心点(这个中心点实际上就是每一类特征的聚类中心。)

2.除了在继续做分类问题外,对每一个中心点(多维空间下,这个点其实就是一个多维向量),把图像的特征和这个中心点,做L2 Loss

让所有该类的特征都尽可能的靠近中心靠近。


我在Matlab上重现了这个实验 (https://github.com/layumi/2016_Center_Loss)


重现分为了几个部分:

1. minist数据集上,将网络fc层设置为2维,train一个10分类的网络。在test集上将2维结果可视化。 (使用的网络为论文中的LeNet++)

2. 加入centerloss,再train。再可视化。

3. 应用到大数据集(i.e.人脸数据集)上。(这一步我还没测)



P.S.我想了一下。。如果cosine距离的话,用不用这个loss差异不大啊。只是个人感受。

阅读全文
0 0
原创粉丝点击