特徵金字塔網路 是什麼?
Feature Pyramid Network:特徵金字塔網路 的完整解釋
特徵金字塔網路(FPN)是一種用於目標檢測的深度學習架構,旨在從不同尺度的特徵圖中提取豐富的語義信息,以提升小目標的檢測性能。
容易混淆
特徵金字塔網路 vs 單一尺度特徵圖 單一尺度只看一層特徵,處理大物件通常比較順。 FPN 會把不同層級的資訊融合,對小物件更友善。
特徵金字塔網路 vs 物件偵測 物件偵測是任務。 FPN 是幫物件偵測變強的一種架構設計。
記住這句就好
大小都要看見,FPN 就是在補這個缺口。
實際案例
交通攝影 遠處的小車牌和近處的大巴士在同一張圖裡,FPN 能讓模型同時照顧不同尺度。
醫療影像 病灶有時很小又不明顯,多尺度特徵能提高找到微小異常的機會。
算法與應用
它會做自上而下的語義傳遞,再搭配橫向連接,把高層語義和低層細節融合起來。 這種設計常被放進物件偵測框架中,用來提升多尺度目標的表現。
FPN 的三個結構
卷積網路越往深層,語意越強但解析度越低。淺層看得清楚卻不知道那是什麼,深層知道是什麼卻定位不準。小物體在深層特徵圖上可能只剩一兩個像素,直接消失。
FPN 用三個結構把兩邊的優點合起來。
由下而上(bottom-up)。 就是原本骨幹網路的前向傳播,逐層縮小解析度、加深語意。每個階段的最後一層輸出被留下來備用。
由上而下(top-down)。 從最深、語意最強的那層開始,逐層上採樣放大解析度,把強語意往回帶。
橫向連接(lateral connection)。 每一層上採樣之後,跟由下而上對應解析度的那一層相加。前者提供語意,後者提供精確位置。
結果是產生一組解析度不同、但每一層語意都很強的特徵圖。大物體用低解析度那層偵測,小物體用高解析度那層,各司其職。
為什麼它變成標準配備
FPN 之前的做法有三種,各有明顯代價。
只用最後一層特徵:快,但小物體偵測很差。
影像金字塔(把原圖縮放成好幾種尺寸各跑一次):準,但計算量是好幾倍。
直接用各層特徵各自預測:不用額外算,但淺層語意太弱,效果有限。
FPN 的價值在於幾乎不增加計算量就拿到多尺度的強語意特徵。它是一個附加結構,可以接在任何骨幹網路後面,所以 Faster R-CNN、Mask R-CNN、RetinaNet 以及 YOLO 的較新版本都採用了這個設計或它的變體(PANet、BiFPN)。
判斷要不要用:任務裡物體大小差異大就一定要用。物體尺寸固定(例如固定距離拍攝的產線檢測)則未必划算。
情境判斷
Q1:如果你要偵測停車場裡從遠到近的各種車輛,FPN 有幫助嗎? → 有,因為物件大小差異大,FPN 可以讓模型同時處理不同尺度。
Q2:如果場景裡所有目標大小都差不多,FPN 就完全沒價值嗎? → 不一定,還是可能幫助特徵整合,但它的最大優勢通常在尺度差異明顯的場景。
相關術語
常見問題
FPN 一定要搭配物件偵測嗎?
主要是,但任何需要多尺度表徵的任務都可能受益。
FPN 跟金字塔池化是一樣嗎?
不一樣,兩者都處理多尺度,但融合方式不同。
橫向連接在做什麼?
它把高層語義和低層細節接起來,讓每一層都更完整。
FPN 會不會讓模型變重?
會增加一些計算,但通常換來更好的多尺度偵測效果。