跳至主要内容

YOLO Loss 演進

L1 / L2 Loss(YOLOv1-YOLOv3)

  • 設計方式
    • 對預測與真值直接做數值誤差最小化
      • 位置:(x,y)(x, y)
      • 尺寸:(w,h)(w, h)
      • 置信度與分類也使用平方誤差
    • YOLOv1 使用 Sum of Squared Error(L2 Loss) 作為整體 loss
  • 設計動機
    • 將 detection 視為 回歸問題
    • 結構簡單、易於實作與訓練
    • 計算成本低,符合 early real-time 設計目標
  • 核心特性
    • 直接最小化座標距離: Lcoord=(xx)2+(yy)2+(ww)2+(hh)2L_{coord} = (x - x^*)^2 + (y - y^*)^2 + (w - w^*)^2 + (h - h^*)^2
    • 與影像尺度直接相關(非尺度不變)
  • 主要問題
    • 與評估指標不一致
      • 訓練優化座標距離,評估使用 IoU
    • 尺度敏感
      • 大框與小框相同誤差影響不同
    • 幾何關係未建模
      • 相同的座標距離誤差,可能對應截然不同的重疊狀態(與 IoU 脫鉤)。
    • 易受異常值主導
      • L2 對極端偏離的預測過度敏感,容易拉偏整體訓練方向。
    • 高 IoU 區域梯度不足
      • 難以進行精細定位 → 影響 AP75 / AP90
IoU-L1-L2
L2 在近端(綠框)穩定,但易受異常值(黃框)主導 Loss,且距離無法反映真實 IoU。
問題

L1/L2 只優化座標差距,無法反映邊界重疊品質,導致訓練目標與 IoU 評估不一致。


YOLOv1:統一的 L2 Loss

  • Loss 類型
    • 全部任務使用 Sum of Squared Error(L2)
    • 包含:
      • Bounding box(x, y, w, h)
      • Confidence
      • Classification
  • Loss 結構 L=  λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]+λcoordi=0S2j=0B1ijobj[(wiw^i)2+(hih^i)2]+i=0S2j=0B1ijobj(CiC^i)2+λnoobji=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobjcclasses(pi(c)p^i(c))2\begin{aligned} L = \;& \lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{obj} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right] \\ &+ \lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{obj} \left[ (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] \\ &+ \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{obj} (C_i - \hat{C}_i)^2 \\ &+ \lambda_{noobj} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbf{1}_{ij}^{noobj} (C_i - \hat{C}_i)^2 \\ &+ \sum_{i=0}^{S^2} \mathbf{1}_{i}^{obj} \sum_{c \in classes} (p_i(c) - \hat{p}_i(c))^2 \end{aligned}
  • 設計特性
    • λcoord=5\lambda_{coord}=5:強化定位學習
    • λnoobj=0.5\lambda_{noobj}=0.5:降低負樣本影響
    • 使用 w,h\sqrt{w}, \sqrt{h}:降低大框權重
    • 每個 GT 由 IoU 最大的 predictor 負責
  • 主要問題
    • L2 與 IoU 評估指標不一致
    • 對尺度敏感
    • 高 IoU 區域梯度不足

yolov1-L2

問題

L2 只優化座標差距,無法反映邊界重疊品質。


YOLOv2:Anchor-based + 穩定化回歸

  • Loss 類型
    • Bounding box:仍為 座標回歸誤差(L2)
    • Objectness: target=IoU(pred,GT)target = IoU(pred, GT)
    • Classification:conditional class probability
    • YOLOv2 沒有更換 loss 類型,改進重點在於:讓回歸更容易學、讓訓練更穩定
  • 關鍵改變
    • 引入 Anchor boxes(尺寸先驗)
    • 預測 offset 而非絕對座標
    • 使用 IoU-based k-means 產生 anchor priors
  • 設計意義
    • 降低回歸難度:模型只需學習 residual
    • 提升訓練穩定性:Sigmoid 限制中心點在 cell 內
    • 改善收斂速度:dimension prior 讓初始預測更接近 GT
關鍵

YOLOv2 的進步在於「回歸表示方式」,而不是更換 Loss。

yolov2-anchor

Anchor-based offset prediction

  • 不直接預測 bbox 座標,而是預測相對於 anchor 的 offset bx=σ(tx)+cx,by=σ(ty)+cyb_x = \sigma(t_x) + c_x,\quad b_y = \sigma(t_y) + c_y bw=pwetw,bh=phethb_w = p_w e^{t_w},\quad b_h = p_h e^{t_h}
  • (cx,cy)(c_x, c_y):grid cell 位置
  • (pw,ph)(p_w, p_h):anchor 尺寸先驗
  • 效果
    • 將問題轉為 residual learning
    • 降低回歸難度,提升學習效率

中心點 Logistic 約束(訓練穩定關鍵)

  • 使用 sigmoid 限制中心位置: bx,by(cx,cx+1)b_x, b_y \in (c_x, c_x+1)
  • 設計目的
    • 防止預測框中心在 early training 大幅漂移
    • 明顯提升訓練初期穩定性
    • 加速收斂

Dimension Priors(k-means anchors)

  • 使用 IoU-based k-means 從資料中學習 anchor 尺寸
  • 設計目的
    • 提供更符合資料分佈的尺寸先驗
    • 讓初始預測更接近 GT
    • 提升 recall 與收斂速度

YOLOv3:BCE + IoU-aware Objectness

  • Loss 類型
    • bbox:座標回歸(L2)
    • objectness:Binary Cross Entropy
      • target(label)主要是 0/1 的 objectness
      • 並且有 ignore 機制:IoU 高但不是最佳匹配的 prediction 會被忽略、不算負樣本 loss
    • classification:改為 Binary Cross Entropy(multi-label)
  • 關鍵改變
    • 分類改為 Multi-label BCE
      • 取代 Softmax,支援多標籤預測
    • Objectness 與分類解耦
      • 分開判斷「是否有物體」與「屬於哪一類」
    • IoU-based Ignore 機制
      • 與 GT IoU 高但非最佳匹配的 prediction 不計入負樣本
  • 設計意義
    • 分離 objectness 與 classification
      • 降低類別不平衡影響
    • Multi-label BCE
      • 提升在複雜標註場景的適應性
    • Ignore IoU threshold
      • 穩定訓練、避免過多負樣本懲罰
    • 評分更接近定位品質
      • 高 IoU 的 anchor 才成為正樣本
關鍵

YOLOv3 開始讓評分與 IoU 對齊,但 bbox regression 本身仍不是 IoU-based。

Bounding box(仍為座標回歸)

  • 預測參數化形式: bx=σ(tx)+cx,by=σ(ty)+cyb_x = \sigma(t_x) + c_x,\quad b_y = \sigma(t_y) + c_y bw=pwetw,bh=phethb_w = p_w e^{t_w},\quad b_h = p_h e^{t_h}
  • 回歸損失(L2): Lbbox=(tt)2L_{\text{bbox}} = \sum (t - t^*)^2
  • 特點:仍非 IoU-based regression

Objectness(重要改變)

  • 使用 Binary Cross Entropy Lobj=BCE(pobj,yobj)L_{\text{obj}} = \text{BCE}(p_{\text{obj}}, y_{\text{obj}})
  • 標籤定義: yobj={1,if the anchor is the best match for a GTignore,if IoU(anchor, any GT)>τ but not best0,otherwisey_{\text{obj}} = \begin{cases} 1, & \text{if the anchor is the best match for a GT} \\ \text{ignore}, & \text{if IoU(anchor, any GT)} > \tau \ \text{but not best} \\ 0, & \text{otherwise} \end{cases}
    • 其中 τ\tau 為 IoU threshold(e.g., τ=0.5\tau = 0.5
  • 設計重點
    • 每個 GT 在每個尺度只匹配 一個最佳 anchor
    • 高 IoU 但非最佳者 不計算 loss
    • 降低負樣本數量,提升訓練穩定性

Classification(重要改變)

  • 使用 Binary Cross Entropy(multi-label) Lcls=c=1CBCE(pc,yc)L_{\text{cls}} = \sum_{c=1}^{C} \text{BCE}(p_c, y_c)
  • 特點
    • 不使用 Softmax
    • 每個類別獨立預測
    • 支援多標籤情境

IoU-based Loss(YOLOv4 之後主流)

為什麼 L1 / L2 不適合 Detection?

  • 優化目標與任務不一致
    • L1 / L2:最小化座標誤差
    • Detection:最大化 IoU(重疊程度)
    • 最小座標誤差 ≠ 最大 IoU
  • 對尺度敏感
    • 相同座標偏移:
      • 小物體 → IoU 下降明顯
      • 大物體 → IoU 變化較小
    • 學習穩定性較差
  • 無法直接優化重疊品質
    • 當兩框不重疊時: IoU=0沒有有效梯度IoU = 0 \Rightarrow \text{沒有有效梯度}
    • L1 / L2 仍只反映數值距離
    • 無法指導如何增加重疊
  • 缺乏幾何關係建模
    • 無法反映:
      • 框的重疊品質
      • 中心距離
      • 長寬比例差異

IoU-based Loss 的設計動機

  • 核心思想
    • 讓 Bounding Box Regression 直接優化 IoU
  • 優點
    • 優化目標與評估指標一致
    • 對不同尺度更穩定
    • 收斂更符合 detection 任務
    • 定位精度更高
  • 常見形式
    • IoU Loss
    • GIoU(Generalized IoU)
    • DIoU(Distance IoU)
    • CIoU(Complete IoU)
關鍵

Loss 從「座標距離」轉向「幾何關係」


IoU Loss(基本形式)

  • 定義 LIoU=1IoUL_{IoU} = 1 - IoU
  • 其中 IoU=BBBBIoU = \frac{|B \cap B^*|}{|B \cup B^*|}
  • 特性
    • 與評估指標一致
    • 對尺度不敏感
    • 直接優化重疊品質
  • 限制
    • 當兩框不重疊時: IoU=0L=0IoU = 0 \Rightarrow \nabla L = 0

iou

問題

無重疊時梯度為 0,模型無法學習如何靠近 GT


GIoU(Generalized IoU)

  • 為解決「無重疊無梯度」問題: LGIoU=1IoU+C(BB)CL_{GIoU} = 1 - IoU + \frac{|C - (B \cup B^*)|}{|C|}
  • 其中:
    • CC:包住兩框的最小外接矩形
  • 效果
    • 無重疊時仍有梯度
    • 推動預測框向 GT 靠近

giou

問題

僅利用外接框約束,收斂速度較慢,對中心對齊不敏感


DIoU(Distance IoU)

  • 進一步考慮中心距離: LDIoU=1IoU+ρ2(b,b)c2L_{DIoU} = 1 - IoU + \frac{\rho^2(b, b^*)}{c^2}
  • 其中:
    • ρ\rho:兩框中心距離
    • cc:外接框對角線長度
  • 效果
    • 加速收斂
    • 更快對齊中心位置

diou

問題

未考慮長寬比例差異,形狀對齊能力有限。


CIoU(Complete IoU,YOLOv4-v11)

  • 在 DIoU 基礎上加入長寬比一致性: LCIoU=1IoU+ρ2(b,b)c2+αvL_{CIoU} = 1 - IoU + \frac{\rho^2(b, b^*)}{c^2} + \alpha v
  • 其中: v=4π2(arctanwharctanwh)2v = \frac{4}{\pi^2} \left( \arctan\frac{w^*}{h^*} - \arctan\frac{w}{h} \right)^2 α=v(1IoU)+v\alpha = \frac{v}{(1-IoU)+v}
  • CIoU 同時優化
    • 重疊程度(IoU)
    • 中心距離(DIoU)
    • 長寬比例一致性

ciou

關鍵

同時對齊位置與形狀,定位精度與穩定性最佳


EIoU(Efficient IoU,YOLOv7)

  • 為改善 CIoU 中長寬比項(aspect ratio)收斂較慢的問題,EIoU 將尺寸誤差直接分離為 寬/高 的回歸項: LEIoU=1IoU+ρ2(b,b)c2+ρ2(hh)2ch2+ρ2(ww)2cw2L_{EIoU} = 1 - IoU + \frac{\rho^2(b, b^*)}{c^2} + \frac{\rho^2(h - h^*)^2}{c_h^2} + \frac{\rho^2(w - w^*)^2}{c_w^2}
  • 其中:
    • ρ(b,b)\rho(b, b^*):預測框與 GT 框的中心距離
    • cc:包住兩框的最小外接框對角線長度
    • cw,chc_w, c_h:最小外接框的寬與高
  • 效果
    • 將尺寸誤差(w,hw, h)解耦為獨立監督
    • 寬高收斂更快、訓練更穩定
    • 對尺寸不匹配的情況提供更直接的梯度訊號

eiou

關鍵

EIoU 以寬/高解耦的方式提供更直接的尺寸梯度,通常比 CIoU 更快完成尺度對齊。


SIoU(Shape-aware IoU,YOLOv7)

  • SIoU 將回歸誤差分解為:
    • IoU cost
    • Distance cost
    • Shape cost
    • Angle cost(核心)
  • 最終形式: LSIoU=1IoU+Cdist+Cshape2L_{SIoU} = 1 - IoU + \frac{C_{dist} + C_{shape}}{2}
  • 幾何量定義
    • 預測框:中心點 B(bcx,bcy)B(b_{cx}, b_{cy}),寬高為 w,hw, h
    • 真實框:中心點 BGT(bcx(GT),bcy(GT))B^{GT}(b_{cx(GT)}, b_{cy(GT)}),寬高為 wGT,hGTw^{GT}, h^{GT}
    • 兩中心點的水平/垂直距離(圖中綠色虛線框的寬與高): Cw=bcxbcx(GT)C_w = |b_{cx} - b_{cx(GT)}| Ch=bcybcy(GT)C_h = |b_{cy} - b_{cy(GT)}|
    • 中心距離(圖中的 σ\sigma): σ=Cw2+Ch2\sigma = \sqrt{C_w^2 + C_h^2}
    • 方向角(圖中的 α,β\alpha, \beta): α=arctan(ChCw),β=π2α\alpha = \arctan\left(\frac{C_h}{C_w}\right), \quad \beta = \frac{\pi}{2} - \alpha
    • 包住兩框的最小外接矩形(圖中黑色虛線框的寬與高): Cw,ChC_w', C_h'
  • Angle cost(角度成本) Cangle=sin(2α)C_{angle} = \sin(2\alpha)
    • 當偏移接近水平/垂直(α0\alpha \approx 0π2\frac{\pi}{2}Cangle0\rightarrow C_{angle} \approx 0
    • 當偏移接近對角(απ4\alpha \approx \frac{\pi}{4}Cangle1\rightarrow C_{angle} \approx 1
  • Distance cost(距離成本)
    • 角度成本在此轉化為距離權重 γ\gamma γ=2Cangle\gamma = 2 - C_{angle}
    • 距離懲罰項(直接使用圖中的 Cw,ChC_w, C_h 與外接框 Cw,ChC_w', C_h' 計算): ρx=(CwCw)2,ρy=(ChCh)2\rho_x = \left(\frac{C_w}{C_w'}\right)^2, \quad \rho_y = \left(\frac{C_h}{C_h'}\right)^2 Cdist=(1eγρx)+(1eγρy)C_{dist} = (1 - e^{-\gamma\rho_x}) + (1 - e^{-\gamma\rho_y})
  • Shape cost(形狀成本)
    • 直接對應雙方的寬高 w,h,wGT,hGTw, h, w^{GT}, h^{GT} ωw=wwGTmax(w,wGT),ωh=hhGTmax(h,hGT)\omega_w = \frac{|w - w^{GT}|}{\max(w, w^{GT})}, \quad \omega_h = \frac{|h - h^{GT}|}{\max(h, h^{GT})} Cshape=(1eωw)4+(1eωh)4C_{shape} = (1 - e^{-\omega_w})^4 + (1 - e^{-\omega_h})^4
  • 設計意義
    • 角度成本(α,β\alpha, \beta)引導預測框優先沿最近的 X 或 Y 軸對齊。
    • 距離成本以外接框尺度(Cw,ChC_w', C_h')正規化,避免尺度敏感,並以角度決定懲罰力度(角度越平齊,距離懲罰越強)。
    • 形狀成本直接約束寬高對齊,提升收斂速度與穩定性。

siou

關鍵

SIoU 引入「角度」作為動態權重,核心策略是「先對齊 X/Y 軸,再拉近距離」。這種路徑規劃能減少訓練初期的盲目震盪,大幅加快收斂速度。


Multi-scale Loss Re-weighting(YOLOv5)

  • 設計動機
    • 不同 detection layer(P3 / P4 / P5)對應不同尺度物體,其樣本數量與學習難度存在差異
    • 若某一尺度的 loss 長期較大,該層將主導梯度更新,導致多尺度學習失衡
    • YOLOv5 引入 auto-balance,在訓練過程中動態調整各層權重,使不同尺度的梯度貢獻更為均衡
  • 核心機制
    • 對各層的 objectness loss 進行加權: Lobj=iwiLobj(i)L_{obj} = \sum_i w_i \cdot L_{obj}^{(i)}
    • 訓練過程中,根據各層的學習情況,以 指數移動平均(EMA) 方式更新權重: wi(1α)wi+α1Lobj(i)w_i \leftarrow (1 - \alpha) \, w_i + \alpha \cdot \frac{1}{L_{obj}^{(i)}} 其中 α\alpha 為較小的更新係數(如 10410^{-4}
  • 設計效果
    • loss 較大的尺度 → 權重逐漸降低
    • loss 較小的尺度 → 權重逐漸提升
    • 使不同尺度的梯度影響趨於平衡,避免單一尺度主導訓練
關鍵

Auto-balance 透過動態權重調整,使多尺度的梯度貢獻保持平衡,提升訓練穩定性與整體檢測性能。


Distribution-based Regression(YOLOv8)

  • 設計動機
    • 傳統回歸等同於學習單點(Dirac delta),監督訊號有限
    • 將座標回歸轉為 分佈學習
    • 提供更密集且平滑的學習訊號,提升定位精度與穩定性
  • 設計方式
    • 不直接回歸單一座標值
    • 將每個邊界距離表示為離散機率分佈:
      • 左、上、右、下:(l,t,r,b)(l, t, r, b)
    • 每個邊界預測 K 個 bins 的機率(通常 K=16)
    • 使用期望值計算最終位置: d^=i=0KP(i)i\hat{d} = \sum_{i=0}^{K} P(i) \cdot i
    • 訓練時使用 Distribution Focal Loss(DFL)
  • 核心特性
    • Bounding Box Regression:
      • 單點回歸 → 分佈建模
    • 鄰近 bins 共同提供梯度,優化更平滑
    • 與 IoU-based Loss(如 CIoU)搭配: Lbbox=LCIoU+LDFLL_{bbox} = L_{CIoU} + L_{DFL}
  • 主要優勢
    • 提升高精度定位能力(改善 AP75 / AP90)
    • 對小物體與邊界更敏感
    • 學習訊號更密集,對噪聲更具魯棒性

dfl

關鍵

DFL 將邊界回歸從單點預測轉為分佈學習,提供更密集的梯度訊號,顯著提升定位精度。