https://mp.weixin.qq.com/s/TJMV6sC_w0xMd2bSmQkJ0g
反卷积,上采样,上池化的理解
向AI转型的程序员都关注了这个号
机器学习AI算法工程 公众号:datayx
上采样与上池化
图示理解,使用三张图进行说明:
图(a)表示UnPooling的过程,特点是在Maxpooling的时候保留最大值的位置信息,之后在unPooling阶段使用该信息扩充Feature Map,除最大值位置以外,其余补0。
Unpooling是在CNN中常用的来表示max pooling的逆操作。
鉴于max pooling不可逆,因此使用近似的方式来反转得到max pooling操作之前的原始情况。
简单来说,记住做max pooling的时候的最大item的位置,比如一个3x3的矩阵,max pooling的size为2x2,stride为1,反卷积记住其位置,其余位置至为0就行:
与图(a)相对的是图(b),两者的区别在于UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map。从图中即可看到两者结果的不同。
简单来说:上采样指的是任何可以让你的图像变成更高分辨率的技术。
最简单的方式是重采样和插值:将输入图片进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如***双线性插值***等插值方法对其余点进行插值来完成上采样过程。在FCN、U-net等网络结构中,我们见识到了上采样这个东西。
图(c)为反卷积的过程,反卷积是卷积的逆过程,又称作转置卷积。最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),理论是反卷积可以实现UnPooling和unSampling,只要卷积核的参数设置的合理。
如下图所示,我们要从一个2x2的矩阵,反推出一个4x4的矩阵
如何进行这样的反卷积操作?
https://blog.csdn.net/jasonleesjtu/article/details/89791528
如何理解深度学习中的deconvolution networks?
https://www.zhihu.com/question/43609045/answer/132235276
可视化的结果:
图(a)是输入层;
图(b)是14*14反卷积的结果;
图(c)是28*28的UnPooling结果;
图(d)是28*28的反卷积结果;
图(e)是56*56的Unpooling结果;
图(f)是56*56反卷积的结果;
图(g)是112*112 UnPooling的结果;
图(h)是112*112的反卷积的结果;
图(i)和图(j)分别是224*224的UnPooling和反卷积的结果。两者各有特点。
附录
反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)、可视化代码:
https://github.com/heuritech/convnets-keras
https://github.com/kvfrans/feature-visualization
https://github.com/FHainzl/Visualizing_Understanding_CNN_Implementation
机器学习算法AI大数据技术
搜索公众号添加: datanlp