注:本篇博客大部分内容并非原创,而是本人将之前收藏的资料整理,并加以自己的愚解整合成到一起,方便回顾复习,所有参考资料均已注明出处,并已点赞加收藏~
续:从零开始学CV之二损失函数篇(3)
1.3 Sphereface
该Sphereface最早提出于CVPR 2017的《SphereFace: Deep Hypersphere Embedding for Face Recognition》,其也称A-Softmax损失函数,论文链接:
https://arxiv.org/abs/1704.08063
作者认为:
- triplet loss需要精心构建三元组,不够灵活;
- center loss损失函数只是强调了类内的聚合度,对类间的可分性不够重视。
因此,作者提出了疑问:基于欧式距离的损失函数是否适合模型学习到具有区分性的特征呢?
首先,重新看一下softmax loss损失函数(即softmax+交叉熵):
其中,
θ
j
,
i
(
0
≤
θ
j
,
i
≤
π
)
θ_{j,i} (0\leqθ_{j,i}\leq\pi)
θj,i(0≤θj,i≤π) 表示向量
W
j
W_j
Wj 和
x
i
x_i
xi 的夹角。可以看到,损失函数与
∣
∣
W
j
∣
∣
||W_j||
∣∣Wj∣∣,
θ
j
,
i
\theta_{j,i}
θj,i 和
b
j
b_j
bj 有关,令
∣
∣
W
j
∣
∣
=
1
||W_j||=1
∣∣Wj∣∣=1 和
b
j
=
0
b_j=0
bj=0 ,则可以得到modified-softmax损失函数,更加关注角度信息:
虽然使用modified-softmax损失函数可以学习到特征具有角度区分性,但这个区分力度仍然不够大。因此,在
θ
j
,
i
θ_{j,i}
θj,i 上乘以一个大于 1 的整数,来提高区分度:
这样,既能能扩大类间距离,又能缩小类内距离。
简单讲就是在margin softmax loss的基础上添加了两个限制条件||W||=1和b=0,使得预测仅取决于W和x之间的角度。
下图是margin softmax,modified softmax和A-Softmax三种损失函数在同一批数据上的实验对比。
下图是论文的实验结果,从超球面的角度进行解释,不同的m值的结果。其中,不同颜色的点表示不同的类别。可以看出,使用A-Softmax损失函数,会将学习到的向量特征映射到超球面上,m=1表示退化成modified-softmax损失函数,可以看出,每个类别虽然有明显的分布,但区分性不够明显。随着m的增大,区分性会越来越大,但也越来越难训练。
1.4 Cosface
Cosface的提出是在Tencent AI Lab发表在CVPR 2018的论文《CosFace: Large Margin Cosine Loss for Deep Face Recognition》,论文链接:
https://arxiv.org/pdf/1801.09414.pdf
Cosface损失函数,也称Large Margin Cosine Loss(LMCL),该方法通过对cos的间隔最大化,来实现扩大类间距离,缩小类内距离。
从softmax出发(与Sphereface类似),作者发现,为了实现有效的特征学习,
∣
∣
W
j
=
1
∣
∣
||Wj=1||
∣∣Wj=1∣∣ 是十分有必要的,即对权重进行归一化。同时,在测试阶段,测试用的人脸对的得分通常是根据两个特征向量之间的余弦相似度进行计算的。这表明,
∣
∣
x
∣
∣
||x||
∣∣x∣∣ 对得分计算影响不大,因此,在训练阶段将
∣
∣
x
∣
∣
=
s
||x||=s
∣∣x∣∣=s 固定下来(论文中,s=64):
其中
L
n
s
L_{ns}
Lns 表示归一化版本的softmax loss,
θ
j
,
i
θ_{j,i}
θj,i 表示
W
j
W_j
Wj 与
x
x
x 之间的角度。为了加大区分性,类似Sphereface一样,引入常数m:
其中,
W
=
W
∗
∣
∣
W
∗
∣
∣
,
x
=
x
∗
∣
∣
x
∗
∣
∣
,
c
o
s
(
θ
j
,
i
)
=
W
j
T
x
i
W=\frac{W^*}{||W^*||},x=\frac{x^*}{||x^*||},cos(\theta _j,i)=W^T_jx_i
W=∣∣W∗∣∣W∗,x=∣∣x∗∣∣x∗,cos(θj,i)=WjTxi
上图是作者的解释图:
- 第一个表示正常的sotfmax loss,可以看出两个类别的分类边界具有重叠性,即区分性不强;
- 第二个表示归一化版本的softmax loss,此时边界已经很明显,相互没有重叠,但是区分性仍有不足;
- 第三个表示A-softmax,此时横纵坐标变成了 θ θ θ,从这个角度解释,使用两条线作为区分边界,作者也提出,该损失函数的缺点是不连续(A-Softmax是对角度 θ θ θ进行约束,故呈现在 c o s ( θ ) cos(θ) cos(θ) 的坐标中,是一个扇形页面分界区。但是A-Softmax的margin是不连续的,随着 θ θ θ 的降低,margin也在跟着减小,当 θ θ θ 等于0的时候margin甚至消失);
- 第四个表示Cosface,在 cos(θ)下,使用两条线作为区分边界,特征之间没有交集,区分性相当明显。
随着m值增大,区分性也会越来越明显,但训练难度会加大。
1.5 Arcface
该Arcface损失函数提出于《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》,论文链接:
https://arxiv.org/abs/1801.07698
类似于Sphereface和Cosface,Arcface同样需要令
∣
∣
W
∣
∣
=
1
,
∣
∣
x
∣
∣
=
s
||W||=1,||x||=s
∣∣W∣∣=1,∣∣x∣∣=s ,同时也引入常数m,但与前面两者不同的是,这里的m是对
θ
θ
θ 进行修改:
下图是Arcface的计算流程图,首先对
x
x
x 与
W
W
W 进行标准化,然后进行相乘得到
c
o
s
(
θ
j
,
i
)
cos(θ_{j,i})
cos(θj,i) ,通过
a
r
c
c
o
s
(
c
o
s
(
θ
j
,
i
)
)
arccos(cos(θ_{j,i}))
arccos(cos(θj,i)) 来得到角度
θ
j
,
i
θ_{j,i}
θj,i ,加上常数m来加大间距得到
θ
j
,
i
+
m
θ_{j,i}+m
θj,i+m ,之后计算
c
o
s
(
θ
j
,
i
+
m
)
cos(θ_{j,i}+m)
cos(θj,i+m) 并乘上常数s,最后进行softmax 函数和cross entropy loss的处理。
作者给出的伪代码如下:
其实笔者认为,arcface的推出更重要的是在于推广mxnet这一框架,而目前,mxnet确实是人脸识别常用的框架之一。
从角度空间特征进行分析,ArcFace比Softmax的特征分布更紧凑,决策边界更明显。
补充:
arcface的论文实验做的很详细,论文阐述的思想如下:
- ArcFace loss:Additive Angular Margin Loss(加角度间距损失函数),对特征向量和权重归一化,对 θ θ θ加上角度间隔 m ,角度间隔比余弦间隔在对角度的影响更加直接。几何上有恒定的线性角度margin。
- ArcFace中是直接在角度空间 θ θ θ 中最大化分类界限,而CosFace是在余弦空间 c o s ( θ ) cos(θ) cos(θ) 中最大化分类界限。预处理(人脸对齐):人脸关键点由MTCNN检测,再通过相似变换得到了被裁剪的对齐人脸。
- 训练(人脸分类器):ResNet50 + ArcFace loss
- 测试:从人脸分类器FC1层的输出中提取512维的嵌入特征(我们常说的Embeding),对输入的两个特征计算余弦距离,再来进行人脸验证和人脸识别。
- 实际代码中训练时分为resnet + arcface loss + softmax + cross entropy loss。resnet
提取图像(也是人脸)特征(多维张量);arcface loss将特征与权重参数加上角度间距后,再输出预测标签;softmax + cross entropy loss求预测标签和实际的误差(也就是我们上一篇所说的估量模型预测值 f ( x ) f(x) f(x) 与真实值 y y y 的不一致程度)。
2. 总结
在这一篇我们讲了人脸识别常用的几个损失函数,这里借用Arcface论文里面的插图和知乎Mengcius 大佬里面的几个观点辅以形象说明:
- ArcFace的在整个区间内具有线性角度margin,所提出的加性角度间距具有较好的几何属性。
- CosFace的margen在角度空间上有非线性的角度间隔,但在cos空间上是直线;
- SphereFace的margin是一个扇形页面分界区,但是不连续的,随着
θ
θ
θ 的降低,margin也在跟着减小,当
θ
θ
θ
等于0的时候margin甚至消失; - 归一化版本的softmax loss没有margin或者margin区分不明显。
参考:
[1] https://www.cnblogs.com/dengshunge/p/12252820.html
[2] https://blog.youkuaiyun.com/u014380165/article/details/76946380
[3] https://zhuanlan.zhihu.com/p/45153595