程序猿的自我修养 Weilit

人脸识别相关loss整理

2019-05-28

Triplet Loss(FaceNet)

方法:通过CNN将人脸映射到欧式空间的特征向量上,计算不同图片人脸的特征距离。

学习过程如下图所示:

facenet

每一次前向传播过程,网络输入的是一个三元组(a,p,n),anchor和positive属于同一个类别,anchor和negative同于不同类别。然后网络训练的目的是使,外加约束margin的情况下,anchor和positive的距离要小雨anchor和negative的距离。

\[||f(x_i^a)-f(x_i^p)||_2^2 + \alpha < ||f(x_i^a)-f(x_i^n)||_2^2\]

相应的损失函数如下:

\[\sum_i^N[||f(x_i^a)-f(x_i^p)||_2^2 - ||f(x_i^a)-f(x_i^n)||_2^2+\alpha]_+\]

选择三元组方法:

  • easy triplets:d(a, n) > d(a, p) + margin,这种情况loss为0,不需要优化
  • hard triplets:d(a, n) < d(a, p),即a,p的距离远
  • semi-hard triplets:d(a, p) < d(a, n) < d(a, p) + margin,即a, n的间距减去a, p的间距小于预设的margin

在线挖掘策略:

  • 原始形式:针对每个anchor依次选择pos,然后选择符合条件的neg
  • batch all:选择所有合格的triplet,然后求平均则
  • batch hard:选择距离最大的pos样本,选择距离最小的neg样本

Center Loss

Center Loss就是每一个样本到中心的距离的loss,注意中心要更新。

Softmax系列

Softmax loss

其实是softmax操作加上了交叉熵之后的损失

\[L = -\frac{1}{m}\sum_{i=1}^m\log\frac{e^{W_{y_i}^Tx_i+b_{y_i}}}{\sum_{j=1}^ne^{W_j^Tx_i+b_j}}\]

W-Norm Softmax

将偏置$b_j$置为0,然后权重和输入的内积用下面式子表示

\[W_j^Tx_i = ||W_j||\cdot||x_i||\cos\theta_j\]

再将权重进行$L_2$正则化,使得$||W_j||=1$,则Loss变为

\[L=-\frac{1}{m}\sum_{i=1}^m\log\frac{e^{||x_i||\cos(\theta_{y_i})}}{e^{||x_i||\cos(\theta_{y_i})}+\sum_{j=1,j\neq y_i}^n e^{||x_i||\cos\theta_j}}\]

A-Softmax(SphereFace)

由于当$m>1$时,$\cos\theta > \cos m\theta$,将正确分类的角度乘以$m$,loss变为

\[L=-\frac{1}{m}\sum_{i=1}^m\log\frac{e^{||x_i||\cos(m\theta_{y_i})}}{e^{||x_i||\cos(m\theta_{y_i})}+\sum_{j=1,j\neq y_i}^n e^{||x_i||\cos\theta_j}}\]

F-Norm SphereFace

将$x_i$进行归一化,同时乘以scale参数$s$,loss变为

\[L=-\frac{1}{m}\sum_{i=1}^m\log\frac{e^{s\cos(m\theta_{y_i})}}{e^{s\cos(m\theta_{y_i})}+\sum_{j=1,j\neq y_i}^n e^{s\cos\theta_j}}\]

AM-Softmax(CosinFace)

将正确分类的$\cos\theta$改为$\cos\theta - m$,loss变为

\[L=-\frac{1}{m}\sum_{i=1}^m\log\frac{e^{s(\cos(\theta_{y_i})-m)}}{e^{s(\cos(\theta_{y_i})-m)}+\sum_{j=1,j\neq y_i}^n e^{s\cos\theta_j}}\]

additive angular margin loss(ArcFace)

将正确分类的$\cos\theta$改为$\cos(\theta+m)$,由于$\cos\theta > \cos(\theta+m)$,所以增大了分类边界,loss变为

\[L=-\frac{1}{m}\sum_{i=1}^m\log\frac{e^{s\cos(\theta_{y_i}+m)}}{e^{s\cos(\theta_{y_i}+m)}+\sum_{j=1,j\neq y_i}^n e^{s\cos\theta_j}}\]

分类边界

分类边界如下所示:

faceloss

faceloss1


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏博主

留言