1. 程式人生 > >特徵金字塔技術總結

特徵金字塔技術總結

前言:

特徵金字塔是目前用於目標檢測、語義分割、行為識別等方面比較重要的一個部分,對於提高模型效能具有非常好的表現。

不同大小的目標都經過了相同的降取樣比例後會出現較大的語義代溝,最常見的表現就是小目標檢測精度比較低。特徵金字塔具有在不同尺度下有不同解析度的特點,不同大小的目標都可以在相應的尺度下擁有合適的特徵表示,通過融合多尺度資訊,在不同尺度下對不同大小的目標進行預測,從而很好地提升了模型的效能。

本文將介紹特徵金字塔的兩種構建方式,介紹目前特徵金字塔的主要改進思路和方案,主要有:ASPP, FPN, PANet, RFB, ASFF, FPT, YOLOF等。

 

兩種構建方式

1. 通過多次降取樣生成不同解析度的層構成,這種方式應用比較廣,比較常見的應用有SSD, FPN, YOLO_v3, ...此外還有很多。

2. 通過多條具有不同空洞率的空洞卷積的支路來構建。目前這方面的應用有ASPP, RFP等。

 

構建金字塔只是個基礎操作,對於構建後的處理才是重點,目前有多種多樣的方法去處理,這方面的改進主要有ASFF, PANet, FPT, YOLOF, BiFPN, STDN等。

 

ASPP(2017)

ASPP是基於第二種方式來構建的,具體如下圖所示:

通過多支路後進行concate,再進行1x1卷積。這篇論文比較簡單,主要貢獻就是提出了這種構建方式。

 

FPN(2017)

對於一般的神經網路都是採用圖b所示的方式來預測,通過對影象多次降取樣,在最後一層進行預測,這種方式的缺點是對小目標的檢測效果不好。

在SSD中採用了圖c的方式,利用前幾層的資訊進行多尺度預測,這種方式的缺點是低層的語義資訊不夠,而且SSD為了避免重複使用前面已經卷積過的feature map,而從靠後的層(eg: conv4_3 of VGG nets )才開始構建金字塔,這樣做的缺點就是金字塔的低層的解析度也不夠,丟失了前面層高解析度的資訊,而那些才是對識別小目標起重要作用的資訊。

而FPN是目前應用比較廣的一種方式,在圖C的基礎上增加了一條自上而下的路徑,主要目的就是解決前面三種方式存在的問題。通過自上而下的路徑,使得低層的feature map具有較好的語義資訊。

 

這條路徑的實現方式如下圖所示。

 

注:FPN的效果非常好,但仍然存在不少改進的空間,後續會出現好幾篇論文逐一改進這些問題。

 

PANet(2018)

我在《CNN結構演變總結(三)設計原則》(點選進入)中提到,縮簡訊息流動路徑和增加不同分支來增加資訊流動路徑的思想會產生比較強的效能,總結起來就是“split-transform-merge”和“feature reuse”,這也是這幾年神經網路的主要改進思想,幾乎可以說所有的改進方案都是基於這兩種思想。

在PANet同樣基於這一點,提出了在FPN中自上而下的路徑的基礎上增加了一條自下而上的路徑,具體如下圖所示。

 

 

具體路徑的實現方式如下圖所示,對lower level先進行步長為2,大小為3x3的卷積進行降取樣,再與鄰側同大小的level逐像 素相加,再進行3x3卷積,形成Ni+1。

 

在FPN中採用了分而治之的思想,所謂分而治之,就是對於大的目標在金字塔高層檢測,小的目標在金字塔低層檢測。基於這種思想的論文還有很多,例如YOLO_V3,根據資料集上的先驗提出了9個尺寸不同的候選框,根據這9個候選框的尺寸分別在不同的level上檢測。

 

PANet論文提出當目標大小相差超過10個畫素的時候,就有可能被分到不同的level上檢測,而事實上這兩個目標可能差不多,因此這種方式並不是最優方案。

 

PANet論文的第二點貢獻是提出自適應特徵池化( Adaptive Feature Pooling)。

主要思想是將所有level中產生的候選框中的資訊,都用來參與預測。而不是大的目標在higher level檢測,小的目標在lower level檢測。

 

具體做法如下圖所示,使用ROIAlign將金字塔reshape到相同的大小,使用共享的一個全連線層對這四個level分別計算,再通過逐畫素求和或取max的方式融合四個level到一個feature map。 

 

RFB(2018)

RFB論文認為ASPP使用不同空洞率的空洞卷積所組成的多分支結構效果很好,但由於在使用之前,使用的是同尺寸的卷積核,導致每條分支產生的解析度仍然是相同的,只是感受野不同而已。這樣的方式與雛菊型卷積核相比,產生的特徵並不是那麼明顯。

 

因此,RFB論文提出了Receptive Field Block,主要做法就是在進行空洞卷積前加一層不同大小的卷積層,分別是1x1, 3x3, 5x5這樣每條支路產生的解析度不同。

這種方式的效果與其它方式的對比

 

ASFF(2019)

在FPN中這種分而治之除了在PANet中提到的一個問題是,當一個大的目標在higher level上檢測時,小的目標在higher level是被當作了background。同理,大目標在lower level中被當成了background,實際上在這些地方是存在目標的,只是不在這一層檢測而已,因此這樣會存在較大的問題。

 

基於這個問題,ASFF提出了adaptively spatial feature fusion (ASFF)。主要思想是將每層的資訊都相互融合起來。

具體操作是先對每一層進行1x1降維,對於第一和二,第二和第三層這種解析度比為1:2的,通過3x3,步長為2的卷積降取樣,對於第一和第三層這種解析度比為1:4的,先對進行max-pooling,再通過3x3,步長為2的卷積降取樣。然後通過係數加權融合。

 

該方法用於YOLO_v3,提高了大概5-10的mAP。

 

基於這種方式改進的還有Feature Pyramid Transformer。

 

FPT(2020)

這篇論文的主要觀點是認為背景中其它物品的存在也會輔助識別某一個類別,例如電腦只會在電腦桌上,而不是大街上或水裡,背景中的滑鼠,鍵盤也會輔助區分電視機與電腦顯示器。因此需要融合金字塔其它level的資訊,這雖然出發點與ASFF不同,但實際改進的思路都是一樣的,都是讓每一層都融合其它層的語義資訊。

 

 

主要思想:利用Non Local Block的操作,以一層為query,其它每層為key,value,計算相似性,得出加權係數,對該層進行加權,每一層都進行這樣的操作。

 

具體在實現細節上有所區別,要介紹清楚實現操作比較費時,對Non Local Block也得解釋,因此這裡只介紹個思路,關於這兩篇論文在公眾號《CV技術指南》中有詳細解讀,詳情請點選下方連結。讀者可根據這兩篇論文了解transformer如何在CV中應用,建議看一看。

《NLN: Non-Local Neural Network》

《FPT: Feature Pyramid Transformer》

 

YOLOF(2021)

YOLOF通過實驗得出結論在特徵金字塔的C5層已經有足夠的語義資訊,融合其它層資訊並不會帶來很大的精度提升,也就1的mAp,而使用分而治之的思想極為有效,可以提升大概12的mAP。

 

因此YOLOF提出只需要使用C5層資訊,並仍然基於分而治之的思想。但由於使用max-iou的匹配方式,只在C5層預測會出現對大小不同的目標生成的positive anchor數量不平衡的問題;分而治之存在計算量大,需要的記憶體大,推理速度慢的問題。

 

基於這兩個問題,YOLOF提出Dialted encoder和Uniform Matching來實現在單層上進行預測,而這種預測可以做到仍然是基於分而治之的思想。

 

關於Dialted Encoder結構如下:

 

主要操作是串聯四個不同空洞率的3x3空洞卷積,注意與ASPP,RFB不同的是,這裡是串聯,ASPP和RFB是多支路並聯。

 

Uniform Matching是使用最近鄰方式來匹配,替代了Max-IOU。具體方式是選擇GT boxes最近的K個boxes,這樣的方式不管GT boxes大小可以匹配相同數量的Boxes。

 

其它改進的特徵金字塔

除了以上這些改進方案外,還存在一些其它的結構或資訊融合方式。這裡只提個來源和結構圖,感興趣的讀者請自行了解。

 

SFAM(2019)

來源於論文《M2Det: A Single-Shot Object Detector Based on Multi-Level Feature Pyramid Network》

 

STDN(2018)

來源於論文《Scale-Transferrable Object Detection》

 

BiFPN(2020)

來源於論文《EffificientDet: Scalable and Effificient Object Detection》

 

此外,還包括一些比較複雜的結構,如RFP,NAS-FPN。

 

總結:本文介紹了特徵金字塔的兩種構建方式,特徵金字塔的一些現有方案,主要都是圍繞金字塔如何更好地融合資訊進行預測來改進。特徵金字塔算是比較有用的一個結構,用在目標檢測、語義分割等領域有較好的效能。

 

在公眾號《CV技術指南》中回覆“特徵金字塔”可獲取以上12篇論文。

 

參考論文

1.DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

2.Feature Pyramid Networks for Object Detection

3.Path Aggregation Network for Instance Segmentation

4.Receptive Field Block Net for Accurate and Fast Object Detection

5.Learning Spatial Fusion for Single-Shot Object Detection

6.Feature Pyramid Transformer

7.You Only Look One-level Feature

8.M2Det: A Single-Shot Object Detector Based on Multi-Level Feature Pyramid Network

9.Scale-Transferrable Object Detection

10.EffificientDet: Scalable and Effificient Object Detection

11.DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution

12.NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection

 

本文來源於公眾號CV技術指南的技術總結系列。

公眾號更多技術總結內容

CV方向的高效閱讀英文文獻方法總結

資料增強方法總結

CNN結構演變總結(一)經典模型

CNN結構演變總結(二)輕量化模型

CNN結構演變總結(三)設計原則

CNN視覺化技術總結(一)-特徵圖視覺化

CNN視覺化技術總結(二)--卷積核可視化

CNN視覺化技術總結(三)--類視覺化

CNN視覺化技術總結(四)--視覺化工具與專案

池化技術總結

NMS總結

更多相關技術總結請掃描文末二維碼關注公眾號。