SPP-Net中的特徵映射關係

轉載自https://zhuanlan.zhihu.com/p/24780433,原文作者講解的很清晰。

一、什麼是感受野?

答:卷積神經網絡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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章