反卷积,上采样,上池化的理解
向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
长按图片,识别二维码
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx