關於感受野的總結
感受野是卷積神經網路裡面最重要的概念之一,為了更好地理解卷積神經網路結構,甚至自己設計卷積神經網路,對於感受野的理解必不可少。
一、定義
感受野被定義為卷積神經網路特徵所能看到輸入影象的區域,換句話說特徵輸出受感受野區域內的畫素點的影響。
比如下圖(該圖為了方便,將二維簡化為一維),這個三層的神經卷積神經網路,每一層卷積核的 , ,那麼最上層特徵所對應的感受野就為如圖所示的7x7。
感受野示例[1]
二、計算方式
其中 表示特徵感受野大小, 表示層數, , 表示輸入層, , 。
- 第一層特徵,感受野為3
第1層感受野[1]
- 第二層特徵,感受野為5
第2層感受野[1]
- 第三層特徵,感受野為7
第3層感受野[1]
如果有dilated conv的話,計算公式為
三、更上一層樓
上文所述的是理論感受野,而特徵的有效感受野(實際起作用的感受野)實際上是遠小於理論感受野的,如下圖所示。具體數學分析比較複雜,不再贅述,感興趣的話可以參考論文[2]。
有效感受野示例[2]
下面我從直觀上解釋一下有效感受野背後的原因。以一個兩層 , 的網路為例,該網路的理論感受野為5,計算流程可以參加下圖。其中 為輸入, 為卷積權重, 為經過卷積後的輸出特徵。
很容易可以發現, 隻影響第一層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
引用:
[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.
[34]生成式對抗網路模型綜述【獲取碼】SIGAI0709.
[37] 人臉檢測演算法之S3FD 【獲取碼】SIGAI6
[38]基於深度負相關學習的人群計數方法 【獲取碼】SIGAI0718
[39] 流形學習概述 【獲取碼】SIGAI0723