AIHIA梦工厂

标题: Arcface loss的原理通解 [打印本页]

作者: 迪迦奥特曼    时间: 2023-10-11 02:14 PM
标题: Arcface loss的原理通解
本帖最后由 迪迦奥特曼 于 2023-10-11 02:17 PM 编辑

作者:刘一手
——————————————————————————————————————————————————————————

【Arcface loss是专门为人脸识别任务设计的损失函数】

1 为什么需要设计Arcface loss?
人脸识别的难点在于不同人脸之间的特征难以分辨,需要我们选择损失函数来增大不同人脸的差异性,一般的损失函数是通过类内紧凑的方法来实现不同特征的分离,但是对于以下的情况效果不好:当两个特征点的中心太接近时,不管怎么进行类内紧凑都无法实现特征分离。

因此我们需要设计其他方法来对特征进行分类,方法有两种:
第一种:减小类间距离,如Center loss;
第二种:增加类间距离。

我们先看常规的softmax loss在分类任务中是怎么做的。在这之前,我们需要了解Softmax loss、Softmax函数、交叉熵之间的关系:
看下面这张图(https://zhuanlan.zhihu.com/p/374018199):



最重要的一个概念,Softmax loss的完整叫法是Cross Entropy loss with softmax,由三部分组成,分别是全连接层(Fully Conneckted Layer)、Softmax函数(Softmax Function)、交叉熵损失(Cross Enrtropy Loss)。因此Softmax Loss的流程是:先使用一个encoder来学习数据的特征,再经过一个全连接层、Softmax函数,最后使用交叉熵计算损失。

下面分别是Softmax函数、交叉熵损失函数和Softmax loss的计算公式,可以看出他们之间的相关性:


在Softmax loss的公式中,N是样本数量,n是类别数量,zi是第i个类别的得分,yi是第i个样本的真实类别。

下面是在一个10分类的模型中加入Softmax loss后,10个类别固定分为10个等分的方向,特征具有指向性,也就是说Softmax loss为特征提供了等分的方向指向。


怎么理解Softmax  loss为特征提供了等分的方向指向这句话?
--可以理解为Softmax loss给决策线W做了限制,限制W在二维空间等分为10个方向,数据会向自己的决策线边界去靠近。

Softmax loss公式中并没有参数用来增加类间距离,在人脸识别这种开集分类任务中效果不是很好。


进一步解释:

Softmax loss的目标是使得真实标签对应的预测概率最大化,而其他类别的预测概率最小化。通过最小化Softmax loss,可以训练模型使得分类结果更加准确。
需要注意的是,Softmax loss 只考虑了类别之间的差异,而没有考虑类内的差异。在一些任务中,类内的差异也是很重要的,因此可以通过改进Softmax loss 来处理类内差异和类间差异,比如使用Arcface loss等。



补充:开集分类任务和闭集分类任务
在闭集分类问题中,测试时所有的样本都是训练时见到过的类,而在开集分类问题中,测试时会出现未见过的类。

2 Arcface loss的理解

首先在明白,Arcface等一系列对于人脸识别损失函数的优化基本上都是在对softmax loss+margin的改进,margin是类间距离,是额外增加的惩罚项参数。增加这个惩罚项的原因在于:人脸识别是一个开集分类任务,在测试时会见到从未在训练集中出现的人脸,因此需要增加一个margin参数使得模型在学习时达到“类间分开、类内聚拢”的目的,也就是要求不仅把各类分开,而且还需要把每一类的特征紧凑的聚集在特征空间的一处。在人脸识别任务中,一般是通过计算不同人脸的特征相似度来判定是否为同一类,如果类间的距离区分度不大,很容易分错类别。


Arcface loss的公式表示为:


其中:
s表示scale参数,一般是个常数,论文中取10;
θ_i表示第i个样本的特征向量与其对应类别的权重向量的夹角;
m表示margin参数,可学习的超参数。

3 Arcface loss与传统的softmax loss在分类上有什么区别

(1)增大类间差距,减小类内差距
Arcface loss是一种改进的目标损失函数,它在softmax loss的基础上引入了角度余弦距离(margin),实现在特征空间上最大化类间的角度差距,最小化类内的角度差距,这样可以使得特征更加鲁棒性。

(2)特征嵌入
Arcface loss通过将特征向量进行归一化,将其映射到单位超平面上,从而更好的表达特征时间的相对关系。传统Softmax loss没有这样的处理。

(3)参数化
Arcface loss引入了一个参数m,即margin,用于控制类间角度差距的大小。当m为0时,Arcface loss退化为传统的Softmax loss,通过调整m的值,可以灵活的控制分类边界的紧密程度。

(4)难样本挖掘
Arcface loss可以结合难样本挖掘的方法,如在线三元组损失,进一步提高分类性能,而Softmax loss则没有考虑难样本挖掘。

【以上文字内容仅代表个人理解,如有其他建议,欢迎在评论区交流】





欢迎光临 AIHIA梦工厂 (https://aihiamgc.com/) Powered by Discuz! X3.5