- Title:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
- Data:2019/04/08
- Abstract:SegNet创新的使用了Encoder-Decoder结构,创新之处在于使用Encoder下采样时池化索引来做Decoder上采样的指引.
目录
简介:
在解读论文之前先了解语义分割是干什么的,可以直接访问链接即可:语义分割前世今生
SegNet 论文解读
SegNet:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
收录:PAMI2017(IEEE Transactions on Pattern Analysis and Machine Intelligence)
效果图
1 Abstract
论文提出了一个全新的全卷积的Semantic Segmentation模型:SegNet
模型主要由:编码网络(encoder network),解码网络(decoder network)和逐像素分类器(pixel-wise classification layer)组成。
创新:SegNet的新颖之处在于decoder阶段的上采样方式,具体来说,decoder时上采样使用了encoder阶段下采样的最大池化的索引(indices)。考虑到上采样是稀疏的,再配合滤波器产生最后的分割图。SegNet在inference期间占用的存储量和计算时间相比于其他模型(FCN[1],DeepLab[2],etc)效果都比较好。
动机:在场景理解的推动下,网络在储存器和计算时间上是有效的,同时训练参数的数量上也明显减小,并且可以使用SGD[3]进行端到端的训练。
2 Introduction
Semantic Segmentation常用于道路场景分割,大多数像素属于大类,需要平滑的分割,模型要能够依据形状提取物体,这需要保留好的边界信息,从计算的角度来考虑,需要有效的存储量和计算时间。
而现有的Semantic Segmentation的问题在于:最大池化和下采样会降低feature map的分辨率(即降低feature map分辨率会损失边界信息),SegNet针对这一问题设计了将低分辨率feature map映射到高分辨率的方法(利用池化索引),从而产生精确边界的分割结果。
SegNet的encoder部分使用的是VGG16[4]的前13层(即使用预训练的VGG16做特征提取层),核心在于decoder部分,decoder对应encoder的每一层,decoder的上采样使用的时encoder下采样的索引,这样做有以下几个优点:
1.改善边界描述
2.减少end2end的训练参数
3.这样的形式可用于多种encoder-decoder架构
本文的主要贡献在于:
1.对比分析SegNet的decoder和FCN
2.在CamVid和SUN RGB-D上评估了模型
3.Related work
传统的Semantic Segmentation方法:用随机森林(RF)[5],Boosting等做类别的中心预测,用SfM提取特征,配合CRF提高预测精度。但是这些方法效果都不好,总结原因是这些方法都需要提高分类特征。
而近期深度卷积网络在分类问题上表现出色,考虑将深度网络应用到Semantic Segmentation上,例如:FCN,效果比传统方法好很多。有工作将RNN[6]、条件随机场(CRF)引入配合decoder做预测,有助于提高边界描绘能力,并且指出了,CRF-RNN这一套可以附加到包括SegNet在内的任何深度分割模型。
现有的多尺度的深度神经网络架构的应用,常见两种形式:
1.将输入放缩为多个尺度得到相应的feature map
2.将一张图送到模型,得到不同层的feature map
###这些方法的共同想法都是使用多尺度信息将高层的feature map包含的语义信息与底层的feature map包含的精度信息融合到一起。但是,这样方法参数多,比较难训练。###
4.Architecture
SegNet的网络结构如下图,总体由以下部分组成:
编码网络(encoder network):由13个卷积层组成(使用的时预训练的VGG16的前13层),该部分提取输入特征,用于目标分类,这就是使用预训练的VGG原理所在,至于丢弃FC层是为了保持更高的分辨率,同时也减少了参数。
解码网络(decoder network):每个encoder会对应一个decoder,故decoder具有13层,将低分辨率的feature map映射回和输入一样大小分类器(mask).
像素分类层(pixelwise classification layer):decoder的输出会送到分类层,最终为每个像素独立的产生类别概率
Encoder network: Encoder network分为5个block,每个block由Conv+BN + MaxPooling组成,MaxPooling实现下采样操作,核长为2,步长为2.
因为使用的pre-train的VGG16模型的前13层,模型的参数会减少很多(FC层没了,参数少了很多)。当然这和原始的VGG16是有区别的,如上图。卷积层使用的是`Conv + Batch Norm + ReLU`结构。
Decoder network:模型在encoder network时使用Pooling时会记录Pooling Indices(pooling前后的对应位置),在decoder network会用前面记录的位置还原,这也是论文的创新之处。 decoder network同样也为5个block,每个block由Upsampling + Conv + BN组成,需要注意的decoder阶段是没有加非线性激活的(即没有ReLU)。
分类层:在decoder输出上加一个卷积层,卷积核个数为分类的通道数,即每个通道代表一类分割结果
decoder变体SegNet-Basic:
SegNet的较小版本,4个encoder和4个decoder,
1.encoder阶段是LRN + (Conv+BN +ReLU + MaxPool)x4 论文给出的时卷积不使用bias
2.decoder阶段是(UpPool+Conv+ BN)x4 + Conv(分割层)
卷积核大小一直使用的时7×7 7×77×7,最高层的feature map接收野是原图的106×106 106×106106×106大小。
对于池化层和卷积层公式为:
其中Srf 是从高层feature向底层feature迭代计算,Stride 为步长,Ksize 为卷积核大小.
5.Experiment
对比SegNet和FCN实现decoder:
SegNet在UpPool时使用的是index信息,直接将数据放回对应位置,后面再接Conv训练学习。这个上采样不需要训练学习(只是占用了一些存储空间)。FCN采用transposed convolutions策略,即将feature 反卷积后得到upsampling,这一过程需要学习,同时将encoder阶段对应的feature做通道降维,使得通道维度和upsampling相同,这样就能做像素相加得到最终的decoder输出.
对不同类型decoder的做了如下实验:
实验设置如下表:
结果如下:
分析实验结果,上述实验结果:
1.当encoder的所有feature都保存下来,即FCN-Basic-NoDimReduction,效果最佳。这主要体现在BF(语义轮廓描绘度量)值上.
2.当inference的存储受限时,可适当的减少feature通道,配合decoder可得到折中的效果
3.上采样学习是比单纯的双线性插值效果要好,这强调了学习decoder的必要性。
4.相比于FCN,SegNet有更少的内存利用率和更高效的计算。
与其他深层网络相比:
在SUN RGB-D上与其他深层网络相比:
6.Conclution
模型主要在于decoder阶段的upsampling使用的时encoder阶段的pooling信息,这有效的提高了内存利用率,同时提高了模型分割率。但是吧,SegNet的inference相比FCN没有显著提升,这样end-to-end的模型能力还有待提升。
参考文献:
[1]J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in CVPR, pp. 3431–3440, 2015.
[2] C. Liang-Chieh, G. Papandreou, I. Kokkinos, K. Murphy, and A. Yuille,“Semantic image segmentation with deep convolutional nets and fully connected crfs,” in ICLR, 2015.
[3] L. Bottou, “Large-scale machine learning with stochastic gradient descent,” in Proceedings of COMPSTAT’2010, pp. 177–186, Springer,2010.
[4] K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” arXiv preprint arXiv:1409.1556, 2014.
[5] C. Zhang, L. Wang, and R. Yang, “Semantic segmentation of urban scenes using dense depth maps,” in ECCV, pp. 708–721, Springer, 2010.
[6] S. Zheng, S. Jayasumana, B. Romera-Paredes, V. Vineet, Z. Su, D. Du,C. Huang, and P. H. Torr, “Conditional random fields as recurrent neural networks,” in Proceedings of the IEEE International Conference onComputer Vision, pp. 1529–1537, 2015.