【SIoU Loss论文阅读】:引入角度感知的框回归损失,让检测收敛更快更准

论文信息


0 前言

在目标检测里,框回归损失直接决定收敛快慢与定位精度

从 IoU → GIoU → DIoU → CIoU,大家一直在优化:

  • 重叠面积
  • 中心点距离
  • 宽高比

所有人都漏掉了一个关键因素:方向(角度)

这就导致预测框在训练时会到处乱晃、收敛极慢 ,尤其是预测框和真值框不在同一坐标轴附近时,几乎很难收敛。

SIoU 直接引入角度损失(Angle Cost) ,让回归先"对齐方向",再优化位置和形状。

最终:

✅ 收敛速度大幅提升

✅ COCO 数据集 +2.4% AP+3.6% AP50

✅ 即插即用,兼容所有检测器

✅ 成为 YOLOv6 / YOLOv8 / YOLOv9 标配损失


1 核心动机:为什么要加角度?


图 1.损失函数中角度成本贡献的计算方案。

图中展示了预测框与真值框中心连线构成的角度几何关系:

  • α:中心点连线与竖直方向的夹角
  • 当 α 越接近 0 或 90°,回归越简单
  • 当 α=45° 时回归最难

图片分析:

传统损失(CIoU)只看距离和形状,不看方向,

导致模型在训练时不知道先靠近 X 轴还是 Y 轴,优化难度极高。



图2:角度损失变化曲线

横轴:角度归一化值

纵轴:角度损失值

  • 角度越接近 45°,损失越大
  • 角度越接近坐标轴,损失越小

图片分析:

损失函数会强迫模型优先对齐坐标轴,把"二维回归"变成"一维回归",自由度骤减,收敛暴快。


2 SIoU 完整结构(4大损失)

SIoU 由 4 个互补代价函数构成:

  1. Angle Cost(角度损失) ------ 灵魂创新
  2. Distance Cost(距离损失) ------ 角度加权
  3. Shape Cost(形状损失) ------ 宽高匹配
  4. IoU Cost(IoU损失) ------ 重叠监督

3 核心1:Angle Cost 角度损失(全文最重要)

公式

Λ=1−2∗sin2(arcsin(x)−π4)\Lambda=1-2 * sin ^{2}\left(arcsin (x)-\frac{\pi}{4}\right)Λ=1−2∗sin2(arcsin(x)−4π)

x=chσx=\frac{c_{h}}{\sigma}x=σch

σ=(bcxgt−bcx)2+(bcygt−bcy)2\sigma=\sqrt{\left(b_{c_{x}}^{gt}-b_{c_{x}}\right)^{2}+\left(b_{c_{y}}^{gt}-b_{c_{y}}\right)^{2}}σ=(bcxgt−bcx)2+(bcygt−bcy)2

ch=∣bcygt−bcy∣c_{h}=|b_{c_{y}}^{gt}-b_{c_{y}}|ch=∣bcygt−bcy∣

逐符号解释

  • bcxgt,bcygtb_{c_x}^{gt}, b_{c_y}^{gt}bcxgt,bcygt:真值框中心坐标
  • bcx,bcyb_{c_x}, b_{c_y}bcx,bcy:预测框中心坐标
  • σ\sigmaσ:两个框中心点的欧式距离
  • chc_hch:中心点在竖直方向的距离差
  • xxx:角度正弦值 sin(α)sin(α)sin(α)
  • Λ\LambdaΛ:角度损失(0~1),越小表示角度越准

通俗解释

先把预测框掰到最近的坐标轴(X或Y),

让模型只需要沿着一个方向回归,难度直接减半。


4 核心2:Distance Cost 距离损失

公式

Δ=∑t=x,y(1−e−γρt)\Delta=\sum_{t=x,y}\left(1-e^{-\gamma \rho_{t}}\right)Δ=t=x,y∑(1−e−γρt)

ρx=(bcxgt−bcxcw)2,ρy=(bcygt−bcych)2\rho_{x}=\left(\frac{b_{c_{x}}^{gt}-b_{c_{x}}}{c_{w}}\right)^{2},\quad \rho_{y}=\left(\frac{b_{c_{y}}^{gt}-b_{c_{y}}}{c_{h}}\right)^{2}ρx=(cwbcxgt−bcx)2,ρy=(chbcygt−bcy)2

γ=2−Λ\gamma=2-\Lambdaγ=2−Λ

逐符号解释

  • ρx,ρy\rho_x, \rho_yρx,ρy:归一化中心坐标差
  • cwc_wcw:两个框的最小外接宽度
  • chc_hch:两个框的最小外接高度
  • γ\gammaγ:角度加权系数
    • 角度越准(Λ→1\Lambda→1Λ→1),γ→1\gamma→1γ→1,距离损失变小
    • 角度越差(Λ→0\Lambda→0Λ→0),γ→2\gamma→2γ→2,距离损失变大

通俗解释

角度对齐了,距离就好优化了;角度没对齐,先重点惩罚距离。

自动动态调整优化重心。


5 核心3:Shape Cost 形状损失

公式

Ω=∑t=w,h(1−e−ωt)θ\Omega=\sum_{t=w, h}\left(1-e^{-\omega_{t}}\right)^{\theta}Ω=t=w,h∑(1−e−ωt)θ

ωw=∣w−wgt∣max(w,wgt),ωh=∣h−hgt∣max(h,hgt)\omega_{w}=\frac{\left|w-w^{gt}\right|}{max(w,w^{gt})},\quad \omega_{h}=\frac{\left|h-h^{gt}\right|}{max(h,h^{gt})}ωw=max(w,wgt)∣w−wgt∣,ωh=max(h,hgt)∣h−hgt∣

逐符号解释

  • wgt,hgtw^{gt}, h^{gt}wgt,hgt:真值框宽、高
  • w,hw, hw,h:预测框宽、高
  • ωw,ωh\omega_w, \omega_hωw,ωh:宽高差异归一化值
  • θ\thetaθ:形状关注系数(默认=4,范围2~6

通俗解释

平滑优化宽高,不干扰位置回归,避免形状突变导致框抖动。


6 核心4:最终 SIoU 框损失

公式

Lbox=1−IoU+Δ+Ω2L_{box}=1-IoU+\frac{\Delta+\Omega}{2}Lbox=1−IoU+2Δ+Ω

IoU=∣B∩Bgt∣∣B∪Bgt∣IoU=\frac{|B \cap B^{gt}|}{|B \cup B^{gt}|}IoU=∣B∪Bgt∣∣B∩Bgt∣

逐符号解释

  • LboxL_{box}Lbox:最终框回归损失
  • IoUIoUIoU:预测框与真值框的交并比
  • Δ\DeltaΔ:角度加权距离损失
  • Ω\OmegaΩ:形状损失

7 全文核心图片精讲(最重要部分)


图 3.示例展示了放置在坐标轴上的矩形与远离坐标轴的矩形的收敛情况。很明显,这是 SIoU 方法的体现。

偏轴场景收敛对比实验

左图:初始框远离坐标轴

右图:初始框在坐标轴上

  • 红色:GT 真值
  • 蓝色:SIoU 预测
  • 灰色:CIoU 预测

关键结论:

  • 偏轴场景:
    • SIoU:495 轮收敛
    • CIoU:1000 轮都不收敛
  • 轴上场景:
    • SIoU:119 轮收敛
    • CIoU:190 轮收敛

图片分析:

只要预测框不在坐标轴上 ,CIoU 直接"失效",

而 SIoU 靠角度引导,依然能快速收敛。



图 4. 对于 CloU 和 SIoU 而言,1715000 个模拟案例的总误差的二维图形展示。

171万种回归场景的全局误差曲面

左:CIoU 误差曲面 ------ 粗糙、陡峭、误差极大(最高400+)

右:SIoU 误差曲面 ------ 平滑、平坦、误差极小(最高<10)

图片分析:

SIoU 让优化空间变得极其平坦

模型无论从哪个起点开始,都能稳定收敛到最优解。



图 5. CloU 和 SIoU 损失在训练迭代过程中的误差图。

训练迭代误差曲线

横轴:迭代次数

纵轴:总回归误差

  • SIoU 曲线下降更陡峭
  • SIoU 最终误差远低于 CIoU

图片分析:

SIoU 收敛速度更快、收敛精度更高。



图 6. 在 COCO-train 数据集上使用所提出的 SloU 损失函数和广泛使用的 CloU 损失函数进行训练时所监测的参数。

COCO数据集完整训练曲线

从上到下依次:

精确率 → mAP@0.5 → mAP@0.5:0.95 → F1

蓝色:SIoU

红色:CIoU

图片分析:

SIoU 在所有指标上全面碾压 CIoU

且从头到尾保持领先。


8 实验表格(完整复现原文)

表格1(来自原文 Table 1)COCO 主实验

模型/损失 mAP@0.5 mAP@0.5:0.95
Scylla-Net-S + CIoU 66.4% 50.3%
Scylla-Net-S + SIoU 70.0% 52.7%
Scylla-Net-L + SIoU 74.3% 57.1%

表格分析:

  • SIoU 相对 CIoU:+3.6% AP50
  • SIoU 相对 CIoU:+2.4% AP
  • 大模型收益更明显

表格2收敛速度对比

场景 损失 收敛轮数
偏轴 CIoU 1000+(不收敛)
偏轴 SIoU 495
轴上 CIoU 190
轴上 SIoU 119

表格3速度精度对比

模型 mAP@0.5:0.95 推理速度(ms)
EfficientDet-d7x 54.4% 153
YOLOv4 47.1% 26.3
YOLOv5x6 50.4% 6.1
Scylla-Net + SIoU 52.7% 7.6
Scylla-Net-L + SIoU 57.1% 12.0

表格分析:

SIoU 模型在精度超越 YOLOv5、EfficientDet 的同时,

保持极快的推理速度


9 核心代码(PyTorch 完整版)

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

def siou_loss(preds, targets, theta=4.0, eps=1e-7):
    """
    完整 SIoU 损失实现
    preds: [N, 4] (x1, y1, x2, y2)
    targets: [N, 4] (x1, y1, x2, y2)
    """
    # 坐标拆分
    px1, py1, px2, py2 = preds.unbind(-1)
    tx1, ty1, tx2, ty2 = targets.unbind(-1)

    # 中心点、宽高
    pcx = (px1 + px2) / 2
    pcy = (py1 + py2) / 2
    pw = px2 - px1
    ph = py2 - py1

    tcx = (tx1 + tx2) / 2
    tcy = (ty1 + ty2) / 2
    tw = tx2 - tx1
    th = ty2 - ty1

    # ==================== IoU 计算 ====================
    inter = (torch.min(px2, tx2) - torch.max(px1, tx1)).clamp(0) * \
            (torch.min(py2, ty2) - torch.max(py1, ty1)).clamp(0)
    union = pw * ph + tw * th - inter + eps
    iou = inter / union

    # ==================== Angle Cost ====================
    sigma_x = (pcx - tcx) ** 2
    sigma_y = (pcy - tcy) ** 2
    sigma = torch.sqrt(sigma_x + sigma_y + eps)
    ch = torch.abs(pcy - tcy)
    x = ch / (sigma + eps)
    x = torch.clamp(x, -1. + eps, 1. - eps)

    angle = torch.asin(x)
    Lambda = 1 - 2 * torch.sin(angle - torch.pi / 4) ** 2

    # ==================== Distance Cost ====================
    cw = torch.max(tx2, px2) - torch.min(tx1, px1)
    ch = torch.max(ty2, py2) - torch.min(ty1, py1)

    rho_x = ((pcx - tcx) / (cw + eps)) ** 2
    rho_y = ((pcy - tcy) / (ch + eps)) ** 2
    gamma = 2 - Lambda
    Delta = (1 - torch.exp(-gamma * rho_x)) + (1 - torch.exp(-gamma * rho_y))

    # ==================== Shape Cost ====================
    omega_w = torch.abs(pw - tw) / (torch.max(pw, tw) + eps)
    omega_h = torch.abs(ph - th) / (torch.max(ph, th) + eps)
    Omega = (1 - torch.exp(-omega_w)) ** theta + (1 - torch.exp(-omega_h)) ** theta

    # ==================== SIoU Loss ====================
    loss = 1 - iou + (Delta + Omega) / 2
    return loss.mean()

10 全文总结(最精炼)

  1. 痛点 :传统 IoU 家族缺少角度监督,偏轴场景收敛极慢
  2. 创新 :SIoU 加入Angle Cost,先对齐方向再回归位置
  3. 结构:角度 + 距离 + 形状 + IoU,四合一监督
  4. 效果
    • 收敛速度 提升 1 倍以上
    • COCO +2.4% AP+3.6% AP50
    • 优化曲面更平滑,几乎不发散
  5. 地位YOLOv6/v7/v8/v9 通用标配损失

相关推荐
bloglin999991 小时前
向量大模型升级可能改变向量空间(需要回归)
人工智能·数据挖掘·回归
AI技术增长1 小时前
Pytorch图像去噪实战(三):ResUNet图像去噪模型实战,解决UNet深层训练不稳定问题
人工智能·pytorch·深度学习
TDengine (老段)1 小时前
工业软件的未来:构建在工业数据底座之上的 AI Agent
大数据·数据库·人工智能·时序数据库·tdengine
aLTttY1 小时前
Spring Boot集成AI大模型实战:从0到1打造智能应用
人工智能·spring boot·后端
FlyIer5561 小时前
2026 个人网站建站软件实测
人工智能
Yuer20251 小时前
Case-X01豆包意图识别能力压力测试
人工智能·edca os
木枷1 小时前
SuffixDecoding: Extreme Speculative Decoding forEmerging AI Applications
人工智能
qq_白羊座1 小时前
提示词工程|大语言模型核心参数设置(含数值范围+适用场景)
人工智能
小苑同学1 小时前
《大模型的结构》
人工智能·自然语言处理