深度学习中的各种卷积
3D卷积
- 3D 过滤器可以在所有三个方向(图像的高度、宽度、通道)上移动。在每个位置,逐元素的乘法和加法都会提供一个数值。因为过滤器是滑过一个 3D 空间,所以输出数值也按 3D 空间排布。也就是说输出是一个 3D 数据。
- 3D 卷积可以描述 3D 空间中目标的空间关系。
转置卷积(去卷积)
- 进行与普通卷积方向相反的转换,即小图变大图,执行上采样
- 转置卷积在文献中也被称为去卷积或 fractionally strided convolution
- 可以看出,转置卷积在计算机运算上的实现,相当于把sparse矩阵进行了转置。这也是转置卷积的由来。
扩张卷积(Atrous 卷积)
- 直观而言,扩张卷积就是通过在核元素之间插入空格来使核「膨胀」。新增的参数 l(扩张率)表示我们希望将核加宽的程度。具体实现可能各不相同,但通常是在核元素之间插入 l-1 个空格。
可分卷积
空间可分卷积
- 空间可分卷积是将一个卷积分解为两个单独的运算。
- 在卷积中,3×3 核直接与图像卷积。在空间可分卷积中,3×1 核首先与图像卷积,然后再应用 1×3 核。这样,执行同样的操作时仅需 6 个参数,而不是 9 个。
空间可分卷积
深度可分卷积
第一步:我们不使用 2D 卷积中大小为 3×3×3 的单个过滤器,而是分开使用 3 个核。每个过滤器的大小为 3×3×1。每个核与输入层的一个通道卷积(仅一个通道,而非所有通道!)。每个这样的卷积都能提供大小为 5×5×1 的映射图。然后我们将这些映射图堆叠在一起,创建一个 5×5×3 的图像。经过这个操作之后,我们得到大小为 5×5×3 的输出。
深度可分卷积 第二步,为了扩展深度,我们应用一个核大小为 1×1×3 的 1×1 卷积。将 5×5×3 的输入图像与每个 1×1×3 的核卷积,可得到大小为 5×5×1 的映射图。在应用了 128 个 1×1 卷积之后,我们得到大小为 5×5×128 的层。
效率高!这样的成本大概仅有 2D 卷积的 12%!
分组卷积
- 在每个过滤器分组中,每个过滤器的深度仅有名义上的 2D 卷积的一半。它们的深度是 Din/2。每个过滤器分组包含 Dout/2 个过滤器。第一个过滤器分组(红色)与输入层的前一半([:, :, 0:Din/2])卷积,而第二个过滤器分组(橙色)与输入层的后一半([:, :, Din/2:Din])卷积。因此,每个过滤器分组都会创建 Dout/2 个通道。整体而言,两个分组会创建 2×Dout/2 = Dout 个通道。然后我们将这些通道堆叠在一起,得到有 Dout 个通道的输出层。
分组卷积