對 SPP-net 論文的一個大致翻譯
SPP-net
論文翻譯:
摘要:
現存的深度卷積神經網路需要一個固定大小的輸入影象。這種要求是人為的,而且可能對任意尺度和大小的圖片的識別精度造成影響。在我們的工作中,我們給CNN加入一個空間金字塔池化層(spatial pyramid pooling layer),為了消除上述那種對影象固定大小的要求。新的網路結構叫做SPP-net,這個網路不管影象的尺度和大小如何,都可以生成一個固定長度的向量來表示圖片。通過消除了固定大小的限制,我們可以改善所有的基於CNN的影象分類方法。
在目標檢測中,SPP-net的作用更加明顯,使用SPP-net,我們對整幅影象只需要進行一次特徵圖計算,然後將任意區域的特徵向量池化,生成一個固定長度的表示,然後再訓練檢測器。我們的方法避免了重複計算特徵圖。
1. 引言
CNN主要包括兩部分:卷積層和全連線層。實際上,卷積層不需要固定尺寸的影象,可以生成任意尺寸的特徵圖,而全連線層需要輸入固定尺寸。這樣,固定尺寸的約束只來自於全連線層,而全連線層處於網路比較深的層級。
在本文中,我們在最後一個卷積層的後面加了一個SPP layer ,這個SPP layer 將特徵轉化成特定長度的輸出,然後將它們輸入全連線層。
我們注意到SPP對於深度CNN有一些值得一提的效能:1.SPP不管輸入尺寸如何,它都可以產生一個固定長度的輸出,但是之前深度CNN中的滑動視窗池化不行。2.SPP使用多級空間bins,而滑動視窗只使用一個單視窗尺寸。眾所周知,多級池化對目標變形具有魯棒性。3.SPP可以在任意尺度提取特徵,因為輸入特徵尺度的靈活性。
SPP-net在目標檢測領域也顯示了強大的力量。在R-CNN中,提取特徵非常費時,因為它是將每幅影象產生的上千個區域重複的送入CNN中提取特徵。在本論文中,不管將這個影象分成了多少個區域,對於一整幅影象我們只執行一次卷積神經網路,然後對得到的特徵圖用SPP-net提取特徵。這種方法對CNN加速超過了100多倍。
2. 帶有spatial pyramid pooling 的深度網路
2.1 卷積層和特徵圖
2.2 空間金字塔池化層 spatial pyramid pooling layer
為了使深度網路適應於任意大小的影象,我們將第五層池化層換成了spatial pyramid pooling layer,對於每一個濾波器得到的特徵圖,我們分別對其進行不同尺度的池化,(採用的是最大池化,最大池化就是求每一個塊中的最大值)(採用幾種不同的spatial bins 對每一個特徵圖進行最大池化)。
3. 訓練
3.1 單尺寸訓練
對加入SPP層的固定大小的CNN網路訓練。在單尺寸訓練時,實現了一個224x224固定大小的含SPP層的CNN的訓練。
3.2 多尺寸訓練
將224x224大小的影象croping 成180x180大小,然後我們又實現了一個180x180大小的固定尺寸的含SPP層的CNN,該網路與之前的224x224固定尺寸的CNN網路的引數都相同。即通過兩個固定尺寸輸入的網路共享引數實現了一個變尺寸輸入的SPP-net。
我們在一個網路上訓練一個週期,然後轉換到另一個網路,同時把上一個網路的所有引數複製到這個網路,然後再對這個網路訓練一個週期,依次交替迭代。
多尺寸訓練的目的是在利用現存的已經優化好的固定尺寸的CNN網路的情況下,模擬變換輸入尺寸的情況。理論上,我們可以使用更多尺度和長寬比的影象,每一個網路對應每一個尺寸或每一個長寬比,所有的網路共享引數。