原文鏈接:關於感受野的總結
論文鏈接:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
一、感受野
感受野被定義為卷積神經網絡特征所能看到輸入圖像的區域,換句話說特征輸出受感受野區域內的像素點的影響。下圖展示了一個在輸出層達到了7*7感受野的例子:
感受野計算公式為:,
如上例第一個隱層,,
如果存在空洞卷積,公式變為。
感受野計算的問題
上文所述的是理論感受野,而特征的有效感受野(實際起作用的感受野)實際上是遠小於理論感受野的,如下圖所示。具體數學分析比較復雜,不再贅述,感興趣的話可以參考論文:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks。
我們以下圖為例,簡要介紹有效感受野的問題:
很容易可以發現, 只影響第一層feature map中的
;而
會影響第一層feature map中的所有特征,即
。
第一層的輸出全部會影響第二層的 。
於是 只能通過
來影響
;而
能通過
來影響
。顯而易見,雖然
和
都位於第二層特征感受野內,但是二者對最后的特征
的影響卻大不相同,輸入中越靠感受野中間的元素對特征的貢獻越大。
計算公式
對於普通卷積:F(i, j-1) = (F(i, j) - 1)*stride + kernel_size
其中 F(i,j)表示第i層對第j層的局部感受野。
對於空洞卷積:F(i, j-1) = (F(i, j) - 1)*stride + dilation*(kernel_size - 1) + 1
經實際演算,以上公式正確。
二、感受野的應用
分類
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