1. 程式人生 > >SPP-net文章詳細解讀

SPP-net文章詳細解讀

文章《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》是在RCNN之後,是對RCNN的改進(關於RCNN可以檢視R-CNN文章詳細解讀),先給出SPP-net總的框架圖如下

該文章主要改進兩點:
1. CNN需要固定輸入影象的尺寸,導致不必要的精度損失
2. R-CNN對候選區域進行重複卷積計算,造成計算冗餘

1.為什麼CNNs要固定輸入影象的尺寸?

CNN主要有兩部分組成:卷積層和全連線層。卷積層以滑動視窗方式操作並輸出表示各個響應啟用空間分佈的特徵圖。實際上,卷積層不需要輸入的影象尺寸固定,並且可以產生任意尺寸的特徵圖。但另一方面,完全連線層需要具有固定大小/長度的輸入。 因此,固定輸入大小的約束只是來自存在於網路更深層階段的全連線層。
解決辦法(對比R-CNN, SPP-net):

R-CNN SPP-net
固定輸入影象的尺寸,在將影象輸入CNN前,進行圖片的縮放(詳細情況檢視R-CNN文章詳細解讀),這樣會導致裁剪區域可能不包含整個物件,或者縮放時候產生的扭曲可能會導致不必要的幾何失真 提出空間金字塔池化層簡稱SPP層,在最後一個卷積層的頂部新增一個SPP層。 SPP層對這些特徵進行池化並生成固定長度的輸出,然後將其輸入到完全連線層(或其他分類器)。

如下圖所示
第一行中的影象即為要求固定尺寸輸入的CNN對影象的處理方式

第二行為要求固定尺寸輸入的CNN (如R-CNN)的處理流程,先將圖片按照類似第一行中的方式進行處理,然後輸入卷積以及全連線層,最後輸出結果

第三行為SPP-net的處理方式,不固定影象的大小,直接輸入給卷積層處理,卷積出來的特徵並不是直接輸入給全連線層,而是先給SPP層處理,然後得到一個固定長度的輸出傳給全連線層,最後輸出結果。

2.R-CNN為什麼會有計算冗餘?
如下圖所示
R-CNN對於一張圖片,先使用segment seletive方法提取出約2000個候選區域,然後將這兩千個候選區域分別送入網路中,即一張圖片要經歷2000次前向傳播,這樣會造成大量冗餘。
SPP-net則提出了一種從候選區域到全圖的特徵(feature map)之間的對應對映關係,通過此種對映關係可以直接獲取到候選區域的特徵向量,不需要重複使用CNN提取特徵,從而大幅度縮短訓練時間。每張圖片只需進行一次前向傳播即可。

下面來詳細講解一下改進的方法:
1.SPP層(spatial pyramid pooling)
首先要明確的是這一層的位置,這一層加在最後一個卷積層與全連線層之間,目的就是為了輸出固定長度的特徵傳給要求固定輸入的全連線層
SPP層的結構如下圖所示

SPP層的輸入:
如下圖灰色框所示
最後一層卷積輸出的特徵(我們稱為feature map),feature map為下圖的黑色部分表示,SPP層的輸入為與候選區域對應的在feature map上的一塊區域
上面這句話可能有點繞,我們可以理解為一張圖有約2000個候選區域,而對一張圖做完卷積後得到feature map,在這個feature map上也有約2000個與候選區域對應的區域(這裡的對應關係下面會詳細講解)

SPP層的輸出:
SPP layer分成1x1,2x2,4x4三個pooling結構(這部分結構如下圖所示),對每個輸入(這裡每個輸入大小是不一樣的)都作max pooling(論文使用的),出來的特徵再連線到一起,就是(16+4+1)x256的特徵向量。

無論輸入影象大小如何,出來的特徵固定是(16+4+1)x256維度。這樣就實現了不管影象中候選區域尺寸如何,SPP層的輸出永遠是(16+4+1)x256特徵向量。

2.候選區域在原圖與feature map之間的對映關係
這部分的計算其實就是感受野大小的計算。
在CNN中感受野(receptive fields)是指某一層輸出結果中一個元素所對應的上一層的區域大小,如下圖所示。

先定義幾個引數,引數的定義參考吳恩達在cousera講解中對符號的定義,然後再講解怎麼計算

型別 大小
l 層的輸入尺寸 W [ l 1 ] H [ l 1 ]
l 層的輸出尺寸 W [ l ] H l
l 層的卷積核大小 f [ l ] f [ l ]
l 層的卷積步長 S [ l ]
l 層的填充大小 p [ l ]

輸入的尺寸大小與輸出的尺寸大小有如下關係:
W [ l ] = ( W [ l 1 ] + 2 p [ l ] f [ l ] ) / S [ l ] + 1
H [ l ] = ( H [ l 1 ] + 2 p [ l ] f [ l ] ) / S [ l ] + 1

上面是區域尺寸大小的對應關係,下面看一下座標點之間的對應關係
p i = s i p i + 1 + ( ( k i 1 ) / 2 p a d d i n g )

含義 符號
在i層的座標值 p i
i層的步長 s i
i層的卷積核大小 k i
i層填充的大小 padding

SPP-net對上面的座標對應關係作了一定的簡化,簡化過程如下:

  • 令每一層的padding都為
    p a d d i n g = k i / 2 p i = s i p i + 1 + ( ( k i 1 ) / 2 k i / 2 )
  • 當 k_i 為奇數 ( ( k i 1 ) / 2 k i / 2 ) = 0

相關推薦

SPP-net文章詳細解讀

文章《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》是在RCNN之後,是對RCNN的改進(關於RCNN可以檢視R-CNN文章詳細解讀),先給出SPP-net總的框架圖如下

YOLO文章詳細解讀

文章《You Only Look Once: Unified, Real-Time Object Detection》提出方法下面簡稱YOLO。 目前,基於深度學習演算法的一系列目標檢測演算法大致可以分為兩大流派: 1.兩步走(two-stage)演算法:先產生候選區域然後再進行CNN

Faster R-CNN文章詳細解讀

文章《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》是為了改進Fast R-CNN而提出來的。因為在Fast R-CNN文章中的測試時間是不包括search selective時間

Fast R-CNN文章詳細解讀

文章《Fast R-CNN》,是在SPP-net的基礎上對R-CNN的再次改造。 關於R-CNN的細節請檢視R-CNN文章詳細解讀,關於SPP-net的細節請檢視SPP-net文章詳細解讀 先來回顧一下R-CNN和SPP-net的缺點: 1.R-CNN的缺點 訓練分為多個

R-CNN文章詳細解讀

這是13年的文章《Rich feature hierarchies for accurate object detection and semantic segmentation》,網上雖然很多文章寫過,但是有些很亂,有些不詳細,自己也花了不少時間看原文和各種部落格,想寫篇詳細的自己記錄下並

結繩法:文章詳細解讀(非同步時鐘設計的同步策略)(五)

一.典型方法(雙鎖存器法)    典型方法即雙鎖存器法,第一個鎖存器可能出現亞穩態,但是第二個鎖存器出現亞穩態的機率已經降到非常小,雙鎖存器雖然不能完全根除亞穩態的出現(事實上所有電路都無法根除,只能儘可能降低亞穩態的出現),但是基本能夠在很大程度上減小這種機率

圖解集合7:紅黑樹概念、紅黑樹的插入及旋轉操作詳細解讀

集合 得到 2個 排序。 數據流 except boolean 修正 split 原文地址http://www.cnblogs.com/xrq730/p/6867924.html,轉載請註明出處,謝謝! 初識TreeMap 之前的文章講解了兩種Map,分別是HashMa

MySql之ALTER命令用法詳細解讀(轉)

修改表 pre const 命令使用 add ear 修改 blog rain 本文詳細解讀了MySql語法中Alter命令的用法,這是一個用法比較多的語法,而且功能還是很強大的。 USE learning;(自己要提前建好) CREATE TABLE student

JMX超詳細解讀

唯一標識 命名 mode 架構 iter invoke 應用場景 elm span 一、JMX的定義     JMX(Java Management Extensions)是一個為應用程序植入管理功能的框架。JMX是一套標準的代理和服務,實際上,用戶可以在任何Java應用程

詳細解讀-this-關鍵字在全局、函數、對象、jQuery中的基礎用法!

瀏覽器中 person ack true ++ 例子 span mar 編程 一、前言 1、 Javascript是一門基於對象的動態語言,也就是說,所有東西都是對象,一個很典型的例子就是函數也被視為普通的對象。Javascript可以通過一定的設計模式來實現面向對

詳細解讀Jquery各Ajax函數:$.get(),$.post(),$.ajax(),$.getJSON()

type value 簡便 幫助 map last 滿足 處理 精確 一,$.get(url,[data],[callback]) 說明:url為請求地址,data為請求數據的列表(是可選的,也可以將要傳的參數寫在url裏面),callback為請求成功後的回調函數,

Jquery的$.get(),$.post(),$.ajax(),$.getJSON()用法詳細解讀

ajax 希望 得到 請求 字符串 說明 blog start 添加 1、$.get $.get()方法使用GET方式來進行異步請求,它的語法結構為: $.get( url [, data] [, callback] ) 解釋一下這個函數的各個參數: url:string類

const類型變量的詳細解讀

指針 地址 不可 錯誤 div log 變量 tro 類型 const類型變量--------------------------------------int i;const int *p; --------------------------------------in

Linux中軟鏈接與硬鏈接詳細解讀

正常 -a ext 驗證 觀察 imp file border ali 目標:1.測試環境模擬2.軟鏈接特性3.硬鏈接特性4.總結1.測試環境模擬12345678910111213[root@localhost home]# mkdir test 創建測試文件夾[root@

分享點幹貨(此this非彼this)this的詳細解讀

使用 編程 var pan his () col 作者 分析 在javascript編程中,this關鍵字經常讓初學者感到迷惑,這裏,針對此this根據查閱的資料和個人的理解分享一下,純手打,大神勿噴。 首先先說一下this的指向,大致可以分為以下四種。 1.作為對象的方法

讀論文系列:Object Detection SPP-net

多層 彌補 match rop lte 圖片 detection orien img 本文為您解讀SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

VINS-mono詳細解讀

fusion 尋找 結果 field 錯誤 記錄 不用 tomat IE VINS-mono詳細解讀 極品巧克力 前言 Vins-mono是香港科技大學開源的一個VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mo

相機IMU融合四部曲(二):誤差狀態四元數詳細解讀

center 討論 組合 計算 運算 white 成了 mes 操作 相機IMU融合四部曲(二):誤差狀態四元數詳細解讀 極品巧克力 前言 上一篇文章,《D-LG-EKF詳細解讀》中,講了理論上的SE3上相機和IMU融合的思想。但是,還沒有涉及到實際的操作,以及實際操作

[文文殿下]並查集詳細解讀

學習 應該 論文 一點 mar 訪問 單純 pic 官方 初探並查集 並查集(Disjoint-Set)是一種優美的數據結構,它擅長動態維護若幹交集為空的集合,並且支持快速合並兩個集合以及查找某個元素所在的集合。 然而這只是並查集所能做的一點微小的工作,文文對並查集的理解是

C4.5最新版本Release8與MDL的關係的詳細解讀

最近聯絡了決策樹的作者Quinlan教授,搞清了網上對C4.5的一些不夠前沿的描述, 《Inferring Decision Trees Using the Minimum Description Length Principle*》 《Improved Use of Continuou