目录
1.转置卷积Transposed Convolution概念
2.转置卷积操作步骤
3.转置卷积参数
4.实战案例
推荐课程:转置卷积(transposed convolution)_哔哩哔哩_bilibili
感谢霹雳吧啦Wz,真乃神人也。
1.转置卷积Transposed Convolution概念
转置卷积的作用:转置卷积是上采样方法中的一种, 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作,这时就需要通过上采样操作将图像恢复到原尺寸大小。
2.转置卷积操作步骤
转置卷积/反卷积
注:转置卷积不是卷积的逆运算,转置卷积也是卷积。
当填充为p,步幅为s时:
1.在输入特征图元素的行和列之间插入s-1行和列的0。
2.将输入特征图元素填充k-p-1行和列的0(k是核窗口大小)
3.将核矩阵上下、左右翻转
4.然后做正常卷积(填充=0,步幅=1)
输入的高(宽)为h,核为k,填充为p,步幅为s则转置卷积后h‘ = hs + k - 2p - s
例:当填充=1,步幅=2
3.转置卷积参数
torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True, dilation=1)
in_channels (int) – 输入通道数
out_channels (int) – 输出通道数
kernel_size (int or tuple) – 卷积核大小
stride (int or tuple, optional) – 步幅。 默认为 1
padding (int or tuple, optional) –
填充
。 默认为 0output_padding (int or tuple, optional) – 额外的填充在输出。 默认为 0
groups (int, optional) – 是否使用组卷积。 默认为 1
bias (bool, optional) – 是否在输出上添加偏执. 默认为
True
dilation (int or tuple, optional) – 是否使用膨胀卷积、空洞卷积。 默认为 1
4.实战案例
pytorch官方案例:文章来源:https://www.toymoban.com/news/detail-428802.html
import torch
from torch import nn
input = torch.randn(1, 16, 12, 12)
print("输入形状大小:",input.size())
# 下采样
downsample = nn.Conv2d(16, 16, 3, stride=2, padding=1)
# 上采样
upsample = nn.ConvTranspose2d(16, 16, 3, stride=2, padding=1)
# 先下采样
h = downsample(input)
print("经过3x3的下采样后,形状大小:",h.size())
# 再上采样
output = upsample(h, output_size=input.size())
print("经过3x3的转置卷积后,形状大小:",output.size())
输出:文章来源地址https://www.toymoban.com/news/detail-428802.html
输入形状大小: torch.Size([1, 16, 12, 12])
经过3x3的下采样后,形状大小: torch.Size([1, 16, 6, 6])
经过3x3的转置卷积后,形状大小: torch.Size([1, 16, 12, 12])
到了这里,关于语义分割学习笔记(二)转置卷积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!