SPP-Net理解

文章沒有看完,先挑幾個點談一下。算法

1. 動機

在上一篇文章的末尾提到,RCNN作了不少重複計算,SPP就是爲了解決這個問題而提出的的一個方法----空間金字塔池化。框架

感受這個問題本質上仍是全鏈接層對region-based目標檢測算法形成的困難。全鏈接層要求其輸入爲固定尺寸,從而也就要求CNN的輸入爲固定尺寸,而region proposals每每大小不一。RCNN選擇先在原圖上截取region proposals截取下來,而後warp到要求的尺寸,再一個一個的送入CNN...,這就形成了測試時要執行不少次CNN,重複計算的問題;SPP-Net的目標是共享卷積計算,也就是在原圖過一遍CNN,在生成的fearure map上截取region proposals(依然靠selective search生成),此時region proposals相比原圖是特徵密集語義豐富的,直接warp可能形成誤差大的多,會影響效果(我的猜想,具體實驗驗證吧),做者提出用空間金字塔池化代替卷積層和全鏈接層之間的max pooling,無論是輸入任何尺寸,輸出老是某個固定尺寸。測試

2. 具體操做

SPP-Net沿用了RCNN的框架,只用空間金字塔池化代替卷積層和全鏈接層之間的max pooling。spa

而這個空間金字塔池化實際上就是把feature map(3維)用不一樣的網格切分,而後對切分出來的每一個小方塊作最大池化,左後重組成一個2維向量。這個2維向量尺寸依賴於網格設置,調整到符合全鏈接層輸入尺寸便可。3d

如圖,用4*4,2*2,1*1大小的三張網格放到下面這張特徵圖上,就能夠獲得16+4+1=21種不一樣的切割方式,分別在每個區域取最大池化,那麼就能夠獲得21組特徵。這種以不一樣的大小格子的組合方式來池化的過程就是空間金字塔池化(SPP)blog

3. 優勢

實現了共享卷積計算,而且能夠經過設置不一樣的網格來獲得多層尺度的特徵(?用max pooling不仍是「點」特徵?)io

4. 缺陷

使用多尺度池化,致使梯度回傳很複雜;某些層不能更新...【待更】sed

相關文章
相關標籤/搜索