特徵金字塔網路
特徵金字塔網路(Lin 等人,2017)是一個頸部(neck)——插在骨幹與偵測頭之間的模組——它建立一組多尺度的特徵圖,使每個層級都既有足夠高的解析度可定位、又有足夠豐富的語意可分類。它所解決的問題是:普通 CNN 的深層有強大語意但解析度粗(對小物件不利),淺層則有細解析度但語意薄弱(對辨識不利)。FPN 讓你在每個尺度上兼得兩者之長。
其訣竅是一條帶有橫向連接的由上而下路徑。骨幹產生一個由下而上的金字塔 C2…C5(愈來愈深、愈小、愈具語意)。FPN 從最深的圖出發,反覆把它上採樣 2 倍,再(經過一個對齊通道數的 1×1 卷積後,逐元素地)加到對應的由下而上的圖上——把強烈的語意注入更高解析度的層級。一個 3×3 卷積會平滑每張合併後的圖以去除上採樣偽影,產生輸出圖 P2…P5(且常含 P6/P7),它們全都語意強烈。
偵測接著在每個金字塔層級上跑同一個頭,每個層級處理一段物件大小:大物件在粗、深的層級偵測,小物件則在細、淺但現在已具語意的層級偵測。在配 FPN 的 Faster R-CNN 中,提議會依其大小被路由到相符的金字塔層級;在 RetinaNet 這類單階段偵測器中,不同尺度的錨框被指派到不同層級。運算開銷很小,因為相對於骨幹,由上而下的路徑很便宜。
FPN 成為幾乎通用的建構元件:它在各種偵測器(Faster R-CNN、RetinaNet、Mask R-CNN、多數 YOLO 頸部)中都能提升小物件準確度,並支撐了後來的變體,如 PANet(在由上而下之上再加一條由下而上路徑)、BiFPN(EfficientDet 中可學習加權、重複融合)與 NAS-FPN(搜尋得來的拓撲)。若你看到一個現代偵測器能把從極小到極大的物件都處理得好,裡頭幾乎一定有個特徵金字塔。
由上而下的一步:P5 = 1×1卷積(C5)。要形成 P4:把 P5 上採樣 2 倍,加到 1×1卷積(C4) 上,再施一個 3×3 卷積。P4 此時兼具 C5 的強語意與 C4 的較高解析度——對中型物件而言恰到好處。