介绍

SegNet 的新颖之处在于解码器对其较低分辨率的输入特征图进行上采样的方式。具体地说,解码器使用了在相应编码器的最大池化步骤中计算的池化索引来执行非线性上采样。这种方法消除了学习上采样的需要。经上采样后的特征图是稀疏的,因此随后使用可训练的卷积核进行卷积操作,生成密集的特征图。我们提出的架构与广泛采用的 FCN 以及众所周知的 DeepLab-LargeFOV,DeconvNet 架构进行比较。比较的结果揭示了在实现良好的分割性能时所涉及的内存与精度之间的权衡。

关键特点:

  1. SegNet 在解码器中使用去池化对特征图进行上采样,并在分割中保持高频细节的完整性。
  2. 编码器不使用全连接层(和 FCN 一样进行卷积),因此是拥有较少参数的轻量级网络。

网络结构

SegNet有一个编码器网络和一个解码器网络,最后跟着一个pixel级的分类层。其结构如图所示:

1.png

编码器网络由VGG16的前13个卷积层构成,因此其参数可以通过迁移学习来进行初始化。每个编码器层都有一个对应的解码器层,因此解码器层也有13层。编码器最后的输出被输入到softmax分类器中,产生每个pixel的类别概率。

2.png

如图所示,编码器中的每一个最大池化层的索引都存储了起来,用于之后在解码器相应的去池化层中对相应特征图进行去池化操作。然后,使用可训练的卷积核对去池化后的稀疏特征图进行卷积操作,生成密集的特征图。需要注意的是,第一个编码器层的输入是3通道的RGB图像,而它对应的最后一个解码器层的输出是一个多通道的特征图,除此之外其他的编码器层与解码器层的通道数都是对称的。

我们将SegNet与有相似结构的DeconvNet和U-Net进行对比。由于使用了全连接层,DeconvNet相比SegNet参数量要大得多,需要更多的计算资源且难以端到端地训练。U-Net相比于SegNet,没有利用池化索引进行上采样,而是使用整个编码器特征图(代价是更高的内存开销)与相应的解码器特征图进行连接后使用转置卷积进行上采样;U-Net没有VGG16网络结构中的conv5和max-pooling5,而SegNet使用整个预训练的VGG16卷积层参数进行参数初始化。

编码器变体及比较

SegNet与FCN编码器工作方式的比较:

3.png

4.png

比较结果可总结如下:

  1. 当存储整个编码器特征图时,性能达到最佳。
  2. 当内存开销受到限制时,可以通过存储编码器特征图的压缩形式(降维,最大池化索引等),并使用合适的解码器类型(如SegNet解码器)来改进性能。
  3. 给定一个编码器网络,更大规模的解码器网络有助于提升性能。

实验结果

5.png

参考文献

[1] SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

[2] 一文概览主要语义分割网络:FCN,SegNet,U-Net...

Last modification:August 11th, 2019 at 11:13 pm
如果觉得我的文章对你有用,请随意赞赏