NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

转置卷积层也被(错误地)称为反卷积层。反卷积层反转了标准卷积层的操作,即如果对通过标准卷积层生成的输出进行反卷积,则会返回原始输入。转置卷积层与反卷积层相似,因为两者生成的空间维度相同。转置卷积不是通过值反转标准卷积,而是仅通过维度反转。

转置卷积层的功能与标准卷积层完全相同,但作用于经过修改的输入特征图。在解释相似性之前,让我们先看看标准卷积层的工作原理。

1、标准卷积层

大小为 ixi 的输入上的标准卷积层由以下两个参数定义。

  • 填充 (p):在原始输入周围填充的零的数量,将大小增加到 (i+2p)x(i+2p)
  • 步幅 (s):在输入图像上滑动时内核的移动量。

下图显示了卷积层如何以两步过程工作:

在第一步中,输入图像用零填充,而在第二步中,将内核放置在填充的输入上并滑动,生成输出像素作为内核和重叠输入区域的点积。内核通过跨步定义的大小跳跃在填充的输入上滑动。卷积层通常进行下采样,即输出的空间维度小于输入的空间维度。

下面的动画解释了不同步幅和填充值的卷积层的工作方式:

对于给定的输入 (i)、内核 (k)、填充 (p) 和步幅 (s) 的大小,生成的输出特征图 (o) 的大小由下式给出:

2、转置卷积层

另一方面,转置卷积层通常用于上采样,即生成具有大于输入特征图的空间维度的输出特征图。与标准卷积层一样,转置卷积层也由填充和步幅定义。这些填充和步幅的值是假设在输出上执行以生成输入的值。即,如果您获取输出并执行具有定义的步幅和填充的标准卷积,它将生成与输入相同的空间维度。

实现转置卷积层可以更好地解释为 4 个步骤

  • 步骤 1:计算新参数 z 和 p'
  • 步骤 2:在输入的每一行和列之间插入 z 个零。这会将输入的大小增加到 (2i-1)x(2i-1)
  • 步骤 3:用 p 个零填充修改后的输入图像
  • 步骤 4:对步骤 3 生成的图像进行标准卷积,步长为 1

完整步骤如下图所示:

下面的动画解释了卷积层在不同步幅和填充值下的工作情况:

对于给定的输入 (i)、内核 (k)、填充 (p) 和步幅 (s) 的大小,生成的输出特征图 (o) 的大小由下式给出:

3、结束语

下表总结了两种卷积,即标准卷积和转置卷积:

  • 转置卷积背后的想法是进行可训练的上采样
  • 转置卷积是标准卷积,但具有修改后的输入特征图。
  • 步幅和填充与在图像周围添加的零的数量以及在输入上滑动时内核的移位量不对应,就像在标准卷积运算中一样。

原文链接:What is Transposed Convolutional Layer?

BimAnt翻译整理,转载请标明出处