1. 程式人生 > >CNN中感受野的計算

CNN中感受野的計算

感受野(receptive field)是怎樣一個東西呢,從CNN視覺化的角度來講,就是輸出featuremap某個節點的響應對應的輸入影象的區域就是感受野。

比如我們第一層是一個3*3的卷積核,那麼我們經過這個卷積核得到的featuremap中的每個節點都源自這個3*3的卷積核與原影象中3*3的區域做卷積,那麼我們就稱這個featuremap的節點感受野大小為3*3

如果再經過pooling層,假定卷積層的stride是1,pooling層大小2*2,stride是2,那麼pooling層節點的感受野就是5*5

有幾點需要注意的是,padding並不影響感受野,stride隻影響下一層featuremap的感受野,size影響的是該層的感受野。

至於如何計算感受野,我的建議是top to down的方式。下面我拿一個例子來算算


pool3的一個輸出對應pool3的輸入大小為2*2

依次類推,對應conv4的輸入為5*5,因為2*2的每個角加一個3*3的卷積核,就成了5*5,當然這是在stride=1的情況下才成立的,但是一般都是stride=1,不然也不合理

對應conv3的輸入為7*7

對應pool2的輸入為14*14

對應conv2的輸入為16*16

對應pool1的輸入為32*32

對應conv1的輸入為34*34

所以pool3的感受野大小就是34*34