作者:程序_小白
鏈接:https://www.jianshu.com/p/9305d31962d8
一、到底什么是“感受野”(接受野Receptive Field)
感受野是一個神經元對原始圖像的連接
通常說:第幾層對輸入數據(即原始圖像)的感受野
二、圖解說明
為了更好地說明整個卷積神經網絡的工作過程,下面以一個例子說明,原始圖像的大小為10x10,一共設計了5個網絡層,前面4個是卷積層,卷積核的大小為3x3,最后一個是池化層,大小為2x2,為了較簡單的說明,本次所有的步幅stride均為1.
注意:感受野在計算的時候不考慮“邊界填充”,因為填充的邊界已經不是原始圖像本身的內容了,感受野描述的是輸出特征到原始圖像的映射關系,故而不考慮padding 。實際建模過程中可能需要填充邊界,原理一樣,只是計算稍微復雜點。
1、第一次卷積運算

從上面可以看出:第一層網絡輸出的圖像中,輸出結果為8x8,output1輸出的每一個特征(即每一個像素)受到原始圖像的3x3區域內的影響,故而第一層的感受野為3,用字母表示為
RF1=3 (每一個像素值與原始圖像的3x3區域有關)
2、第二次卷積運算

從上圖可以看出,經歷兩次卷積運算之后,最終的輸出圖像為6x6,output2輸出的每一個特征(即每一個像素)受到output1的范圍影響為3x3,而output1中的這個3x3又收到原始圖像的5x5的范圍的影響,故而第二層的感受野為5,即
RF2=5 (每一個像素值與原始圖像的5x5區域有關)
3、第三次卷積運算

從上圖可以看出,經歷三次卷積運算之后,最終的輸出圖像為4x4,output3輸出的每一個特征(即每一個像素)受到output2的范圍影響為3x3,而output2中的這個3x3又受到output1的5x5的范圍的影響,而output1中的這個5x5又受到原始圖像的7x7的范圍的影響,故而第三層的感受野為7,即
RF3=7 (每一個像素值與原始圖像的7x7區域有關)
4、第四次卷積運算

從上圖可以看出,經歷四次卷積運算之后,最終的輸出圖像為2x2,output4輸出的每一個特征(即每一個像素)受到output3的范圍影響為3x3,而output3中的這個3x3又受到output2的5x5的范圍的影響,而output2中的這個5x5又受到output1的7x7的范圍的影響,而output1中的這個7x7又受到原始圖形的9x9的范圍的影響,故而第四層的感受野為9,即
RF4=9 (每一個像素值與原始圖像的9x9區域有關)
5、第五次池化運算

從上圖可以看出,經歷四次卷積運算和一次池化運算之后,最終的輸出圖像為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呢,同理,這里直接給出遞推公式:
RFn=RFn-1 + (kn-1)*stride_n
其中stride_n表示的是第n次卷積的移動步幅stride。
求解過程是從RF1開始的。