概述
三元损失训练的模型泛化能力不强,类内方差依然较大,作者提出四元损失函数,用于减小类内方差 和 增加类间方差。
贡献
1.四元损失函数
2.基于边缘在线难例选择策略
3.对Loss的理论分析
4.实验
方法
The triplet loss
三元损失度量学习。一个样本由三个图片
{
I
A
,
I
A
,
,
I
B
}
\{I_A,I_{A^,},I_B\}
{IA,IA,,IB}组成,
{
I
A
,
I
A
,
}
\{I_A,I_{A^,}\}
{IA,IA,}为正样本对,来自同一个身份A,
{
I
A
,
I
B
}
\{I_A,I_B\}
{IA,IB}为负样本对,来自两个身份A与B。三元损失为
算子
(
⋅
)
+
=
m
a
x
(
⋅
,
0
)
(\cdot )_+=max(\cdot,0)
(⋅)+=max(⋅,0) f为身份特征,函数身份使得相同身份度量距离拉近,不同身份距离拉远。对应图2 的a三分支网络
相似度度量方式为欧氏距离。作者将其替换,使用网络来学习
g
(
x
1
,
x
2
)
g(x_1,x_2)
g(x1,x2)。学习到的度量方法更鲁棒,表达能力更强。对应图2b,相当于两个特征成对作为一个输入至网络g中(例如,两个特征通道方向上叠加),变成的两个分支。网络g输出一个值,但不能确保在[0,1]中,这可能使margin 无效。
The quadruplet loss
作者对三元网络增加softmax层,并且网络输出两个值对应相似与不相似,红点对应不相似程度,代入公式计算loss。
四元损失如下,第二项为增加的约束,拉大了类间距离 。
##### Margin-based online hard negative mining
margin 的确定,作者假设正样本对与负样本分布不同。margin 为两个分布均值距离之差。
Loss梯度
m
a
x
(
μ
,
0
)
2
=
α
2
\frac{max(\mu,0)}{2}=\alpha_2
2max(μ,0)=α2因为
w
=
0.5
,
f
o
r
α
2
w= 0.5,for \alpha_2
w=0.5,forα2指示函数分别说明每项的梯度是否参与计算(例,说明为正,该样本参与梯度计算),前面的系数还不太清楚。
Relationships of different losses
contrastive loss
对于一个大小为M的batch,a个正样本对,M-a个负样本对,则该batch 可以组成a(M-a)个四元组样本
第二行将样本分为正负样本对分别计算求和。第三行将两个二元组(忽略图像重复利用)组成a(M-a)个样本。最后一行将a(M-a)根据两个二元组是否共享同一个图片分别计算 。
相比四元损失,等式8max函数第一项为
g
(
x
i
,
x
j
)
g(x_i,x_j)
g(xi,xj),四元损失中为0,所以四元损失只考虑> 0的样本。并且对比损失更喜欢结果可分类
case 1中难以根据阈值界定区分正负样本对,而case 2根据虚线区分,只分错一个正样本对为负,对比损失训练结果倾向case 2,而reid case1 结果更好。