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

原文:https://blog.csdn.net/A_a_ron/article/details/79181108

前言

在看图像语义分割方面的论文时,发现在网络解码器结构中有的时候使用反卷积、而有的时候使用unpooling或或者unsampling,查了下资料,发现三者还是有不同的。这里记录一下。

图示理解

使用三张图进行说明:
反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)_第1张图片

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

有关反卷积的详细信息,可以参考这篇博客。

反卷积与UnPooling的可视化

对网络层进行可视化的结果:
反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)_第2张图片

图(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和反卷积的结果。两者各有特点。

图像来自论文《Learning Deconvolution Network for Semantic Segmentation》

后记

目前Keras中只有UnSampling和反卷积的函数,还没有UnPooling的实现代码,目前自己正在写UnPooling的代码,如果效果好的话,会贴出代码网址分享给大家。

--------------------- 本文来自 Atomwh 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/A_a_ron/article/details/79181108?utm_source=copy

你可能感兴趣的:(tensorflow,图像)