YOLO Neck 的演進
YOLO 的 neck 演進,並不是單純增加層數,而是一條提升多尺度資訊流動效率與結構可擴展性的設計路線:
單尺度 → 多尺度融合 → 雙向資訊流 → 輕 量化與結構一致性
單尺度預測(YOLOv1–YOLOv2)
早期 YOLO 並未將 neck 視為獨立模組,整體設計以即時性與低延遲為核心,模型直接使用 backbone 的最終特徵進行預測。
- 設計背景
- 目標是實現即時偵測(real-time detection)
- 架構盡量簡化,以降低計算量與延遲
- 設計特徵
- 僅輸出單一解析度的 feature map
- Detection head 直接在該尺度上進行預測
- 架構簡單、計算量低,適合 real-time 場景
- 結構限制
- 深層特徵語意強,但空間解析度低
- 低層的細節資訊未被利用
- 模型無法同時兼顧不同尺寸目標
- 實際影響
- 小物體偵測能力較差
- 對尺度變化與密集場景適應性有限
- 容易產生定位誤差
問題
Detection 任務需要同時保留 高層語意 + 低層空間細節,但單尺度設計只能依賴單一層特徵,難以兼顧兩者。
Top-down 多尺度融合(YOLOv3)
YOLOv3 首次將多尺度融合納入核心設計,採用 FPN-style 結構。
- 設計目標
- 將深層語意回傳至高解析度特徵
- 同時保留語意與空間細節
- 提升小物體偵測能力
- 核心機制
- 深層特徵上採樣(upsample)
- 與 backbone 中對應的淺層特徵 concat 融合
- 影響
- Neck 成為 YOLO 架構中的核心組件
- 多尺度 detection 成為後續標準設計
- 顯著改善小物體偵測能力
- 備註
- YOLOv3 是 簡化版 FPN(沒有 lateral conv smoothing)
關鍵
FPN 解決的是:將高層語意有效傳遞到高解析度特徵,使語意與定位能力同時存在。