当前位置:  开发笔记 > 开发工具 > 正文

如何计算感受野大小?

如何解决《如何计算感受野大小?》经验,为你挑选了3个好方法。

我正在阅读有关使用CNN(卷积神经网络)进行物体检测的论文.

丰富的要素层次结构,用于准确的对象检测和语义分割

以下是关于接受领域的引用:

The pool5 feature map is 6x6x256 = 9216 dimensional. Ignoring boundary effects, each pool5 unit has a receptive field of 195x195 pixels in the original 227x227 pixel input. A central pool5 unit has a nearly global view,
while one near the edge has a smaller, clipped support.

我的问题是:

    接受场的定义是什么?

    他们如何计算感受野的大小和位置?

    我们如何使用caffe/pycaffe计算感受野的边界矩形?

Raff.Edward.. 6

1)像素区域的大小影响最后一个卷积的输出.

2)对于每个卷积和池化操作,计算输出的大小.现在找到导致输出大小为1x1的输入大小.这是感受野的大小

3)您不需要使用库来执行此操作.对于每个2x2池,每个维度的输出大小减少一半.对于跨步卷积,您还可以按步幅划分每个维度的大小.您可能需要削减一些尺寸,具体取决于您是否使用填充进行卷积.最简单的情况是使用padding = floor(内核大小/ 2),因此卷积不会对输出大小产生任何额外的变化.



1> Raff.Edward..:

1)像素区域的大小影响最后一个卷积的输出.

2)对于每个卷积和池化操作,计算输出的大小.现在找到导致输出大小为1x1的输入大小.这是感受野的大小

3)您不需要使用库来执行此操作.对于每个2x2池,每个维度的输出大小减少一半.对于跨步卷积,您还可以按步幅划分每个维度的大小.您可能需要削减一些尺寸,具体取决于您是否使用填充进行卷积.最简单的情况是使用padding = floor(内核大小/ 2),因此卷积不会对输出大小产生任何额外的变化.



2> Shawn Lee..:

这是另一种直接计算感受野的方法.Stackoverflow不支持数学公式,对于更易读的版本,请参阅计算CNN的接收域

层$ k $的感受野(RF)$ l_k $是:

$$ l_k = l_ {k-1} +((f_k - 1)*\prod_ {i = 1} ^ {k-1} s_i)$$

其中$ l_ {k-1} $是图层$ k-1 $的接收字段,$ f_k $是过滤器大小(高度或宽度,但假设它们在这里相同),$ s_i $是大步layer $ i $.

上面的公式从下到上(从第1层)计算感受野.直观地说,$ k $层中的RF相对于$ k-1 $层覆盖$(f_k - 1)*s_ {k-1} $个像素.但是,增量需要转换为第一层,因此增量是一个因子 - 层中的步幅$ k-1 $在较低层中呈指数级增长.

希望这是有帮助的.



3> 小智..:

Tensorflow现在仅需使用即可支持接收场计算 tf.contrib.receptive_field

有关详细信息,请参见https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/receptive_field。

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有