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月北京第二次印刷)

相关推荐
聆风吟º8 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
User_芊芊君子8 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能9 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
人工不智能5779 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
h64648564h9 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
心疼你的一切9 小时前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
学电子她就能回来吗11 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
Coder_Boy_12 小时前
TensorFlow小白科普
人工智能·深度学习·tensorflow·neo4j
大模型玩家七七12 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
kkzhang12 小时前
Concept Bottleneck Models-概念瓶颈模型用于可解释决策:进展、分类体系 与未来方向综述
深度学习