Title: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(2015)
Link: Paper
Tips:
- 理解現有 CNN 的侷限性,爲什麼 CNN 需要 fixed-size input(1 introduction)
- 用 SPP 解決 CNN 限制的具體方法(1 introduction)
- 怎麼利用 GPU 訓練網絡(2.3)
- SPP-net 用於分類和檢測(3,4)
- 模型融合用於提高準確率的策略(4.4)
Summary:
這篇文章結構清晰,比較容易閱讀。
文章介紹的SPP-net 解決了 CNN 方法需要固定尺寸輸入的問題,後面做了一系列實驗驗證網絡的哪些部分提升了性能。
空間金字塔是傳統的機器視覺方法,說明深度學習遇到的一些瓶頸可以借鑑底層的方法。
要注意這個網絡不是專門做檢測的,而是分類檢測都能用的,我也是讀到後面纔看到。
讀每一篇論文都要學習實驗結果的分析方法,這篇文章提到的模型結合的方法值得學習。
文章目錄
- Abstract
- 1 INTRODUCTION
- 2 DEEP NETWORKS WITH SPATIAL PYRA- MID POOLING
- 2.1 Convolutional Layers and Feature Maps
- 2.2 The Spatial Pyramid Pooling Layer
- 2.3 Training the Network
- 3 SPP-NET FOR IMAGE CLASSIFICATION
- 3.1 Experiments on ImageNet 2012 Classification
- 3.2 Experiments on VOC 2007 Classification
- 3.3 Experiments on Caltech101
- 4 SPP-NET FOR OBJECT DETECTION
- 4.1 Detection Algorithm
- 4.2 Detection Results
- 4.3 Complexity and Running Time
- 4.4 Model Combination for Detection Model
- 5 CONCLUSION
Abstract
現有的CNN網絡需要固定尺寸的輸入,這個設置顯得很“人爲”並且會減少識別準確率。爲解決這個問題,我們爲網絡配備了另一種 pooling 策略——spatial pyramid pooling(空間金字塔池)。新的網絡叫做 SPP-net,可以生成定長的表示,而與圖像大小/比例無關。
優勢:
- 金字塔池對圖像形變魯棒,則該網絡課改善基於CNN的分類方法。
- 使用 SPP-net,可以避免重複計算特徵圖。
1 INTRODUCTION
現有的CNN方法的技術侷限性:輸入圖像必須是固定尺寸的,不符合尺寸的需要通過 crop(修剪,可能不包含整個物體)或 warp(扭曲,導致意外的集合變形)來處理,內容丟失和變形會影響準確率。
爲什麼CNN需要 fixed input size :CNN 包括卷積層和全連接層,卷積層對輸入尺寸沒要求,全連接層需要接受固定尺寸的輸入。
本文通過 spatial-pyramid-pooling(SPP) 移除網絡的固定尺寸限制(fixed-size constraint)。
具體方法:在 cov 層後 fc 層前插入一個 SPP 層,SPP 層可以處理特徵並生成固定長度的輸出。換句話說,我們在網絡層次結構的較深階段(在卷積層和全連接層之間)執行一些信息“聚合”,以避免一開始就需要裁剪或扭曲(如圖 1 所示)。
在 CNN 出現之前,SPP 一直是分類和檢測領域領先和贏得比賽的系統的關鍵組成部分。但是,在CNN的背景下尚未考慮過SPP。
SPP對於深度CNN具有幾個非凡的特性:
- SPP能夠生成固定長度的輸出,而與輸入大小無關,而以前的深度網絡中使用的滑動窗口池;
- SPP使用 multi-level spatial bins,而滑動窗口池僅使用單窗口大小。多層池已經顯示出對對象變形的魯棒性。
- 由於輸入比例尺的靈活性,SPP可以合併以可變比例尺提取的要素。
通過實驗,我們表明所有這些因素都提高了深度網絡的識別精度。
SPP-net 不僅可以從任意大小的圖像/窗口生成表示以進行測試,還可以讓我們在訓練過程中提供具有不同大小或比例的圖像。
2 DEEP NETWORKS WITH SPATIAL PYRA- MID POOLING
2.1 和 2.2 就是對 introduction 部分的詳細解釋。
2.1 Convolutional Layers and Feature Maps
這一部分解釋爲什麼要使用 SPP。
CNN 由卷積層和全連接層,其中全連接層的輸入必須是定長向量。卷積層的輸出稱爲特徵圖(feature map)。
生成特徵圖時並沒有固定輸入大小。
由深度卷積層生成的這些特徵圖類似於傳統方法中的特徵圖。在那些方法中,密集地提取SIFT矢量或圖像斑塊,然後例如通過矢量量化稀疏編碼或Fisher核來編碼。這些編碼的要素由特徵圖組成,然後由詞袋(BoW)或空間金字塔合併(pool)。類似的,深度卷積特徵可以以類似方式合併。
2.2 The Spatial Pyramid Pooling Layer
這一部分解釋如何使用 SPP。
卷積層接受任意尺寸的輸入,輸出的尺寸也是變化的。分類器(SVM/softmax)或全連接層接受固定尺寸的向量,這種向量可以通過 BoW 方法生成,SPP 是 BoW 的提升版。
爲構造任意尺寸圖像的深度網絡,把池化層的最後一層(卷積層後的一層)替換爲 spatial pyramid pooling layer(如圖 3 所示,框住的部分)。有了空間金字塔池化,輸入圖像的尺寸就可以是任意的,這不僅允許任意的縱橫比,而且允許任意的比例。
2.3 Training the Network
這一部分解釋如何利用 GPU 訓練。
理論上,SPP-net 可以使用反向傳播訓練,不用考慮輸入圖像尺寸,但實際中,GPU實現最好在固定的輸入圖像上運行。
下面是訓練解決方案,利用GPU實現,同時保留空間金字塔池行爲。
Single-size training
首先考慮一個採用從圖像中裁剪出的固定尺寸輸入(224×224)的網絡,裁剪是爲了數據增廣。
給定一個圖像尺寸,我們可以提前算出SPP需要的 bin 尺寸。
單尺寸訓練的主要目的是實現多級合併行爲。實驗表明,這是獲得準確性的原因之一。
Multi-size training
考慮兩個尺寸 180×180 和 224×224。與其裁剪一個較小的180×180區域,不如將上述224×224區域的大小調整爲180×180。因此,兩個尺度上的區域僅在分辨率上有所不同,而在內容/佈局上沒有差異。爲了使網絡接受180×180輸入,我們實現了另一個固定大小輸入(180×180)網絡。
這個180 網絡的空間金字塔池化層的輸出具有與224網絡相同的固定長度。這樣,此180網絡的參數與每一層中224網絡的參數完全相同。換句話說,在訓練過程中,我們通過共享參數的兩個固定大小的網絡來實現輸入大小可變的SPP網絡。
多尺寸訓練的主要目的是模擬變化的輸入尺寸,同時仍然利用現有的優化良好的固定尺寸實施方案。
上述單一/多尺寸解決方案是僅用於訓練。在測試階段,將 SPP-net 應用於任何大小的圖像都非常簡單。
3 SPP-NET FOR IMAGE CLASSIFICATION
在三個數據集上做圖像分類實驗,探究影響分類性能的因素。
3.1 Experiments on ImageNet 2012 Classification
在 ImageNet 2012 上的圖像分類,驗證了 Multi-level Pooling,Multi-size Training,Full-image Representations 可以提升分類性能。
SPP的優點與所使用的卷積網絡體系結構無關。研究了現有的四種不同的網絡體系結構(或其修改),並且證明了SPP可以提高所有這些體系結構的準確性。
所選的 baseline 如表 1 所示:
表 2 和表 3 展示的是實驗結果,這裏的評估標準是錯誤率,也就是越低越好。a 是沒有 SPP 的結果,b 是使用 SPP 進行單尺寸訓練的結果,c 是使用 SPP 進行多尺寸訓練的結果。
Multi-level Pooling Improves Accuracy
從表 2 可以看出,a 到 b 的錯誤率降低,這些提升完全是由於多級池化。
值得注意的是,多級池化的獲得不僅僅是因爲更多參數。而是因爲多層池對對象變形和空間佈局的變化具有魯棒性。
Multi-size Training Improves Accuracy
從表 2 可以看出,b 到 c 的錯誤率降低,這些提升是由於多尺寸的訓練。
Full-image Representations Improve Accuracy
表 3 比較的是 single view 和 full-image view 的影響,也就是輸入裁剪圖片還是整個圖片,實驗結果表明全圖像表示可提高準確性。
3.2 Experiments on VOC 2007 Classification
網絡如何擴展:我們的方法可以生成全視圖圖像表示。藉助在ImageNet上預先訓練的上述網絡,我們從目標數據集中的圖像中提取這些表示,然後重新訓練SVM分類器。
本部分是在 VOC 2007 上的分類,通過平均精確率 mAP 評估性能,也就是結果越高越好。
表 6 是實驗結果,最後一行是最後一層輸出的評估。可以看出,添加 SPP,圖像從裁剪到全圖,尺寸的增加,網絡的改變對 mAP 都有提升。
3.3 Experiments on Caltech101
Caltech101 dataset 上的分類實驗,結果如表 7 所示。
在Pascal VOC 2007 和 Caltech101的結果中有一些相同的觀察結果:SPP網優於非SPP網(表7(b)vs.(a)),並且全視角表示比剪裁的更好( (c)與(b))。
但是Caltech101中的結果與Pascal VOC有一些差異。完全連接的層精度較差,SPP層較好。這是可能的,因爲Caltech101中的對象類別與ImageNet中的對象類別相關性較低,而更深的層則更具有類別專用性。
4 SPP-NET FOR OBJECT DETECTION
SPP-net 也可用於物體檢測。
僅從整個圖像中提取一次特徵圖(可能以多個比例)。然後在特徵圖的每個候選窗口上應用空間金字塔池,以池化此窗口的固定長度表示形式。因爲費時的卷積僅應用一次,所以我們的方法可以運行幾個數量級。
我們的方法從特徵圖的區域中提取窗口方向的特徵,而R-CNN直接從圖像區域中提取。
4.1 Detection Algorithm
這一部分講檢測的實驗設置:使用 selective search 的 fast mode,然後我們調整圖像的大小,使min(w,h)= s,並從整個圖像中提取特徵圖。使用真實的窗口來生成正樣本。負樣本是那些與正窗口重疊最多30%的樣本
我們的方法可以通過多尺度特徵提取來改進,我們也微調了網絡。
4.2 Detection Results
從準確性考慮。
在 Pascal VOC 2007 dataset 做檢測實驗了,表 9 顯示了不同層的結果。表10中,使用相同的 SPPnet 預訓練模型(ZF-5)與 R-CNN 進行了進一步比較。其中 sc 指1-scale (s=688) 或 5-scale。
使用微調的fc層(ftfc6,7),我們的結果與R-CNN的微調結果相當或稍好。在邊界框迴歸之後,我們的5尺度結果(59.2%)比R-CNN(58.5%)好0.7%,而我們的1尺度結果(58.0%)差0.5%。
4.3 Complexity and Running Time
從時間複雜度考慮。
除了有相當的準確性,我們的方法比R-CNN快得多。從圖 10 的最後一行就可以看出,SPP-net 比 R-CNN 加速了很多。
4.4 Model Combination for Detection Model
模型組合是提高基於CNN的分類準確性的重要策略。我們提出了一種簡單的組合檢測方法。
使用相同的結構但不同的隨機初始化對ImageNet中的另一個網絡進行預訓練,然後重複上面的檢測算法,結果如表 12 所示。合併後,mAP增至60.9%。
5 CONCLUSION
(結論簡明扼要,直接翻譯了)
SPP 是一種靈活的解決方案,可以處理不同的比例,大小和縱橫比。這些問題在視覺識別中很重要,但在深度網絡中卻很少考慮。
我們提出了一種解決方案,可以訓練帶有空間金字塔池化層的深層網絡。生成的SPP網絡在分類/檢測任務中顯示出出色的準確性,並大大加速了基於DNN的檢測。
我們的研究還表明,計算機視覺中許多久經考驗的技術/洞察力仍然可以在基於深度網絡的識別中發揮重要作用。