人脸识别损失函数

常见的损失函数一览:从softmax loss 到 triplet loss 再到各种 softmax 改型。

softmax loss

softmax是最常见的人脸识别函数。softmax 函数将人脸识别问题看做一个经典的分类问题。

公式中 N 是 batch size 的大小,k是类别数目。

Triplet loss

​ Triplet loss 采用三元组进行训练,所谓的三元组就是三个样例,如(anchor, pos, neg),其中,x和p是同一类,x和n是不同类。那么学习的过程就是学到一种表示,对于尽可能多的三元组,使得anchor和pos的距离,小于anchor和neg的距离。

center loss

​ center loss的核心是:为每一个类别提供一个类别中心,最小化每个样本与该中心的距离,从而减小类内差距。center loss 由两项构成,第一项是传统的 softmax loss, 第二项是样本到类中心的距离。

L-softmax

考虑一个两分类问题。原始的Softmax的目的是使得 $W_1^Tx > W_2^Tx$, 即 $||W_1||||x||cos(\theta_1) > ||W_1||||x||cos(\theta_2)$,在这个基础上,L-softmax(Large-margin softmax) 希望可以通过增加一个正整数变量m,使得产生的决策边界可以更加严格地约束上述不等式,让类内的间距更加的紧凑,类间的间距更加具有区分性。

其中,

cos函数在(0,π)内是单调递减的,乘上正整数m后内积会减小,这样可以加大类间的差别。通过控制m的大小,调整类间距离。m越大,类间距离就越大,类内更加紧凑。

sphereface(A-softmax)

SphereFace是在 softmax 的基础上将权重归一化,即式 $||W||=1, b=0$ 。它与前面提到的L-sofrmax最大的区别在于SphereFace将W权重归一化了。L-Softmax会同时从角度和权重长度上区分不同类别,而SphereFace只从角度上去区分不同类别。

cosface

cosFace的思想和sphereFace( A-softmax)的思想接近,其中主要做了以下三点的改进:

  • loss的形式做了稍微的改变,将超参数m由乘法运算变成了减法运算
  • 不仅对权重进行了正则化,还对特征进行了正则化
  • 再乘上一个 s 参数,当超球面过小时,分类映射到超球面上不好分类,这个 s 参数可以扩大超球面体积,帮助分类

arcface

arcface的思想和cosface类似,主要区别是将m放入了cos中,角度距离比余弦距离对角度的影响更加直接:

arcface 人脸识别流程图:

不同损失函数的分类边界如下图所示:


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!