目標檢測算法FPN(Feature Pyramid Networks)簡介

目標檢測算法Feature Pyramid Networks(FPN)由Tsung-Yi Lin等人於2017年提出,論文名字爲”Feature Pyramid Networks for Object Detection”,可以從https://arxiv.org/pdf/1612.03144.pdf 直接下載。

特徵金字塔網絡(Feature Pyramid Network)簡稱FPN,類似TDM(Top-Down Modulation)方法,FPN是一種自頂向下的特徵融合方法,但是FPN是一種多尺度的目標檢測算法即不只有一個特徵預測層。雖然有些算法也採用多尺度特徵融合來進行目標檢測,但是它們往往只利用融合後得到的一種尺度的特徵,這種做法雖然可以將頂層特徵的語義信息和底層特徵細節信息,但是在特徵反捲積等過程中會造成一些偏差,只利用融合後得到的特徵進行預測會對檢測精度造成不良影響。FPN方法從上述問題出發,可以在多個不同尺度的融合特徵上進行預測,實現檢測精度的最大化。

FPN的模型訓練方式不同於傳統的Faster R-CNN方法,因爲FPN有多個預測層。類似於SSD方法,FPN中靠前的特徵具有更高的分辨率,而我們希望用高分辨率特徵來對小目標進行預測。FPN中的每個融合特徵都會連接一個RPN(Region Proposal Network)網絡,用以生成候選框,然後將所有生成的候選框集合在一起。因爲我們希望更小的目標在更高分辨率的卷積特徵圖上預測,所以我們將這些候選框進行分配,分配原理如以下公式所示:

其中,k­0爲候選框被分配到的預測層,k­0是一個常數,w和h代表候選框的寬和高,」代表取數值的下屆。例如,預測層有2,3,4,5等4個,分別代表分辨率由大到小的4個融合特徵層。k0=4,一個寬和高的乘積爲112^2的候選框會被分配到預測層k=3(k大於5時取值5,k小於2時取值爲2),進行之後的檢測。由公式可以看出,候選框的面積越大,被分配到的預測層的號碼越大,大的目標會被分配到分辨率較低的預測層進行預測。這些候選框在經過分配之後被送入對應的RoI pooling層,RoI pooling層輸出的結果被級聯在一起,再經過兩個全連接層,進行目標分類和目標位置迴歸,如下圖,FPN with Fast R-CNN or Faster R-CNN。

Faster R-CNN和FPN都屬於基於候選區域的方法,但是Faster R-CNN只有一個預測結構,而FPN有多個預測結構,這就決定了它們有各自的多層特徵融合方式。

FPN使用不同分辨率的特徵圖感知不同大小的物體,並通過連續上採樣和跨層融合機制使輸出特徵兼具底層視覺信息和高層語義信息。低層次的特徵圖語義不夠豐富,不能直接用於分類,而深層的特徵更值得信賴。將側向連接與自上而下的連接組合起來,就可以得到不同分辨率的特徵圖,而它們都包含了原來最深層特徵圖的語義信息。

FPN特徵金字塔的思想來源於傳統算法中的多尺度識別,具體操作是將原始圖像放縮到不同尺度大小的狀態,縮小的圖像應用於圖像全局特徵,放大的圖像應用於細節特徵。深度學習網絡越深層次的特徵圖,擁有越多的全局和抽象特徵。在圖像分類任務中,這種深層次的特徵保持了良好的平移不變性,不論分類物體圖像在哪個位置,深層次的全局特徵,依然可以獲得信息。但是在圖像識別領域中,圖像分類中的平移不變性就不成立了,不光要識別出物體的分類還要識別出物體的位置,所以如何結合淺層和深層的信息是一個重要的問題。FPN通過橫向連接段,縱向相加的方式,解決淺層和深層結合問題。總體結構採用自上而下的信息結構,如下圖所示:在圖中每一個正方形代表一個特徵圖,從小到大的正方形表示從深到淺的特徵圖。在新生成的特徵圖中,最淺層次擁有上面所有層次信息的特徵。深層的特徵語義信息比較少,但是目標位置準確;淺層的特徵語義信息比較豐富,但是目標位置比較粗略。圖中Top部分是一個帶有skip connection的網絡結構,在預測的時候是在finest level(自頂向下的最後一層)進行的,簡單講就是經過多次上採樣並融合特徵到最後一步,拿最後一步生成的特徵做預測。圖中Bottom部分,是一個網絡結構和上面的類似,區別在於預測是在每一層中獨立進行的。

如下圖所示爲FPN連接結構,採用1*1的卷積層和2倍的上採樣的結構。上採樣(upsampling)是卷積的反向過程,又被稱爲

反捲積網絡。卷積操作使得特徵圖尺寸不斷縮小或者不變(1*1卷積),而反捲積操作會使得特徵圖尺寸不斷增大。這裏使用反捲積操作是爲了深層次的特徵圖,通過放大到和淺層的特徵圖一樣的尺寸後,可以進行元素級別(element-wise)的相加。設計1*1卷積的結構是爲了對於原有的特徵圖,進行的尺寸的不變的空間變換,使得結構上更加魯棒。FPN作者的主網絡採用ResNet。如圖,一個自底向上的線路(pathway),一個自頂向下的線路(pathway),橫向連接(lateral connection)。圖中放大的區域就是橫向連接,這裏1*1的卷積核的主要作用是減少卷積核的個數,也就是減少了feature map的個數(降低channels數目),並不改變feature map的尺寸大小。自底向上其實就是網絡的前向過程。在前向過程中,feature map的大小在經過某些層後會改變,而在經過其它一些層的時候不會改變,FPN作者將不改變feature map大小的層歸爲一個stage,因此每次抽取的特徵都是每個stage的最後一個層輸出,這樣就能構成特徵金字塔。每個stage最後一層輸出的是金字塔的特徵圖自頂向下的過程採用上採樣(upsampling)進行,而橫向連接則是將上採樣的結果和自底向上生成的相同大小的feature map進行融合(merge)。在融合之後還會再採用3*3的卷積覈對每個融合結果進行卷積,目的是消除上採樣的混疊效應(aliasing effect),並假設生成的feature map結果是P2,P3,P4,P5,和原來自底向上的卷積結果C2,C3,C4,C5一一對應。不用C1是因爲太大,佔用太多內存了,如下圖所示,FPN with RPN。

FPN作者一方面將FPN放在RPN網絡中用於生成proposal,原來的RPN網絡是以主網絡的某個卷積層輸出的feature map作爲輸入,簡單講就是隻用這一個尺度的feature map。但是現在要將FPN嵌在RPN網絡中,生成不同尺度特徵並融合作爲RPN網絡的輸入。在每一個scale層,都定義了不同大小的anchor,對於P2,P3,P4,P5,P6這些層,定義anchor的大小爲32^2, 64^2, 128^2, 256^2, 512^2,另外每個scale層都有3個長寬對比度:1:2, 1:1, 2:1。所以整個特徵金字塔有15種anchor。

FPN中,正負樣本的界定和Faster R-CNN差不多:如果某個anchor和一個給定的ground truth有最高的IoU(Intersection over Union)或者和任意一個ground truth的IoU都大於0.7,則是正樣本。如果一個anchor和任意一個ground truth的IoU都小於0.3,則爲負樣本。

下圖中展示了FPN論文中提到的4種提取特徵的形式:藍色框代表feature maps,藍色線越粗,代表其語義信息越強。

(a). 圖像金字塔,即將圖像做成不同的scale,然後不同scale的圖像生成對應的不同scale的特徵。這種方法的缺點在於增加了時間成本。有些算法會在測試時候採用圖像金字塔;

(b). 像SPP net、Fast R-CNN、Faster R-CNN是採用這種方式,即僅採用網絡最後一層的特徵;

(c). 像SSD(Single Shot Detector)採用這種多尺度特徵融合的方式,沒有上採樣過程,即從網絡不同層抽取不同尺度的特徵做檢測,這種方式不會增加額外的計算量。FPN作者認爲SSD算法中沒有用到足夠低層的特徵(在SSD中,最低層的特徵是VGG網絡的conv4_3),而在FPN作者看來足夠低層的特徵對於檢測小物體是很有幫助的;

(d). FPN作者是採用這種方式,頂層特徵通過上採樣和低層特徵做融合,而且每層都是獨立預測的。

FPN is not an object detector by itself. It is a feature detector that works with object detectors. For example, we extract multiple feature map layers with FPN and feed them into an RPN (an object detector using convolutions and anchors) in detecting objects.

目前,目標檢測框架主要有兩種:一種是one-stage ,例如YOLO、SSD等,這一類方法速度很快,但識別精度沒有two-stage的高,其中一個很重要的原因是,利用一個分類器很難既把負樣本抑制掉,又把目標分類好。另外一種目標檢測框架是two-stage,以Faster R-CNN爲代表,這一類方法識別準確度和定位精度都很高,但存在着計算效率低,資源佔用大的問題。也就是說,one-stage檢測器更快更簡單,但是準確度不高。two-stage檢測器準確度高,但太費資源。

以上內容均來自網絡,主要參考文獻如下:

1. 《基於多尺度特徵的目標檢測算法研究》,哈爾濱工業大學,碩論,2018

2. 《基於深度學習的交通物體參與物實時識別研究》,北京交通大學,碩論,2018

3. https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

4. https://xmfbit.github.io/2018/04/02/paper-fpn/

5. https://blog.csdn.net/u014380165/article/details/72890275

6. https://zhuanlan.zhihu.com/p/41794688

7. http://noahsnail.com/2018/03/20/2018-03-20-Feature%20Pyramid%20Networks%20for%20Object%20Detection%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E6%96%87%E7%89%88/

8. https://t.cj.sina.com.cn/articles/view/2118746300/7e4980bc02000dcsv

9. https://blog.csdn.net/xiamentingtao/article/details/78598027

GitHubhttps://github.com/fengbingchun/NN_Test

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章