【目标检测】深度学习目标检测损失函数总结

目录

  • 1、交叉熵损失 (Cross-Entropy Loss)
  • 2、平滑L1损失 (Smooth L1 Loss)
  • [3、Focal Loss](#3、Focal Loss)
  • [4、IoU Loss (Intersection over Union Loss)](#4、IoU Loss (Intersection over Union Loss))
  • [5、Generalized IoU Loss (GIoU)](#5、Generalized IoU Loss (GIoU))
  • [6、DIoU Loss (Distance-IoU)](#6、DIoU Loss (Distance-IoU))
  • [7、CIoU Loss](#7、CIoU Loss)
  • [8、Distribution Focal Loss, DFL](#8、Distribution Focal Loss, DFL)

1、交叉熵损失 (Cross-Entropy Loss)

  • 应用场景:用于分类任务,评估预测的类别分布与真实标签之间的差异。

  • 在目标检测中,物体分类是一个重要的任务,交叉熵损失是广泛使用的分类损失函数。它通过计算预测概率分布与真实标签之间的差异来优化模型。

  • 问题与方法

    类别不平衡:在检测场景中,背景样本远多于前景,易导致模型偏向背景。

    加权交叉熵:对不同类别分配权重 α c \alpha_{c} αc使得小众类别(或正样本)损失放大,常见于 SSD、RetinaNet 前期。

  • 计算方式:对于每个锚点/位置的类别预测,令模型对类别 c c c的预测概率为 p c p_{c} pc,真实标签为one-hot向量,则
    L C E = − ∑ c y c l o g ( p c ) L_{CE}=-\sum_{c}y_{c}log(p_{c}) LCE=−c∑yclog(pc)

python 复制代码
import torch
import torch.nn as nn

criterion = nn.CrossEntropyLoss()
output = model(input)  # 模型的输出
loss = criterion(output, target)  # target为真实标签

2、平滑L1损失 (Smooth L1 Loss)

  • 应用场景:在目标检测中用于边界框回归,结合了L1和L2损失的特点,具有更好的鲁棒性。

  • Ren et al., "Faster R-CNN: Towards Real‑Time Object Detection with Region Proposal Networks" (2015)

  • 论文链接:https://arxiv.org/abs/1506.01497

  • 问题与方法

    在目标检测中,边界框回归需要优化边框的位置。传统的L1和L2损失在误差较大时会表现不佳,导致模型不稳定。传统 L2 对异常误差过于敏感,L1 在小误差时不够平滑。

  • Smooth L1 在小误差时接近 L2,保证收敛平稳;在大误差时退化为 L1,抑制异常点影响

  • 计算方式:Smooth L1损失结合了L1和L2的优点,使用了一个平滑的切换机制,在误差小于某个阈值时使用L2损失,大于该阈值时使用L1损失。这种方式可以减小对异常值的敏感性,同时保持收敛速度。 对边界框回归误差,定义 Δ = x p r e d − x g t Δ=x_{pred}-x_{gt} Δ=xpred−xgt,其中 x p r e d x_{pred} xpred为预测的边界框, x g t x_{gt} xgt为ground truth的边界框。
    L S m o o t h L 1 ( Δ ) = 0.5 Δ 2 / β , ∣ Δ ∣ < 0.5 β , ∣ Δ ∣ − 0.5 β , o t h e r w i s e , L_{SmoothL1}(Δ)={0.5Δ^{2}/\beta, ∣Δ∣<0.5\beta,\\ ∣Δ∣-0.5\beta,otherwise}, LSmoothL1(Δ)=0.5Δ2/β,∣Δ∣<0.5β,∣Δ∣−0.5β,otherwise,

    常取 β = 1 \beta=1 β=1

python 复制代码
import torch
import torch.nn as nn

smooth_l1_loss = nn.SmoothL1Loss()
loss = smooth_l1_loss(predicted_boxes, target_boxes)

3、Focal Loss

  • Lin et al., "Focal Loss for Dense Object Detection" (RetinaNet, 2017)

  • 论文链接:https://arxiv.org/abs/1708.02002

  • 问题与方法

    在处理高度不平衡的数据集时,简单的交叉熵损失可能会导致模型对易分类样本的过拟合,而忽视难分类样本。

  • Focal Loss通过引入一个调制因子 ( 1 − p t ) γ (1 - p_{t})^{\gamma} (1−pt)γ,将难以分类的样本的损失放大,对难分类样本( p t p_{t} pt小)重点学习,易分类样本损失自动衰减,从而使得模型更加关注那些难以分类的样本。

  • 计算方式:公式如下:
    F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_{t})=-\alpha_{t}(1 - p_{t})^{\gamma}log(p_{t}) FL(pt)=−αt(1−pt)γlog(pt)

    其中, p t p_{t} pt是预测的类别概率, α t \alpha_{t} αt​是平衡因子,平衡正负样本比, γ \gamma γ是调制因子(常设置为2)。

python 复制代码
class FocalLoss(nn.Module):
    def __init__(self, alpha=1, gamma=2, reduction='mean'):
        super(FocalLoss, self).__init__()
        self.alpha = alpha
        self.gamma = gamma
        self.reduction = reduction

    def forward(self, inputs, targets):
        BCE_loss = nn.CrossEntropyLoss(reduction='none')(inputs, targets)
        pt = torch.exp(-BCE_loss)  # 预测概率
        F_loss = self.alpha * (1 - pt) ** self.gamma * BCE_loss
        if self.reduction == 'mean':
            return F_loss.mean()
        elif self.reduction == 'sum':
            return F_loss.sum()
        return F_loss

criterion = FocalLoss()
loss = criterion(predicted_logits, target)

4、IoU Loss (Intersection over Union Loss)

  • 问题与方法

    (1)传统的边界框回归损失(如L1/L2损失)可能无法有效优化目标检测指标(如IoU);(2)直接优化IoU指标,适合边界框回归。

    (3)IoU损失直接优化IoU,通过计算预测框和真实框的交并比来评估模型性能。该损失试图最大化IoU值,从而提高模型的准确性。IoU损失的缺点是可能在框重叠不多的情况下导致梯度消失,因此后续研究提出了改进版本。

    (4)直接优化检测评价指标 IoU,比像素坐标回归损失更对齐目标。

  • 不足:当框没有重叠时梯度为零,不利于优化。

  • 计算方式: L I o U = 1 − I o U . L_{IoU}=1−IoU. LIoU=1−IoU.

5、Generalized IoU Loss (GIoU)

  • 改进了IoU损失,考虑了边界框之间的面积信息。

  • Rezatofighi et al., "Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression" (2019)

  • 论文链接:https://arxiv.org/abs/1902.09630

  • 问题与方法

    (1)传统的IoU损失在边界框之间的重叠很小或没有重叠的情况下,可能会导致效果不佳。IoU 在无重叠时无梯度;(2)借助最小外接框面积提供额外梯度信息,使无重叠也能收敛。

  • 计算方式:GIoU通过考虑预测框和真实框的最小外接框的面积,引入了额外的信息来优化损失。GIoU损失计算公式为:

G I O U = I o U − ∣ a r e a c − ( A ∪ B ) ∣ ∣ a r e a c ∣ , L G I O U = 1 − G I O U GIOU = IoU - \frac{|area_c - (A \cup B)|}{|area_c|}, \\ L_{GIOU}=1-GIOU GIOU=IoU−∣areac∣∣areac−(A∪B)∣,LGIOU=1−GIOU

其中,C是最小外接框,A和B分别是真实框和预测框。这种改进使得模型在没有重叠的情况下仍能获得有意义的梯度信息。

6、DIoU Loss (Distance-IoU)

  • 结合了IoU和中心点距离的损失函数,旨在加快收敛速度。

  • Zheng et al., "Distance-IoU Loss: A Fast IoU Loss for Bounding Box Regression" (2020)

  • 论文链接:https://arxiv.org/abs/2008.01682

  • 问题与方法

    (1)尽管GIoU在某些情况下表现良好,但它没有考虑边界框中心点的距离,因此在框位置不一致时仍然可能导致较差的性能;(2)DIoU在GIoU的基础上引入了中心点距离的概念,结合框的重叠程度和中心点距离,进一步提高了回归的准确性。

  • 计算方式:DIoU损失的计算公式为:
    D I o U = I o U − d 2 ( c p r e d , c g t ) c 2 , L D I O U = 1 − D I O U . DIoU = IoU - \frac{d^{2}(c_{pred},c_{gt})}{c^{2}}, \\ L_{DIOU} = 1 - DIOU. DIoU=IoU−c2d2(cpred,cgt),LDIOU=1−DIOU.

其中, d d d是预测框 c p r e d c_{pred} cpred和真实框中心点 c g t c_{gt} cgt之间的欧几里得距离, c c c是最小外接框的对角线长度。这种方法加速了模型的收敛并提高了准确性。

7、CIoU Loss

  • Zheng et al., "Distance-IoU Loss: A Fast IoU Loss for Bounding Box Regression" (2020)

  • 问题与方法

    (1)DIoU 仍未考虑长宽比一致性;(2)加入宽高比惩罚项,使回归更全面。

  • 计算方式: 综合 IoU、中心点距离与宽高比一致性,定义
    C I o U = I o U − d 2 ( c p r e d , c g t ) c 2 + α v , CIoU = IoU - \frac{d^{2}(c_{pred},c_{gt})}{c^{2}}+\alpha v, CIoU=IoU−c2d2(cpred,cgt)+αv,

    其中, v v v衡量宽高比差异, α \alpha α为平衡系数。

8、Distribution Focal Loss, DFL

  • Li et al., "Generalized Focal Loss V2: Learning Reliable Localization Quality Estimation" (GFLV2, 2021)。

  • 论文链接:https://arxiv.org/abs/2011.12885

  • 问题与方法

    (1)传统回归直接预测坐标,忽略不确定性;(2)预测离散分布并施以 Focal Loss,更好地捕捉位置不确定性,提升定位质量。

  • 计算方式:将边框回归视为离散分布回归,对每个离散偏移预测分类分布,用 Focal Loss 训练。

相关推荐
RockHopper20259 小时前
为什么具身智能系统需要能“自我闭环”的认知机制
人工智能·具身智能·具身认知
itwangyang5209 小时前
Windows + Conda + OpenMM GPU(CUDA)完整安装教程-50显卡系列
人工智能·windows·python·conda
agicall.com9 小时前
国产麒麟系统安装信创电话助手
人工智能·语音识别·自动录音·固话座机·离线语音转写
咚咚王者9 小时前
人工智能之核心基础 机器学习 第十章 降维算法
人工智能·算法·机器学习
海天一色y9 小时前
神经网络--手机价格分类
人工智能·神经网络·分类
2501_936146049 小时前
基于YOLO11-C3k2-Faster-CGLU的草莓成熟度检测与分类系统
人工智能·分类·数据挖掘
飞鹰519 小时前
CUDA入门:从Hello World到矩阵运算 - Week 1学习总结
c++·人工智能·性能优化·ai编程·gpu算力
minstbe9 小时前
AI开发:用 AI 从 0 到 1 做出能变现的小应用:以 MergePDF-Pro 为例的完整实战
人工智能
专注数据的痴汉9 小时前
「数据获取」中国会计年鉴(1996-2024)
大数据·人工智能·信息可视化