MTCNN中P_Net特徵映射關係解析

PNet是全卷積網絡,主要爲了應對不同輸入尺度,最後輸出的爲W×H×2,W×H×4兩個特徵圖,其中W×H×4爲候選框的在特徵圖中的位置座標,需要將它們映射到原始圖像中,接下來對這個映射關係進行解析。

一、什麼是感受野
卷積神經網絡CNN中,某一層輸出結果中一個元素所對應的輸入層的區域大小,被稱作感受野receptive field。感受野的大小是由kernel size,stride,padding , outputsize 一起決定的。
在這裏插入圖片描述
卷積過程中的詞語含義:
•28×28的輸入圖片(輸入圖片尺寸W=28)
•5×5的卷積核(卷積核大小K=5)
•滑動步長(stride=1)
當padding=‘valid’(不進行填充)
根據隱藏層邊長=(W-K)/S +1,可以得到2424的隱層神經元。
當padding=‘SAME’(進行填充)
根據隱藏層邊長=(W-K+2P)/S +1,其中P=(K-1)/2,可以得到28
28的隱層神經元,可以保證輸入層與輸出層有相同的空間分佈 。

綜上所述:隱藏層邊長(輸出的邊長)= (W - K + 2P)/S + 1 (其中W是輸入特徵的大小,K是卷積核大小,P是填充大小,S是步長(stride))。
用英文表達:
output field size = ( input field size - kernel size + 2padding ) / stride + 1
(output field size 是卷積層的輸出,input field size 是卷積層的輸入)
反過來,卷積層的輸入(也即前一層的感受野)
input field size = (output field size - 1)
stride - 2*padding + kernelsize
二、感受野上的座標映射
通常,我們需要知道網絡裏邊任意兩個feature map之間的座標映射關係,一般是中心點之間的映射。
計算公式:
(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爲步長。
在這裏插入圖片描述

boundingbox = np.vstack([np.round((stride * t_index[1]) / scale),
                                 np.round((stride * t_index[0]) / scale),
                                 np.round((stride * t_index[1] + cellsize) / scale),
                                 np.round((stride * t_index[0] + cellsize) / scale),
                                 score,
                                 reg])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章