1.5 简述转置卷积的主要思想以及应用场景

1.5 简述转置卷积的主要思想以及应用场景

普通的卷积主要思想

普通的卷积操作可以形式化为一个矩阵乘法运算,即y=Ax(1-12)

其中,x和y分别是卷积的输入和输出(展平成一维向量形式),维度分别为d⁽i⁾和d⁽⁰⁾;A是由卷积核、滑动步长决定的常对角矩阵,维度为其每一行对应着卷积核的一次滑动位置。以一维卷积为例,假设输入向量
x = [ a , b , c , d , e , f , g ] T x=[a,b,c,d,e,f,g]^T x=[a,b,c,d,e,f,g]T

卷积核为K=[x,y,z],卷积的滑动步长为2,则输出向量为

转置卷积主要思想:

反过来,记 A T A^T AT为矩阵A的转置,定义如下矩阵运算:

y^= A T A ^T AT x x x^(1-14)

其所对应的操作被称为转置卷积,x^ 和 y^ 分别是转置卷积的输入和输出,维度分别为d⁽⁰⁾和d(i)。

转置卷积也被称为反卷积(deconvolution),它可以看作是普通卷积的一个"对称"操作,这种"对称性"体现在以下两个方面。

  • 转置卷积能将普通卷积中输入到输出的尺寸变换逆反过来

    例如,式(1-12)中的普通卷积将特征图尺寸由d(1)变为d(1),而式(1-14)中的转置卷积则可以将特征图尺寸由d(0)复原为d(1)。这里需要注意的是,输入特征图经过普通卷积操作后再经过转置卷积,只是复原了形状,并不能复原具体的取值(因此将转置卷积称为反卷积并不是很合适)。

  • 根据矩阵运算的求导知识,在式(1-12)所示的普通卷积中,输出y对于输入x的导数为

  • 而在式(1-14)所示的转置卷积中,输出y^ 对于输入x^ 的导数为

    由此可以看出,转置卷积的信息正向传播与普通卷积的误差反向传播所用的矩阵相同,反之亦然

    以式(1-14)为例,我们可以写出转置卷积的具体计算公式:

可以看到,等号的右侧实际上就是一个普通卷积对应的矩阵乘法。

因此,转置卷积本质 上就是一个对输入数据进行适当变换(补零/上采样)的普通卷积操作

具体实现时,以二维卷积为例,一个卷积核尺寸为Kw×Kh,滑动步长为(Sw,Sh)、边界填充尺寸为(pw,ph)的普通卷积,其所对应的转置卷积可以按如下步骤来进行。

  1. 对输入特征图进行扩张(上采样):相邻的数据点之间,在水平方向上填充Sw-1个零,在垂直方向上填充Sn-1个零。

  2. 对输入特征图进行边界填充 :左右两侧分别填充个零列,上下两侧分别填充个零行。

  3. 在变换后的输入特征图上做卷积核大小为、滑动步长为(1,1)的普通卷积操作。

    在上述步骤2中,转置卷积的边界填充尺寸(pw^, pn^)是根据与之对应的普通卷积的边界填充尺寸(pw,pn)来确定的,很多深度学习框架(如PyTorch)就是按照这个思路来设定转置卷积的边界填充尺寸。

    但在有些计算框架(如TensorFlow)中,做卷积时无法显式指定边界填充尺寸,只能选择一些预定义的填充模式(如padding=same或padding=valid),此时,转置卷积的边界填充尺寸是根据与之对应的普通卷积的边界填充模式来设定的。

    需要注意的是,当滑动步长大于1 时,卷积的输出尺寸公式中含有向下取整操作,故而普通卷积层的输入尺寸与输出尺寸是多对一关系,此时转置卷积无法完全恢复之前普通卷积的输入尺寸,需要通过一个额外的参数来直接或间接地指定之前的输入尺寸,(如TensorFlow中的output_shape参数、PyTorch中的output_padding参数)。

应用场景:

普通卷积和转置卷积所处理的基本任务是不同的。前者主要用来做特征提取 ,倾向于压缩特征图尺寸

转置卷积主要用于对特征图进行扩张或上采样,代表性的应用场景如下。

  • 语义分割/实例分割等任务:由于需要提取输入图像的高层语义信息,网络的特征图尺寸一般会先缩小,进行聚合;此外,这类任务一般需要输出与原始图像大小一致的像素级分割结果,因而需要扩张前面得到的具有较高语义信息的特征图,这就用到了转置卷积。
  • 一些物体检测、关键点检测任务,需要输出与源图像大小一致的热图。
  • 图像的自编码器、变分自编码器、生成式对抗网络等。

参考文献:

《百面深度学习》 诸葛越 江云胜主编

出版社:人民邮电出版社(北京)

ISBN:978-7-115-53097-4

2020年7月第1版(2020年7月北京第二次印刷)

相关推荐
泰迪智能科技0123 分钟前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
Jeremy_lf2 小时前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型
冰蓝蓝4 小时前
深度学习中的注意力机制:解锁智能模型的新视角
人工智能·深度学习
wydxry5 小时前
LoRA(Low-Rank Adaptation)模型微调
深度学习
IT古董8 小时前
【漫话机器学习系列】019.布里(莱)尔分数(Birer score)
人工智能·深度学习·机器学习
醒了就刷牙8 小时前
transformer用作分类任务
深度学习·分类·transformer
小陈phd9 小时前
深度学习实战之超分辨率算法(tensorflow)——ESPCN
网络·深度学习·神经网络·tensorflow
gloomyfish10 小时前
【开发实战】QT5+ 工业相机 + OpenCV工作流集成演示
图像处理·深度学习·qt·opencv·计算机视觉
视觉&物联智能10 小时前
【杂谈】-为什么Python是AI的首选语言
开发语言·人工智能·python·深度学习·机器学习
Sherry Wangs11 小时前
PromptGIP:Unifying lmage Processing as Visual Prompting Question Answering
人工智能·深度学习·图像增强·数字人技术·all-in-one