Center Loss

《A Discriminative Feature Learning Approach for Deep Face Recognition》


  可鉴别性的特征学习用于人脸识别,对每个类别维护一个Center vector,然后对损失函数增加一项到Center向量的L2损失。使得各个类别的类内分布变小实现intra-class的compactness,从而特征更具区分性,对于人脸识别来说能够增大识别的把握。


Key Words:Convolutional neural networks 、Face recognition、Discriminative feature learning、 Center loss


ECCV, 2016

作者:Yandong Wen,Kaipeng Zhang,Zhifeng Li…

https://github.com/jxgu1016/MNIST_center_loss_pytorch

Agile Pioneer  

提出问题

  我们在做neural network 训练的时候一般使用的都是softmax loss,softmax loss能够有效的区分开inter-class,让我的分类任务得到解决,但是softmax loss的局限在于它只能get到inter-class的difference。

  softmax loss的问题是不能够get到intra-class的compactness,所以论文中用MNIST为例把deep feature的dimension改成2方便可视化如上图。可以看出我们用softmax loss能够把inter-class的bound找到,但是每个类别仍然存在很大的类内误差,这是不利于我们用这个特征来识别的尤其是对人脸识别来说,验证是困难的,因此作者提出了center loss来解决这个问题。

softmax loss 和 center loss联合

  通过添加center loss 让简单的softmax 能够训练出更有类内紧密性的特征

  下图是使用softmax loss结合center loss后产生的deep feature的distribution,我们能够发现deep feature在学习到了如果区分类间差异的同时也缩小了类内差异,通过不同的lamada值能够产生不同的效果,看这个图能给出的启示是可以用这个特征利用kmeans做一个完美的聚类分析,得到一个高效的类别,对于细分任务是有帮助的。

计算Center Vector

  如果想计算一个类别所有样本的中心,那么一定要通过计算该类别所有的样本才行,但是我们在真实的模型训练当中每次都用全量数据去训练是不现实的,都是用mini-batch的方式来训练的,所以我们在每轮迭代计算center loss的同时也要更新center vector。

  给每一个类别都训练出来一个center vector其shape和deep feature要保证一样,然后在训练过程中对比样本的deep feature和center vector,计算欧氏距离得到的loss和softmax loss一起去更新参数。

MNIST做实验

Only softmax loss

Add center loss

参数设置

α \alpha α一般取0.5,是CenterVector更新的参数

λ \lambda λ一般取0.1-0.0001之间,需要实验调参,用于loss中占比的参数

实现参考https://github.com/KaiyangZhou/pytorch-center-loss

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值