卷积与反卷积

文章目录

  • 1 卷积
    • 1.1 卷积后的输出维度
  • 2 反卷积
    • 2.1 来源
    • 2.2 原理
    • 2.3 使用
      • 2.3.1 padding
      • 2.3.2 stride
      • output_padding
    • 2.3 意义

1 卷积

1.1 卷积后的输出维度

设输入维度为i x i,卷积核大小为k x k,padding为p,strides为s,则输出维度为 (i - k + 2p) / s +1
注意:除法为向下取整的除法,即3 / 2 = 1。
i - k是不考虑padding的情况下,卷积核能纵向/横向移动的次数

2 反卷积

2.1 来源

反卷积/转置卷积的操作是在《Visualizing and Understanding Convolutional Networks》中提出来的。
其只能恢复原来的大小,不能恢复原来的数值。
可参考:https://zhuanlan.zhihu.com/p/48501100《反卷积(Transposed Convolution)详细推导》

2.2 原理

A deconvolutional layer is simply a regular convolutional layer with its filters transposed. By applying these transposed filters to the output of a convolutional layer, the input can be retrieved.

2.3 使用

class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True)
详细参考:https://blog.csdn.net/disanda/article/details/105762054

2.3.1 padding

padding的含义不是卷积的padding的含义,理解为kernel向输入层中间移动的次数。
padding为0时,在input(蓝色2 x 2)外面填充k - 1 = 2层
padding为1时,在input外面填充k - 2 = 1层。
下图是padding为0时的例子。
卷积与反卷积_第1张图片

2.3.2 stride

stride是输入之间的距离,默认为1。
如果stride为2,那么每个输入之间相隔1个。
下图是stride=2的例子。
卷积与反卷积_第2张图片

output_padding

由于卷积涉及到向下取整,所以在输出维度一定时,对应了多个可能的输入维度,可能的个数为【步长stride】。因此采用out_padding进行确定。
参考:https://zhuanlan.zhihu.com/p/485999111《【深度学习反卷积】Pytorch中反卷积的应用》

2.3 意义

反卷积是一种上采样的方法,除此之外还有反池化和双线性差值bilinear。
在图像领域可以做segmentation,在很多领域可以做cost volume。

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