《原始论文:CosFace: Large Margin Cosine Loss for Deep Face Recognition》
《原始论文:Additive Margin Softmax for Face Verification》
第二篇论文官方代码:GitHub:https://github.com/happynear/AMSoftmax
关于SphereFace的优化,同期出了两篇文章:
- 一个是Tencent AI Lab发表在cvpr2018的 Large Margin Cosine Loss(CosFace);
- 另外一个是happynear大神提出的AM-Softmax Loss。
二者核心原理一致,只是在论文写作中的其他侧重点有所不同。
一、Large Margin Cosine Loss(LMCL)
SphereFace中只对 W W W 进行归一化,CosFace中对 W W W 及 X X X 均进行了归一化,不过为了使得训练能收敛,增加了一个参数 s = 30 s=30 s=30,
1、Softmax Loss
首先从余弦的角度重新思考softmax损失。
softmax损失通过最大化地面真相类的后验概率将特征与不同类分开。给定一个输入特征向量 x i x_i xi 及其对应的标签 y i y_i yi,softmax损失可以表述为:
其中:
- p i p_i pi 表示被正确分类的后验概率。
- N N N 是训练样本的数量,
- C C C:类别的数量。
- f j f_j fj:通常表示为一个完全连接层的激活,该层具有权重向量 W j W_j Wj 和偏差 B j B_j Bj。为了简单起见,修正了偏差 B j = 0 B_j=0 Bj=0,结果 f j f_j fj由下式给出: f j = W j T x = ∣ ∣ W j ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ⋅ c o s θ f_j = W_j^Tx=∣∣W_j ∣∣·∣∣x∣∣·cosθ fj=WjTx=∣∣Wj∣∣⋅∣∣x∣∣⋅cosθ 。其中 θ j θ_j θj 是 W j W_j Wj 和 x x x 之间的角度。这个公式表明向量的范数和角度都对后验概率有贡献。
2、Large Margin Softmax Loss
缩小每个类别的可行角度(Feasible angle)范围,在这些类别之间产生角度Magin。
L i = − log ( e ∥ w y i ∥ ∥ x i ∥ ψ ( θ y i ) e ∥ w y i ∥ ∥ x i ∥ ψ ( θ y i ) + ∑ j e ∥ w j ≠ y i ∥ ∥ x i ∥ cos ( θ j ) ) (4) L_i = - \log \left (\cfrac{e^{\lVert \mathbf{w}_{y_i} \rVert \lVert \mathbf{x}_i \rVert \psi (\theta_{y_i})}}{e^{\lVert \mathbf{w}_{y_i} \rVert \lVert \mathbf{x}_i \rVert \psi (\theta_{y_i})} + \sum_{j} e^{\lVert \mathbf{w}_{j \neq y_i} \rVert \lVert \mathbf{x}_i \rVert \cos(\theta_j)}} \right) \tag4 Li=−log(e∥wyi∥∥xi∥ψ(θyi)+∑je∥wj=yi∥∥xi∥cos(θj)e∥wyi∥∥xi∥ψ(θyi))(4)
3、SphereFace(Angular Softmax Loss)
SphereFace的优化:为了开发有效的特征学习, W W W 的范数必须是不变的。 为此,通过 L 2 L2 L2 归一化来固定 ∣ ∣ W j ∣ ∣ = 1 ||W_j|| = 1 ∣∣Wj∣∣=1。
L ang = 1 N ∑ i − log ( e ∥ x i ∥ ψ ( θ y i , i ) e ∥ x i ∥ ψ ( θ y i , i ) + ∑ j ≠ y i e ∥ x i ∥ cos ( θ j , i ) ) {
{L}_{\text{ang}}}=\cfrac{1}{N}\sum\limits_{i}{-\log (\cfrac{
{
{e}^{\left\| {
{x}_{i}} \right\|\psi ({
{\theta }_{y_i,i}})}}}{
{
{e}^{\left\| {
{x}_{i}} \right\|\psi ({
{\theta }_{y_i,i}})}}+\sum\nolimits_{j\ne y_i}{
{
{e}^{\left\| {
{x}_{i}} \right\|\cos ({
{\theta }_{j}},i)}}}}}) Lang=N1i∑−log(e∥xi∥ψ(θyi,i)+∑j=yie∥xi∥cos