正好最近写论文,整理到JDE算法.JDE原论文中损失函数部分写的有些模糊.
(一)损失函数
与YOLO v3不同的是,JDE采用双阈值分割法判断目标为前景或背景。即如果目标和某真值框的IoU大于0.5,则认为匹配;若IoU小于0.4,则认为不匹配。经过实验,
认为这种方式能够抑制虚警(FP)。对于前景和背景的分类损失Lα\mathcal{L}_{\alpha}Lα采用交叉熵损失,对于边界框的回归损失Lβ\mathcal{L}_{\beta}Lβ采用平滑L1损失,
如式(4-1)、(4-2)所示。
Lα(x,y)=1N∑n=1N[−∑c=1Clogexn,c∑i=1Cexn,i]yn,c
\mathcal{L}_{\alpha}(x,y) =\frac{1}{N} \sum_{n=1}^N[ -\sum_{c=1}^C \log \frac{e^{x_{n,c}}}{\sum_{i=1}^Ce^{x_{n,i}}}]y_{n,c}
Lα(x,y)=N1n=1∑N[−c=1∑Clog∑i=1Cexn,iexn,c]yn,c
Lβ(x,y)=1N∑n=1N[12(xn−yn)2I(∣xn−yn∣<1)+(∣xn−yn∣−0.5)I(∣xn−yn∣≥1)]
\mathcal{L}_{\beta}(x,y) =\frac{1}{N} \sum_{n=1}^N[\frac{1}{2}(x_n-y_n)^2 \mathbb{I}(|x_n-y_n|<1) + (|x_n-y_n| - 0.5)\mathbb{I}(|x_n-y_n|\ge 1)]
Lβ(x,y)=N1n=1∑N[21(xn−yn)2I(∣xn−yn∣<1)+(∣xn−yn∣−0.5)I(∣xn−yn∣≥1)]
其中xxx表示预测结果,yyy表示真值,NNN表示批大小,eee为自然对数。式(4-1)中的xn,cx_{n,c}xn,c表示预测的xnx_nxn属于类别ccc的概率,yn,c∈{0,1}y_{n,c}\in\{0,1\}yn,c∈{0,1}表示标签yyy是否属于类别ccc.式(4-2)中的I(⋅)\mathbb{I}(·)I(⋅)为指示函数。
对于外观特征学习任务,期望的效果是对于不同的目标,距离度量要足够大。JDE将此问题视作分类问题。假设整个视频序列中不同实例的目标个数为nIDnIDnID,则算法应通过
嵌入向量对目标进行nIDnIDnID类别的分类。
假设某批样本中一个锚实例为fTf^TfT,正样本(也即真值类别)为f+f^+f+,其与锚fTf^TfT有关;负样本(也即其他类别)为f−f^-f−. 在损失计算时,关注所有的负样本分类。以fTf+f^Tf^+fTf+表示该锚实例被
认为是正样本的概率,fTfj−f^Tf_j^-fTfj−表示锚被认为是第jjj个类别的概率,采用与交叉熵函数相近的形式计算损失:
Lγ(x,y)=1N∑i=1N[−logefiTfi+efiTfi++∑jefiTfi,j−]
\mathcal{L}_{\gamma}(x,y) =\frac{1}{N}\sum_{i=1}^N[-\log \frac{e^{f_i^Tf_i^+}} {e^{f_i^Tf_i^+} + \sum_j{e^{f_i^Tf_{i,j}^-}}}]
Lγ(x,y)=N1i=1∑N[−logefiTfi++∑jefiTfi,j−efiTfi+]
其中下标iii表示第iii个样本。
(二)损失平衡
JDE同时学习三个任务:分类、边界框回归和外观特征学习。因此如何平衡三个任务是很重要的问题。其他多数算法是将各部分损失函数进行加权和,然而JDE采取了自动调整多任务重要性的方式来选择各部分损失的权重。具体地,参照文献[39]中提出的任务无关不确定性概念来将各部分损失权重当做网络参数学习。
因此总损失函数如式(4-4)所示:
Ltotal=∑i=1M∑j=α,β,γ12(1esjiLji+sji)
\mathcal{L}_{total} = \sum_{i=1}^M \sum_{j=\alpha,\beta,\gamma} \frac{1}{2} (\frac{1}{e^{s_j^i}}\mathcal{L}_j^i+s_j^i)
Ltotal=i=1∑Mj=α,β,γ∑21(esji1Lji+sji)
其中sjis_j^isji为任务无关的不确定度,是可学习的参数。MMM为任务个数,由于具有分类、边界框回归和外观特征学习三个任务,因此M=3M=3M=3.