概述
【深度学习】反卷积操作(Deconvolution)
- 转载来源
- 反卷积操作的原理
- PyTorch中的反卷积操作
- 结语
转载来源
- https://zhuanlan.zhihu.com/p/48501100
- 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)
(16∗1)的向量;输出feature map表示为
(
4
∗
1
)
(4*1)
(4∗1)的向量;卷积表示为
(
4
∗
16
)
(4*16)
(4∗16)的矩阵。即:
o
u
t
p
u
t
=
C
∗
i
n
p
u
t
output =C*input
output=C∗input
反卷积可以表示为如下图的矩阵操作:
- input feature map(2*2)
- 卷积核尺寸(3*3)
- output feature map(4*4)
输入feature map表示为 ( 4 ∗ 1 ) (4*1) (4∗1)的向量;输出feature map表示为 ( 16 ∗ 1 ) (16*1) (16∗1)的向量;反卷积表示为 ( 16 ∗ 4 ) (16*4) (16∗4)的矩阵。
如果卷积操作表示为: o u t p u t = C ∗ i n p u t output =C*input output=C∗input,那么当 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=CT∗output,所以反卷积也称作转置卷积。注意真实情况中,反卷积的卷积核,并不是某个卷积的卷积核的转置。也就是说,反卷积只能恢复尺寸,不能恢复数值。
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中的反卷积操作结语所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复