为什么扩张卷积可以保持分辨率?

11

图片描述

该动画来自这里。我想知道为什么膨胀卷积被称为能够保留分辨率。明显地,蓝色输入是7x7,绿色输出是3x3。

编辑:

解决分辨率损失的一种方法是使用大约当前感受野大小一半的填充。

  1. 这基本上削弱了膨胀卷积不会失去分辨率的说法,因为是通过填充来保留分辨率的。要用输入得到相同的输出尺寸,传统卷积需要更少的填充。
  2. 由于填充呈指数级增长,相对不那么小的扩张因子将导致严重填充的输入图像。想象一个1024x1024的输入和10倍扩张,它将变成大约2048x2048(如果我在这里有误请告诉我)。这是原始尺寸的4倍,这意味着大部分卷积是在填充区域而不是真正的输入上进行的。个人认为这似乎相当反直觉。
1个回答

14

这确实是一个带有5x5滤波器的扩张卷积。如果你将动画中的蓝色部分想象成一个3x3的图像,进行0填充,则可以保留分辨率。

关于您的编辑,重点确实在于您链接的帖子中的这个陈述:扩张卷积支持指数级扩展感受野,而不会丢失分辨率或覆盖范围

填充是为了保留分辨率。这是正确的。

我们真正想要的是扩展接收域的大小。在您链接的帖子中,通过3个3x3的扩张卷积,其扩张率逐渐增加,我们已经在特征图中实现了15x15的感受野。

要使用3x3卷积并无损失覆盖范围和无损失分辨率实现相同的效果,我们可以使用步幅为3(步幅为4将导致覆盖范围的损失)和极高的填充程度(几乎与您所说的大多数填充为零的卷积相同)。然而,我们需要使用步幅为3的4个3x3卷积而不是3个,才能实现15x15的感受野。

除此之外,与扩张卷积的情况相比,正常卷积将具有更多毫无意义的卷积。


这有道理,但这意味着填充也呈指数增长,对吗? - wlnirvana
是的。但计算量仍然相同。我认为大多数库都会优化这样的操作,并在稀疏矩阵上执行,而不必实际填充和存储它在内存中。 - jkschin
请看我在问题上面的编辑。顺便说一句,感谢您的快速回复 :) - wlnirvana
嗯...让我重新表述一下,看看我是否理解了。所以权衡的是:如果只使用步幅为1的卷积,填充很小,但我们需要太多层(因此太多参数/权重)来保留分辨率。如果使用步幅较大的卷积,我们面临着同样的沉重填充问题,仍然需要更多的层。因此,扩张卷积是一种更好平衡的选择。 - wlnirvana
所以,按照我的理解,我们使用扩张卷积神经网络来捕获局部上下文的同时捕获更多全局上下文。因此,在填充操作中,我们确保不会遗漏特征图中的任何神经元。我是正确的吗? - Shamane Siriwardhana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接