deep learning 目標檢測(二)之SPPnet


SPP net


論文通讀

Abstract

在此之前的CNN的輸入必須是固定大小的圖片。而SPPnet能接受任何大小的圖片,并都能產生同一個尺寸的特征向量。SPPnet還有一個很大的好處就是快速并且檢測精度高。快速在于:對于全部的圖片,我們只需要計算一次Feature map,然后在任意一個區域(子區域)池化這個Feature得到同一個大小的表達式。最后進入訓練的探測器。這一步,避免了重復計算卷積特征。這篇文章介紹的方法在Pascal VOC 2007,和ILSVRC上都取得了很好的效果。

1.Introuction


SPPnet 的結構

是在卷積層和全連接層之間添加spatial pyramid pooling層。

之前SPM(spatial pyramid matching)作為Bag-of-Words (BoW) 模型的衍生版在機器視覺的領域中十分成功。

SPPnet有一下三點很好的性質:

1.不管輸入的尺寸大小,輸出總是固定尺寸的特征向量。

2.使用多尺度容器,這時滑窗池化只用單一尺寸。多尺度的池化可以提高精度。

3.可以在不同的尺度上對特征進行池化。

我們采用多個共享權重的網絡結構,來處理不同尺寸的輸入,但是對于某一個網絡我們采用固定大小的輸入。

文章中在不同的4個CNN的構架上使用SPP結構,發現效果都有了很大的提升。

R-CNN不行在于對于一個未處理過的來自圖片的像素,他總是重復的調用卷積神經網絡進行計算。

2 DEEP NETWORKS WITH SPATIAL PYRAMID POOLING

2.1 Convolutional Layers and Feature Maps

文章之前也討論過,真正需要固定大小輸入的是全連接層,卷積層是不需要固定大小的輸入(因為滑動窗口的存在)。卷積層的輸出稱之為Feature map ,它不僅包括對目標的反映的強度,而且還包含位置信息。具有很豐富的語義信息。

2.2 The Spatial Pyramid Pooling Layer

因為這個卷積層可以接受任意尺寸的輸入,那么卷積層的輸出也是任意結構的。但是后面的全連接層確是需要固定大小的尺寸。為此我們在卷積層的最后一層中,把pooling層用空間金字塔pooling層代替。



具體地,在一個CNN里,把最以后一次池化層去掉,換成一個SPP去做最大池化操作(max pooling).如果最后一次卷積得到了k個feature map,也就是有k個filter,SPP有M個bin,那經過SPP得到的是一個kM維的向量.我的理解是,比如上圖中第一個feature map有16個bin,一共有256個feature map,每一個經過16個bin的max pooling得到16個數,那256個feature map就是16x256的向量了.SPP的bin大小可以選擇多個,所以經過SPP還能產生4x256,1x256維的向量.

bin的size是和輸入圖像size成比例的,而bin的個數是不變的。如果我們把bin當成另一種滑窗來看待的話,比較好理解。

我們可以對不同比例,不同大小的圖片進行處理,而且使用同一個CNN,只是對不同大小的圖片,在最后的SPP里,bin的大小不同,但最后得到的特征確實相同維度.

這樣,我們把一張圖片resize成不同尺度,放到同一個CNN里訓練,就能得到不同尺度下的特征,就和SIFT類似了.

上圖中單獨的Bin起到了全局信息的作用,從另一方面也減少了過擬合的問題。

2.3 Training the Network

如何在GPU上實現空間金字塔的卷積層。

Single-size training

對于一張給定尺寸的的輸入圖片,我們可以提前計算Bin的尺寸。


例子


例子

Multi-size training

對于多尺寸的訓練,我們依據輸入的大小來更改spp-net的size大小,使得輸出的特征向量size相同。

文中多尺度訓練采用的是在一個epoch內采用同一尺度(如224),在另一個epoch使用另外一個尺度(如180)。

把單個size中的224*224圖片,縮小到180*180,而不是在原圖上從新提取一個新的180*180的圖片,這樣可以保證兩張圖片內容一致。通過調整SPP的pooling 窗口和間隔距離得到相同的輸出。

在訓練中為了避免頻繁更換網絡的麻煩,采用先用224*224迭代訓練一遍,然后復制參數用180*180的網絡訓練,如此循環。

3 SPP-NET FOR IMAGE CLASSIFICATION

3.1 Experiments on ImageNet 2012 Classification


本文實在整個圖片上取4個角和中心,進行網絡訓練(和Alex-net中在256*256上去法不同)。

本文采用的是以ZF fast作為基本框架,具體結構如下:

Input(224,224,3)→96F(7,7,3,2)→LRN→max-p(3,3,2)→256F(5,5,96,5)→LRN→max-p(3,3,2)→384(3,3,256,1) →384F(3,3,384,1) →256F(3,3,384,1) →max-p(3,3,2) →4096fc→4096fc-1000softmax

測試階段采用10-view方法:

e2采用SPP-4,4個分級,分別為4*4,3*3,2*2,1*1? 共計30維

e3采用SPP-6,,4個分級,分別為6*6,3*3,2*2,1*1? 共計50維

結果分析:

1:(e1)獲得了top-1 35.99%的錯誤率;比原論文中報告的38.4%降低了近3%,說明這種在原圖像上截取224*224訓練圖片的方法比較好。

2:top-1,e3>e2>e1 ;top-5,e2>e3>e1;說明spp結構確實很有用,而且對比ZF-net,spp-4有更少的參數,最后一個特征層特征圖,ZF為6*6=36,spp-4為30個,說明spp結構對于物體的空間位置和形變具有魯棒性。

3:e4在180*180和224*224兩種scale上訓練網絡,在224*224上測試分類,top-5結果達到了13.64%。所以multi-scale訓練的方式很重要;根據ZF可視化論文中對平移和縮放不變形的探討中,使用multi-scale可以增加網絡對于平移和縮放的不變性。

4:e5,作者用原始整個圖像(水平翻轉)替換10-view中的連個中心剪裁圖片,使得top-5達到了13.57%,這說明輸入圖片和物體的匹配程度確實影響分類結果(和OverFeat中使用offset和sliding window的原因相同,匹配的越好,分類月準確)

5:對比OverFeat中的fast和accurate兩個模型對比來看,僅僅就分類來說,本文在沒有采取更加復雜的網絡情況下,沒有使用sliding window和offset的情況下,利用一些相對簡單的方法獲得了較好的結果。

3.2 3.3在Pascal VOC 2007和Caltech 101上實驗

通過在ImageNet上訓練的特征提取器,應用在其他數據及上,在新的訓練集上用SVM作為分類器,進行訓練。作者刷新了這兩個數據集VOC 2007上結果是80.1%,Caltech101上結果是91.44%

實驗結果證明網絡越深越好,SPP結構比一般的網絡結構好;在全圖上結構比剪裁的結果好;在不同比例上圖片上訓練會有不通過結果。說明卷積網絡對于圖像的scale有些敏感,SPPnet能夠部分地解決問題。

4 SPP-NET FOR OBJECT DETECTION

傳統的R-CNN慢的原因在于:對于與每一張輸入圖片,我們都會產生2000張的候選區域,對于每一個候選區域,我們都要喂進我們的cnn模型中進行特征的抽取。換句話說,對于每一張輸入圖片,我們都要進行2000次的cnn。這個大大增加了實踐的消耗。

SPP-net比較快的原因在于:對弈每一張的輸入圖片,我們只需要進行一次的cnn,抽取到一個featuremap即可。而在spatail pyramid pooling層,我們再對2000個候選區域的feature map進行處理即可。

4.1 Detection Algorithm

模型

1.用了快速選擇性搜索對于每一張圖片都產生2000個候選區域。

2.然后我們調整圖片使得min(w,h)=s,然以對于一整張圖片我們進入卷積層抽取他的feature map.

3.對于每個候選窗,我們使用四階空間金字塔(1+2*2+3*3+4*4=50)50個bin去池化這個feature map 。來產生12800(256*50)維的表達式。

4.進入全連接層.

5.對于每一個類別,我們都訓練一個二值的線性SVM的分類器。

訓練

1.我們用真實的框,來產生正負候選區域的樣本。(IoU)

2.我們用standard hard negative miming的方法來訓練SVM.

測試

SVM用于給每一個類別一個分數。然后用非極大值抑制來判定。

多尺度特征抽取

對于每一個候選窗口我們都在集合{480,576,688,864,1200}中選一個尺度s.使得min(w,h)=s,使得這個窗口的像素個數接近224*224。

對于傳統的R-CNN,SPP-net對其進行了結構的微調和bounding box regression 的處理。

4.2 Detection Results?

4.3 Complexity and Running Time

4.4 Model Combination for Detection

對于不同的初始化方式(其余相同),在訓練一個網絡。SPP-net(2)。發現性能和(1)差不多。在測試時,用分別來自兩個網絡的分數,采用非極大值抑制的方法來最終采取判斷。發現,結果有了顯著的提升。


實驗結果

4.5 ILSVRC 2014 Detection

總之通過spp-net的方法比R-CNN的方法要快很多,但是和OverFeat比較作者沒有給出,此外本文是在VOC 2007數據集上做的測試,OverFeat實在ILSVRC 2013的數據集上做的測試。兩種方法都是使用回歸的方法來預測bounding box。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容