終于在知乎上中找到深度神經(jīng)網(wǎng)絡(luò)中的感受野(Receptive Field) - 藍(lán)榮祎的文章 - 知乎
) 算是弄清了基本原理诺凡,記錄以備忘
1.先舉個(gè)例子:
-
e.g.兩層 3*3 卷積操作的有效區(qū)域(感受野)是5*5 (所有filter的stride=1,pad=0),示意圖如下:
-
三層3*3卷積核操作的有效區(qū)域是7*7 (所有filter的stride=1洞拨,pad=0),示意圖如下:
2. 基本定義:
- 定義:感受野用來(lái)表示網(wǎng)絡(luò)內(nèi)部的不同神經(jīng)元對(duì)原圖像的感受范圍的大小骤竹,或者說(shuō),convNets(cnn)每一層輸出的特征圖(feature map)上的像素點(diǎn)在原始圖像上映射的區(qū)域大小。
- 神經(jīng)元之所以無(wú)法對(duì)原始圖像的所有信息進(jìn)行感知逆趋,是因?yàn)樵谶@些網(wǎng)絡(luò)結(jié)構(gòu)中普遍使用卷積層和pooling層潜沦,在層與層之間均為局部連接萄涯。
- 神經(jīng)元感受野的值越大表示其能接觸到的原始圖像范圍就越大,也意味著它可能蘊(yùn)含更為全局唆鸡,語(yǔ)義層次更高的特征涝影;相反,值越小則表示其所包含的特征越趨向局部和細(xì)節(jié)争占。因此感受野的值可以用來(lái)大致判斷每一層的抽象層次燃逻。
3. 感受野的計(jì)算
-
可以看到在Conv1中的每一個(gè)單元所能看到的原始圖像范圍是3*3,而由于Conv2的每個(gè)單元都是由 2*2范圍的Conv1構(gòu)成燃乍,因此回溯到原始圖像唆樊,其實(shí)是能夠看到5*5的原始圖像范圍的宛琅。因此我們說(shuō)Conv1的感受野是3刻蟹,Conv2的感受野是5. 輸入圖像的每個(gè)單元的感受野被定義為1,這應(yīng)該很好理解嘿辟,因?yàn)槊總€(gè)像素只能看到自己舆瘪。
在上圖中,數(shù)字代表某單元能夠看到的原始圖像像素红伦,我們用r_n表示第n個(gè)卷積層中英古,每個(gè)單元的感受野,用k_n和s_n表示第n個(gè)卷積層的kernel_size和stride.
對(duì)Raw Image進(jìn)行kernel_size=3, stride 2的卷積操作所得到的fmap1 (fmap為feature map的簡(jiǎn)稱昙读,為每一個(gè)conv層所產(chǎn)生的輸出)的結(jié)果是顯而易見的召调。序列[1 2 3]表示fmap1的第一個(gè)單元能看見原圖像中的1,2蛮浑,3這三個(gè)像素唠叛,而第二個(gè)單元?jiǎng)t能看見3,4沮稚,5艺沼。這兩個(gè)單元隨后又被kernel_size=2,stride 1的Filter 2進(jìn)行卷積蕴掏,因而得到的fmap2的第一個(gè)單元能夠看見原圖像中的1,2,3,4,5共5個(gè)像素(即取[1 2 3]和[3 4 5]的并集)障般。接下來(lái)我們嘗試一下如何用公式來(lái)表述上述過(guò)程∈⒔埽可以看到挽荡,[1 2 3]和[3 4 5]之間因?yàn)镕ilter 1的stride 2而錯(cuò)開(偏移)了兩位,而3是重疊的即供。對(duì)于卷積兩個(gè)感受野為3的上層單元定拟,下一層最大能獲得的感受野為 3*2=6,但因?yàn)橛兄丿B募狂,因此要減去(kernel_size - 1)個(gè)重疊部分(取kernel_size大小的區(qū)域办素,按順序從左到右相鄰兩個(gè)會(huì)存在重疊部分)角雷,而重疊部分的計(jì)算方式則為感受野減去前面所說(shuō)的偏移量,這里是2. 因此我們就得到
繼續(xù)往下一層看性穿,我們會(huì)發(fā)現(xiàn)[1 2 3 4 5]和[3 4 5 6 7]的偏移量仍為2勺三,并不簡(jiǎn)單地等于上一層的s_2, 這是因?yàn)橹暗膕tride對(duì)后續(xù)層的影響是永久性的,(也就是說(shuō)需曾,第一層先偏移2吗坚,第二層偏移3,第二層是在第一層的基礎(chǔ)上偏移3呆万,因此為2*3)商源,而且是累積相乘的關(guān)系(例如,在fmap3中谋减,偏移量已經(jīng)累積到4了)牡彻,也就是說(shuō) r_3應(yīng)該這樣求
同理:
。出爹。庄吼。。严就。总寻。可抽象如下:
理解:第n個(gè)卷積層的感受野等于前一個(gè)卷積層的感受野輸出再乘以第n卷積層的kernel_size,即第n卷積層要合并多少個(gè)梢为,這里算出的是總的量渐行,還要減去之間有重復(fù)的量,第n卷積層總共要合并k_n個(gè)铸董,那么前后兩兩相比較祟印,空隙共有k_n-1個(gè),比如說(shuō):第一層和第二層有重復(fù)袒炉,第二層和第三層也有重復(fù)等等旁理,然后就要計(jì)算每?jī)蓚€(gè)之間重復(fù)的量有多少,首先每層共有r_n-1個(gè)數(shù)字我磁,需要減去往右偏移的量孽文,即stride,第1卷積層的stride_1,第二層會(huì)在第一層的基礎(chǔ)上偏移stride_2,即總共偏移了 stride_1*stride_2,即偏移量是一個(gè)乘積的累計(jì)效果夺艰,所以式子如下:
經(jīng)過(guò)去括號(hào)簡(jiǎn)化芋哭。可得下面式子:
以上