反卷积,上采样,上池化的理解

https://mp.weixin.qq.com/s/TJMV6sC_w0xMd2bSmQkJ0g

反卷积,上采样,上池化的理解

机器学习AI算法工程 2022-03-11 11:00

图片

向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

posted @ 2022-03-11 13:30  水木清扬  阅读(83)  评论(0编辑  收藏  举报