赞
踩
感谢原作者的工作
什么是反卷积?
上采样(Upsample)
应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(图像的语义分割等)。这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。
反卷积(Deconvolution,也称作Transposed Convolution)
上采样有3种常见的方法:
这里指的反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:
反卷积是一种特殊的正向卷积,先按照一定的比例通过补
0
0
0来扩大输入图像的尺寸,再进行正向卷积。
卷积可以表示为如下图的矩阵操作:
输入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
反卷积可以表示为如下图的矩阵操作:
输入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,所以反卷积也称作转置卷积。注意真实情况中,反卷积的卷积核,并不是某个卷积的卷积核的转置。也就是说,反卷积只能恢复尺寸,不能恢复数值。
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
注意,这里的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))
对应的情况为二倍上采样
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。