前言:

   接著上一篇文章提到的RCNN網(wǎng)絡(luò)物體檢測,這個網(wǎng)絡(luò)成功的引入了CNN卷積網(wǎng)絡(luò)來進行特征提取,但是存在一個問題,就是對需要進行特征提取圖片大小有嚴格的限制。當(dāng)時面對這種問題,rg大神采用的是對分割出的2000多個候選區(qū)域,進行切割或者縮放形變處理到固定大小,這樣雖然滿足了CNN對圖片大小的要求,確造成圖片的信息缺失或者變形,會降低圖片識別的正確率. 如下圖所示:
     photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  正文:

  何凱明大神在看到RCNN模型,分析了CNN模型的特點后:由卷積部分和全連接兩部分構(gòu)成,而對于卷積部分而言,比如任意圖片大小(w,h),任意的卷積核size(a,b),默認步長為1,我們都會得到卷積之后的特征圖F(w-a+1,h-b+1),所以這部分對圖片大小沒有要求,有要求的地方在全連接層(如下圖),全連接層的神經(jīng)元設(shè)定之后是固定的(如圖 Input layer 神經(jīng)元個數(shù)),而每一個都對應(yīng)者一個特征,rg大神在進入CNN前對圖片進行warp處理,就是為了卷積之后的特征數(shù),能夠和了全連接層的神經(jīng)元個數(shù)相等.

    photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

 但是何大神覺得,事情還可以更有趣,他提出將特征數(shù)據(jù)(特征圖)進一步處理,然后拼湊成和神經(jīng)元個數(shù)相同的特征數(shù),這樣就可以不用warp圖片大小也可以獲得相同數(shù)量的特征,那么他是咋樣處理這特征圖的呢?

    photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

論文中提到,比如我們有一張圖片為例子:

              photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

我們對這種圖進行卷積處理(我們以zf為例,最后一個卷積之后得到這樣的特征圖)

    photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

這張圖顯示的是一個60*40*256的特征圖,到這兒之后,如果要得到固定的神經(jīng)元個數(shù),論文中提到的是21,我們就需要將60*40的特征圖,我們暫且稱這個特征圖為feature A,進行處理,怎么處理呢?

我們先貼個圖:

        photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

如上圖所示:

    我們使用三層的金字塔池化層pooling,分別設(shè)置圖片切分成多少塊,論文中設(shè)置的分別是(1,4,16),然后按照層次對這個特征圖feature A進行分別

處理(用代碼實現(xiàn)就是for(1,2,3層)),也就是在第一層對這個特征圖feature A整個特征圖進行池化(池化又分為:最大池化,平均池化,隨機池化),論文中使用的是最大池化,

得到1個特征。

  第二層先將這個特征圖feature A切分為4個(20,30)的小的特征圖,然后使用對應(yīng)的大小的池化核對其進行池化得到4個特征,

  第三層先將這個特征圖feature A切分為16個(10,15)的小的特征圖,然后使用對應(yīng)大小的池化核對其進行池化得到16個特征.

然后將這1+4+16=21個特征輸入到全連接層,進行權(quán)重計算.

    這就是sppnet的核心思想,當(dāng)然在這個模型中,何大神還對RCNN進行了優(yōu)化,上面介紹的金字塔池化代替warp最重要的一個,但是這個也很重要,是什么呢?

何大神覺得,如果對ss提供的2000多個候選區(qū)域都逐一進行卷積處理,勢必會耗費大量的時間,所以他覺得,能不能我們先對一整張圖進行卷積得到特征圖,然后

再將ss算法提供的2000多個候選區(qū)域的位置記錄下來,通過比例映射到整張圖的feature map上提取出候選區(qū)域的特征圖B,然后將B送入到金字塔池化層中,進行權(quán)重計算.

然后經(jīng)過嘗試,這種方法是可行的,于是在RCNN基礎(chǔ)上,進行了這兩個優(yōu)化得到了這個新的網(wǎng)絡(luò)sppnet.

 值得一提的是,sppnet提出的這種金字塔池化來實現(xiàn)任意圖片大小進行CNN處理的這種思路,得到了大家的廣泛認可,以后的許多模型,或多或少在這方面都是參考了這種思路,就連

rg大神,在后來提出的fast-rcnn上也是收益于這種思想的啟發(fā).

http://www.cnblogs.com/gongxijun/p/7172134.html