-
Notifications
You must be signed in to change notification settings - Fork 0
Description
转置卷积(Transposed Convolution,也称为反卷积或上采样卷积)是一种用于放大特征图尺寸的操作,常用于生成器网络(如GAN)或图像分割模型(如U-Net)的上采样阶段。
尽管名字是“转置卷积”,它并不是普通卷积的数学转置,而是通过增加步长来实现特征图的放大。下面我们通过一个简单的例子来解释它的操作过程。
普通卷积回顾
输入:
- 输入矩阵:
- 卷积核:
- 步长(stride):1
普通卷积计算:
- 将卷积核在输入矩阵上滑动,每次计算对应位置的点积。
- 输出大小为:
输出矩阵:
转置卷积
转置卷积的目标是反向放大特征图,即根据小的输入和卷积核产生更大的输出。
输入:
- 输入矩阵:
- 卷积核:
- 步长(stride):1
转置卷积计算:
-
插入零填充(如果步长 > 1):
- 步长为 1 时,不需要插入零。
- 如果步长为 2,则在输入矩阵中每个元素之间插入一个零。
-
反向滑动卷积核:
- 对输入矩阵的每个元素,取该值乘以整个卷积核,并将结果累加到输出矩阵对应的位置。
-
输出大小计算:
即
具体操作:
- 输入矩阵的第一个元素 ( 1 ):
放置到输出矩阵的左上角。
- 第二个元素 ( 2 ):
放置到输出矩阵的对应位置(向右平移)。
- 第三个元素 ( 3 ):
放置到输出矩阵的左下角。
- 第四个元素 ( 3 ):
放置到输出矩阵的右下角。
- 累加位置上的值。
最终输出:
[1 0] [2 0]
[0 -1] + [0 -2] = [1 2 0]
[0 -1 -2]
[3 0] [4 0]
[0 -3] + [0 -4] = [3 4 0]
[0 -3 -4]
Combining these:
[1 2 0]
[0 -1 -2]
[3 4 0]
[0 -3 -4]
The element at (1,0) of the output is 0 + 3 = 3
The element at (1,1) of the output is -1 + 4 = 3
The element at (1,2) of the output is -2 + 0 = -2
Overlapping and summing gives us:
[1 2 0]
[3 3 -2]
[0 -3 -4]
与普通卷积的区别
-
输入与输出的尺寸:
- 普通卷积:输入大,输出小。
- 转置卷积:输入小,输出大。
-
滑动方式:
- 普通卷积在输入矩阵上滑动卷积核。
- 转置卷积在输出矩阵上滑动卷积核的“贡献”。
总结
转置卷积通过插值(隐式或显式)和卷积操作实现了特征图的放大。它的核心思想是利用小的输入特征图生成更大的输出,同时保留空间信息,是上采样的一种有效方式。