Learning Deconvolution Network for Semantic Segmentation
这个就是大家所说的反卷积网络。
Category of Deconvolution
Deconvolution在Deep Learning领域大致可以分为下面 2 个种类。
Transposed Convolution
convolution的反转过程,这篇 paper 讲的就是这个。Convolutional Sparse Coding
它是一种
representation learning的一种,目的是根据从图像中学到的features完全的还原图像。
Motivation
这篇文章针对性比较强,就是针对FCN的缺点:
FCN的filter是fixed-size的:大的物体可能会产生错误的 segmentation,小的物体可能无法被捕捉到。FCN只能得到较为粗糙的高层的特征:因为最后一层只是简单的bilinear interpolation,所以细节处理不好。
作者就想:FCN的deconvolution部分比较浅,如果直接用一个比较深的DeconvNet,效果会不会更好?
Architecture
首先给出 Architecture 的示例图如下图。
Architecture 就分为2部分,在上图(本 paper)中两者是镜像关系:
Convolution network:作用是作为
feature extractor,提取输入图片的特征。Deconvolution network: a mirror of Convolution network, shaper generator。作用是生成
heat map。注意这部分中的filter是可以学习的。
Deconvolution network
最重要的是引入了2个概念,示例图如下图。
Unpooling
就是
pooling的反转过程,实现上是通过在pooling的时候记录保留下来的值的位置,在unpooling的时候把值还原到相应的位置,其它的位置填充0。Deconvolution
正如上面开始所说,这里的
Deconvolution不是信号处理中的Deconvolution(把convolution处理过的信号,尽最大可能的还原回去),这里只是想说明Convolution把图片变小,为了完成某些任务需要把图片再变大回去,所以叫Deconvolution(因为Convolution的叫法本身也是错误的),从这个角度理解,我认为这种叫法也是可以说得通的(取Deconvolution这中叫法的人肯定想对那些说这种叫法不合理的人说:你们就不知道意会吗,非要从代码实现上来说吗?!)。大多数人所说的更合适的叫法是
Transposed Convolution,有两个原因:它就是
Convolution的一种镜像,所以叫Transposed Convolution。从代码实现上,他就是把
filter取了转置(Transpose),而这种做法又跟backwards propagation的代码实现一样,所以又叫Backwards Convolution。这两种叫法都与代码实现上有很大很大的关系。
关于这点可以参考后面的参考文献中的第一个,其中有些回答还是挺靠谱的。
Visualization of activation maps from deconvoluton layers
可以看到随着
deconvolution的进行,图片的细节是越来越清晰的。
Comparison with FCN
细节处理比
FCN要好。
Trainning
Batch Normalization
- Added to the output of every convolutional and deconvolutional layer
Two-stage Training
easy examples first
fine-tune the trained network with more challenging examples later
Experiments
- 然后作者在不同的数据集上做了实验,比较了不同的方法的取得的效果,具体内容可以参考论文。
Conclusion
Summary
suitable to generate dense and precise object segmentation masks
is advantageous to handle object scale variations by eliminating the limitation of fixed-size receptive field in the FCN.
ensemble approach, which combines the outputs of the proposed algorithm and FCN-based method, and achieved substantially better performance thanks to complementary characteristics of both algorithms.
Advantages
Variable sized receptive filed
Get finer details of an object
Application
Image Segmentation
CNN visualization
Unsupervised learning