转置卷积/反卷积(Transpose Convolution/Deconvolution)详解

1、提出背景及其应用

  一般情况下,图像在经过多层的卷积运算后,其输出特征图的尺寸将会减小,图片分辨率降低。而在某些特定的任务中,我们需要将图像恢复或一定程度上增大,以便于后续的使用。这个恢复/增大图像尺寸,实现图像由小分辨率到大分辨率映射的操作,叫做上采样(Upsample)。转置卷积便是常见的上采样方法之一。与传统的上采样方法(最近邻插值、双线性插值等)相比,转置卷积不会使用预先设定的插值方法。它具有可学习的参数,通过让网络自行学习,来获取最优的上采样方式。转置卷积的本质是输入和输出关系被反向处理(标准卷积为多对一,转置卷积为一对多)。转置卷积在某些特定的领域应用广泛,如:

  • CNN 的可视化:通过转置卷积将 CNN 中得到的特征图还原到像素空间,以观察特定的特征图对哪些模式的图像敏感;
  • 语义分割:使用卷积层在编码器中进行特征提取,然后在解码层中恢复原先的尺寸(使用转置卷积),最终对原来图像的每个像素都进行分类。经典方法如:FCN 和 UNet。

2、反卷积过程图解

图1. 反卷积图解

  对图片进行转置卷积处理总体流程:对输入图像进行填充 → \rightarrow 正常卷积操作(卷积核旋转) → \rightarrow 按需要对输出特征图进行裁剪。

3、反卷积数学推导

在这里插入图片描述
在这里插入图片描述
反卷积操作只是恢复了矩阵 X X X 的尺寸大小,并不能恢复 X X X 的每个元素值

4、输出特征图尺寸

input_size n ^ \rm \hat{n} n^kernel_sizekpaddingpstrides,则卷积输出尺寸 n ˉ \rm \bar{n} nˉ为:

n ˉ = ⌊ n ^ + 2 p − k s ⌋ + 1 \rm \bar{n}=\lfloor \frac{\hat{n}+2p-k}{s} \rfloor+1 nˉ=sn^+2pk+1

n ˉ \rm \bar{n} nˉ 为输入尺寸,则可推出转置卷积输出尺寸 n ^ \rm \hat{n} n^ 为:

n ^ = ( n ˉ − 1 ) ⋅ s − 2 p + k \rm\hat{n}=(\bar{n}-1)\cdot s -2p + k n^=(nˉ1)s2p+k

观察以上两式可得,总可以使用直接卷积来模拟转置卷积。

5、代码实现(Numpy/Pytorch)

【本文参考】

[1] 听六小桨讲AI | 第5期:卷积的变体之转置卷积;
[2] Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv);
[3] 卷积与反卷积关系超详细说明及推导(反卷积又称转置卷积、分数步长卷积);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值