人體姿態估計——感受野

卷積網絡中的感受野

1.感受野(Receptive field (RF))是什麼?

在卷積神經網絡中,感受野的定義是 卷積神經網絡每一層輸出的特徵圖(feature map)上的像素點在原始圖像上映射的區域大小。

大家知道現在CNN深度學習越來越深
爲了壓縮計算量越到後面的層數往往feature size越來越小
但參與“決策”往往是最後幾層網絡(當然有FPN等神蹟)
因此
如何保證小的網絡仍然具有全局性是構建CNN網絡的一個重要依據
RF便是一個考量feature map中每個神經元具有多少全局性的指標。

2.CNN中感受野的計算

從直觀上講,感受野就是視覺感受區域的大小。在卷積神經網絡中,感受野的定義是決定某一層輸出結果中一個元素所對應的輸入層的區域大小。
在這裏插入圖片描述
感受野計算時有下面的幾個情況需要說明:

  • a)第一層卷積層的輸出特徵圖像素的感受野的大小等於濾波器的大小;
  • b)深層卷積層的感受野大小和它之前所有層的濾波器大小和步長有關係;
  • c)計算感受野大小時,忽略了圖像邊緣的影響,即不考慮padding的大小。

至於如何計算感受野,我的建議是top to down的方式,即從網絡的最後向前推,感受野的大小是由kernel size(filter)和stride size(步長)一起決定的,公式: rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize,其中out是指上一層感受野的大小,stride是當前層stride,最後一層不帶入公式,它的ksize是前一層的out。
理解:
Feature Map的尺寸=(input_size + 2 * padding_size − ksize)/stride+1
根據定義 感受野是決定某一層輸出結果中一個元素所對應的輸入層的區域大小
這裏指的是要求解的那層的一個元素也就是最初輸入的out=1:
rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize
感受野近似於用feature map反推input_size ,只是不考慮padding。

例1:
以VGG16爲例:
一個元素,所以out=1
pool2: rfsize= (1-1)*2+2=2
conv1_2: rfsize=(2-1)*1+3=4
conv1_1: rfsize= (4-1)*1+3=6

例2:
r指感受野 s:stride,p:padding,k:filter
在這裏插入圖片描述
layer1對layer0:
out=1
(1-1)*2+3=3

layer2對layer0:
out=1
(1-1)*2+3=3
(3-1)*2+3=7

3. 計算Receptive field size的小程序

FOMORO AI:https://fomoro.com/research/article/receptive-field-calculator
在這裏插入圖片描述

4.參考:
https://www.cnblogs.com/34fj/p/9139756.html
https://www.zhihu.com/question/66954030/answer/715416325
https://blog.csdn.net/weixin_43951539/article/details/100759414
https://fomoro.com/research/article/receptive-field-calculator#3,2,1,SAME;3,1,1,SAME
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章