感受野(receptive fields)概念計算及如何增加感受野總結

感受野(receptive fields)概念計算及如何增加感受野總結
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

在深度學習論文裡,經常會看到感受野(receptive fields), 根據自己看到的和網上資料稍微整理總結一下。

感受野的定義

感受野是卷積神經網路(CNN)每一層輸出的特徵圖(feature map)上的畫素點在原始輸入影象上對映的區域大小[1]
這裡寫圖片描述

感受野的計算

感受野的計算從最深層開始向淺層計算,逐步計算到第一層(即上圖的藍色層開始向紅色層傳遞計算),所以計算前要知道網路的整體結構和引數。
計算公式:

'''
RF: 待計算的feature map上的感受野大小
stride: 卷積的步長(之前所有層stride的乘積)
fsize: 卷積層濾波器的大小
'''
RF = 1
for layer in (high layer To low layer):
  RF = ((RF -1)* stride)   fsize

[python程式碼實現感受野的計算]

如何增加感受野

在深度學習中,對具體的任務有時需要增加感受野來提高效能,比如在人體姿態估計中,大的感受野對學習長距離的空間位置關係(long-range spatial relationship),建立內隱空間模型(implicit spatial model)有幫助,因此也要知道增大感受野的手段。
根據以上說的感受野的計算,也可以分析出,增加層數、增大strides,增加fsize即卷積濾波器的大小都可以增加感受野的大小。
在看CPM(Convolutional Pose Machines) 時,作者做了一個簡單的總結:

Large receptive fields can be achieved either by pooling at the expense of precision, increasing the kernel size of the convolutional filters at the expense of increasing the number of parameters, or by increasing the number of convolutional layers at the risk often countering vanishing gradients during training.

總結一下共三種方法:

  • 增加pooling層,但是會降低準確性(pooling過程中造成了資訊損失)
  • 增大卷積核的kernel size,但是會增加引數(卷積層的引數計算參考[2]
  • 增加摺積層的個數,但是會面臨梯度消失的問題(梯度消失參考[3]

CPM中作者用的增加摺積層個數的方法來增加感受野,但是他用多階段訓練的方式並引入中間層監督的方法來解決梯度消失的問題。

增加pooling層帶來資訊損失的解決辦法可以參考[dilated conv帶孔卷積、pooling層提高感受野 反摺積 的理解]

相關文章

程式語言 最新文章