RetinaNet 的密集預測:破解類別不平衡難題的單階段目標檢測范式(二)
RetinaNet 中密集預測的關鍵突破在于 “Focal Loss 的設計”,它直接破解了傳統(tǒng)密集預測中類別不平衡導致的訓練失效難題。在傳統(tǒng)交叉熵損失函數(shù)下,由于負樣本(背景錨點)數(shù)量遠超正樣本(目標錨點)(比例常達 1000:1),大量簡單負樣本(如完全屬于背景的錨點)會產(chǎn)生累積的微小損失,掩蓋少量正樣本與難分負樣本(如與目標邊緣重疊的錨點)的重要損失,導致模型訓練偏向于 “識別背景”,而非 “區(qū)分目標”—— 即使模型將所有樣本預測為背景,也能獲得較低的總體損失,但完全失去檢測目標的能力。Focal Loss 的核心思想是 “動態(tài)調整損失權重”:對簡單樣本(無論是正樣本還是負樣本)賦予低權重,降低其對損失函數(shù)的貢獻;對難分樣本賦予高權重,迫使模型聚焦于這些對檢測精度至關重要的樣本。
具體而言,Focal Loss 通過兩個機制實現(xiàn)這一目標:一是 “難度權重”,通過一個調制因子降低簡單樣本的損失 —— 樣本預測概率越接近 1(越簡單),調制因子越小,損失權重越低;樣本預測概率越接近 0.5(越難分),調制因子越大,損失權重越高。二是 “類別平衡權重”,在調制因子的基礎上,額外引入一個平衡因子,進一步平衡正樣本與負樣本的總體損失貢獻,避免因負樣本數(shù)量過多導致的損失失衡。這種損失設計使得 RetinaNet 在面對 10 萬個錨點的密集預測時,能夠自動忽略 90% 以上的簡單背景錨點,將訓練資源集中于正樣本與難分負樣本(如與小目標邊緣重疊的錨點、被部分遮擋的目標錨點),從而高效學習到目標的判別特征,徹底解決了傳統(tǒng)密集預測 “訓練低效” 的核心痛點。
RetinaNet 的密集預測架構還通過 “統(tǒng)一預測頭” 設計,確保了多尺度特征圖上預測邏輯的一致性與高效性。在生成多尺度預測特征圖(P3-P7)后,每個特征圖都連接一個結構相同的預測頭,該預測頭分為 “分類分支” 與 “回歸分支”:分類分支負責預測每個錨點屬于 “背景” 或 “目標類別”(如 COCO 數(shù)據(jù)集的 80 類),通過 1×1 卷積將特征圖通道數(shù)調整為 “類別數(shù) × 錨點數(shù)量”,輸出每個錨點的類別概率;回歸分支負責預測每個錨點與真實目標框的位置偏移(如 x、y 方向的中心偏移,寬、高方向的尺寸縮放),同樣通過 1×1 卷積輸出 “4× 錨點數(shù)量” 的偏移量。這種統(tǒng)一的預測頭設計避免了針對不同尺度特征圖設計專用預測模塊的復雜性,同時通過共享卷積參數(shù)(部分實現(xiàn)中)降低了模型參數(shù)量,確保了密集預測的實時性 —— 即使生成 10 萬個錨點,統(tǒng)一預測頭的前向傳播也僅需一次多尺度并行計算,無需額外迭代,在 GPU 上可實現(xiàn) 30fps 以上的推理速度,滿足實時檢測需求。





