本文轉載自:https://zhuanlan.zhihu.com/p/40267131
感受野是卷積神經網絡裏面最重要的概念之一,爲了更好地理解卷積神經網絡結構,甚至自己設計卷積神經網絡,對於感受野的理解必不可少。
一、定義
感受野被定義爲卷積神經網絡特徵所能看到輸入圖像的區域,換句話說特徵輸出受感受野區域內的像素點的影響。
比如下圖(該圖爲了方便,將二維簡化爲一維),這個三層的神經卷積神經網絡,每一層卷積核的 kernel_size=3,stride=1 ,那麼最上層特徵所對應的感受野就爲如圖所示的7x7。
感受野示例[1]
二、計算方式
其中,RF表示特徵感受野大小, l表示層數, , l=0表示輸入層,RF0 =1, feature_stride=1。
- 第一層特徵,感受野爲3
第1層感受野[1]
- 第二層特徵,感受野爲5
第2層感受野[1]
- 第三層特徵,感受野爲7
第3層感受野[1]
如果有dilated conv的話,計算公式爲
三、更上一層樓
上文所述的是理論感受野,而特徵的有效感受野(實際起作用的感受野)實際上是遠小於理論感受野的,如下圖所示。具體數學分析比較複雜,不再贅述,感興趣的話可以參考論文[2]。
有效感受野示例[2]
下面我從直觀上解釋一下有效感受野背後的原因。以一個兩層 kernel_size=3, stride=1的網絡爲例,該網絡的理論感受野爲5,計算流程可以參加下圖。其中 ,x 爲輸入, w爲卷積權重, o爲經過卷積後的輸出特徵。
很容易可以發現, 隻影響第一層feature map中的 ;而 會影響第一層feature map中的所有特徵,即 。
第一層的輸出全部會影響第二層的 。
於是 ,只能通過 來影響 ;而 能通過 來影響 。顯而易見,雖然 和 都位於第二層特徵感受野內,但是二者對最後的特徵 的影響卻大不相同,輸入中越靠感受野中間的元素對特徵的貢獻越大。
兩層3x3 conv計算流程圖
四、應用
- 分類
Xudong Cao寫過一篇叫《A practical theory for designing very deep convolutional neural networks》的technical report,裏面講設計基於深度卷積神經網絡的圖像分類器時,爲了保證得到不錯的效果,需要滿足兩個條件:
Firstly, for each convolutional layer, its capacity of learning more complex patterns should be guaranteed; Secondly, the receptive field of the top most layer should be no larger than the image region.
其中第二個條件就是對卷積神經網絡最高層網絡特徵感受野大小的限制。
- 目標檢測
現在流行的目標檢測網絡大部分都是基於anchor的,比如SSD系列,v2以後的yolo,還有faster rcnn系列。
基於anchor的目標檢測網絡會預設一組大小不同的anchor,比如32x32、64x64、128x128、256x256,這麼多anchor,我們應該放置在哪幾層比較合適呢?這個時候感受野的大小是一個重要的考慮因素。
放置anchor層的特徵感受野應該跟anchor大小相匹配,感受野比anchor大太多不好,小太多也不好。如果感受野比anchor小很多,就好比只給你一隻腳,讓你說出這是什麼鳥一樣。如果感受野比anchor大很多,則好比給你一張世界地圖,讓你指出故宮在哪兒一樣。
《S3FD: Single Shot Scale-invariant Face Detector》這篇人臉檢測器論文就是依據感受野來設計anchor的大小的一個例子,文中的原話是
we design anchor scales based on the effective receptive field
《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》這篇論文在設計多尺度anchor的時候,依據同樣是感受野,文章的一個貢獻爲
We introduce the Multiple Scale Convolutional Layers
(MSCL) to handle various scales of face via enriching
receptive fields and discretizing anchors over layers
引用:
[1]convolutional nerual networks
[2]Understanding the Effective Receptive Field in Deep Convolutional Neural Networks