【问题标题】:Receptive feild size and object size in deep learning深度学习中的感受野大小和对象大小
【发布时间】:2018-05-03 06:34:39
【问题描述】:

我可以为 VGGNet 计算 500 x 500 输入图像的感受野大小。

感受野大小如下。

Layer Name = conv1, Output size = 500, Stride =   1, RF size =   3
Layer Name = relu1_1, Output size = 500, Stride =   1, RF size =   3
Layer Name = conv1_2, Output size = 500, Stride =   1, RF size =   5
Layer Name = relu1_2, Output size = 500, Stride =   1, RF size =   5
Layer Name = pool1, Output size = 250, Stride =   2, RF size =   6
Layer Name = conv2_1, Output size = 250, Stride =   2, RF size =  10
Layer Name = relu2_1, Output size = 250, Stride =   2, RF size =  10
Layer Name = conv2_2, Output size = 250, Stride =   2, RF size =  14
Layer Name = relu2_2, Output size = 250, Stride =   2, RF size =  14
Layer Name = pool2, Output size = 125, Stride =   4, RF size =  16
Layer Name = conv3_1, Output size = 125, Stride =   4, RF size =  24
Layer Name = relu3_1, Output size = 125, Stride =   4, RF size =  24
Layer Name = conv3_2, Output size = 125, Stride =   4, RF size =  32
Layer Name = relu3_2, Output size = 125, Stride =   4, RF size =  32
Layer Name = conv3_3, Output size = 125, Stride =   4, RF size =  40
Layer Name = relu3_3, Output size = 125, Stride =   4, RF size =  40
Layer Name = pool3, Output size =  62, Stride =   8, RF size =  44
Layer Name = conv4_1, Output size =  62, Stride =   8, RF size =  60
Layer Name = relu4_1, Output size =  62, Stride =   8, RF size =  60
Layer Name = conv4_2, Output size =  62, Stride =   8, RF size =  76
Layer Name = relu4_2, Output size =  62, Stride =   8, RF size =  76
Layer Name = conv4_3, Output size =  62, Stride =   8, RF size =  92
Layer Name = relu4_3, Output size =  62, Stride =   8, RF size =  92
Layer Name = pool4, Output size =  31, Stride =  16, RF size = 100
Layer Name = conv5_1, Output size =  31, Stride =  16, RF size = 132
Layer Name = relu5_1, Output size =  31, Stride =  16, RF size = 132
Layer Name = conv5_2, Output size =  31, Stride =  16, RF size = 164
Layer Name = relu5_2, Output size =  31, Stride =  16, RF size = 164
Layer Name = conv5_3, Output size =  31, Stride =  16, RF size = 196
Layer Name = relu5_3, Output size =  31, Stride =  16, RF size = 196

我只看 conv5_3。

例如,如果我的对象大小是 150 x 150,而我的图像大小是 500 x 500。

我可以这么说吗,从 conv1 到 conv4_2 的早期层的特征图只携带我的对象的部分特征,从 conv5_2 到 conv5_3,它们携带几乎整个对象的特征。

我的考虑是真的吗?

但在 conv5_3,我的 output_size 仅为 31 x 31,所以我无法想象它如何表示图像中的整个对象,但该 conv5_3 层中的每个像素都表示原始 500 x 500 图像的 196 x 196 大小.

我的考虑是真的吗?

【问题讨论】:

    标签: deep-learning caffe conv-neural-network


    【解决方案1】:

    理论上...

    我可以这么说吗,从 conv1 到 conv4_2 的早期层的特征图只携带我的对象的部分特征,从 conv5_2 到 conv5_3,它们携带几乎整个对象的特征。我的考虑是真的吗?

    是的!您甚至自己计算了感受野(在 CNN 的情况下,是图像中理论上可以影响特征图一个单元格值的像素)!

    但在 conv5_3,我的 output_size 仅为 31 x 31,所以我无法想象它如何表示图像中的整个对象,但该 conv5_3 层中的每个像素都表示原始 500 x 500 图像的 196 x 196 大小.我的考虑是真的吗?

    是的!但是不要忘记,虽然特征图大小只有 31x31,但你的特征步幅是 16。所以conv5_3 特征图的每个单元格代表图像中的一个 196x196 区域(请记住,如果“输入窗口” 不适合图像,“输入窗口”的其余部分将是黑色的,例如用零填充),并且彼此之间的步幅为 16x16。这样 31x31 的特征图仍然可以完全捕获图像(只是步幅很大)。


    有效地...

    好的,上面我们讲的是理论上的感受野,即图像中的像素影响特征图中的一个细胞(或像素)的概率大于0( 31x31,在这种情况下)。但是,在实践中,它在很大程度上取决于卷积核的权重。

    查看this post 了解 CNN 的有效感受野 (ERF)(或者,如果您有足够的时间,请直接访问original paper)。

    理论上,当您堆叠更多层时,您可以线性增加您的感受野,但是,在实践中,事情并不像我们想象的那么简单:感受野中的所有像素并非对输出单元的响应做出同等贡献。

    实际上更有趣的是,这个感受野是动态的,并且在训练过程中会发生变化。这对反向传播的影响是,与边界像素相比,中心像素将具有更大的梯度幅度。

    以下是代表 ERF 的论文中的一些数据:

    如您所见,感受野根本没有覆盖整个补丁!因此,如果conv5_3 的 ERF 远小于 196x196,请不要感到惊讶。


    还有……

    除了感受野的大小,基本上是说“特征图上的这个单元格压缩了图像的这个块中的有价值的数据”,你还需要这些特征足够表达。所以,看看this post 或者在谷歌上搜索“vgg 可视化”,对特征的表现力本身有一些直觉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2018-10-24
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多