膨胀卷积和反卷积有什么区别?


Answers:


9

以机械/图片/图像为基础的术语:

膨胀: ###请参阅注释,以更正本节内容

扩容与常规卷积基本相同(坦率地说,反卷积也是如此),只是它会在其内核中引入空白,即标准内核通常会在输入的连续部分上滑动,而扩容的对应对象可能会,例如,“包围”图像的较大部分-同时仍仅具有与标准形式一样多的权重/输入。

(注意哦,而扩张零内喷射到它的内核,以便更迅速地减少面部尺寸/分辨率是输出的,转置卷积零内喷射到它的输入,以提高它的输出分辨率。)

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

显然,输出将具有较小的面部尺寸,特别是4x4。因此,下一层的神经元在这些谷粒通过的确切大小上具有感受野。但是,如果您需要或希望神经元具有更多的全局空间知识(例如,如果仅在大于此范围的区域中定义了重要特征),则需要第二次对该层进行卷积以创建第三层,其中有效感受野是前几层RF的某种结合。

但是,如果您不想添加更多的层,并且/或者您认为传递的信息过于冗余(例如,第二层中的3x3接收字段实际上仅携带“ 2x2”数量的不同信息),则可以使用膨胀滤镜。为了清楚起见,让我们极端对待,说我们将使用9x9 3直径过滤器。现在,我们的过滤器将“包围”整个输入,因此我们根本不必滑动它。但是,我们仍然只能从输入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。在这种情况下,我们有两个常见的选择:我们可以采用步长为1的3x3内核,并通过2填充将其扫过3x3输入,以便我们的第一遍将遍及[left-pad-2:1,上垫2:1],然后是[左垫1:2,上垫2:1],依此类推。

另外,我们也可以在输入数据之间插入填充,并在没有太多填充的情况下扫过内核。显然,对于单个内核,有时我们会多次使用完全相同的输入点来关注自己。在这里,“零碎地跨度”一词似乎更为合理。我认为以下动画(是从这里借来的,基于(我相信)这项工作是有益的)尽管尺寸不同,但仍可以帮助清除内容。输入是蓝色,白色注入了零和填充,输出是绿色:

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

当然,我们正在考虑所有输入数据,而不是可能会或可能不会完全忽略某些区域的扩张。而且由于显然要处理的数据比我们开始的要多,因此需要“上采样”。

我鼓励您阅读我所链接的出色文档,以更合理,抽象地定义和解释转置卷积,并了解为什么共享的示例是说明性的,但实际上不适用于实际计算表示的变换。


1
请记住,我不是专家,只是一个最近不得不自己区分这些概念的人。请让我知道是否有任何直接的错误或过多的简化可能会破坏答案的整体正确性。谢谢!
Doug Brummell

道格·布鲁梅尔(Doug Brummel Wow)很好地解释了。我有同样的想法。我想知道您对应用散积卷积的看法,我们应该如何在CNN中开始应用它。我们是否应该首先进行一些正常的卷积,然后再应用膨胀的稀释?如果我们不将填充置零,则膨胀卷积可能会丢失信息。所以我认为我们应该在几个普通的卷积层之后应用膨胀卷积吗?
Shamane Siriwardhana

我相信标准的想法是增加向前扩展的数量,从对l = 1的未扩展的常规过滤器开始,向2扩展的过滤器,然后是3扩展的过滤器,依此类推,随着网络的深入发展。这使您可以确保将一层中的所有数据传递到下一层(重要的是,包括网络本身),同时仍然允许每一层以指数方式更快地进行下采样,但不增加参数。目标是在不牺牲数据包含范围的情况下扩大接收范围。是的,在早期就应注意填充。
道格·布鲁默尔

参见[本文](arxiv.org/pdf/1511.07122.pdf),上面已对其进行了引用,并提供了有关我已阅读的有关该主题的很多知识。
道格·布鲁默尔

另一件事是,该论文指出,在这种不断扩大的扩展方案中,分辨率没有损失……我想我只是警惕可能会在“分辨率”下掩盖的其他损失。当然,如果您可以用更少的膨胀层替换一堆conv层并保持准确性,那绝对好。但是对我来说(我将不得不重新回到书中),我想一想如果您从一开始就采用扩张架构师,可能会遭受损失……
Doug Brummell

5

尽管两者似乎都在做相同的事情,即对一个图层进行上采样,但是它们之间仍有明显的余量。

首先我们谈谈膨胀卷积

我在上述主题上找到了这个不错的博客。因此,据我所知,这更像是广泛探索输入数据点。或增加卷积运算的接收场。

下面是从一个扩张型卷积图

图片3

这更多的是正常卷积,但是有助于在不增加参数大小的情况下从输入像素捕获越来越多的全局上下文。这也可以帮助增加输出的空间大小。但是这里最主要的是,随着层数的增加,接收场的大小呈指数增加。这在信号处理领域非常普遍。

这个博客确实解释了膨胀卷积中的新功能,以及如何将其与普通卷积进行比较。

博客:扩展卷积和Kronecker分解卷积

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

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

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

这是带有图片好资源

因此,基本思想是反卷积在输出空间中起作用。未输入像素。它将尝试在输出地图中创建更广泛的空间尺寸。在全卷积神经网络中用于语义分割

因此,更多的反卷积是一个可学习的上采样层。

它试图学习如何在与最终损失结合的同时进行升采样

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


您介意扩大卷积如何帮助增加输出的空间大小吗?与传统的卷积相比,它似乎需要更多的填充,因此输出大小更糟。
wlnirvana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.