人脸常用loss

arcface loss
cosface loss
sphereFace
参考: https://zhuanlan.zhihu.com/p/119396037

人脸这些损失函数总的思想就是: 最大化类间距离, 最小化类内距离
这篇博客总结面试人脸 loss 和 可能的面试问题。
loss 包括:
arcface loss (Addictive Augular Margin Loss)
cosface loss (Large margin cosine loss)
面试问题:

  1. 为什么有些loss里权重和特征要做 normalization?
    参考: https://cloud.tencent.com/developer/article/1484208
    SphereFace只对权重做了normalization, cosface和arcface对权重和特征都做了normalization。总结一下,要点如下:
    为什么对weights做normalize?
    1) 对weights做normalization能有一个比较好的几何上的解释。 考虑传统的softmax loss, 在不做normalize的情况下,不同类的决策区域在cos space 会有重叠,做了norm之后就不会有重叠。
    2) SphereFace里面用实验说明了权重的模长和对应类别的样本多少有关,类别样本相对越多,模长越大。可以认为模长大小是学出来的一个关于数据集样本分布的先验。因此,固定weights的模长可以认为是强行去掉这种有关数据集分布的先验,相当于告诉网络,无论类别本身的 sample 数量是多还是少,所有类别的地位都应该是平等的。

    为什么对特征做normalize?
    1)传统的softmax loss隐式地同时学习了特征的 l2 norm 和 夹角的cosine 值。这种对l2 norm 自适应的学习导致特征在cos space的可区分度相对较弱。所以我们希望固定l2 norm, 使得在学习过程中模型依靠cos 值来获得强辨识力的特征,从而获得在cos space的强区分度。(对于arcface 而言,就是arc space)
    2)考虑一个特殊情况,当样本已经分对时,或者说这个样本已经距离类中心 w i w_i wi非常近时,损失函数会随着模长增大而减小(softmax增大),但实际上,这并没有让模型变好,所以我们应该对这个特征做normalize的限制,让它专注于别的方式提升模型精度。
    3)有paper分析,在学习过程中,难样本模长比较小,简单样本模长比较大,把特征做normalize之后,相当于增大了难样本的反传梯度。
    注意特征scale要是一个恰当值,不能太小。(cosface 用的64)

  2. ** 为什么要加margin?**
    考虑W和f都是归一化的,训练目标从cos(θ)cos(θ)变成cos(4⋅θ)cos(4⋅θ)、cos(θ)−0.35cos(θ)−0.35或cos(θ+0.5)cos(θ+0.5),,都减小了输出激活值,如果要达到目标置信度100%,就需要优化出比Softmax更小的夹角θθ,也就是说large margin的优化目标是让权值向量W和特征向量f之间的夹角更小。large magin是显式的类内夹角约束,目标是让同一类的所有特征向量都拉向该类别的权值向量。

为什么imagenet里面的时候为什么不对特征做normalize,不加margin呢?人的识别也可以看成是分类的啊。对于分类问题,什么时候需要normalize,什么时候需要加margin呢?

自己的理解
在人脸识别的里面,权重向量是固定长度的,比如1, 而在imagenet的里面并没有对权重向量作固定,所以即便是当角度不变的时候softmax-loss也会随着权向量和特征向量的模长的乘积的增加而变小,但是这个增加并不一定就是特征向量长度的增加,也有可能是权重向量的增加,所以并不一定要对 imageNet里面的作normalize,(或许加了normalize会变好呢)

同样的道理,加了margin之后也并不一定会继续优化角度,而且优化角度并不一定就对分类效果好。 感觉本质的原因是imagenet里的分类标准是由 权重向量的长度,特征向量的长度,以及它们之间的夹角共同决定的,并不是只有角度来决定。 所以没有加Margin.

################################################

传统的 softmax loss,考虑分类的情况,它定义的决策边界 可以认为是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值