目标检测中的类别损失和定位损失

文章目录

  • 类别损失
    • 1. Cross Entropy Loss 交叉熵损失
    • 2. Balanced Cross Entropy
    • 3. Focal Loss 改进的交叉熵损失函数
  • 定位损失
    • 1. L1 Loss 平均绝对误差(Mean Absolute Error, MAE)
    • 2. L2 Loss 均方误差损失(Mean Square Error, MSE)
    • 3. Smooth L1 Loss
    • 4. IoU Loss
    • 5. GIoU Loss
    • 6. DIoU Loss
    • 7. CIoU Loss
      • 几种IOU的效果对比
  • 图像分割的损失函数

类别损失

1. Cross Entropy Loss 交叉熵损失

交叉熵损失是基于“熵”这个概念,熵用来衡量信息的不确定性。对于概率分布为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(1p) 的值越小,产生的损失也越小。

在实际应用中,二分类的类别概率通常采用sigmoid函数把结果映射到(0,1)之间。

目标检测中的类别损失和定位损失_第1张图片

对比二元交叉熵损失,可以推广到多分类交叉熵损失,定义如下:

目标检测中的类别损失和定位损失_第2张图片

多分类实际应用中,通常采用SoftMax函数来得到样本属于每个类别的概率

2. Balanced Cross Entropy

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)

3. Focal Loss 改进的交叉熵损失函数

Focal Loss首次在目标检测框架RetinaNet中提出,Focal Loss来处理模型训练过程中少数难分类样本和多数简单样本的不平衡问题。

它是对典型的交叉信息熵损失函数的改进,主要用于样本分类的不平衡问题。为了统一正负样本的损失函数表达式,首先做如下定义:

目标检测中的类别损失和定位损失_第3张图片

结合正负样本平衡以及难易样本平衡,最终的 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(1pt)γlog(pt)

它的功能可以解释为:通过 α t α_t αt​ 可以抑制正负样本的数量失衡,通过 γ \gamma γ 可以控制简单/难区分样本数量失衡。

对于 Focal loss,总结如下:

  • 无论是前景类还是背景类, p t p_t pt 越大,权重 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ 就越小,即简单样本的损失可以通过权重进行抑制
  • α t \alpha_t αt 用于调节正负样本损失之间的比例,前景类别使用 α t \alpha_t αt 时,对应的背景类别使用 1 − α t 1-\alpha_t 1αt ;
  • γ \gamma γ α t \alpha_t αt 的最优值是相互影响的,所以在评估准确度时需要把两者组合起来调节。作者在论文中给出 γ = 2 , α t = 0.25 \gamma = 2,\alpha_t = 0.25 γ=2,αt=0.25 时,ResNet-101+FPN 作为 backbone 的 RetinaNet 有最优的性能。这里 α t = 0.25 \alpha_t = 0.25 αt=0.25 正样本的权重小,负样本的权重大有利于压低负样本的分类损失,尽可能将负样本的损失压低。

定位损失

1. L1 Loss 平均绝对误差(Mean Absolute Error, MAE)

L1 loss即平均绝对误差(Mean Absolute Error, MAE),指模型预测值和真实值之间距离的平均值

目标检测中的类别损失和定位损失_第4张图片

2. L2 Loss 均方误差损失(Mean Square Error, MSE)

L2 loss即均方误差损失(Mean Square Error, MSE),指预测值和真实值之差的平方的平均值

目标检测中的类别损失和定位损失_第5张图片

3. Smooth L1 Loss

Smooth L1 loss是基于L1 loss修改得到,对于单个样本,记x为预测值和真实值的差值,则对应的Smooth L1 loss可表示为:

4. IoU Loss

IoU类的损失函数都是 基于预测框和标注框之间的IoU(交并比),记预测框为P,标注框为G,则对应的IoU可表示为:

两个框的交集和并集的比值。IoU loss定义为:

IoU Loss的优点: 相比L2 Loss

  1. 能够更好的反映出重合程度
  2. 具有尺度不变性 —— 无论两个矩形框是大是小,它的重合程度与矩形框的尺度是无关的

IoU Loss的缺点

  1. 当两个矩形框不相交时,Loss为0 —— 不相交,IoU值为0,进而Loss值也为0 -> 无法反向传播损失
  • 0 ≤ I o U ≤ 1 0≤IoU≤1 0IoU1,因此 I o U IoU IoU为 0 时无法完成反向传播!

5. GIoU Loss

论文题目:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
论文地址:https://arxiv.org/abs/1902.09630

GIoU = 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。
在这里插入图片描述

6. DIoU Loss

论文题目: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的基础上考虑了两个框的中心点距离,具体定义如下:

其中,ρ表示预测框和标注框中心端的距离,pg是两个框的中心点。c表示两个框的最小包围矩形框的对角线长度。当两个框距离无限远时,中心点距离和外接矩形框对角线长度无限逼近,R→1

下图直观显示了不同情况下的IoU loss、GIoU loss和DIoU loss结果:

目标检测中的类别损失和定位损失_第6张图片

其中,绿色框表示标注框,红色框表示预测框,可以看出,最后一组的结果由于两个框中心点重合,检测效果要由于前面两组。IoU loss和GIoU loss的结果均为0.75,并不能区分三种情况,而DIoU loss则对三种情况做了很好的区分

DIoU Loss的优势

  1. DIoU Loss可以直接最小化(minimize)两个boxes之间的距离,因此收敛速度更快

7. CIoU Loss

  1. DIoU loss考虑了两个框中心点的距离,而CIoU loss在DIoU loss的基础上做了更详细的度量,具体包括:

    • 重叠面积—— I o U IoU IoU
    • 中心点距离—— ρ 2 ( b , b gt ) c 2 \frac{\rho^2(b, b^{\text{gt}})}{c^2} c2ρ2(b,bgt)
    • 长宽比—— α υ \alpha \upsilon αυ

    具体定义如下:

    目标检测中的类别损失和定位损失_第7张图片

    目标检测中的类别损失和定位损失_第8张图片

几种IOU的效果对比

图像分割的损失函数

目标检测中的类别损失和定位损失_第9张图片

https://github.com/JunMa11/SegLoss

参考:

https://blog.csdn.net/weixin_44878336/article/details/124759307

https://blog.csdn.net/sinat_34474705/article/details/105141134

你可能感兴趣的:(深度学习相关,目标检测,深度学习)