语义分割学习笔记(二)转置卷积

目录

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) – 填充。 默认为 0

  • output_padding (int or tuple, optional) – 额外的填充在输出。 默认为 0

  • groups (int, optional) – 是否使用组卷积。 默认为 1

  • bias (bool, optional) – 是否在输出上添加偏执. 默认为 True

  • dilation (int or tuple, optional) – 是否使用膨胀卷积、空洞卷积。 默认为 1

 

4.实战案例

pytorch官方案例:

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

输出

输入形状大小: torch.Size([1, 16, 12, 12])
经过3x3的下采样后,形状大小: torch.Size([1, 16, 6, 6])
经过3x3的转置卷积后,形状大小: torch.Size([1, 16, 12, 12])

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向岸看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值