「感受野」的概念**於生物神經科學,比如當我們的「感受器」,比如我們的手受到刺激之後,會將刺激傳輸至中樞神經,但是並不是乙個神經元就能夠接受整個**的刺激,因為**面積大,乙個神經元可想而知肯定接受不完,而且我們同時可以感受到身上**在不同的地方,如手、腳,的不同的刺激,如痛、癢等。這說明**感受器是由很多不同的神經元控制的,那麼每乙個神經元所能夠反映的那塊感受器的區域就稱之為「感受野」,感受野即每乙個神經元所支配的區域,也可以說這個神經元的活動受到那一塊區域的影響。
在卷積神經網路中,整個卷積運算的過程正好和上面的**刺激過程類似,我們可以將原始影象對應看成感受器(**),將最終的輸出看成是做出反應的那個神經元。最終輸出到底是什麼狀態(神經元的狀態)所受到的初始影象哪一塊區域的影響(受到那一塊**的刺激)不正是上面所描述的過程嗎?於是我們給出感受野的定義如下:卷積神經網路每一層輸出的特徵圖(feature map)上的畫素點在原始影象上對映的區域大小;通俗點說,就是影象的最終輸出的每乙個特徵(每乙個畫素)到底受到原始影象哪一部分的影響。
為了更好地說明整個卷積神經網路的工作過程,下面以乙個例子說明,原始影象的大小為10x10,一共設計了5個網路層,前面4個是卷積層,卷積核的大小為3x3,最後乙個是池化層,大小為2x2,為了較簡單的說明,本次所有的步幅stride均為1.
注意:感受野在計算的時候不考慮「邊界填充」,因為填充的邊界已經不是原始影象本身的內容了,感受野描述的是輸出特徵到原始影象的對映關係,故而不考慮padding 。實際建模過程中可能需要填充邊界,原理一樣,只是計算稍微複雜點。
從上面可以看出:第一層網路輸出的影象中,輸出結果為8x8,output1輸出的每乙個特徵(即每乙個畫素)受到原始影象的3x3區域內的影響,故而第一層的感受野為3,用字母表示為
rf1=3 (每乙個畫素值與原始影象的3x3區域有關)
rf3=7 (每乙個畫素值與原始影象的7x7區域有關)
從上圖可以看出,經歷四次卷積運算之後,最終的輸出影象為2x2,output4輸出的每乙個特徵(即每乙個畫素)受到output3的範圍影響為3x3,而output3中的這個3x3又受到output2的5x5的範圍的影響,而output2中的這個5x5又受到output1的7x7的範圍的影響,而output1中的這個7x7又受到原始圖形的9x9的範圍的影響,故而第四層的感受野為9,即
rf4=9 (每乙個畫素值與原始影象的9x9區域有關)
從上圖可以看出,經歷四次卷積運算和一次池化運算之後,最終的輸出影象為1x1,output5輸出的每乙個特徵(即每乙個畫素)受到output4的範圍影響為2x2,而output4中的這個2x2又受到output3的4x4的範圍的影響,而output3中的這個4x4又受到output2的6x6的範圍的影響,而output2中的這個6x6受到output1的8x8的範圍的影響,而output1中的這個8x8受到原始影象的10x10的範圍的影響,故而第五層的感受野為10,即
rf5=10 (每乙個畫素值與原始影象的10x10區域有關)
從上面的過程可以看出,感受野的推導是乙個遞推的過程,下面將展示這一過程。
rf1=3
k1(第一層的感受野,永遠等於第乙個卷積核的尺寸大小)k表示第幾個卷積層
rf2=5
k1 + (k2-1)
rf1+ (k2-1)
rf3=7
k1 + (k2-1) + (k3-1)
rf2+ (k3-1)
rf4=9
k1 + (k2-1) + (k3-1) + (k4-1)
rf3+ (k4-1)
rf4=10
k1 + (k2-1) + (k3-1) + (k4-1) + (k5-1)
rf4+ (k5-1)
從上面可以看出,感受野的大小的求解是乙個不斷遞進的過程,因為第一層的每乙個畫素的感受野始終是第乙個卷積核的大小,故而rf1總是最先確定,然後以此類推,逐步求出rf2、rf3、rf4、rf5……但是上面的所有步長均為 1 ,如果每一次卷積運算的步長 stride 不為1呢,同理,這裡直接給出遞推公式:
r fn
=rfn
−1+(
kn−1
)∗st
ride
nrf_=rf_ + (k_-1)*stride_n
rfn=r
fn−1
+(k
n−1
)∗st
ride
n其中stride_n表示的是第n次卷積的移動步幅stride。求解過程是從rf1開始的。
top to down 計算感受野時有下面幾個知識點需要知道:
關於感受野大小的計算方式是採用從最後一層往下計算的方法,即先計算最深層在前一層上的感受野,然後逐層傳遞到第一層,使用的公式可以表示如下:
r fi
=(rf
i+1−
1)×s
trid
esi+
ksiz
eirf_i = (rf_-1) \times strides_i + ksize_i
rfi=(
rfi+
1−1
)×st
ride
si+
ksiz
ei其中,rfi
rf_i
rfi
是第i層卷積層的感受野,rfi
+1rf_rf
i+1
是(i+1)層上的感受野,stride是卷積的步長,ksize是本層卷積核的大小。
注意:此公式與上邊的down to top的遞迴公式在原理上是一致的,乙個向前計算乙個向後計算。
pool3:rf=2(最後一層池化層輸出特徵圖的感受野大小等於卷積核的大小,#pool3在前一層特徵圖上的感受野是2x2
conv4:rf=(2-1)*1+3=4。#pool3在conv4輸出的特徵圖上的感受野是4x4
conv3:rf=(4-1)*1+3=6。 #pool3在conv3輸出的特徵圖上的感受野是6x6
pool2:rf=(6-1)*2+2=12。
conv2:rf=(12-1)*1+3=14。
pool1:rf=(14-1)*2+2=28。
conv1:rf=(28-1)*1+3=30。
因此,pool3輸出的特徵圖在輸入上的感受野為30*30。
熟悉感受野的計算可以幫助分析網路結構,上面兩種計算感受野的方式,可以哪種方便使用哪種。
卷積神經網路中感受野的理解和計算
看完還不懂卷積神經網路「感受野」?那你來找我
神經網路卷積感受野計算
1.定義 在卷積神經網路中,感受野的定義是 卷積神經網路每一層輸出的特徵圖 feature map 上的畫素點在原始影象上對映的區域大小。2.計算 公式 n 1 rf f n rf,stride,kernel n rf 1 stride kernel 其中,rf是感受野。n rf和rf有點像,n代表...
卷積神經網路的感受野計算
設當前層的size是yy,上一層的size是xx,設濾波器的尺寸為kernal kernal,考慮padding,且步長為stride,則計算公式 y x 2 p addi ng k erna lstr ide 1y frac 1 y stri dex 2 pa ddin g ke rnal 1卷積...
卷積神經網路感受野計算公式
四個公式 上式中n是feature map的大小,p是padding,k是kernel size,j是jump 前面的s r是感受野大小,start是第乙個特徵向量 左上角位置 對應感受野的中心座標位置。搬運並翻譯 公式一是通用計算卷積層輸入輸出特徵圖大小的標準公式.公式二計算輸出特徵圖的jump,...