039、转置卷积

发布时间:2023年12月24日

之——增大高宽

杂谈

? ? ? ? 通常来说,卷积不会增大输入的高宽,通常要么不变,要么减半;如果想要直接padding来增加高宽,在不断的卷积过程中,padding的0越来越多,最后要做像素级的判断时候,由于有效图像变得太小,将难以进行分割。

? ? ? ? 所以引入转置卷积来增大输入的高宽。


正文

1.转置卷积

? ? ? ? 如下操作:

? ? ? ? 转置卷积,为什么叫转置,其实就是一个逆过程,在原来的代码实现中依靠转置实现。

? ? ? ? 实际的转置卷积操作过程,先填充,然后转置核,然后正常卷积,可以观察到输出和上面操作是一样的:

?

? ? ? ? 实在想不通就反过来想,再想不通就别想了,会用就行。?


2.实现

? ? ? ? 不同的步幅,在转置卷积中,步幅是输出的步幅,也就是间隔多少加起来:

X, K = X.reshape(1, 1, 2, 2), K.reshape(1, 1, 2, 2)
tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, bias=False)
tconv.weight.data = K
tconv(X)

????????

tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, stride=2, bias=False)
tconv.weight.data = K
tconv(X)

? ? ? ? ?填充在转置卷积中变成了删除,例如,当将高和宽两侧的填充数指定为1时,转置卷积的输出中将删除第一和最后的行与列。

tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, padding=1, bias=False)
tconv.weight.data = K
tconv(X)
#tensor([[[[4.]]]], grad_fn=<ConvolutionBackward0>)

? ? ? ? 下面代码证明了卷积与转置卷积的形状可逆:

X = torch.rand(size=(1, 10, 16, 16))
conv = nn.Conv2d(10, 20, kernel_size=5, padding=2, stride=3)
tconv = nn.ConvTranspose2d(20, 10, kernel_size=5, padding=2, stride=3)
tconv(conv(X)).shape == X.shape
#True

?


3.意义

? ? ? ? 转置卷积最直观的意义是可以把图像灵活变大,但实际上,对应于卷积的从图像中提取出特性模式的作用,转置卷积的作用就是从特定模式恢复到原图像的分类聚类这样一个操作,可以理解为原图像在语义分割中被分为了不同类别的像素点聚类,一个常见的寓意分割模型要做的就是先从原图中得到特征模式,而后从特征模式恢复到与原图大小相当的这些类别的分割聚类图像,也就是还原到标签掩膜图。

? ? ? ? 这在网络中通常被称为一个上采样过程,不同于简单分类的目标只是个类别,语义分割的监督的目标是原图大小的一个向量,但特征提取是个下采样过程,原图会变小,所以需要上采样回去才能进行监督。上采样的传统方法是线性插值,但做不到很好的拟合,所以线性插值一般用于初始化。

? ? ? ? 语义分割的下采样后上采样的过程看似丢掉了空间的细节信息,实际上是将空间信息在通道维度进行一个扩散,在特征维度进行信息增加,所以从体量来看是没有损失信息的。


4.补充

????????转置卷积(Transpose Convolution),也被称为反卷积(Deconvolution)或分数步长卷积(Fractionally Strided Convolution),是深度学习中的一种操作,常用于图像处理、语音处理和自然语言处理等领域。虽然名字中包含"卷积",但它实际上是与标准卷积操作相反的一种操作。

????????在深度学习中,卷积神经网络(CNN)被广泛用于图像识别、语音处理等任务。卷积操作通过卷积核(filter)在输入数据上滑动,计算一系列局部区域的加权和,从而提取特征。而转置卷积则是将这个过程反过来,从输入中生成更大的输出。

转置卷积的过程如下:

  1. 扩展输入空间: 转置卷积首先在输入的每个元素之间插入一些新的元素,使得输入的大小变得更大。

  2. 使用卷积核: 接下来,与标准卷积操作相似,通过一个可学习的卷积核对扩展后的输入进行卷积操作。这个卷积核的权重是可以被训练的,就像在标准卷积中一样。

  3. 调整步幅: 转置卷积允许指定输出的步幅,这是通过在输入之间插入零元素来实现的。这使得输出的大小可以灵活地调整。

  4. 调整填充: 转置卷积也可以包含填充操作,以控制输出的大小。填充在输入的周围添加了一些额外的元素,以确保输出的大小满足特定的需求。

????????转置卷积广泛应用于图像分割、物体检测、生成对抗网络(GANs)等任务中。在图像生成中,转置卷积可以将低分辨率的特征图升采样为高分辨率的图像。在生成对抗网络中,生成器网络通常使用转置卷积来将潜在空间中的随机向量映射到生成图像的空间。

需要注意的是,"反卷积"这个术语可能会引起混淆,因为在数学上,真正的反卷积与转置卷积并不相同。在实际应用中,人们通常使用"反卷积"这个术语来描述转置卷积操作。

文章来源:https://blog.csdn.net/weixin_55706338/article/details/135171065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。