反卷积/转置卷积:Transposed convolution介绍
Transposed convolution称为转置卷积,也被称作: "分数步长卷积(Fractionally-strided convolution)“和"反卷积(Deconvolution)”.
1. 上采样(UpSampling)
- 在应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(e.g.:图像的语义分割),这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。
- 常见上采样3种方法:
双线性插值(bilinear)
反卷积(Transposed Convolution)
反池化(Unpooling) - 反卷积含义:反卷积是一种特殊的正向卷积,先按照一定的比例通过补 0 来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
2. 正向卷积的实现过程
- 假设输入图像
input
尺寸为 4×4 ,元素矩阵为:
- 卷积核
kernel
尺寸为 3×3 ,元素矩阵为:
-
步长
strides
=1,填充padding
=0,即:i = 4,k = 3,s = 1,p = 0.
-
则按照卷积计算公式
输出图像output
的尺寸为 2×2. -
如下图,绿色表示输出,蓝色表示输入,每个绿色块具与9个蓝色块连接。
3. 用矩阵乘法描述卷积
-
把
input
的元素矩阵展开成一个列向量X
:
-
把输出图像
output
的元素矩阵展开成一个列向量Y
:
-
对于输入的元素矩阵
X
和 输出的元素矩阵Y
,用矩阵运算描述这个过程:
-
通过推导,我们可以得到稀疏矩阵
C
:
-
反卷积的操作就是要对这个矩阵运算过程进行逆运算,即通过
C
和Y
得到X
,根据各个矩阵的尺寸大小,我们能很轻易的得到计算的过程,即为反卷积的操作:
4. 反卷积
- 反卷积崭露头角于“Unsupervised Representations Learning With Deep Convolutional Generative Adversarial Networks”,这篇论文主要工作就是用GANs生成图片,其中的generator和discriminator均采用深度学习,generator生成图片过程中采用的就是反卷积操作
4.1 反卷积操作
- C^T 对应的卷积操作恰好相当于将kernel中心对称,FULL zero padding,然后卷积,此时,1个蓝色块与9个绿色块连接,且权重与Convolution过程相同。
4.2 反卷积输入输出尺寸关系
- 关系1:
此时反卷积的输入输出尺寸关系为:
- 关系2:
此时反卷积的输入输出尺寸关系为: