1. 程式人生 > >FPN特徵金字塔網路--論文解讀

FPN特徵金字塔網路--論文解讀

     這篇文章我認為算是對用卷積神經網路進行目標檢測方法的一種改進,通過提取多尺度的特徵資訊進行融合,進而提高目標檢測的精度,特別是在小物體檢測上的精度。
     文章的思想比較簡單,主要是利用特徵金字塔對不同層次的特徵進行尺度變化後,再進行資訊融合,從而可以提取到比較低層的資訊,也就是相對頂層特徵來說更加詳細的資訊。頂層特徵在不斷地卷積池化過程中可能忽略了小物體的一些資訊,特徵金字塔通過不同層次的特徵融合,使得小物體的資訊也能夠比較完整地反映出來。這個方法可以廣泛地應用在針對小目標物體的檢測上。下面我對這篇文章的內容進行一個詳細的介紹。


一 背景介紹
    我們知道,R-CNN系列是在得到的最後一層特徵圖上進行特徵提取,從而進行目標識別的。但是這樣做存在的弊端在於,頂層特徵中忽略了小物體的一些資訊,因此只根據頂層特徵進行目標識別,不能完整地反映小目標物體的資訊。如果可以結合多層級的特徵,就可以大大提高多尺度檢測的準確性。    

                                                                

   傳統的提取多層級特徵的方法是應用圖片金字塔。影象金字塔是一種以多解析度來解釋影象的有效但概念簡單的結構。如下圖所示,通過改變影象的尺度,將一層一層的影象比喻成金字塔,層級越高,則影象越小,解析度越低。

    利用卷積神經網路在圖片金字塔上進行特徵提取,可以構建出特徵金字塔。下圖展示出了這個過程,左側是影象金字塔,右側是在影象金字塔上進行特徵提取得到的特徵金字塔。在得到特徵金字塔後,下一步就是在特徵金字塔上進行目標識別。

                                                  

     但是這樣處理存在的問題是運算耗時過大,需要的計算能力較高,因此,Fast/Faster R-CNN 都沒有使用影象金字塔的方式。不過,影象金字塔並非構建特徵金字塔的唯一方式。CNN計算的時候本身就存在多級特徵圖,且不同層的特徵圖尺度就不同,形似金字塔結構。如果可以利用這個金字塔結構進行目標檢測,不僅沒有增加額外的計算工作,也可以利用到低層特徵。SSD(Single Shot Detector)就採用了這種方法。
                                                             

    上圖展示了這個流程,從網路不同層抽取不同尺度的特徵做預測,這種方式不會增加額外的計算量。但作者認為SSD演算法中沒有用到足夠低層的特徵(在SSD中,最低層的特徵是VGG網路的conv4_3),而在作者看來足夠低層的特徵對於檢測小物體是很有幫助的。


二 FPN演算法
    因此,作者提出了FPN演算法。做法很簡單,如下圖所示。把低解析度、高語義資訊的高層特徵和高解析度、低語義資訊的低層特徵進行自上而下的側邊連線,使得所有尺度下的特徵都有豐富的語義資訊。
                                                  

     作者的演算法結構可以分為三個部分:自下而上的卷積神經網路(上圖左),自上而下過程(上圖右)和特徵與特徵之間的側邊連線。
    自下而上的部分其實就是卷積神經網路的前向過程。在前向過程中,特徵圖的大小在經過某些層後會改變,而在經過其他一些層的時候不會改變,作者將不改變特徵圖大小的層歸為一個階段,因此每次抽取的特徵都是每個階段的最後一個層的輸出,這樣就能構成特徵金字塔。具體來說,對於ResNets,作者使用了每個階段的最後一個殘差結構的特徵啟用輸出。將這些殘差模組輸出表示為{C2, C3, C4, C5},對應於conv2,conv3,conv4和conv5的輸出。

 

    自上而下的過程採用上取樣進行。上取樣幾乎都是採用內插值方法,即在原有影象畫素的基礎上在畫素點之間採用合適的插值演算法插入新的元素,從而擴大原影象的大小。通過對特徵圖進行上取樣,使得上取樣後的特徵圖具有和下一層的特徵圖相同的大小。
     側邊之間的橫向連線的過程在下圖中展示。根本上來說,是將上取樣的結果和自下而上生成的特徵圖進行融合。我們將卷積神經網路中生成的對應層的特徵圖進行1×1的卷積操作,將之與經過上取樣的特徵圖融合,得到一個新的特徵圖,這個特徵圖融合了不同層的特徵,具有更豐富的資訊。 這裡1×1的卷積操作目的是改變channels,要求和後一層的channels相同。在融合之後還會再採用3*3的卷積核對每個融合結果進行卷積,目的是消除上取樣的混疊效應,如此就得到了一個新的特徵圖。這樣一層一層地迭代下去,就可以得到多個新的特徵圖。假設生成的特徵圖結果是P2,P3,P4,P5,它們和原來自底向上的卷積結果C2,C3,C4,C5一一對應。金字塔結構中所有層級共享分類層(迴歸層)。
                                                        

三 實驗

-----------------------------------------------實驗一 RPN網路中的特徵金字塔-----------------------------------------------

    思想:RPN是Faster R-CNN中用於區域選擇的子網路。RPN在特徵圖上應用9種不同尺度的anchor,然後進行二進位制分類和邊界框迴歸。考慮到我們已經有了一些包含不同語義資訊的特徵圖,越是低層的特徵圖包含的資訊就越複雜。因此作者認為沒有必要在所有的特徵圖上都應用9種不同尺度的anchor,可以在低層特徵圖中應用尺度較小的anchor,在高層特徵圖中應用尺度較大的anchor。{P2, P3, P4, P5, P6}分別對應的anchor尺度為{32^2,62^2,128^2,256^2}。文章中依然採用了{1:2, 1:1, 2:1}三種比例。

   實驗:作者基於coco資料集,在RPN網路中構架了特徵金字塔。(coco資料集上有更多的小物體, 以及更多的資料 (14萬) 標註)在RPN中使用的特徵提取網路是ResNets網路。為了證明RPN的效果,作者將以下三種網路進行了對比,分別是1 刪除自上而下路徑的網路 2 刪除了橫向連線的網路 3 採用生成的最後一層做預測, 作者以AR(召回率)作為評判標準,分別比較了在小物體/中型物體/大型物體上的召回率。實驗結果如下圖。

                

  上圖中的a/b/c部分將FPN目標識別結果和基於ResNets網路生成的特徵圖進行目標識別的結果進行了對比。相比於直接在ResNets網路生成的特徵圖上進行目標識別,在小物體的識別上,FPN直接將目標識別的召回率提高了13%,在大/中型物體上的召回率也提高了4%-5%。

    圖中的b/c/d分別展示了當刪除自上而下路徑的網路/刪除橫向連線的網路/只用生成的最後一層做預測等三種網路的召回率。這三種網路的效果都不如FPN網路,作者分析了其中的原因。

      • 當刪除了自上而下的路徑,由於金字塔不同層次之間存在較大的語義差距,因此檢測效果相對較差。
      • 當刪除了橫向連線,由於這些特徵都被上取樣和下采樣了好幾次,因此相對來說效能不夠精確。
    •採用最後一層做預測:PRN網路是一個視窗大小固定的滑動視窗檢測器,因此在金字塔的不同層滑動可以增加其對尺度變化的魯棒性。

-------------------------------------------實驗二 fast rcnn中的特徵金字塔------------------------------------------------------
    

     思想:Fast rcnn中的ROI Pooling層使用region proposal的結果和特徵圖作為輸入。經過特徵金字塔,我們得到了許多特徵圖,作者認為,不同層次的特徵圖上包含的物體大小也不同,因此,不同尺度的ROI,使用不同特徵層作為ROI pooling層的輸入。大尺度ROI就用後面一些的金字塔層,比如P5;小尺度ROI就用前面一點的特徵層,比如P4。但是如何確定不同的roi對應的不同特徵層呢?作者提出了一種方法。

                           

      224是ImageNet的標準輸入,k0是基準值,設定為5,代表P5層的輸出(原圖大小就用P5層),w和h是ROI區域的長和寬,假設ROI是112 * 112的大小,那麼k = k0-1 = 5-1 = 4,意味著該ROI應該使用P4的特徵層。k值做取整處理。這意味著如果RoI的尺度變小(比如224的1/2),那麼它應該被對映到一個精細的解析度水平。

    實驗:作者基於coco資料集,採用ResNet-50 網路在fast rcnn中構建了特徵網路金字塔。評價標準和進行對比的網路與上個實驗一致。


                      

   圖中表明,FPN網路具有最好的召回率。最後一行是隻採用最後一層特徵進行預測得到的召回率,與FPN網路不相上下,作者在這裡表明,不能認為只採用最後一層特徵圖就一定得到較差的結果。


   下表Table4是和近幾年在COCO比賽上排名靠前的演算法的對比。注意到本文演算法在小物體檢測上的提升是比較明顯的。


                     

  另外作者強調這些實驗並沒有採用其他的提升方法(比如增加資料集,迭代迴歸,hard negative mining),因此能達到這樣的結果實屬不易。

   在閱讀這篇論文的時候,得知何愷明大神的論文Mask R-CNN 獲得ICCV最佳論文,粗略閱讀發現其中也應用了FPN網路,感興趣的可以去閱讀一下。