天天看點

目标檢測--SPP-Net

論文文獻:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

算法流程圖

目标檢測--SPP-Net

1、SPP-Net解決的問題

R-CNN存在的問題
  1. 在用selective search方法對原圖進行提取了2000個Proposal,在卷積之前要對每個Proposal進行Wrap或Crop,降低了檢測的精确度。
  2. 對于每一個原圖的Proposal都要進行一次卷積,也就是每張圖2000次,計算量太大。
SPP-Net解決的政策
  1. 通過Spatial Pyramid Pooling解決了深度網絡固定輸入層尺寸的這個限制,使得網絡可以享受不限制輸入尺寸帶來的好處。
  2. 對于每一張原圖隻需要整體卷積一次,然後将用selective search方法對原圖進行提取的Proposal區域映射到卷積特征層進而得到全連結的輸入層。

2、SPP-Net相對R-CNN的改進點

目标檢測--SPP-Net
  1. 特征圖上的對應的特征區域的次元不滿足全連接配接層的輸入要求?
    目标檢測--SPP-Net
    作者使用Spatial Pyramid Pooling解決了該問題,也就是在卷積層和全連接配接層之間增加一個Spatial Pyramid Pooling Layer。如上圖所示,假設原圖輸入是224x224,對于conv5出來後的輸出是13x13x256的,可以了解成有256個這樣的Filter,每個Filter對應一張13x13的feature Map。如果像上圖那樣将feature Map分成1x1(金字塔底座),2x2(金字塔中間),4x4(金字塔頂座)三張子圖,分别做Max Pooling後,出來的特征就是(16+4+1)x256 次元。即使原圖的輸入不是224x224,出來的特征依然是(16+4+1)x256次元。這樣就實作了不管圖像尺寸如何池化n的輸出永遠是 (16+4+1)x256 次元。
  2. 如何從一個region proposal 映射到feature map的位置?

    要搞定這個問題,需要首先清楚感受野等概念和計算方法。下面從感受野、感受野上面的坐标映射及原始圖像的ROI如何映射三方面闡述。

  3. 感受野
    • 概念

      在卷積神經網絡中,感受野的定義是卷積神經網絡每一層輸出的特征圖(Feature Map)上的像素點在原始圖像上映射的區域大小。

    • 計算方法
output field size = ( input field size - kernel size + 2*padding ) / stride + 1
           

其中output field size 是卷積層的輸出,input field size 是卷積層的輸入,也是上一層的感受野,是以,

input field size = (output field size - 1)* stride - 2*padding + kernel size
           
  1. 感受野上的坐标映射
    • 計算公式

      對于Convolution/Pooling Layer:

      目标檢測--SPP-Net
      對于Neuronlayer(ReLU/Sigmoid/…):
      目标檢測--SPP-Net
      其中p_i為第i層的感受野的坐标,s_i為Stride的大小,k_i為感受野的大小。
    • 例子

      上面是計算任意一個Layer輸入輸出的坐标映射關系,如果是計算任意Feature Map之間的關系,隻需要用 簡單的組合就可以得到,下圖是一個簡單的例子:

      目标檢測--SPP-Net
    • 簡化

      何凱明在SPP-NET中使用的是簡化版本,将2小節公式中的Padding都設為 k_i/2 向下取整,然後簡化為:

      目标檢測--SPP-Net
  2. 原始圖像的ROI如何映射(簡化版)

    SPP-NET是把原始ROI的左上角和右下角 映射到Feature Map上的兩個對應點。 有了Feature Map上的兩隊角點就确定了對應的Feature Map 區域(下圖中橙色)。

    目标檢測--SPP-Net
    左上角取
    目标檢測--SPP-Net
    ,
    目标檢測--SPP-Net
    右下角的點取
    目标檢測--SPP-Net
    ,
    目标檢測--SPP-Net
    。其中S為坐标映射的簡化計算版本,即所有步長的乘積。

SPP-Net的缺點

SPP也需要訓練CNN提取特征,然後訓練SVM分類這些特征。需要巨大的存儲空間,并且分開訓練也很複雜。

繼續閱讀