[SS]语义分割_转置卷积

转置卷积(Transposed Convolution)

抽丝剥茧,带你理解转置卷积(反卷积) 

目录

一、概念

1、定义 

2、运算步骤

二、常见参数


一、概念

1、定义 

        转置卷积(Transposed Convolution),也被称为反卷积(Deconvolution)或逆卷积(Inverse Convolution),是一种卷积神经网络中常用的操作。转置卷积可以用于图像生成、图像分割、语义分割等任务中。

        转置卷积的操作实际上是卷积操作的逆过程。在标准的卷积操作中,输入数据经过卷积核的滑动窗口运算,生成输出特征图。而在转置卷积中,输出特征图经过转置卷积核的滑动窗口运算,生成输入数据的近似重构。

        转置卷积的操作可以用矩阵乘法的方式来实现,也可以用卷积的方式来实现。在实际应用中,常常使用卷积的方式来实现转置卷积,而不是直接进行矩阵乘法运算。

转置卷积的计算过程可以简化为以下几个步骤:

  1. 在输入特征图上进行填充操作,将输入特征图的尺寸扩大一定倍数(根据转置卷积核的大小和步长确定)。
  2. 将填充后的输入特征图与转置卷积核进行卷积操作,得到中间特征图。
  3. 对中间特征图进行剪裁操作,使其尺寸与输入特征图相同。
  4. 得到转置卷积的输出特征图。

        通过转置卷积操作,可以将低维的输入特征图扩张为高维的输出特征图,从而实现图像的生成和重构。转置卷积在卷积神经网络中得到广泛应用,如生成对抗网络(GANs)、语义分割网络等。

notes:

  • 转置卷积不是卷积的逆运算,只是将特征图大小还原回卷积之前的大小,数值与输入特征层的数值不相同
  • 转置卷积也是卷积
  • 转置卷积的作用是上采样

2、运算步骤

转置卷积运算步骤:

  • 在输入特征图元素间填充s-1行、列0
  • 在输入特征图四周填充k-p-1行、列0
  • 将卷积核参数上下、左右翻转
  • 做正常卷积运算(填充0,步距1)

[SS]语义分割_转置卷积_第1张图片

        输入的特征图大小为2x2(假设输入输出都为单通道),通过转置卷积后得到4x4大小的特征图。这里使用的转置卷积核大小为k=3,stride=1,padding=0的情况(忽略偏执bias)。

[SS]语义分割_转置卷积_第2张图片

notes:

        做正常卷积运算中的步距与第一步中的参数s不一样,参数s对应的是转置卷积中的参数s,即输入的特征图是经过步距为s、padding为p,卷积核大小为k的卷积之后得到的。 

二、常见参数

torch.nn.ConvTranspose2d参数

H_{out}=(H_{in}-1)\times stride[0]-2\times padding[0]+dilation[0]\times (kernelSize[0]-1)+outputPadding[0]+1

W_{out}=(W_{in}-1)\times stride[1]-2\times padding[1]+dilation[1]\times (kernelSize[1]-1)+outputPadding[1]+1 

  • in_channels(int)-输入特征图通道数
  • out_channels(int)-输出特征图通道数
  • kernel_size(int or tuple)-卷积核大小
  • stride(int or tuple,optional)-步距大小
  • padding(int or tuple,optional)-填充
  • output_padding(int or tuple,optional)-输出填充,通常默认为0
  • groups(int,optional)-是否采用主卷积,默认为1
  • bias(bool,optional)-偏置,默认为True
  • dilation(int or tuple,optional)-是否使用膨胀卷积或空洞卷积,默认为1

你可能感兴趣的:(语义分割,人工智能,深度学习,计算机视觉)