卷積神經網路中的感受野計算詳細指南

2021-08-29 15:49:22 字數 2542 閱讀 8734

目錄前言

固定大小的cnn特徵圖視覺化

感受野計算公式 附文

小結感受野(receptive field,rf)也許是cnn中最重要的概念之一,從文獻上來看,它應當引起足夠的重視。目前所有最好的影象識別方法都是在基於感受野理念來設計模型架構。然而,據我所知,目前並沒有乙個完整的教程來介紹如何計算並視覺化乙個cnn的感受野。這篇文章將填補這一空白,這裡介紹cnn特徵圖視覺化的一種新方法,視覺化可以顯示感受野資訊,並且給出乙個完整的感受野計算公式,它適用於任何cnn架構。我也實現了乙個簡單的程式來驗證這個計算公式,任何人都可以利用該公式計算它們所設計的cnn的感受野,從而對所設計的架構有更多的認識。

要閱讀這篇文章,你必須要熟悉cnn的核心概念,特別是卷積和池化操作。你可以通過閱讀我這篇文章來複習cnn的基礎知識。如果你對cnn有一定的了解,你將用不了半個小時來看完。

圖1為給出了某些感受野例項。其中輸入特徵圖大小為 5*5 ,採用的卷積引數如下:卷積核大小 k=3*3 ,padding大小 p=1*1 ,步長 s=2*2 。經過一次卷積之後,得到大小為 3*3 的輸出特徵圖(綠色)。在這個特徵圖上繼續採用相同的卷積,得到乙個 2*2 的特徵圖(橙色)。輸出特徵圖的大小可以通過如下公式計算(參考a guide to convolution arithmetic for deep learning):

為了簡化講解,這裡假定cnn架構是對稱的,並且輸入是方形的。因此所有的卷積層的所有引數在兩個維度上都是相同的。如果cnn架構或者輸入是非對稱的,你可以為各個維度單獨計算特徵圖的屬性。

圖1 cnn特徵圖的兩種視覺化方法

圖1的左欄給出了cnn特徵圖視覺化最常用的方式。在這個視覺化中,我們可以看到每個特徵圖所包含的特徵數,但是很難知道每個特徵的感受野的中心位置和大小,對於深度cnn,我們沒有辦法追蹤到感受野資訊。右欄給出的是固定大小的cnn視覺化,所有的特徵圖固定大小並保持與輸入特徵圖大小一致,這可以解決前面的問題。每個特徵被標記在其感受野所在的中心(從而定位出感受野中心位置)。由於乙個特徵圖中所有的特徵都有相同大小的感受野,我們可以簡單地在每個特徵周圍畫出乙個邊界框,從而獲得感受野的大小。我們也沒有必要將這個邊界框向下對映到輸入層,因為特徵圖已經與輸入層具有相同的大小。圖2給出了另外乙個例項,其中輸入特徵圖更大,為7*7,與前面例子採用相同的卷積。圖的左欄和右欄分別給出了固定大小cnn特徵圖的3d和2d視覺化。可以看出感受野大小增加迅速,以至於第二個特徵層的中心特徵的感受野已經覆蓋了整個輸入特徵圖。這在深度cnn中是乙個很重要的設計理念以提公升效能。

圖2 7x7大小的輸入特徵圖的視覺化

為了計算cnn每一層的感受野,除了要知道特徵圖每個維度的特徵數 n,還需要記錄每一層的其他資訊,這包括當前層的感受野大小 r ,兩個相鄰特徵的距離(跳躍的距離,如前面視覺化所示) j ,和左上角特徵(第乙個特徵)的中心座標 start 。注意感受野(其實是特徵圖第乙個特徵的感受野)的中心座標就等於這個特徵的中心座標,就如前面視覺化中所示。當採用的卷積其核大小為 k ,padding大小為 p ,步長為 s ,輸出特徵圖的感受野可以按照如下公式計算:

對於第一層,一般是輸入,其各項值為: n=image_size, r=1, j =1, start=0.5 。圖3給出了乙個如何計算感受野的例項,圖中的座標系統中,輸入層的第乙個特徵中心位置記為 0.5 。通過利用上面公式迭代地進行計算,你可以計算出cnn中所有特徵圖的感受野資訊。

圖3 使用感受野公式計算圖1中的感受野資訊

我也寫了乙個簡單的python程式來計算某個特定cnn架構的各個層的感受野資訊。它可以通過輸入某乙個特徵圖的姓名或者索引值,給出相應的感受野大小和位置資訊。下面的圖給出了在alexnet上的計算結果:

在cnn中,感受野應該是乙個很重要的東西,但是往往被大家忽略,在我看到的文獻中,影象分割模型deeplab就提到了感受野大小的問題,但是那裡並沒有給出計算公式,如果採用上面的公式就可以快速得到結果。對於影象分割,感受野大小對分割效果是有很大影響的,所以deeplab採用了擴充套件卷積(atrous convolution, dilated convolution)來增加感受野大小。對於空洞卷積來說,你可以將其轉化為普通卷積(卷積核大小增加)來計算特徵圖的感受野。另外,上面的公式同樣適用於池化層,因為其在結構上與卷積層是類似的。

神經網路卷積感受野計算

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卷積...