(三)目標檢測算法之SPPNet


今天准備再更新一篇博客,加油呀~~~

系列博客鏈接:

(一)目標檢測概述 https://www.cnblogs.com/kongweisi/p/10894415.html

(二)目標檢測算法之R-CNN https://www.cnblogs.com/kongweisi/p/10895055.html

 

本篇博客概述:

1、SPPNet的特點

  1.1、映射(減少卷積計算、防止圖片內容變形

     1.2、spp層:空間金字塔層(將大小不同的圖片轉換成固定大小的圖片) 

2、SPPNet總結

   完整結構+優缺點總結

 

引言:

前面介紹的R-CNN的速度慢在哪里?

答:每個候選區都要進行卷積操作提取特征。因此,SPPnet孕育而生。

 

1、 SPPNet

SPPNet提出了SPP層,主要改進了以下兩個方面:

  • 減少卷積計算
  • 防止圖片內容變形

 

                    圖1 R-CNN與SPPNet

圖1中第一行代表R-CNN的檢測過程,第二行是SPPNet的。輸入進R-CNN卷積層的圖像必須固定大小,因此要進過crop/warp,這會使原圖片變形。

而SPPNet直接將原圖片輸入CNN中,獲其特征,使得原圖片內容得以保真。

R-CNN模型 SPPNet模型
1、R-CNN是讓每個候選區域經過crop/wrap等操作變換成固定大小的圖像 2、固定大小的圖像塞給CNN 傳給后面的層做訓練回歸分類操作 1、SPPNet把全圖塞給CNN得到全圖的feature map 2、讓候選區域與feature map直接映射,得到候選區域的映射特征向量 3、映射過來的特征向量大小不固定,這些特征向量塞給SPP層(空間金字塔變換層),SPP層接收任何大小的輸入,輸出固定大小的特征向量,再塞給FC層

 

 

 

 

 

1.1 映射

原始圖片經過CNN變成了feature map,原始圖片通過選擇性搜索(SS)得到了候選區域,現在需要將基於原始圖片的候選區域映射到feature map中的特征向量。

映射過程圖參考如下:

整個映射過程有具體的公式,如下

假設(x′,y′)(x′,y′)表示特征圖上的坐標點,坐標點(x,y)表示原輸入圖片上的點,那么它們之間有如下轉換關系,這種映射關系與網絡結構有關:(x,y)=(S∗x′,S∗y′),即

  • 左上角的點:

    • x′=[x/S]+1
  • 右下角的點:

    • x′=[x/S]−1

其中 SS 就是CNN中所有的strides的乘積,包含了池化、卷積的stride。論文中使用S的計算出來為=16

原論文鏈接,其中有公式的推導過程 http://kaiminghe.com/iccv15tutorial/iccv2015_tutorial_convolutional_feature_maps_kaiminghe.pdf

 

1.2 spatial pyramid pooling (空間金字塔變換層

通過spatial pyramid pooling 將任意大小的特征圖轉換成固定大小的特征向量

示例:假設原圖輸入是224x224,對於conv出來后的輸出是13x13x256的,可以理解成有256個這樣的Filter,每個Filter對應一張13x13的feature map。

接着在這個特征圖中找到每一個候選區域映射的區域,spp層會將每一個候選區域分成1x1,2x2,4x4三張子圖,對每個子圖的每個區域作max pooling,

得出的特征再連接到一起,就是(16+4+1)x256的特征向量,接着給全連接層做進一步處理,如下圖:

2、 SPPNet總結

來看下SPPNet的完整結構

 

 

  • 優點
    • SPPNet在R-CNN的基礎上提出了改進,通過候選區域和feature map的映射,配合SPP層的使用,從而達到了CNN層的共享計算,減少了運算時間, 后面的Fast R-CNN等也是受SPPNet的啟發
  • 缺點
    • 訓練依然過慢、效率低,特征需要寫入磁盤(因為SVM的存在)
    • 分階段訓練網絡:選取候選區域、訓練CNN、訓練SVM、訓練bbox回歸器, SPP-Net在fine-tuning階段無法使用反向傳播微調SPP-Net前面的Conv層

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM