從YOLOF的觀點深入探究Feature Pyramid Networks (FPN)的背後價值
從YOLOF的觀點深入探究Feature Pyramid Networks (FPN)的背後價值
在物件偵測 (object detection) 領域,不論是 anchor-based或 anchor-free方法,FPN (feature pyramid network) 與其衍生架構是提升偵測準確度的常用技巧,特別是在偵測中小物件有顯著效果。長期以來,多數人相信 FPN主要的價值在於將尺度等變 (scale equivariance) 一定程度的加到 CNN的架構中。
在 2021年,一篇稱為 YOLOF的論文 (其實跟那個 YOLO關連不大) 明確地指出 FPN更重要的價值在於背後** divide-and-conquer的 label assignment**。白話地說,重點不只是「抽取不因尺度改變的特徵」,同時也要**「減少物件尺度產生的正樣本數偏差」**。這個論點除了有實驗數據佐證外,其實與近幾年 detection關於樣本分配的討論不謀而合。
Tip
文章難度:★★★☆☆
閱讀建議: 本篇文章屬於 object detection的進階議題,透過 YOLOF的觀點,結合相關論文資訊分析 FPN與物件偵測的關聯。會同時包含正負樣本數、label assignment與不同深度的 feature fusion的討論。文章在前段盡量包含了所需的基本知識,包含 CNN object detection with dense predictor、 FPN、 Focal Loss等。如果對於這些方法與背後原理熟悉的讀者,在前半可以加速閱讀。
推薦背景知識:object detection, feature pyramid network, focal loss, label assignment, object anchor, RetinaNet, FCOS, IoU threshold, YOLO, DETR, convolution neural network.
YOLOF 論文全名是 ”You Only Look One-level Feature” ,其實跟大部分人熟知的各種YOLO v1到v7 (You Only Look Once) 沒什麼直接的關係。YOLOF的論文重點其實在於解析了自 2016年持續在detection領域佔據要角的FPN (Feature Pyramid Network) ** [2]**。
在介紹 YOLOF觀點前,先透過 FPN、Focal Loss [3] 與ATSS (Adaptive Training Sample Selection) [4] 等 detection方法,回顧一下CNN object detection的兩個重要問題-imbalance samples與 CNN不具備 scale equivariance。
Imbalance Samples
物件偵測在問題的本質有一個相當困難的點:無法預先知道有多少物件需要預測。換句話說,演算法的輸出為一組 (多個不定數量) 的物件描述。
這個問題在現在的方法中多半是使用在feature map上做dense prediction解決:在經過convolution neural network抽取的特徵圖 (feature map)上切割出稠密的網格 (mesh grid),在網格上的每一格都做一次或多次物件的預測。
然而在 dense prediction的設計下,會產生**負樣本明顯多於正樣本 (背景多於待偵測物) **的情況,也導致網路訓練變得困難。解決這個問題的主要方法分為兩個方向。其一是針對 loss進行調整,如知名的 Focal Loss。
另一個則是透過精巧的 label assignment,為每個 pixel的 supervised target進行調整。知名方法如 ATSS、Probabilistic Anchor Assignment (PPA) [5]、AutoAssign [6] 等。
其實每個 detection架構都有自己的 label assignment方法。但大多都是利用 IoU計算 (多半是 anchor-based方法,如 Faster RCNN、 RetinaNet),或是看 pixel是否落在框內 (多半是 anchor-free方法,如 FCOS)。
CNN Isn’t Scale Equivariance
在 convolution的機制下,CNN具備觀察局部 (locality) 以及特徵不因在圖片何處改變 (translation equivariance) 的inductive bias,但並不包含特徵不因尺度改變 (scale equivariance)。
雖然也有論點指出現在的 convolution不是完全的 translation equivariance,不過這篇文章先不討論這些。
因此,許多研究相信以 CNN為基礎的 detector無法很好的處理同一個種類不同的 scale,或稱為 size。如以下圖片的大、中、小三顆橘子, CNN並不能保證他們三個抽出來局部特徵是一致的。這也導致了object detection容易因為物件尺度大小不同而產生不同的偵測結果,即使他們縮放後長得差不多。
Feature Pyramid Network
長期以來 CNN object detection也是受尺度問題所苦,並且較明顯反映於小物件,即小物件偵測率明顯劣於大物件。這也讓大部分人開始透過預先縮放圖片來進行訓練與偵測 (image pyramid, multi-scale training and inference)。即使這種方法是有效果的,但卻相當的費時。
將 image pyramid的概念導入 CNN中,
FPN有點將尺度等變 (scale equivariance) 一定程度的加到 CNN的架構中的感覺。
結果上, FPN在中小物件展現明顯更好的偵測結果。
FPN架構基本上就是**將深層的 feature map再逐層拉回高解析度,並與先前抽出同解析度的 feature map結合。**最後,在多個 feature map同時進行 dense prediction。
大部分有研讀 FPN的人,多半對於UNet [7]、Hourglass [8]、HRNet [9] 與SpineNet [10] 等論文都相對熟悉。在這些論文裡,多半會提到以下相似的論點:
- Low level feature (high resolution) 對於細節保留較多資訊。
- High level feature (low resolution) 對於語意 (semantic) 有更好的理解。
- 在位置敏感的任務中,如 detection、segmentation等,兩者資訊不可或缺,需要妥善的結合。
因此大部分人對於 FPN很直覺理解到的價值會是一個較有效率的 multi-scale feature fusion方法。
然而,其實 FPN還有另一個較隱晦的價值。在使用 FPN的時候,網路在不同解析度的 feature maps上會同時進行預測。換句話說,一個物體可以同時被不同層的 predict head預測。
通常在設計 FPN detector時,會
針對不同物體尺度或其他規則,讓每層應該被預測的物體有一定的權能區分。
舉例來說,物件的尺度。大的物體 (佔畫面比例大) 由較低解析度的 layer來預測。
這個行為FPN原始論文就有提及,後續也被更多研究討論 (如 ATSS)。逐漸地,安排 feature map上每個 pixel的 label被歸類為形成高品質 detector的關鍵之一,這個討論在後續就演變成了 label assignment。
說了這麼多前情提要,終於到了 YOLOF。YOLOF就是抓著 FPN較隱晦的貢獻 (label assignment on multi-scale prediction) 進行大量的分析與優化。
YOLOF
YOLOF可以說是受啟發於無須 FPN的DETR [11],
利用平衡物件尺度的 label assignment與模擬不同 receptive field融合的 predict head。
最終, YOLOF在只使用一層 feature map的情況達到使用 FPN同級的表現。
DETR是出自”End-to-End Object Detection with Transformers” 的 detector架構,使用 CNN為 backbone,而predict head則是由Transformer [12] 構成。在大部分 detection架構使用 multi-scale features的情況, DETR僅使用一個尺度的 feature map (C5特徵層,下採樣32倍),呈現不落於使用 multi-scale features的架構。
然而,在一般的 dense detector架構下 (即 CNN backbone搭配 CNN predict head),CNN detector卻無法達到這麼好的品質。以下是 YOLOF論文在四種情境下的實驗數據,分別是 Multiple-in-Multiple-out (MiMo)、 Single-in-Multiple-out (SiMo)、 Multiple-in-Single-out (MiSo)、 Single-in-Single-out (SiSo)。
在這個實驗中,Mi代表了multi-scale feature fusion,而Mo代表採用 divide-and-conquer的 label assignment。有趣的是,在想像中這兩件事情都是FPN中重要的目的,然而從實驗結果來看,
FPN帶來的重大價值其實是 divide-and-conquer的 label assignment。
YOLOF論文認為,
FPN 其實就是一定程度地處理了物件 scale造成的 class imbalance。
在 dense object detection的設計下, imbalance problem其實可以再細分為很多種。比如說在 Focal Loss的研究中,闡述了前景後景數量差產生的正負樣本數不均 (positive & negative class imbalance)。
而YOLOF討論的是因為物件尺度造成的樣本數不均。白話地說,假設以只有一層 feature map輸出的 RetinaNet為例,將與 ground truth bounding box RoI大的 anchor設定為正樣本。那麼同樣一個尺度大的橘子會比尺度小的橘子擁有更多的正樣本。
這個問題在有使用 FPN的 detector是較不明顯的,因為在做 anchor assignment時會依照物件尺度安排到不同 layer上(大的物體由較低解析度的 layer來預測)。不過當把 FPN拔除,這個問題就會被完整地暴露出來,導致偵測準度大幅下降。
因此 YOLOF提出了簡單粗暴、但能確保尺度上樣本均勻的 label assignment方法,稱為 uniform matching。方法上就是直接對每個 ground truth,強迫只挑選最靠近的 k個 anchor設定為正樣本,並設定一些 ignored anchor (IoU大於0.7的負樣本即 IoU小於0.15的正樣本)。
這個方法其實就是所謂的 top-k,在許多其他方法已有相似雛形,只是沒有被正面拿出來與 FPN討論。如 ATSS其實也是在 FPN的每層取 top-k,然後再用統計方法選擇正負樣本的 threshold。
不過其實multi-scale feature fusion仍然有著不可否認的意義,特別是在針對合適receptive field的特徵融合。YOLOF論文的方法是在single-scale feature map的predict head設計了可以模擬 receptive field融合的 building block。
具體上其實就是透過 residual block中 3x3 convolution使用不同 dilated rate的 dilated convolution(中文通常譯為空洞卷積),並透過 residual path進行不同 receptive field的融合。
Experimental Results
從論文的實驗數據上來看,uniform matching或是 dilated encoder都帶來了顯著的改進,而 uniform matching的效果尤其明顯。
而整體結果上,YOLOF可以在與使用FPN的detector 同等表現的情況下 (改良的RetinaNet,包含GIoU loss [13]、 Group Normalization[14] 與 AutoAssign的 label assignment),有約 2.5倍的運算效率 (batch 1運行於 RTX 2080Ti)。
不過這個數據是跑在 COCO validation上,不是常拿來比較的 COCO testdev。
在 label assignment上,以 single-scale feature來說, YOLOF的 uniform matching也是表現最好的。勝過 Focal Loss的 Max-IoU matching、ATSS與 DETR的 Hungarian Matching。
總體而言, YOLOF論文再次提醒了大家關於 anchor assignment的重要性,同時也從很有趣的面向再次詮釋了 FPN。實作上則示範了如何在保有高準確度下,設計不含 FPN的 detector。
不過 FPN在後續研究中不斷被玩成花。即使在邊緣運算,仍然有大量的 FPN架構 (如GoogleEfficientDet的 BiFPN )。那 YOLOF為什麼還是嘗試分析移除掉 FPN?那是因為即使 FPN是有效率的進行特徵融合,這樣的架構還是會造成較大的運算時間。畢竟在越高解析度運算,成本是越高的。另一方面,在許多邊緣運算的加速單元 (如 DSP、NPU等),這種需要拉來拉去的網路架構,運算上會有 FLOPs無法估計的成本 (如 memory access),造成所需運算時間 (latency) 拉高。
雖然其實 dilated convolution在邊緣運算的加速單元也不是那麼友善。
好了~這篇文章就先到這邊。老話一句,Deep Learning領域每年都會有大量高質量的論文產出,說真的要跟緊不是一件容易的事。所以我的觀點可能也會存在瑕疵,若有發現什麼錯誤或值得討論的地方,歡迎回覆文章或來信一起討論 :)
Reference
- You Only Look One-level Feature[2021 CVPR]
- Feature Pyramid Networks for Object Detection[2017 CVPR]
- Focal Loss for Dense Object Detection[ICCV 2017]
- Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection[CVPR 2020]
- Probabilistic Anchor Assignment with IoU Prediction for Object Detection[ECCV 2020]
- AutoAssign: Differentiable Label Assignment for Dense Object Detection[ArXiv 2020]
- U-Net: Convolutional Networks for Biomedical Image Segmentation[MICCAI 2015]
- Stacked Hourglass Networks for Human Pose Estimation[ECCV 2016]
- Deep High-Resolution Representation Learning for Human Pose Estimation[CVPR 2019]
- SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization[CVPR 2020]
- End-to-End Object Detection with Transformers[ECCV 2020]
- Attention Is All You Need[NIPS 2017]
- Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression[CVPR 2019]
- Group Normalization[ECCV 2018]
- EfficientDet: Scalable and Efficient Object Detection[CVPR 2020]