1. 程式人生 > >SPP-net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

SPP-net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)

Abstract

 SPP-net提出了空間金字塔池化層來解決CNN只是輸入固定尺寸的問題,因為單固定尺寸的輸入會影響識別效果,並且對於多尺度影象的情況下魯棒性不好。SPP-net很好的解決了以上問題,對於任意尺度影象都可以提取出固定維度的特徵,實驗證明SPP-net對分類任務(不同網路結構)和目標探測任務都有積極的作用。RCNN則是將候選區送入模型,這樣會非常耗時,而且SPP-net網路以整張影象作為輸入節省了大量時間,速度快了24~64倍。論文網路結構如圖所示:    

                               

spatial pyramid pooling layer原理圖,如圖所示輸入可以是多種尺寸的,進而得到不同尺寸的特徵圖,但我們對其平均分成16、4、1份然後進行池化下采樣,這樣不論特徵圖是什麼尺寸的都可以轉換為固定的尺度:

                                    

其實,此論文最令人迷惑的點就是特徵圖---原圖的ROI對映,我們根據候選區ROI(原圖上的)座標對映在特徵圖上響應的區域邊框,這樣就避免了多次重複的進行特徵提取浪費計算力,文章也提到了特徵圖和原圖ROI的對映原理。對映原理是將原圖座標(x,y)對映到特徵圖上座標(x',y'),使得(x,y)接近(x',y')反對映後在原圖上感受野的中心。原文原話是這樣的:

                                                      

那下面就討論一下,特徵圖與特徵圖或者是特徵圖與原圖之間的對映關係;我們知道,特徵圖上的一個畫素對於上一層的一個感受野,而且如果隔著多層,則感受野會累積,詳見何凱明的演講PPT圖示:

                                                   

上面提到了對映原理,一下就對對映原理進行解釋,我一直很困惑特徵點是如何反映射回前層感受野區域的中心位置的呢?下面影象示例是引用於知乎

                                            preview

 公式化表達為:p1=s*p2+((k-1)/2 - p)

對這個公式的解釋困擾了我好久,下面用幾何空間的角度來解釋,先上圖:

                                             

                                                        

由於兩個特徵圖尺度不同,所以對特徵點進行上取樣(也就是*S,注意如果隔著多層時S是多層的累積)對映到綠色座標位置,然後平移(也就是+(k-1)/2,即感受野的一半)感受野中心;

第二種情況,就需要減去padding以進行抵消,與PPT中padding情況對應,只不過PPT中的+1是因為他是以1為座標起點,如圖所示:

                         

查了許多別人的部落格以及自己的理解,不知道理解是否準確。

由此一來,正向對映也就是原圖對映到特徵圖上公式描述於原文:

                                    

可以看到公式簡化了許多,那是因為採用的池化是k/2進行了抵消,具體是這樣簡化的,圖引用於這篇部落格

                         è¿éåå¾çæè¿°

如有錯誤,歡迎指正

參考文獻