YOLO Loss 演進
L1 / L2 Loss(YOLOv1-YOLOv3)
- 設計方式
- 對預測與真值直接做數值誤差最小化
- 位置:
- 尺寸:
- 置信度與分類也使用平方誤差
- YOLOv1 使用 Sum of Squared Error(L2 Loss) 作為整體 loss
- 對預測與真值直接做數值誤差最小化
- 設計動機
- 將 detection 視為 回歸問題
- 結構簡單、易於實作與訓練
- 計算成本低,符合 early real-time 設計目標
- 核心特性
- 直接最小化座標距離:
- 與 影像尺度直接相關(非尺度不變)
- 主要問題
- 與評估指標不一致
- 訓練優化座標距離,評估使用 IoU
- 尺度敏感
- 大框與小框相同誤差影響不同
- 幾何關係未建模
- 相同的座標距離誤差,可能對應截然不同的重疊狀態(與 IoU 脫鉤)。
- 易受異常值主導
- L2 對極端偏離的預測過度敏感,容易拉偏整體訓練方向。
- 高 IoU 區域梯度不足
- 難以進行精細定位 → 影響 AP75 / AP90
- 與評估指標不一致
![]() |
|---|
| L2 在近端(綠框)穩定,但易受異常值(黃框)主導 Loss,且距離無法反映真實 IoU。 |
問題
L1/L2 只優化座標差距,無法反映邊界重疊品質,導致訓練目標與 IoU 評估不一致。
YOLOv1:統一的 L2 Loss
- Loss 類型
- 全部任務使用 Sum of Squared Error(L2)
- 包含:
- Bounding box(x, y, w, h)
- Confidence
- Classification
- Loss 結構
- 設計特性
- :強化定位學習
- :降低負樣本影響
- 使用 :降低大框權重
- 每個 GT 由 IoU 最大的 predictor 負責
- 主要問題
- L2 與 IoU 評估指標不一致
- 對尺度敏感
- 高 IoU 區域梯度不足

問題
L2 只優化座標差距,無法反映邊界重疊品質。
YOLOv2:Anchor-based + 穩定化回歸
- Loss 類型
- Bounding box:仍為 座標回歸誤差(L2)
- Objectness:
- Classification:conditional class probability
- YOLOv2 沒有更換 loss 類型,改進重點在於:讓回歸更容易學、讓訓練更穩定
- 關鍵改變
- 引入 Anchor boxes(尺寸先驗)
- 預測 offset 而非絕對座標
- 使用 IoU-based k-means 產生 anchor priors
- 設計意義
- 降低回歸難度:模型只需學習 residual
- 提升訓練穩定性:Sigmoid 限制中心點在 cell 內
- 改善收斂速度:dimension prior 讓初始預測更接近 GT
關鍵
YOLOv2 的進步在於「回歸表示方式」,而不是更換 Loss。

Anchor-based offset prediction
- 不直接預測 bbox 座標,而是預測相對於 anchor 的 offset
- :grid cell 位置
- :anchor 尺寸先驗
- 效果
- 將問題轉為 residual learning
- 降低回歸難度,提升學習效率
中心點 Logistic 約束(訓練穩定關鍵)
- 使用 sigmoid 限制中心位置:
- 設計目的
- 防止預測框中心在 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 不計入負樣本
- 分類改為 Multi-label BCE
- 設計意義
- 分離 objectness 與 classification
- 降低類別不平衡影響
- Multi-label BCE
- 提升在複雜標註場景的適應性
- Ignore IoU threshold
- 穩定訓練、避免過多負樣本懲罰
- 評分更接近定位品質
- 高 IoU 的 anchor 才成為正樣本
- 分離 objectness 與 classification
關鍵
YOLOv3 開始讓評分與 IoU 對齊,但 bbox regression 本身仍不是 IoU-based。
Bounding box(仍為座標回歸)
- 預測參數化形式:
- 回歸損失(L2):
- 特點:仍非 IoU-based regression
Objectness(重要改變)
- 使用 Binary Cross Entropy
- 標籤定義:
- 其中 為 IoU threshold(e.g., )
- 設計重點
- 每個 GT 在每個尺度只匹配 一個最佳 anchor
- 高 IoU 但非最佳者 不計算 loss
- 降低負樣本數量,提升訓練穩定性
Classification(重要改變)
- 使用 Binary Cross Entropy(multi-label)
- 特點
- 不使用 Softmax
- 每個類別獨立預測
- 支援多標籤情境
IoU-based Loss(YOLOv4 之後主流)
為什麼 L1 / L2 不適合 Detection?
- 優化目標與任務不一致
- L1 / L2:最小化座標誤差
- Detection:最大化 IoU(重疊程度)
- 最小座標誤差 ≠ 最大 IoU
- 對尺度敏感
- 相同座標偏移:
- 小物體 → IoU 下降明顯
- 大物體 → IoU 變化較小
- 學習穩定性較差
- 相同座標偏移:
- 無法直接優化重疊品質
- 當兩框不重疊時:
- L1 / L2 仍只反映數值距離
- 無法指導如何增加重疊
- 缺乏幾何關係建模
- 無法反映:
- 框的重疊品質
- 中心距離
- 長寬比例差異
- 無法反映:
IoU-based Loss 的設計動機
- 核心思想
- 讓 Bounding Box Regression 直接優化 IoU
- 優點
- 優化目標與評估指標一致
- 對不同尺度更穩定
- 收斂更符合 detection 任務
- 定位精度更高
- 常見形式
- IoU Loss
- GIoU(Generalized IoU)
- DIoU(Distance IoU)
- CIoU(Complete IoU)
關鍵
Loss 從「座標距離」轉向「幾何關係」。
IoU Loss(基本形式)
- 定義:
- 其中:
- 特性
- 與評估指標一致
- 對尺度不敏感
- 直接優化重疊品質
- 限制
- 當兩框不重疊時:

問題
無重疊時梯度為 0,模型無法學習如何靠近 GT。
GIoU(Generalized IoU)
- 為解決「無重疊無梯度」問題:
- 其中:
- :包住兩框的最小外接矩形
- 效果
- 無重疊時仍有梯度
- 推動預測框向 GT 靠近

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