一、感受野的定義
感受野(
R
e
c
e
p
t
i
v
e
Receptive
Receptive
F
i
e
l
d
Field
Field)的定義是卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(
f
e
a
t
u
r
e
feature
feature
m
a
p
map
map)上的像素點(diǎn)在原始輸入圖片上映射的區(qū)域大小。再通俗點(diǎn)的解釋是,特征圖上的一個(gè)點(diǎn)對應(yīng)原始輸入圖片上的區(qū)域,如下圖所示。
二、感受野的例子
這里舉兩個(gè)例子來簡單說明一下感受野。首先是一個(gè)5 * 5的輸入圖經(jīng)過兩層卷積核為3 * 3的卷積操作后得到的感受野是5*5,其中卷積核(
f
i
l
t
e
r
filter
filter)的步長(
s
t
r
i
d
e
stride
stride)為1、
p
a
d
d
i
n
g
padding
padding為0,如下圖所示:
上圖中
O
u
t
1
Out1
Out1中左上角第一個(gè)值是由
I
n
p
u
t
Input
Input中左上角3 * 3區(qū)域的值經(jīng)過卷積計(jì)算出來的,即
O
u
t
1
Out1
Out1中左上角值的感受野是
I
n
p
u
t
Input
Input中左上角3 * 3的區(qū)域;
O u t 2 Out2 Out2中的值是由 O u t 1 Out1 Out1中對應(yīng)3 * 3的區(qū)域經(jīng)過卷積計(jì)算得到的,即 O u t 2 Out2 Out2中的感受野是 O u t 1 Out1 Out1中整個(gè)3 * 3的區(qū)域;
由此可知
O
u
t
2
Out2
Out2的值是由
I
n
p
u
t
Input
Input中所有的區(qū)域經(jīng)過兩層卷積計(jì)算得到的,即
O
u
t
2
Out2
Out2的感受野是
I
n
p
u
t
Input
Input中所有的5 * 5區(qū)域。
再舉一個(gè)例子,7 * 7的輸入圖經(jīng)過三層卷積核為3 * 3的卷積操作后得到
O
u
t
3
Out3
Out3的感受野為7 * 7,也就是
O
u
t
3
Out3
Out3中的值是由
I
n
p
u
t
Input
Input所有區(qū)域的值經(jīng)過卷積計(jì)算得到,其中卷積核大小、步長和
p
a
d
d
i
n
g
padding
padding的值均和上面例子相同,如下圖所示:
三、感受野的計(jì)算
在計(jì)算感受野時(shí)有下面幾點(diǎn)需要說明:
(1)第一層卷積層的輸出特征圖像素的感受野的大小等于卷積核的大小。
(2)深層卷積層的感受野大小和它之前所有層的濾波器大小和步長有關(guān)系。
(3)計(jì)算感受野大小時(shí),忽略了圖像邊緣的影響,即不考慮padding的大小。
下面給出計(jì)算感受野大小的計(jì)算公式:
R F l + 1 = ( R F l ? 1 ) ? ∏ i = 1 l s t r i d e s i + f l + 1 RF_{l+1} = (RF_{l}-1)*\prod_{i=1}^{l}strides_i + f_{l+1} RFl+1?=(RFl??1)?i=1∏l?stridesi?+fl+1?
其中 R F l + 1 RF_{l+1} RFl+1?為當(dāng)前特征圖對應(yīng)的感受野的大小,也就是要計(jì)算的目標(biāo)感受野, R F l RF_{l} RFl?為上一層特征圖對應(yīng)的感受野大小,f_{l+1}為當(dāng)前卷積層卷積核的大小,累乘項(xiàng) s t r i d e s strides strides表示當(dāng)前卷積層之前所有卷積層的步長乘積。
以上面舉的第二個(gè) s a m p l e sample sample為例:
O u t 1 Out1 Out1層由于是第一層卷積輸出,即其感受野等于其卷積核的大小,即第一層卷積層輸出的特征圖的感受野為3, R F 1 RF1 RF1=3;
O u t 2 Out2 Out2層的感受野 R F 2 RF2 RF2 = 3 + (3 - 1) * 1 = 5,即第二層卷積層輸出的特征圖的感受野為5;
O u t 3 Out3 Out3層的感受野 R F 3 RF3 RF3 = 3 + (5 - 1) * 1 = 7,即第三層卷積層輸出的特征圖的感受野為7;
下面給出了由上述方法來計(jì)算 A l e x n e t Alexnet Alexnet和 V G G 16 VGG16 VGG16網(wǎng)絡(luò)中每一層輸出特征圖的感受野大小的 p y t h o n python python代碼:
net_struct = {
'alexnet': {'net': [[11, 4, 0], [3, 2, 0], [5, 1, 2], [3, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [3, 2, 0]],
'name': ['conv1', 'pool1', 'conv2', 'pool2', 'conv3', 'conv4', 'conv5', 'pool5']},
'vgg16': {'net': [[3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1], [2, 2, 0], [3, 1, 1], [3, 1, 1], [3, 1, 1],
[2, 2, 0]],
'name': ['conv1_1', 'conv1_2', 'pool1', 'conv2_1', 'conv2_2', 'pool2', 'conv3_1', 'conv3_2',
'conv3_3', 'pool3', 'conv4_1', 'conv4_2', 'conv4_3', 'pool4', 'conv5_1', 'conv5_2', 'conv5_3',
'pool5']}}
# 輸入圖片size
imsize = 224
def outFromIn(isz, net, layernum):
totstride = 1
insize = isz
for layer in range(layernum):
fsize, stride, pad = net[layer]
# outsize為每一層的輸出size
outsize = (insize - fsize + 2 * pad) / stride + 1
insize = outsize
totstride = totstride * stride
return outsize, totstride
def inFromOut(net, layernum):
RF = 1
for layer in reversed(range(layernum)):
fsize, stride, pad = net[layer]
# 感受野計(jì)算公式
RF = ((RF - 1) * stride) + fsize
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))
4.感受野的作用
(1)一般 t a s k task task要求感受野越大越好,如圖像分類中最后卷積層的感受野要大于輸入圖像,網(wǎng)絡(luò)深度越深感受野越大性能越好;
(2)密集預(yù)測 t a s k task task要求輸出像素的感受野足夠的大,確保做出決策時(shí)沒有忽略重要信息,一般也是越深越好;
(3)目標(biāo)檢測 t a s k task task中設(shè)置 a n c h o r anchor anchor要嚴(yán)格對應(yīng)感受野, a n c h o r anchor anchor太大或偏離感受野都會嚴(yán)重影響檢測性能。
5.有效感受野文章來源:http://www.zghlxwxcb.cn/news/detail-557561.html
U
n
d
e
r
s
t
a
n
d
i
n
g
Understanding
Understanding
t
h
e
the
the
E
f
f
e
c
t
i
v
e
Effective
Effective
R
e
c
e
p
t
i
v
e
Receptive
Receptive
F
i
e
l
d
Field
Field
i
n
in
in
D
e
e
p
Deep
Deep
C
o
n
v
o
l
u
t
i
o
n
a
l
Convolutional
Convolutional
N
e
u
r
a
l
Neural
Neural
N
e
t
w
o
r
k
s
Networks
Networks一文中提出了有效感受野(
E
f
f
e
c
t
i
v
e
Effective
Effective
R
e
c
e
p
t
i
v
e
Receptive
Receptive
F
i
e
l
d
Field
Field,
E
R
F
ERF
ERF)理論,論文發(fā)現(xiàn)并不是感受野內(nèi)所有像素對輸出向量的貢獻(xiàn)相同,在很多情況下感受野區(qū)域內(nèi)像素的影響分布是高斯,有效感受野僅占理論感受野的一部分,且高斯分布從中心到邊緣快速衰減,下圖第二個(gè)是訓(xùn)練后
C
N
N
CNN
CNN的典型有效感受野。
回到這張圖,我們看綠色的這個(gè)區(qū)域,黃色為圖像,綠色框掃過時(shí),對于第一列是只掃過一次,也就是參與一次運(yùn)算,而之后之間的幾列均是參與了多次計(jì)算。因此,最終實(shí)際感受野,是呈現(xiàn)一種高斯分布。文章來源地址http://www.zghlxwxcb.cn/news/detail-557561.html
到了這里,關(guān)于計(jì)算機(jī)視覺中的感受野的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!