如何計算感受野(Receptive Field)——原理

本文轉載自知乎專欄:https://zhuanlan.zhihu.com/p/31004121

寫這篇文章的初衷是自己需要計算感受野,但是在今天之前只對感受野有感性認識,並不知道如何定量計算。所以在網上搜關鍵詞“感受野”、“Receptive field”,看了一下午,發現一些博客,或者是知乎文章給出的感受野計算公式不一樣,也沒有把公式的推導過程寫出來。遂寫此文章,推導計算Receptive Field的過程以及解釋如何計算Receptive Field。

一、直觀的瞭解 Receptive field (RF)

Receptive field 是啥?看看網上的大佬們怎麼說。

The receptive field is defined as the region in the input space that a particular CNN’s feature is looking at (i.e. be affected by). —— Dang Ha The Hien


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


在機器視覺領域的深度神經網絡中有一個概念叫做感受野,用來表示網絡內部的不同位置的神經元對原圖像的感受範圍的大小。 ——藍榮禕

之所以列這麼多感受野的定義,是想表明感受野的定義雖多,但大都是一個意思。通俗的說,感受野就是輸入圖像對這一層輸出的神經元的影響有多大。形象的說,就是你的曾曾曾曾曾爺爺對他的後代們有多少影響這麼一個概念。所以影響大不一定好,也許會帶來用不着的糟粕。影響小也會阻礙後代學習傳統知識。好了,扯回來,今天不討論利弊,就討論如何正確的計算感受野(RF)。

在學習計算感受野之前,先可視化一下感受野吧。舉一個例子,原始圖像爲 5\times5 ,卷積核(Kernel Size)爲 3\times3 ,padding 爲 1\times1 ,stride爲 2\times2 ,依照此卷積規則,連續做兩次卷積。熟悉卷積過程的朋友都知道第一次卷積結果是 3\times3 大小的feature map,第二次卷積結果是 2\times2 大小的feature map。整個過程如圖所示:

第一次卷積得到3*3的 feature map,RF爲3*3第二次卷積得到2*2的 feature map黃色feature map對應的感受野是7*7大小

如圖所示,第一層卷積結束後,感受野是3*3。在第二層卷積結束了,感受野是7*7

二、如何計算RF

公式一:這個算法從top往下層層迭代直到追溯回input image,從而計算出RF。


(N-1)_RF = f(N_RF, stride, kernel) = (N_RF - 1) * stride + kernel


其中,RF是感受野。N_RF和RF有點像,N代表 neighbour,指的是第n層的 a feature在n-1層的RF,記住N_RF只是一箇中間變量,不要和RF混淆。 stride是步長,ksize是卷積核大小。

我來解釋一下這個公式。(圖片有點醜,不過不影響理解。)首先,我們的問題是右一的紅叉叉映射到左一中,應該是什麼size?自然思路就是右一的紅叉叉映射到中間是什麼size?因爲卷積核是3*3,所以右一的紅叉叉映射到中間是3*3. 那麼接下來我們如果算出來中間3*3的紅框框映射到左一是什麼size,不就解決了我們的問題嘛。聰明的我們就發現了從中間映射到左邊的size是kernel_size+stride*(3-1). 抽象一下就是kernel_size +stride*(N_RF-1)嘛。接下來就很簡單了,一層又一層的迭代下去直到迭代到第一層,就求出了RF。Note: kernel_size和stride是左一的,而N_RF是中間的。

舉一個小小的例子:

一個輸入隨意,第一層卷積核參數爲ksize = 3, stride = 2,第二層ksize =3,stride=2,第三層ksize=3,stride=1.寫一段代碼計算RF,matlab代碼如下:

ksize = 3;
strides = [1 2 2];
N_RF = 3;
for i = 1:3
    
    N_RF = (N_RF -1)*strides(i) + ksize;
    
end
fprintf('The RF is: %d \n',N_RF)

結果:

公式二有時間再寫。

三、檢驗你的RF

看到這裏的,獎勵你認真好學,送福利了。不知道自己RF算得對不對?看下面這個網站。

FOMORO AI

三個高級工程師搞的網站,可以簡單的輸入網絡參數,就直接把你的感受野計算出來。界面如下。PS: 話說老外把科研成果轉化成產品的能力簡直不要太強,產品不要太大方,太漂亮。學習學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章