【问题标题】:Why dilated Convolution Layer doesn't reduce the resolution of the receptive field?为什么扩张卷积层不会降低感受野的分辨率?
【发布时间】:2019-07-27 04:11:29
【问题描述】:

我尝试理解扩张卷积。我已经熟悉通过用零填充间隙来增加内核的大小。它有助于覆盖更大的区域并更好地了解更大的物体。 但是请有人能解释一下,扩张的卷积层是如何保持感受野的原始分辨率的。它用于deeplabV3+结构中,atrous rate从2到16。如何在没有零填充的情况下使用具有明显更大内核的扩张卷积并且输出大小将保持一致。

deeplabV3+ 结构:

我很困惑,因为当我在这里查看这些解释时:

空洞卷积层的输出尺寸(3x3)更小?

非常感谢您的帮助!

卢卡斯

【问题讨论】:

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


    【解决方案1】:

    也许这里的跨步卷积和空洞卷积之间有一个小的混淆。跨步卷积是一种通用的卷积操作,其作用类似于滑动窗口,但不是每次跳跃单个像素,而是在计算当前像素和下一个像素的卷积结果时使用跨步允许跳跃多个像素.扩张卷积是在更大的窗口上“寻找”——而不是采用相邻像素,而是采用“孔”。膨胀因子定义了这些“洞”的大小。

    【讨论】:

    • 感谢您的回答。我熟悉跨步卷积层。让我们想象一下这个例子,这里输入大小为 7x7。这里有一个扩张因子 = 2 的扩张卷积层。结果是输出大小为 3x3。想象一下这个操作,标准卷积层(膨胀因子=1)内核为 3x3,步幅=1,输出大小为 5x5 像素。如何在 deeplab V3+ 结构中实现这种一致的输出分辨率(输出步幅 16)和不同的扩张因子(从 2 到 16)。
    【解决方案2】:

    好吧,如果没有填充,输出会变得小于输入。效果堪比普通卷积的缩减效果。

    假设您有一个包含 1000 个元素的一维张量和一个膨胀因子为 3 的膨胀 1x3 卷积核。这对应于 1+2free+1+2free+1 = 7 的“总内核长度”。考虑步幅1 的输出将是具有 1000+1-7= 994 个元素的一维张量。在具有 1x3 内核和步幅因子为 1 的正常卷积的情况下,输出将具有 1000+1-3= 998 个元素。如您所见,可以计算出类似于普通卷积的效果:)

    在这两种情况下,如果没有填充,输出会变小。但是,正如您所见,膨胀因子对输出大小没有缩放效果,就像步幅因子一样。

    为什么你认为 deeplab 框架内没有进行填充?我认为在官方的tensorflow实现中使用了padding。

    最好的弗兰克

    【讨论】:

    • 有帮助吗?
    【解决方案3】:

    我的理解是,作者是说在应用 3x3 卷积之前不需要对图像(或任何中间特征图)进行下采样,这在 DCNN(例如,VGG16 或 ResNet)中是典型的特征提取并遵循通过上采样进行语义分割。在典型的编码器-解码器网络(例如 UNet 或 SegNet)中,首先将特征图下采样一半,然后进行卷积操作,再将特征图上采样 2 倍。

    所有这些效果(下采样、特征提取和上采样)都可以在单个空洞卷积中捕获(当然,stride=1)。此外,与相同的“下采样、特征提取和上采样”相比,atrous 卷积的输出是一个密集的特征图,这会产生一个备用的特征图。有关详细信息,请参见下图。来自DeepLabV1 paper。因此,您可以通过在中间层用空洞卷积替换任何正常卷积来控制特征图的大小。

    这也是为什么在您上面发布的图片(级联模型)中的所有空洞卷积中,“output_stride(输入分辨率/特征图分辨率)”恒定为 16。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 2018-01-30
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2013-02-26
      相关资源
      最近更新 更多