深度學習 感受野

2021-09-13 02:50:16 字數 2786 閱讀 4550

感受野是卷積神經網路每一層輸出的特徵圖(feature map)上的畫素點在原始影象上對映的區域大小。

卷積神經網路由輸入維度計算輸出維度:

output size =

(input size - kernel size +

2* padding )

/ stride +

1

卷積神經網路由輸出維度計算輸入維度:

input size = (output size -

1)* stride -

2* padding + kernel size

計算感受野大小時,忽略了影象邊緣的影響,即不考慮padding的大小

先計算最深層在前一層上的感受野,然後逐漸傳遞到第一層,使用的公式

可以表示如下:

待 計算

的fea

ture

map上

的感受野

大小:r

fn=1

待計算的feature map上的感受野大小:rf_=1

待計算的fe

atur

emap

上的感受

野大小:

rfn​

=1r fi

=(rf

i+1−

1)∗s

i+ki

rf_=(rf_-1)*s_+k_

rfi​=(

rfi+

1​−1

)∗si

​+ki

​ s 表示卷積的步長; k表示卷積層濾波器的大小

以alexnet為例:

計算conv_5的感受野:

擴大感受野,主要是通過池化和大步長卷積,卷積層對擴大感受野作用很小

python實現

#python

#卷積層輸出大小和感受野大小的計算

net_struct =

,'vgg16':,

'zf-5':}

imsize =

224def

outfromin

(isz, net, layernum)

:#從前向後算輸出維度

totstride =

1 insize = isz

for layer in

range

(layernum)

: fsize, stride, pad = net[layer]

outsize =

(insize - fsize +

2*pad)

/ stride +

1 insize = outsize

totstride = totstride * stride

return outsize, totstride

definfromout

(net, layernum)

:#從後向前算感受野 返回該層元素在原始中的感受野

rf =

1for layer in

reversed

(range

(layernum)):

fsize, stride, pad = net[layer]

rf =

((rf -1)

* stride)

+ fsize #計算感受野大小時,忽略了影象邊緣的影響,即不考慮padding的大小

return rf

if __name__ ==

'__main__'

:print

"layer output sizes given image = %dx%d"

%(imsize, imsize)

for net in net_struct.keys():

print

'************net structrue name is %s**************'

% net

for i in

range

(len

(net_struct[net]

['net'])

):p = outfromin(imsize,net_struct[net]

['net'

], i+1)

rf = infromout(net_struct[net]

['net'

], i+1)

print

"layer name = %s, output size = %3d, stride = % 3d, rf size = %3d"

%(net_struct[net]

['name'

][i]

, p[0]

, p[1]

, rf)

參考:

附另一種計算方法:

感受野計算

這兩篇部落格各有優缺點,我結合自己的理解分析一下。概念 感受野 receive field 是指當前feature map中的乙個原子點p與輸入層中多少個原子個數相關的問題,假設輸入層相關的點為 rf rf 個 假設長寬兩個方向上做同樣尺度的操作 即輸入層中rf rf個原子值的變化會影響當前feat...

感受野計算

定義 感受野 receptive field 指的是神經網路中神經元 看到的 輸入區域,在卷積神經網路中,感受野的定義是卷積神經網路每一層輸出的特徵圖 feature map 上的畫素點在原始影象上對映的區域大小。計算方式 l k lk 1 f k 1 i 0k 1 si l k l f k 1 p...

感受野的計算

感受野 receptive field 指的是神經網路中神經元 看到的 輸入區域,在卷積神經網路中,feature map上某個元素的計算受輸入影象上某個區域的影響,這個區域即該元素的感受野。卷積神經網路中,越深層的神經元看到的輸入區域越大,如下圖所示,kernel size 均為3 33 3,st...