1. 程式人生 > >SPP-Net中的特徵對映關係

SPP-Net中的特徵對映關係

一、什麼是感受野?

答:卷積神經網路CNN中,某一層輸出結果中一個元素所對應的輸入層的區域大小,被稱作感受野receptive field。感受野的大小是由kernel size,stride,padding , outputsize 一起決定的。下面這個圖來感受一下!
這裡寫圖片描述
卷積過程中的詞語含義:
•28*28的輸入圖片—-(輸入圖片尺寸)W =28
•5*5的local receptive fields(區域性感受野,也叫滑窗,卷積核)—–(卷積核大小)K=5
•滑動步長(stride)
當W=28,K=5,stride=1時,可以得到24*24的隱層神經元。
推出公式:隱藏層邊長=(W-K)/S +1

注意:不過有時候為了控制輸出的隱藏層空間分佈會在輸入層外圍做零填充,假設填充P個畫素,此時:邊長=(W-K+2P)/S+1,特別的當S=1時,設定零填充為P=(K-1)/2,可以保證輸入層與輸出層有相同的空間分佈 。

這裡寫圖片描述

綜上所述:隱藏層邊長(輸出的邊長)= (W - K + 2P)/S + 1 (其中W是輸入特徵的大小,K是卷積核大小,P是填充大小,S是步長(stride))。

用英文表達:
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 + kernelsize
再重申一下:卷積神經網路CNN中,某一層輸出結果中一個元素所對應的輸入層的區域大小,被稱作感受野receptive field。感受野的大小是由kernel size,stride,padding , outputsize一起決定的。

二、感受野上的座標對映

  通常,我們需要知道網路裡面任意兩個feature map之間的座標對映關係(一般是中心點之間的對映),如下圖,我們想得到map 3上的點p3映射回map 2所在的位置p2(橙色框的中心點)。

這裡寫圖片描述

計算公式:
(1)對於Conv或pooling層:p(i)=s(i)*p(i+1)+[(k(i)-1)/2-padding]
(2)對於Neuronlayer(ReLU/Sigmoid/…):p(I)=p(i+1)
上面是計算任意一個layer輸入輸出的座標對映關係,如果是計算任意feature map之間的關係,只需要用簡單的組合就可以得到,下圖是一個簡單的例子:
這裡寫圖片描述


對下面圖的解釋:
這裡寫圖片描述
問題:如何計算感受野區域的中心?
一個簡單的解決方案是:對每一層,填充零元素P=F/2向下取整,這樣的話,在每一個特徵圖上座標為(0,0)的響應點的感受野是以輸入影象座標為(0,0)的點為中心的,座標為(x,y)的點的感受野是以(Sx,Sy)為中心的,S為步長。
這裡寫圖片描述

三、SPP-Net中ROI對映做法詳解
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

四、如何理解Bounding box regression?
輸入的不是region proposal的座標,而是該proposal視窗對應的CNN特徵,也就是後面得到的特徵向量,(訓練階段的輸入還包括Ground truth),輸出是需要進行的平移變換和尺度縮放(4個值),然後直接可以計算出精修後的預測邊界框。
其實就是在全連線層後面加了一個含有4個神經元的輸出層,每一個神經元的輸出對應平移變換和尺度縮放參數。需要訓練的只是全連線層與輸出層之間的連線權重矩陣。利用梯度下降法或最小二乘法就可以得到。

Vgg16結構:
卷積層:K=3,padding=1,stride=1
池化層:K=2,padding=0,stride=2
都符合 這個計算座標的對映公式。

長短期更新:
Long-term: 在固定的幀數進行訓練更新
Short-term: 當估計的目標被分類成非跟蹤目標,發生錯誤時,即候選中概率最大的那個也小於0.5時,需要更新模型引數。怎麼更新呢?在估計的目標位置處,選取正負樣本,與目標邊界框的IOU分別為>0.7和<0.3。