重要说明:严格来说,论文所指的反卷积并不是真正的 deconvolution network
。 关于 deconvolution network
的详细介绍,请参考另一篇博客:什么是Deconvolutional Network?
一、参考资料
Learning Deconvolution Network for Semantic Segmentation
二、Deconvolution Network
deconvolution network
是卷积网络(convolution network
) 的镜像,由反卷积层(deconvolutional layers
)和上采样层(Unpooling layers
)组成。本质上,deconvolutional layers
是由卷积层(convolutional layers
)组成的。
deconvolution network
=deconvolutional layers
+Unpooling layers
1. 引言
原始的FCN存在以下问题:
- 第一,感受野为固定大小;物体大于或小于感受野会被
fragmented or mislabeled
。大物体分割不连续,小物体被忽视。虽然FCN加入了skip architecturer
,但是这并不是根本的解决方案,问题在于没有详细的边界和语义; - 第二,输入反卷积层的
label map
太粗糙,反卷积过程太简单,使得物体的细节信息丢失或被平滑;在FCN论文中,label map
大小仅仅为16x16,以deconvolution
作为双线性差值来获得原始输入图像大小的分割。由于缺少深度的反卷积网络,很难精确重建物体边界这种高度非线性结构。
2. 论文创新点
为了克服FCN存在的问题,论文用了一个完全不同的策略进行语义分割,主要贡献如下:
- 学习一个多层的
deconvolution network
,它由deconvolutional layers
,Unpooling layers
和ReLU layers
组成。 - 将训练好的网络应用在目标候选区域(object proposal),来获得
instance-wise segmentions
。再将这些单个的分割结果结合起来组成最终的语义分割结果。这解决了FCN存在的物体尺度问题,能够识别细小的结构。
3. Deconvolution Network
与FCN对比
本文与FCN最大的不同,应该是上采样阶段的不同,FCN的上采样利用转置卷积(Conv2DTranspose
),本文利用deconvolution network
,也就是Unpooling layers
+deconvolutional layers
。可以简单理解,基于 Conv2DTranspose
的上采样和基于 Unpooling layers
+deconvolutional layers
的上采样,都可以实现语义分割任务。
通过 deconvolutional layers
和 Unpooling layers
的结合,论文可以产生更精细的分割图。和FCN的对比如下图:
4. Deconvolution Network
网络结构
论文提出的网络结构由卷积网络层和反卷积网络层组成。卷积网络层对应于特征提取器,将输入图像转换为多维特征表示;而反卷积网络是一个形状(shape)生成器,对卷积网络层中提取的特征进行对象分割。网络的最终输出是一个与输入图像尺寸相同的概率图,表示每个像素点属于预定义类别的概率。
-
卷积网络(convolution network) : VGG-16(去除分类层),包括:
convolutional layers
,Relu layers
,pooling layers
。 -
反卷积网络(deconvolution network) :反卷积网络是卷积网络的镜像,包括一系列的
Unpooling layers
,deconvolutional layers
,Relu layers
。反卷积网络输出密集的逐像素类别概率图(densepixel-wise class probability map)。
4.1 Unpooling layers
Unpooling layers
是通过回溯原始位置来获得更好的结构。
首先,在执行pooling操作时用 switch variables
记录 max pooling
选择最大值的位置(location
)。然后,在 unpooling
阶段,利用 switch variables
还原位置,恢复 pooling
之前的尺寸大小,其它像素位置用零元素填充,得到稀疏的激活图(sparse avtivation map)。
4.2 deconvolution layers
对稀疏激活图进行deconvolution操作,使得稀疏激活图变成稠密激活图。执行deconvolution后,裁剪(crop)激活图的边界,使其等于 Unpooling layers
的输出尺寸(也是 deconvolutional layers
输入的大小)。
论文中,低层的 deconvolutional layers
可获得目标的粗略信息(例如:位置,形状,范围),而高层的 deconvolutional layers
可获得更精细的信息。
5. Deconvolution Network
可视化
可视化 Deconvolution network
的每一层,如下图所示:
图(a)是输入层;图(b)是14x14 deconvolution layers
的结果;图©是28x28的 Unpooling layers
的结果;图(d)是28x28 deconvolution layers
的结果;图(e)是56x56 Unpooling layers
的结果;图(f)是56x56 deconvolution layers
的结果;图(g)是112x112 的Unpooling layers
的结果;图(h)是112x112 deconvolution layers
的结果;图(i)和图(j)分别是224x224 Unpooling layers
和 deconvolution layers
的结果。
6. 总结
论文将 semantic segmentation
问题视为 instance-wise segmentation
问题,也就是 pixel-wise prediction
。网络是以包含目标的子图像(将它视作一个instance)作为输入,并以此来产生 逐像素的类别预测结果(pixel-wise class prediction
)。最后将图像中每个候选区域的输出整合起来,得到原始图像的输出。
instance-wise segmentation
VS image-level prediction
:
instance-wise segmentation
:能处理不同尺度大小的物体,识别细节信息;减少搜索空间,减少训练的复杂度,减少存储需求;image-level prediction
:固定大小感受野,不能解决上述问题。