本文记录了博主阅读论文《SegNet: A Deep Convolutoal Encoder-Decoder Architecture for Image Segmentation》的笔记,代码,教程,官网(含Caffe实现代码和demo)。更新于2019.04.09。
文章目录
摘要
本文提出了一种用于像素级语义分割的深度全卷积神经网络结构SegNet。该网络核心可训练分割部分包括一个编码网络(encoder network),一个对应的解码网络,和一个像素及分类层。其中,编码网络在拓扑结构上与VGG16网络中的13层卷积层相同。解码器的作用是将低分辨率的编码特征图还原到完整的输入分辨率上,从而用于像素级分类任务。
SegNet的创新点在于译码器对输入的低分辨率特征图的上采样处理方式。具体来讲,解码器利用在max-pooling过程中计算的池化indices,计算对应的编码器的非线性上采样。这个操作就省去了上采样过程的学习。上采样后的map是稀疏的,再用可学习的filter通过卷积计算稠密的特征图。
作者比较了本文中的结构与FCN、DeepLab-LargeFOV和DeconvNet结构。由于SegNet的设计初衷来源于场景理解(scene understanding),因此在内存和计算时间上效率很高,可学习参数量也比其他结构小,可以用SGD端到端训练。在道路场景和SUN RGB-D室内场景下进行了排名。
Introduction
Literature Review
Architecture
下图是SegNet网络结构:
其中,编码器含有13个卷积层,分别对应了VGG16(用于目标分类)的前13个卷积层,因此就可以用在大数据库下训练得到的权重初始化网络(ImageNet large scale visual recognition challenge)。此外,作者丢弃了全连接层,从而保留在最深编码输出处的高分辨率特征图,同时与其他网络结构相比(如FCN和DeconvNet,具体见下表),大幅减少了SegNet编码部分的参数量(从134到14.7M)。
编码器中的每一层都对应了解码器中的一层,因此解码器也有13层。解码器的输出随后传递给一个多类别soft-max分类器,从而生成每个像素点在个类别下的独立概率。
编码器网络中的每一个encoder都用一组filter进行卷积计算,随后batch normalized,再应用逐像素的ReLU m a x ( 0 , x ) max(0,x)