【深度学习】反卷积操作(Deconvolution)

【深度学习】反卷积操作(Deconvolution)

转载来源

  1. https://zhuanlan.zhihu.com/p/48501100
  2. https://www.jianshu.com/p/ff99a7e6c39d

感谢原作者的工作

反卷积操作的原理

什么是反卷积?


上采样(Upsample)

应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(图像的语义分割等)。这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。


反卷积(Deconvolution,也称作Transposed Convolution)

上采样有3种常见的方法:

  • 双线性插值(bilinear)
  • 反卷积(Transposed Convolution)
  • 反池化(Unpooling)

这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:
反卷积是一种特殊的正向卷积,先按照一定的比例通过补 0 0 0来扩大输入图像的尺寸,再进行正向卷积。


卷积可以表示为如下图的矩阵操作:

  • input feature map(4*4)
  • 卷积核尺寸(3*3)
  • output feature map(2*2)

输入feature map表示为 ( 16 ∗ 1 ) (16*1) 161的向量;输出feature map表示为 ( 4 ∗ 1 ) (4*1) 41的向量;卷积表示为 ( 4 ∗ 16 ) (4*16) 416的矩阵。即: o u t p u t = C ∗ i n p u t output =C*input output=Cinput
在这里插入图片描述


反卷积可以表示为如下图的矩阵操作:

  • input feature map(2*2)
  • 卷积核尺寸(3*3)
  • output feature map(4*4)

输入feature map表示为 ( 4 ∗ 1 ) (4*1) 41的向量;输出feature map表示为 ( 16 ∗ 1 ) (16*1) 161的向量;反卷积表示为 ( 16 ∗ 4 ) (16*4) 164的矩阵。

如果卷积操作表示为: o u t p u t = C ∗ i n p u t output =C*input output=Cinput,那么当 i n p u t input input o u t p u t output output定义不变时,反卷积可以表示为 i n p u t = C T ∗ o u t p u t input =C^T*output input=CToutput,所以反卷积也称作转置卷积。注意真实情况中,反卷积的卷积核,并不是某个卷积的卷积核的转置。也就是说,反卷积只能恢复尺寸,不能恢复数值。

在这里插入图片描述

PyTorch中的反卷积操作

nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0,  output_padding=0, groups=1, bias=True, dilation=1)
  • in_channels:输入channel数
  • out_channels:输出channel数
  • kernel_size:卷积核size
  • stride=1:步长
  • padding=0:输入feature map填充的圈数
  • output_padding=0:输出feature map填充的圈数
  • dilation=1:输入feature map每个元素之间的填充0的个数,注意边缘元素的外圈也填充对应个数的0

注意,这里的stride指的是其对应的卷积操作的原stride,他对应的反卷积操作的stride是小数,所以这种反卷积操作也叫Fractionally Strided Convolution。如stride=2的卷积操作,其对应的反卷机的步长实际应为1/2=0.5。

例如:

nn.ConvTranspose2d(in_channels=2048, out_channels=256, kernel_size=4, stride=2, padding=1, output_padding=0, bias=False))

对应的情况为二倍上采样

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值