扩张卷积和反卷积有什么区别?

数据挖掘 机器学习 深度学习 计算机视觉 卷积神经网络 卷积
2021-09-16 03:16:12

这两种卷积操作目前在深度学习中非常常见。

我在这篇论文中读到了扩张卷积层:WAVENET: A GENERATIVE MODEL FOR RAW AUDIO

和反卷积在这篇论文中:Fully Convolutional Networks for Semantic Segmentation

两者似乎都对图像进行了上采样,但有什么区别?

3个回答

在某种机械/图片/基于图像的术语中:

扩张: ###查看评论,正在纠正本节

膨胀在很大程度上与普通卷积相同(坦率地说,反卷积也是如此),除了它在其内核中引入间隙,即标准内核通常会滑过输入的连续部分,它的膨胀对应物可能,例如,“包围”图像的较大部分——同时仍然只有与标准形式一样多的权重/输入。

(请注意,膨胀将零注入其内核以更快地降低其输出的面部尺寸/分辨率,而转置卷积将零注入其输入提高其输出的分辨率。)

为了更具体,让我们举一个非常简单的例子:
假设你有一个 9x9 的图像,x没有填充。如果您采用标准 3x3 内核,步幅为 2,则输入中关注的第一个子集将是x [0:2, 0:2],内核将考虑这些边界内的所有九个点。然后你会扫过x [0:2, 2:4] 等等。

显然,输出将具有更小的面部尺寸,特别是 4x4。因此,下一层的神经元具有与这些内核通道的确切大小相同的感受野。但是,如果您需要或想要具有更多全局空间知识的神经元(例如,如果一个重要特征只能在大于此的区域中定义),那么您将需要对该层进行第二次卷积以创建有效感受野为的第三层前几层射频的一些联合。

但是,如果您不想添加更多层和/或您觉得传递的信息过于冗余(即第二层中的 3x3 感受野实际上只携带“2x2”数量的不同信息),您可以使用一个膨胀的过滤器。为了清楚起见,让我们对此进行极端化,并说我们将使用 9x9 3-dialated 过滤器。现在,我们的过滤器将“包围”整个输入,所以我们根本不需要滑动它。然而,我们仍然只会从输入x中获取 3x3=9 个数据点,通常是:

x [0,0] U x [0,4] U x [0,8] U x [4,0] U x [4,4] U x [4,8] U x [8,0] U x [8,4] U x [8,8]

现在,我们下一层的神经元(我们只有一个)将有数据“代表”我们图像的更大部分,同样,如果图像的数据对于相邻数据来说是高度冗余的,我们很可能已经保留了相同的信息并学习了等效的变换,但层数和参数更少。我认为在这个描述的范围内,很明显,虽然可以定义为重采样,但我们在这里对每个内核进行下采样。


分数步幅或转置或“反卷积”:

这种类型在本质上仍然是卷积。不同之处在于,我们将从较小的输入量转向较大的输出量。OP 没有对什么是上采样提出任何问题,所以我将节省一点广度,这一次'回合并直接进入相关示例。

在我们之前的 9x9 案例中,假设我们现在要上采样到 11x11。在这种情况下,我们有两个常见的选择:我们可以采用 3x3 内核和步长 1 并使用 2-padding 将其扫过我们的 3x3 输入,以便我们的第一次通过将在区域 [left-pad-2:1, above-pad-2: 1] 然后 [left-pad-1:2, above-pad-2: 1] 依此类推。

或者,我们可以在输入数据之间额外插入填充,并在没有太多填充的情况下扫描内核。显然,对于一个内核,我们有时会不止一次地关注完全相同的输入点;这就是“部分步幅”一词似乎更合理的地方。我认为下面的动画(从这里借来并基于(我相信)这项工作将有助于清除事物,尽管它们的尺寸不同。输入是蓝色,白色注入零和填充,输出绿色:

转置conv,输入为蓝色,输出为绿色

当然,我们关注的是所有输入数据,而不是膨胀,膨胀可能会或可能不会完全忽略某些区域。而且由于我们清楚地结束了比我们开始时更多的数据,“上采样”。

我鼓励您阅读我链接到的优秀文档,以获得对转置卷积更合理、更抽象的定义和解释,以及了解为什么共享的示例是说明性的,但在很大程度上不适合实际计算所表示的转换的形式。

尽管两者似乎都在做同样的事情,即对图层进行上采样,但它们之间存在明显的差距。

首先我们谈谈扩张卷积

我在上述主题上找到了这个不错的博客。所以据我了解,这更像是在广泛地探索输入数据点或者增加卷积操作的感受野。

这是论文中的扩张卷积图。

图 3

这更像是普通的卷积,但有助于从输入像素中捕获越来越多的全局上下文,而不会增加参数的大小。这也有助于增加输出的空间大小。但这里主要的是这会随着层数成倍增加感受野大小。这在信号处理领域很常见。

这篇博客真正解释了空洞卷积的新特性以及它与普通卷积的比较。

博客:扩张卷积和 Kronecker 因子卷积

现在我将解释什么是反卷积

这称为转置卷积。这等于我们在反向传播中用于卷积的函数。

简单地在反向传播中,我们将输出特征图中的一个神经元的梯度分布到感受野中的所有元素,然后我们还总结了它们与相同感受元素重合的梯度

这是一个很好的图片资源

所以基本思想是在输出空间中进行反卷积。不输入像素。它将尝试在输出地图中创建更广泛的空间维度。用于语义分割的全卷积神经网络

所以更多的反卷积是一个可学习的上采样层。

它试图在结合最终损失的同时学习如何上采样

这是我找到的反卷积的最佳解释。从 21.21 开始,cs231 中的第 13 讲

这个问题的关键是更多地了解扩张卷积(我猜)。所以,我假设每个人都熟悉普通的卷积操作。我将在下面非常简要地提到它。

扩张/空洞卷积

  • 当我们想通过查看更大的视野来生成输出时很有用。
  • 在图像分割领域非常流行。
  • 膨胀是我们增加卷积的感受野(感受野~视野)的过程。原始卷积滤波器: 在此处输入图像描述

对于膨胀:只需将每个红色块围绕中心移动 k-1 个单位(如果膨胀率 = k)并将空槽填充 0。

在此处输入图像描述

  • 可以相应地改变扩张率以可视化更大的区域。
  • 空洞卷积支持感受野的指数化,而不会损失扩展/覆盖。
  • 此外,不会消耗额外的计算资源。与池化和跨步卷积不同,没有分辨率损失。