一、什么是转置卷积
1、转置卷积的背景
通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作,叫做上采样 (Upsample),如下图所示:
对于上采样(up-sampling)操作,目前有着一些插值方法进行处理:
- 最近邻插值(Nearest neighbor interpolation)
- 双线性插值(Bi-Linear interpolation)
- 双立方插值(Bi-Cubic interpolation)
然而,这些上采样方法都是基于人们的先验经验来设计的,在很多场景中效果并不理想 (如:规则固定、不可学习)。因此,我们希望神经网络自己学习如何更好地插值,即接下来要介绍的转置卷积。 与传统的上采样方法相比,转置卷积的上采样方式并非预设的插值方法,而是同标准卷积一样,具有可学习的参数,可通过网络学习来获取最优的上采样方式。
2、对反卷积的误解
曾经,转置卷积又称反卷积 (Deconvolution)。zfnet在他们可视化的时候,利用到了《Zeiler, M., Taylor, G., and Fergus, R. Adaptive deconvolutional networks for mid and high level featurelearning. In ICCV, 2011》这篇论文中的反卷积操作,进行特征图的可视化,那什么是deconv操作呢?实际上deconv是有误导性的,令人误认为是卷积的逆运算,实际上cnn的卷积是不可逆的,deconv实际上是转置卷积(Transposed Convolution),是对矩阵进行上采样的一种方法。deconv的作用一般有以下几种:
(1)unsupervised learning(无监督学习):其实就是covolutional sparse coding:这里的deconv只是观念上和传统的conv反向,传统的conv是从图片生成feature map,而deconv是用unsupervised的方法找到一组kernel和feature map,让它们重建图片。
(2)CNN可视化:通过deconv将CNN中conv得到的feature map还原到像素空间,以观察特定的feature map对哪些pattern的图片敏感,这里的deconv其实不是conv的可逆运算,只是conv的transpose,所以tensorflow里一般取名叫transpose_conv。
(3)upsampling(上采样):在pixel-wise prediction比如image segmentation以及image generation中,由于需要做原始图片尺寸空间的预测,而卷积由于stride往往会降低图片size, 所以往往需要通过upsampling的方法来还原到原始图片尺寸,deconv就充当了一个upsampling的角色。在语义分割中,会在编码器中用卷积层提取特征,然后在解码器中恢复原先尺寸,从而对原图中的每个像素分类。该过程同样需用转置卷积。经典方法有 FCN 和 U-Net。