反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)

反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)相关代码和可视化代码在附录

反卷积(Deconvolution)

反卷积(转置卷积、空洞卷积(微步卷积))近几年用得较多,可以概括为:反卷积=上采样=(转置卷积+微步卷积)⊆ 空洞卷积=一般意义上的广义卷积(包含上采样和下采样)。
在这里插入图片描述
这是空洞卷积(微步卷积)的例子,其中下面的图是输入,上面的图是输出,显然这是一个upsampling的过程,我们也称为反卷积。

Upsampling(上采样)

在FCN、U-net等网络结构中,我们见识到了上采样这个东西。那么,什么是上采样呢?简单来说:上采样指的是任何可以让你的图像变成更高分辨率的技术。

最简单的方式是重采样和插值:将输入图片进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如***双线性插值***等插值方法对其余点进行插值来完成上采样过程。

Unpooling

Unpooling是在CNN中常用的来表示max pooling的逆操作。这是从2013年纽约大学Matthew D. Zeiler和Rob Fergus发表的《Visualizing and Understanding Convolutional Networks》中产生的idea:
鉴于max pooling不可逆,因此使用近似的方式来反转得到max pooling操作之前的原始情况
简单来说,记住做max pooling的时候的最大item的位置,比如一个3x3的矩阵,max pooling的size为2x2,stride为1,反卷积记住其位置,其余位置至为0就行:
在这里插入图片描述

图像理解

使用三张图进行说明:

在这里插入图片描述

图(a)表示UnPooling的过程,特点是在Maxpooling的时候保留最大值的位置信息,之后在unPooling阶段使用该信息扩充Feature Map,除最大值位置以外,其余补0。与之相对的是图(b),两者的区别在于UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map。从图中即可看到两者结果的不同。图(c)为反卷积的过程,反卷积是卷积的逆过程,又称作转置卷积。最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),理论是反卷积可以实现UnPooling和unSampling,只要卷积核的参数设置的合理。

反卷积与UnPooling的可视化

对网络层进行可视化的结果:

在这里插入图片描述
图(a)是输入层;图(b)是1414反卷积的结果;图(c)是2828的UnPooling结果;图(d)是2828的反卷积结果;图(e)是5656的Unpooling结果;图(f)是5656反卷积的结果;图(g)是112112 UnPooling的结果;图(h)是112112的反卷积的结果;图(i)和图(j)分别是224224的UnPooling和反卷积的结果。两者各有特点。

附录

反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)、可视化代码:
https://github.com/heuritech/convnets-keras
https://github.com/kvfrans/feature-visualization
https://github.com/FHainzl/Visualizing_Understanding_CNN_Implementation

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值