目標檢測模型——SPP (空間金字塔池化)

金小蝦發表於2021-01-01

SPP 在 SPP-net 中的應用:

SPP-net全名為Spatial Pyramid Pooling 結構(空間金字塔池化結構),2015年由微軟研究院的何愷明提出。

主要解決兩個問題:

有效避免了R-CNN演算法對影像區域剪裁、縮放操作導致的影像物體剪裁不全以及形狀扭曲等問題。
解決了卷積神經網路對影像重複特徵提取的問題,大大提高了產生候選框的速度,且節省了計算成本。
  • 問題1具體解釋:

在含有全連線層的分類網路中,嚴格要求輸入解析度和全連線層的特徵維度相匹配。所以就會對影像進行裁剪和變形操作,也就出現了問題1。如下圖展示的就是通過spp模組將任意解析度的featherMap轉換為設計好的和全連線層相同維度的特徵向量。

在這裡插入圖片描述
具體做法是,在conv5層得到的特徵圖是256層,每層都做一次spatial pyramid pooling。先把每個特徵圖分割成多個不同尺寸的網格,比如網格分別為44、22、11,然後每個網格做max pooling,這樣256層特徵圖就形成了16256,4256,1256維特徵,他們連起來就形成了一個固定長度的特徵向量,將這個向量輸入到後面的全連線層。

  • 問題2具體解釋:

R-CNN是先對輸入影像進行2k個候選框選擇後,把候選框內的影像wrap到227*277後,再放到cnn裡邊進行提取,這2k個候選框很多地方都是重疊的,會帶來大量重複的計算,因此SPP就先對輸入影像進行特徵提取之後,在提取後的feature map上在選取候選框,然後使用spatial pyramid pooling,對對應候選框的feature map區域提到到fixed-length representation。

在這裡插入圖片描述
對卷積層視覺化發現:輸入圖片的某個位置的特徵反應在特徵圖上也是在相同位置。基於這一事實,對某個ROI區域的特徵提取只需要在特徵圖上的相應位置提取就可以了。

注:ROI(region of interest),感興趣區域。機器視覺、影像處理中,從被處理的影像以方框、圓、橢圓、不規則多邊形等方式勾勒出需要處理的區域,稱為感興趣區域

在這裡插入圖片描述

一張任意尺寸的圖片,在最後的卷積層conv5可以得到特徵圖。根據Region proposal步驟可以得到很多候選區域,這個候選區域可以在特徵圖上找到相同位置對應的視窗,然後使用SPP,每個視窗都可以得到一個固定長度的輸出。將這個輸出輸入到全連線層裡面。這樣,圖片只需要經過一次CNN,候選區域特徵直接從整張圖片特徵圖上提取。

在檢測的後面模組,仍然和R-CNN一樣,使用SVM和邊框迴歸。SVM的特徵輸入是FC層,邊框迴歸特徵使用SPP層。

  • 總結:

SPP-net對R-CNN最大的改進就是特徵提取步驟做了修改,其他模組仍然和R-CNN一樣。特徵提取不再需要每個候選區域都經過CNN,只需要將整張圖片輸入到CNN就可以了,ROI特徵直接從特徵圖獲取。和R-CNN相比,速度提高了百倍。

SPP-net缺點也很明顯,CNN中的conv層在微調時是不能繼續訓練的。它仍然是R-CNN的框架,離我們需要的端到端的檢測還差很多。既然端到端如此困難,那就先統一後面的幾個模組吧,把SVM和邊框迴歸去掉,由CNN直接得到類別和邊框可不可以?於是就有了Fast R-CNN。

SPP 在yolo中的應用:

yolov3-spp 和 yolo v4中的spp模組不是解決以上的兩個問題,但是借鑑了空間金字塔池化思想,主要是通過spp模組實現區域性特徵和全域性特徵的featherMap級別的融合,豐富最終特徵圖的表達能力,從而提高MAP。

官方coco資料集效果
在這裡插入圖片描述

自己資料集驗證效果

YOLOv3-SPP比YOLOV3的MAP提高了2.4個點,且自己樣本中類別存在嚴重的類別不均衡的問題。

————————
目標檢測:SPP-net
yolov3-spp深度剖析
如何理解yolov3中的spp模組?

相關文章