SPP-net 解讀:用 SPP 解決 CNN 的 fixed-size input 問題

Title: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(2015)
Link: Paper
Tips:

  1. 理解現有 CNN 的侷限性,爲什麼 CNN 需要 fixed-size input(1 introduction)
  2. 用 SPP 解決 CNN 限制的具體方法(1 introduction)
  3. 怎麼利用 GPU 訓練網絡(2.3)
  4. SPP-net 用於分類和檢測(3,4)
  5. 模型融合用於提高準確率的策略(4.4)

Summary:

這篇文章結構清晰,比較容易閱讀。

文章介紹的SPP-net 解決了 CNN 方法需要固定尺寸輸入的問題,後面做了一系列實驗驗證網絡的哪些部分提升了性能。

空間金字塔是傳統的機器視覺方法,說明深度學習遇到的一些瓶頸可以借鑑底層的方法。

要注意這個網絡不是專門做檢測的,而是分類檢測都能用的,我也是讀到後面纔看到。

讀每一篇論文都要學習實驗結果的分析方法,這篇文章提到的模型結合的方法值得學習。


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具有幾個非凡的特性

  1. SPP能夠生成固定長度的輸出,而與輸入大小無關,而以前的深度網絡中使用的滑動窗口池;
  2. SPP使用 multi-level spatial bins,而滑動窗口池僅使用單窗口大小。多層池已經顯示出對對象變形的魯棒性。
  3. 由於輸入比例尺的靈活性,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的檢測。

我們的研究還表明,計算機視覺中許多久經考驗的技術/洞察力仍然可以在基於深度網絡的識別中發揮重要作用。

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