人脸损失函数的各种变体

柔情只为你懂 2022-02-15 18:17 331阅读 0赞

人脸损失函数的各种变体都是基于softmax的交叉熵损失函数进行改进的,因此本文首先介绍基础形式,然后对各种变体进行说明。

  • 基于softmax的交叉熵损失函数

    先放上两者的基本形式

E(x)=-\\sum p\{\_\{x\}\}\*log(q\{\_\{x\}\}) CE形式,其中p\{\_\{x\}\}为样本真实分布,q\{\_\{x\}\}为该样本观察分布

\\sigma (z\_\{j\})=\\frac\{e^\{z\{\_\{j\}\}\}\}\{\\sum\_\{k=1\}^\{K\}\{e^\{z\{\_\{k\}\}\}\}\} Softmax形式

基于softmax的交叉熵损失函数,就是利用softmax的值替代CE中样本的观察分布q\{\_\{x\}\},真实分布p\{\_\{x\}\}为one-hot向量。具体计算过程可参考tf损失函数的参数,其中labels传入样本真实分布,logits值传入softmax计算所需要的z\{\_\{k\}\}值。

  • 人脸其他损失函数变体的由来

针对上述基本形式,真实分布的one-hot向量不会改变,指数和对数计算函数不改变的情况下,影响计算结果的只有标量z\{\_\{j\}\}的值。而z\{\_\{j\}\}是通过w\{\_\{j\}\}\*x\{\_\{j\}\}+b\{\_\{j\}\}计算获得的,因此针对向量点乘的公式被拔得体无完肤。总的来说都是利用余弦函数在[0,\\pi]区间单调递减的特性来达到目标的。

  • L-Softmax Loss和A-Softmax(SphereFace)

L\{\_\{i\}\}=-log(\\frac\{e^\{\\left \\| w\{\_\{y\{\_\{i\}\}\}\} \\right \\|\\left \\| x\{\_\{i\}\} \\right \\|\\psi (\\theta y\{\_\{i\}\})\}\}\{e^\{\\left \\| w\{\_\{y\{\_\{i\}\}\}\} \\right \\|\\left \\| x\{\_\{i\}\} \\right \\|\\psi (\\theta y\{\_\{i\}\})\}+\\sum \{\_\{j\\neq y\{\_\{i\}\}\}\}e^\{\\left \\| w\{\_\{y\{\_\{i\}\}\}\} \\right \\|\\left \\| x\{\_\{i\}\} \\right \\|\\cos(\\theta\{\_\{j\}\})\}\}) 其中\\psi (\\theta )=\\left\\\{\\begin\{matrix\} cos(m\\theta ), 0\\leqslant \\theta \\leqslant \\frac\{\\pi \}\{m\} & \\\\ D(\\theta ), \\frac\{\\pi \}\{m\}< \\theta \\leqslant \\pi & \\end\{matrix\}\\right. L-Softmax形式

L\{\_\{ang\}\}=\\frac\{1\}\{N\}\\sum\_\{i\}-log(\\frac\{e^\{​\{\\left \\| x\{\_\{i\}\} \\right \\|\}\\psi (\\theta \{\_\{y\{\_\{i\}\}\}\},\{\_\{i\}\})\}\}\{e^\{​\{\\left \\| x\{\_\{i\}\} \\right \\|\}\\psi (\\theta \{\_\{y\{\_\{i\}\}\}\},\{\_\{i\}\})\}+\\sum \{\_\{j\\neq y\{\_\{i\}\}\}\}e^\{​\{\\left \\| x\{\_\{i\}\} \\right \\|\}cos (\\theta \{\_\{j\}\},\{\_\{i\}\})\}\}) 其中\\psi (\\theta \{y\{\_\{i\}\},i\})=(-1)^\{k\}cos(m\\theta\{y\{\_\{i\}\}\},\{\_\{i\}) -2k gif.latex A-Softmax形式

上述两个损失函数主要是针对向量夹角进行的改进,即样本与对应权重间的夹角由\\theta变为m\\theta,由于当m>1时,cos(\\theta )>cos(m\\theta ),这样以来当样本与权重在较大夹角情况下满足点乘值最大时,类别的泛化能力更好,另一方面使得类内间距更小,类间间距更大。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h6aGoyMDA3_size_16_color_FFFFFF_t_70 分别基于Softmax和L-Softmax训练后网络特征的可视化

  • LMCL(Large Margin Cosine Loss, CosFace)和AM-Softmax Loss

L\{\_\{lmc\}\}=\\frac\{1\}\{N\}\\sum\_\{i\}-log\\frac\{e^\{s(cos(\\theta \{\_\{y\{\_\{i\}\}\},\_\{i\}\})-m)\}\}\{e^\{s(cos(\\theta \{\_\{y\{\_\{i\}\}\},\_\{i\}\})-m) + \\sum \{\_\{j \\neq y\{\_\{i\}\} \}e^\{scos(\\theta \{\_\{j,i\}\})\}\}\}\} CosFace损失函数,![m\in [0, \frac{c}{c-1})]min _0 _frac_c_c-1

L\{\_\{AMS\}\}=-\\frac\{1\}\{n\}\\sum\_\{i=1\}^\{n\}log\\frac\{e^\{s\\cdot (cos\\theta \{\_\{y\{\_\{i\}\}\}-m\})\}\}\{e^\{s\\cdot (cos\\theta \{\_\{y\{\_\{i\}\}\}-m\})\}+\\sum \_\{j=1,j\\neq y\{\_\{i\}\}\}^\{C\}e^\{s\\cdot cos\\theta\{\_\{j\}\}\}\} AM-Softmax 损失函数

两篇论文的损失函数都是通过对余弦距离的结果进行的改进,即在原来余弦距离的基础上增加m的冗余。针对余弦距离的修改比针对角度距离的修改后分类效果更佳明显。至于s的由来,可参考论文CosFace中的说法:\\left \\| x \\right \\|对得分函数没有贡献,因此将该值使用s进行替代。

  • ArcFace

L=-\\frac\{1\}\{N\}\\sum\_\{i=1\}^\{N\}log\\frac\{e\{^\{s(cos(\\theta y\{\_\{i\}\} + m))\}\}\}\{e\{^\{s(cos(\\theta y\{\_\{i\}\} + m))\}\} + \\sum\{^\{n\}\}\{\_\{j=1,j\\neq y\{\_\{i\}\}\}\}e\{^\{scos\\theta\{\_\{j\}\}\}\}\} ArcFace的损失函数

论文对向量夹角进行的改进,不同于L-Softmax和A-Softmax成倍增加夹角的是该损失函数在原夹角基础上增加m的冗余。下图直观的反映了不同损失函数的夹角对决策面的影响。

20190426154604251.jpg

参考文献:

  1. 人脸识别:损失函数总结
  2. 人脸识别损失函数简介与Pytorch实现:ArcFace、SphereFace、CosFace

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读

    相关 网络流-最大流各种

    1:多个源点和汇点 一般的题目都是一个源点和一个汇点,但是如果存在多个源点和多个汇点了,并且它们都有对应的最大流出流量和最大流入流量该怎么办了? 答案很简单,我们增加一个超

    相关 损失函数

    交叉熵损失函数 多分类的情况,[来源][Link 1] ![这里写图片描述][70] l1 loss l2 loss hinge loss [L

    相关 pytorch损失函数

    > 学习深度学习的过程中一直会遇到损失函数,均方损失函数、交叉熵损失函数、负对数似然损失函数 > 有些时候觉得有点不清晰,所以总结、梳理一下,加深自己的理解 MSELo

    相关 损失函数

    深度学习中常见的损失函数分为两种:分类损失和回归损失                   ![1603578-20190718102755224-1925395869.png