我是靠谱客的博主 酷酷老鼠,最近开发中收集的这篇文章主要介绍【深度学习】反卷积操作(Deconvolution)转载来源反卷积操作的原理PyTorch中的反卷积操作结语,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  • 转载来源
  • 反卷积操作的原理
  • PyTorch中的反卷积操作
  • 结语

转载来源

  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))

对应的情况为二倍上采样

结语

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

最后

以上就是酷酷老鼠为你收集整理的【深度学习】反卷积操作(Deconvolution)转载来源反卷积操作的原理PyTorch中的反卷积操作结语的全部内容,希望文章能够帮你解决【深度学习】反卷积操作(Deconvolution)转载来源反卷积操作的原理PyTorch中的反卷积操作结语所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部