日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 需求創造好的產品,產品拓寬原始的需求

當前的深度神經網絡一般都需要固定的輸入圖像尺寸(如224*224). 這種需求很明顯是人為的,潛在性的弊端會降低識別精度(為了使圖像尺寸相同,一定會涉及到圖像的比例/非比例放縮,這就引入了尺度誤差和形變誤差)。何凱明師兄的這項工作主要是講多分辨率搜索的思想融入到了現有的深度網絡中,從而實現了多尺度網絡的訓練以及識別,進而提升了圖像分類和目標檢測的精度(核心思想在于生成固定長度Descriptor)。SPP(Spatial Pyramid Pooling,空間金字塔池化)是一種非常有效的多分辨策略,對目標形變非常魯邦。

2. 從目標檢測RCNN入手

RCNN(Region proposal with Convoluton Neural Network,RCNN)進行目標檢測的思路:CNN作為特征提取器,然后進行BoundingBox回歸。但是RCNN對于每一個區域候選(Region Proposed)都需要首先將圖片放縮(比例/非比例)到固定的尺寸(224*224),然后為每個區域候選提取CNN特征。整個過程是存在一些性能瓶頸

  • 速度瓶頸:重復為每個region proposal提取特征是極其費時的,Selective Search對于每幅圖片產生2K左右個region proposal,也就是意味著一幅圖片需要經過2K次的完整的CNN計算得到最終的結果。
  • 性能瓶頸:對于所有的region proposal防縮到固定的尺寸會導致我們不期望看到的幾何形變,而且由于速度瓶頸的存在,不可能采用多尺度或者是大量的數據增強去訓練模型

這里面實際到一個核心問題:大多數基于CNN的分類檢測網絡為什么需要固定的Descriptor輸入呢?

CNN網絡可以分解為卷積網絡部分以及全連接網絡部分。卷積網絡的參數主要是卷積核,完全能夠適用任意大小的輸入,并且能夠產生任意大小的輸出。但是全連接層網絡不同,全連接層部分的參數是神經元對于所有輸入的連接權重也就是說輸入尺寸不固定的話,全連接層參數的個數都不能固定

SPPNet給出的解決方案是,既然只有全連接層需要固定的輸入,那么我們在全連接層前加入一個網絡層,讓他對任意的輸入產生固定的輸出不就好了嗎?一種常見的想法是對于最后一層卷積層的輸出pooling一下,但是這個pooling窗口(slide window)的尺寸及步伐(stride)設置為相對值,也就是特征圖相對于期望輸出固定Descriptor的一個比例值,這樣對于任意輸入經過這層后都能得到一個固定的輸出。SPPnet在這個想法上繼續加入SPM的思路,SPM其實在傳統的機器學習特征提取中很常用,主要思路就是對于一副圖像分成若干尺度的一些塊,比如一幅圖像分成1份,4份,8份等。然后對于每一塊提取特征然后融合在一起,這樣就可以兼容多個尺度的特征(所以從本質上講,這種創新還是源于傳統的機器學習:尺度金字塔+特征融合)。SPPNet首次將這種思想應用在CNN中,對于卷積層特征我們首先對他分成不同的尺寸,然后每個尺寸提取一個固定維度的特征,最后拼接這些特征成一個固定維度。上面這個圖可以看出SPPnet和RCNN的區別,首先是輸入不需要放縮到指定大小。其次是增加了一個空間金字塔池化層,還有最重要的一點是每幅圖片只需要提取一次特征

SPPnet雖然解決了CNN輸入任意大小圖片的問題,但是還是需要重復為每個region proposal提取特征啊,能不能我們直接根據region proposal定位到他在卷積層特征的位置,然后直接對于這部分特征處理呢?答案是肯定的。

3.SPPNet的網絡細節

通過可視化Conv5層特征,發現卷積特征其實保存了空間位置信息(數學推理中更容易發現這點),并且每一個卷積核負責提取不同的特征,比如C圖175、55卷積核的特征,其中175負責提取窗口特征,55負責提取圓形的類似于車輪的特征。其實我們也可以通過傳統的方法聚集這些特征,例如詞袋模型或是空間金字塔的方法。

4.關于空間金字塔池化層SPP

空間金字塔池化層是SPPNet的核心,其主要目的是對于任意尺寸的輸入產生固定大小的輸出。思路是對于任意大小的feature map首先分成16、4、1個塊,然后在每個塊上最大池化,池化后的特征拼接得到一個固定維度的輸出。以滿足全連接層的需要。在研究圖像分類的時候可以這么干(輸入的圖像為一整副圖像),然而在研究目標檢測和跟蹤的時候,我們實際輸入的應該是region proposal。

SPPNet理論上可以改進任何CNN網絡,通過空間金字塔池化,使得CNN的特征不再是單一尺度的。但是SPPNet更適用于處理目標檢測問題,首先是網絡可以介紹任意大小的輸入,也就是說能夠很方便地多尺寸訓練。其次是空間金字塔池化能夠對于任意大小的輸入產生固定的輸出,這樣使得一幅圖片的多個region proposal提取一次特征成為可能。

SPPNet的做法是:

1. 首先通過selective search產生一系列的region proposal

2. 然后訓練多尺寸識別網絡用以提取區域特征,其中處理方法是每個尺寸的最短邊大小在尺寸集合中:

訓練的時候通過上面提到的多尺寸訓練方法,也就是在每個epoch中首先訓練一個尺寸產生一個model,然后加載這個model并訓練第二個尺寸,直到訓練完所有的尺寸。空間金字塔池化使用的尺度為:1*1,2*2,3*3,6*6,一共是50個bins。

3. 在測試時,每個region proposal選擇能使其包含的像素個數最接近224*224的尺寸,提取相應特征。

由于我們的空間金字塔池化可以接受任意大小的輸入,因此對于每個region proposal將其映射到feature map上,然后僅對這一塊feature map進行空間金字塔池化就可以得到固定維度的特征用以訓練CNN了。

4. 訓練SVM,BoundingBox回歸

5. 該方法的不足之處

和RCNN一樣,SPP也需要訓練CNN提取特征,然后訓練SVM分類這些特征。需要巨大的存儲空間,并且分開訓練也很復雜。而且selective search的方法提取特征是在CPU上進行的,相對于GPU來說還是比較慢的。Fast RCNN以及Faster RCNN對這個兩個問題進行了深入的研究,取得了不錯的效果。

6. 參考文獻

[1] 論文:He K, Zhang X, Ren S, et al. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition[C]. european conference on computer vision, 2014: 346-361.

[2] 文章:https://zhuanlan.zhihu.com/p/34357444

[3] 源碼:http://research.microsoft.com/en-us/um/people/kahe/

總結

以上是生活随笔為你收集整理的Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。