交叉熵损失是基于“熵”这个概念,熵用来衡量信息的不确定性。对于概率分布为p(X)的随机变量X,熵可以表示为:
当X分布的不确定性越大,对应的熵越大(对应log(x)积分面积),反之,熵越小。
针对以上分析,可以把熵用于分类 问题的损失,根据分类的类别数量不同,可以分为二元交叉熵损失和多分类交叉熵损失。
对于二分类问题(即0-1分类),即属于第1类的概率为p,属于第0类的概率为1−p。则二元交叉熵损失可表示为:
也可以统一写成如下形式:
可以理解为:当实际类别为1时,我们希望预测为类别1的概率高一点,此时 l o g ( p ) log(p) log(p) 的值越小,产生的损失越小;反之,我们希望预测为类别0的概率高一点,此时 l o g ( 1 − p ) log(1−p) log(1−p) 的值越小,产生的损失也越小。
在实际应用中,二分类的类别概率通常采用sigmoid
函数把结果映射到(0,1)之间。
对比二元交叉熵损失,可以推广到多分类交叉熵损失,定义如下:
在多分类实际应用中,通常采用SoftMax
函数来得到样本属于每个类别的概率。
Balanced Cross Entropy 是常见的解决类不平衡的方法,其思想是引入一个权重因子 α ∈ [ 0 , 1 ] \alpha \in [0,1] α∈[0,1],当类标签是 1 时,权重因子是 α ,当类标签是 -1 时,权重因子是 1 − α 。同样为了表示方便,用 α t \alpha_t αt 表示权重因子,那么此时的损失函数被改写为:
C E ( p , y ) = − α t log ( p t ) CE(p,y) = −\alpha_t\log(p_t) CE(p,y)=−αtlog(pt)
Focal Loss首次在目标检测框架RetinaNet中提出,Focal Loss来处理模型训练过程中少数难分类样本和多数简单样本的不平衡问题。
它是对典型的交叉信息熵损失函数的改进,主要用于样本分类的不平衡问题。为了统一正负样本的损失函数表达式,首先做如下定义:
结合正负样本平衡以及难易样本平衡,最终的 Focal loss 形式如下:
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) FL(p_t) = −\alpha_t(1-p_t)^{\gamma}\log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
它的功能可以解释为:通过 α t α_t αt 可以抑制正负样本的数量失衡,通过 γ \gamma γ 可以控制简单/难区分样本数量失衡。
对于 Focal loss,总结如下:
L1 loss即平均绝对误差(Mean Absolute Error, MAE),指模型预测值和真实值之间距离的平均值。
L2 loss即均方误差损失(Mean Square Error, MSE),指预测值和真实值之差的平方的平均值。
Smooth L1 loss是基于L1 loss修改得到,对于单个样本,记x为预测值和真实值的差值,则对应的Smooth L1 loss可表示为:
IoU类的损失函数都是 基于预测框和标注框之间的IoU(交并比),记预测框为P,标注框为G,则对应的IoU可表示为:
即两个框的交集和并集的比值。IoU loss定义为:
IoU Loss的优点: 相比L2 Loss
IoU Loss的缺点:
论文题目:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
论文地址:https://arxiv.org/abs/1902.09630GIoU = Generalized IoU
generalized 英
[ˈdʒenrəlaɪzd]
美[ˈdʒenrəlaɪzd]
adj. 笼统的; 普遍的; 概括性的; 全面的;
v. 概括; 归纳; 笼统地讲; 概括地谈论; 扩大…的运用; 将…类推到(较大的范围);
IoU反映了两个框的重叠程度,在两个框不重叠时,IoU衡等于0,此时IoU loss恒等于1。而在目标检测的边界框回归中,这显然是不合适的。因此,GIoU loss在IoU loss的基础上考虑了两个框没有重叠区域时产生的损失。具体定义如下:
其中,C
表示两个框的最小包围矩形框,R(P,G)
是惩罚项。从公式可以看出,当两个框没有重叠区域时,IoU 为 0,但R依然会产生损失。极限情况下,当两个框距离无穷远时,R→1
GIoU退化为IoU的情况
当①预测框和GTBox完全重合时或②预测框在GTBox的内部,IoU和GIoU的损失值Loss都一样,此时GIoU退化为IoU -> GIoU=IoU。
论文题目:Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
论文地址:https://arxiv.org/abs/1911.08287
DIoU: Distance IoU
在这篇论文中,作者认为IoU Loss和GIoU Loss存在两个问题:①收敛特别慢、②回归不够准确
所以这篇论文主要围绕着两个主题:①如何更快让Loss收敛、②如何达到更高的定位精度
IoU loss和GIoU loss都只考虑了两个框的重叠程度,但在重叠程度相同的情况下,我们其实更希望两个框能挨得足够近,即框的中心要尽量靠近。因此,DIoU在IoU loss的基础上考虑了两个框的中心点距离,具体定义如下:
其中,ρ
表示预测框和标注框中心端的距离,p
和g
是两个框的中心点。c
表示两个框的最小包围矩形框的对角线长度。当两个框距离无限远时,中心点距离和外接矩形框对角线长度无限逼近,R→1
下图直观显示了不同情况下的IoU loss、GIoU loss和DIoU loss结果:
其中,绿色框表示标注框,红色框表示预测框,可以看出,最后一组的结果由于两个框中心点重合,检测效果要由于前面两组。IoU loss和GIoU loss的结果均为0.75,并不能区分三种情况,而DIoU loss则对三种情况做了很好的区分。
DIoU Loss的优势
DIoU loss考虑了两个框中心点的距离,而CIoU loss在DIoU loss的基础上做了更详细的度量,具体包括:
具体定义如下:
https://github.com/JunMa11/SegLoss
参考:
https://blog.csdn.net/weixin_44878336/article/details/124759307
https://blog.csdn.net/sinat_34474705/article/details/105141134