【目標檢測(二)】SPP Net——讓卷積計算共享

語言: CN / TW / HK

1. Motivation:共享卷積的計算結果

上一篇RCNN的介紹中,詳細介紹了RCNN演算法的原理,同時RCNN也有非常明顯的缺陷:訓練時間和推理時間耗時太長,造成這個致命性缺陷的主要原因是存在大量重複性的卷積計算。在RCNN中,使用selective search方法在原始影象上生成近2000個Region Proposal,然後resize到固定尺寸,輸入到CNN網路中,也就是說一張原始圖片要進行2000次前向推理計算,存在著大量的重複冗餘計算。SPP Net的主要貢獻在於:共享卷積計算和Spatial Pyramid Pooling(空間金字塔池化),使得每張圖片只需要進行一次CNN網路的前向推理計算。如下圖所示,第一行表示RCNN中需要影象塊resize到固定大小,難免會有變形和失真,第二行是RCNN的流程,需要將每一個影象塊輸入到網路中,第三行是SPP方法,大大減小了計算量。具體實現方法和過程下面將進行詳細闡述。

image.png

2. SPP Net原理

2.1 Pipeline

SPP Net主要由這幾個部分組成: - Selective Search - CNN網路 + FC全連線層 - SVM分類器 - Bounding Box的LR迴歸

看起來和RCNN沒什麼不同,其實主要區別在於SPP Net的selective search雖然在原圖上生成候選框,但是卻是在CNN網路的conv5後提取的。這裡會有兩個問題:原圖尺寸和特徵圖尺寸不同,需要如何處理呢?每個候選框的特徵圖尺寸也是不一樣的,如何處理成一致的維度呢?

針對第一個問題,由於尺寸不同,需要依賴於卷積後得到的feature map和原影象素的對應關係,可以將原圖上的候選框對映到conv5得到的特徵圖對應位置上,也就是原圖上的每個候選框區域,都可以得到與之對應的feature map小塊。針對第二個問題,空間金字塔池化模組作用於特徵圖小塊,使得任意尺寸的特徵圖塊都能生成固定維度的tensor。

2.2 共享卷積計算中的座標變換(對映)

左上:x'=(x/S)+1
右下:x'=(x/S)-1

其中x'為特徵圖座標,x為原圖座標,S為stride,這裡左上和右下加一減一的原因與padding有關,會使座標更靠近中心點。詳細推導可參考這篇技術部落格:https://blog.csdn.net/michaelshare/article/details/81775007

2.3 Spatial Pyramid Pooling

經過左邊對映變換之後,在原圖上候選框可以對映到conv5特徵圖上,但是這樣一來由於候選框尺寸不固定,導致對映到conv5上特徵圖尺寸也不固定,就無法輸入到全連線層了。SPP就是解決這個問題的:

image.png

對於任意尺寸的特徵圖塊,都可以平均分為4*4、2*2和1*1的小塊,在每個小塊上做max pooking操作,同時channel數量保持不變,最後將這些特徵concat起來作為候選框的特徵,它的維度是固定的,即(16 + 4 + 1) * 256維,輸入到FC全連線層中。

2.4 訓練過程和推理過程

image.png

訓練過程:使用ImageNet預訓練的AlexNet模型,輸入圖片進行前向推理,獲得conv5特徵,同時使用selective search演算法在原圖上獲得候選框,然後將這些候選框對映在conv5特徵圖上提取到相應的SPP特徵,接著將SPP特徵fine-tune全連線層(卷積層不fine-tune),得到全連線層的特徵。之後和RCNN一致了,將全連線層的特徵輸入到SVM分類器中進行分類,用SPP特徵訓練Bounding Box的LR模型來修正候選框的位置。

推理過程:與訓練過程一致,原始圖片輸入到CNN網路中,經過selective search後對映獲取到SPP特徵,然後經過全連線層獲取到分類特徵,輸入到SVM分類器中,同時SPP特徵輸入到Bounding Box的LR模型中。

3. SPP Net效果和優劣分析

3.1 SPP Net效果和主要貢獻

image.png

  • 從mAP準確率角度來講單scale方式評測SPP的精度為54.5%,而RCNN的精度為55.1%,還降低了0.6%,這裡論文將主要是因為RCNN是卷積層和全連線層都參與了fine-tune,而SPP只fine-tune了全連線層。
  • 從速度角度來講,在相同的GPU硬體條件下,推理SPP比RCNN快了102倍,這也是SPP的主要貢獻。

3.2 SPP Net缺點

  • 無法fine-tune卷積層引數,導致影響準確率。(在後面Fast RCNN中使用多工損失函式和ROI Pooling得以解決)
  • 依然是多階段的訓練過程,selective search + CNN + FC + SVM + Bounding Box LR,沒有改進。
  • 特徵依然需要儲存在硬碟中,消耗大量的空間。

Reference:

  1. https://arxiv.org/pdf/1406.4729.pdf
  2. https://zhuanlan.zhihu.com/p/68027807
  3. https://blog.csdn.net/chaipp0607/article/details/78446708