天天看點

關于感受野的總結

感受野是卷積神經網絡裡面最重要的概念之一,為了更好地了解卷積神經網絡結構,甚至自己設計卷積神經網絡,對于感受野的了解必不可少。

一、定義

感受野被定義為卷積神經網絡特征所能看到輸入圖像的區域,換句話說特征輸出受感受野區域内的像素點的影響。

比如下圖(該圖為了友善,将二維簡化為一維),這個三層的神經卷積神經網絡,每一層卷積核的 

關于感受野的總結
關于感受野的總結
 ,那麼最上層特征所對應的感受野就為如圖所示的7x7。
關于感受野的總結

感受野示例[1]

二、計算方式

關于感受野的總結
其中 
關于感受野的總結
 表示特征感受野大小, 
關于感受野的總結
 表示層數, 
關于感受野的總結
關于感受野的總結
 表示輸入層, 
關于感受野的總結
 , 
關于感受野的總結
 。

  • 第一層特征,感受野為3
關于感受野的總結
關于感受野的總結

第1層感受野[1]

  • 第二層特征,感受野為5
關于感受野的總結
關于感受野的總結

第2層感受野[1]

  • 第三層特征,感受野為7
關于感受野的總結
關于感受野的總結

第3層感受野[1]

如果有dilated conv的話,計算公式為

關于感受野的總結

三、更上一層樓

上文所述的是理論感受野,而特征的有效感受野(實際起作用的感受野)實際上是遠小于理論感受野的,如下圖所示。具體數學分析比較複雜,不再贅述,感興趣的話可以參考論文[2]。

關于感受野的總結

有效感受野示例[2]

下面我從直覺上解釋一下有效感受野背後的原因。以一個兩層 

關于感受野的總結

, 

關于感受野的總結

的網絡為例,該網絡的理論感受野為5,計算流程可以參加下圖。其中 

關于感受野的總結

 為輸入, 

關于感受野的總結

 為卷積權重, 

關于感受野的總結

 為經過卷積後的輸出特征。

很容易可以發現, 

關于感受野的總結

 隻影響第一層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

推薦閱讀:

關注SIGAICN公衆号,回複文章擷取碼,即可獲得全文連結

[1] 機器學習-波瀾壯闊40年 【擷取碼】SIGAI0413.

[2] 學好機器學習需要哪些數學知識?【擷取碼】SIGAI0417.

[3] 人臉識别算法演化史 【擷取碼】SIGAI0420.

[4] 基于深度學習的目标檢測算法綜述 【擷取碼】SIGAI0424.

[5] 卷積神經網絡為什麼能夠稱霸計算機視覺領域?【擷取碼】SIGAI0426.

[6] 用一張圖了解SVM的脈絡 【擷取碼】SIGAI0428.

[7] 人臉檢測算法綜述 【擷取碼】SIGAI0503.

[8] 了解神經網絡的激活函數 【擷取碼】SIGAI0505.

[9] 深度卷積神經網絡演化曆史及結構改進脈絡-40頁長文全面解讀 【擷取碼】SIGAI0508.

[10] 了解梯度下降法 【擷取碼】SIGAI0511.

[11] 循環神經網絡綜述—語音識别與自然語言處理的利器 【擷取碼】SIGAI0515.

[12] 了解凸優化 【擷取碼】SIGAI0518.

[13] 【實驗】了解SVM的核函數和參數 【擷取碼】SIGAI0522.

[14] 【SIGAI綜述】行人檢測算法 【擷取碼】SIGAI0525.

[15] 機器學習在自動駕駛中的應用—以百度阿波羅平台為例(上)【擷取碼】SIGAI0529.

[16] 了解牛頓法 SIGAI 2018.5.31

[17] 【群話題精華】5月集錦—機器學習和深度學習中一些值得思考的問題 【擷取碼】SIGAI0601.

[18] 大話Adaboost算法 【擷取碼】SIGAI0602.

[19] FlowNet到FlowNet2.0:基于卷積神經網絡的光流預測算法 【擷取碼】SIGAI0604.

[20] 了解主成分分析(PCA)【擷取碼】SIGAI0606.

[21] 人體骨骼關鍵點檢測綜述 【擷取碼】SIGAI0608.

[22] 了解決策樹 【擷取碼】SIGAI0611.

[23] 用一句話總結常用的機器學習算法 【擷取碼】SIGAI0613.

[24] 目标檢測算法之YOLO 【擷取碼】SIGAI0615.

[25] 了解過拟合 【擷取碼】SIGAI0618.

[26] 了解計算:從√2到AlphaGo ——第1季 從√2談起 【擷取碼】SIGAI0620.

[27] 場景文本檢測——CTPN算法介紹 【擷取碼】SIGAI0622.

[28] 卷積神經網絡的壓縮和加速 【擷取碼】SIGAI0625.

[29] k近鄰算法 【擷取碼】SIGAI0627.

[30] 自然場景文本檢測識别技術綜述 【擷取碼】SIGAI0629.

[31] 了解計算:從√2到AlphaGo ——第2季 神經計算的曆史背景 【擷取碼】SIGAI0702.

[32] 機器學習算法地圖 【擷取碼】SIGAI0704.

[33]

反向傳播算法推導-全連接配接神經網絡

【擷取碼】SIGAI0706.

[34]

生成式對抗網絡模型綜述

【擷取碼】SIGAI0709.

[35]

怎樣成為一名優秀的算法工程師

【擷取碼】SIGAI0711.

[36] 了解計算:

從√2到AlphaGo ——第3季 神經網絡的數學模型

【擷取碼】SIGAI0702.

[37] 人臉檢測算法之S3FD 【擷取碼】SIGAI6

[38]基于深度負相關學習的人群計數方法 【擷取碼】SIGAI0718

[39] 流形學習概述 【擷取碼】SIGAI0723

繼續閱讀