反卷积英文翻译为:Deconvolution 或 Transposed Convolution 或 Fractional-strided

Convolutions。在机器学习中,反卷积是从低分辨率映射到大分辨率的过程,用于扩大图像尺寸。反卷积是一种特殊的正向卷积,而不是卷积的反过程。

本文将从直观的角度,推导反卷积运算输出尺寸的计算公式。

符号约定:

卷积输出尺寸计算

卷积过程示例如图 1 所示,蓝色方块为输入,绿色方块为输出,灰色方块为卷积核。经过卷积计算,输出尺寸计算公式:

反卷积输出尺寸计算公式 - 知乎 - 图1
(1)

注释:[·] 为取不超过该值的最大整数

反卷积输出尺寸计算公式 - 知乎 - 图2

图 1:卷积过程示例

  • 例 1:卷积运算输出尺寸计算

以图 1 中的卷积过程为例,输入尺寸,卷积核大小,步幅,扩充分别为:反卷积输出尺寸计算公式 - 知乎 - 图3
,代入公式(1):
反卷积输出尺寸计算公式 - 知乎 - 图4
反卷积输出尺寸计算公式 - 知乎 - 图5

即输出尺寸为 3。

反卷积输出尺寸计算

第一步:对输入进行 stride 变换,如图 2 所示。

反卷积中,stride 可理解为为在输入的相邻元素之间添加 反卷积输出尺寸计算公式 - 知乎 - 图6
个零元素
。变换后的尺寸为:

反卷积输出尺寸计算公式 - 知乎 - 图7
(2)

反卷积输出尺寸计算公式 - 知乎 - 图8

图 2:反卷积 Stride 过程

例:图 2 的 stride 过程中,输入和步长分别为 反卷积输出尺寸计算公式 - 知乎 - 图9
,则 反卷积输出尺寸计算公式 - 知乎 - 图10

第二步:对 stride 变换后的图片按照卷积形式求解输出尺寸。

即,将式(2)带入式(1):

反卷积输出尺寸计算公式 - 知乎 - 图11
(3)

注意:由于在第一步中已经将 stride 进行运算,式(3)中的 s 此时恒等于 1,即 反卷积输出尺寸计算公式 - 知乎 - 图12

第三步:求解反卷积输出尺寸。

将式(2)带入式(3),化简得:

反卷积输出尺寸计算公式 - 知乎 - 图13
(4)

式(4)恒为整数,可将[·]运算符去掉,即得到反卷积输出的尺寸计算公式

反卷积输出尺寸计算公式 - 知乎 - 图14
(5)

比较式(5)与式(1)可知,当步长 反卷积输出尺寸计算公式 - 知乎 - 图15
时,卷积与反卷积输出尺寸计算公式相同。这种情况下反卷积即为卷积,也说明了反卷积是一种特殊的卷积,而非卷积的逆过程。

下面给出反卷积运算输出尺寸的计算示例。

  • 例 2:反卷积输出尺寸计算 (s=1)

反卷积输出尺寸计算公式 - 知乎 - 图16

图 3:反卷积过程示例(s=1)

如图 3 所示,反卷积过程各参数分别为: 反卷积输出尺寸计算公式 - 知乎 - 图17
,代入式(5)可得: 反卷积输出尺寸计算公式 - 知乎 - 图18

即输出尺寸为 4。

  • 例 3:反卷积输出尺寸计算 (s>1)

反卷积输出尺寸计算公式 - 知乎 - 图19

图 4:反卷积输出尺寸计算示例 (s>1)

如图 4 所示,反卷积过程各参数分别为: 反卷积输出尺寸计算公式 - 知乎 - 图20
,代入式(5)可得: 反卷积输出尺寸计算公式 - 知乎 - 图21

即输出尺寸为 5。

本分从直观简洁的角度给出了反卷积运算输出尺寸的计算公式,即式 (5)。

:本文全部以各坐标轴输入尺寸相同,填充相同为例进行计算。对于输入各坐标轴不同的情况,只需按照公式分别计算各坐标轴方向的输出尺寸。

参考资料:A guide to convolution arithmetic for deep learning


(本文可自由转载,须注明出处)
https://zhuanlan.zhihu.com/p/57348649