Advertisement

【阅读笔记】《SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation》

阅读量:

本文整理了博客对论文《SegNet: A Deep Convolutoal Encoder-Decoder Architecture for Image Segmentation》的阅读笔记,并提供了详细的Caffe实现代码(GitHub仓库链接:https://github.com/alexgkendall/caffe-segnet)、一个完整的段落介绍(GitHub教程仓库链接:https://github.com/alexgkendall/SegNet-Tutorial)以及一个官方网站资源(包含Caffe实现代码和演示文稿)(http://mi.eng.cam.uk/projects/segnet/)。更新日期为2019年4月9日。

文章目录

  • 摘要

  • Introduction

  • Literature Review

  • Architecture

    • Decoder Variants
    • Training
    • Analysis
  • Benchmarking

    • Road Scene Segmentation
    • SUN RGB-D Indoor Scenes
  • Discussion and Future Work

  • Conclusion

摘要

本研究提出了一种基于深度全卷积神经网络实现像素级语义分割的结构段落。该网络的核心可训练分割模块由编码子网络、解码子网络以及像素级分类层组成。其中编码子网络的拓扑架构与基于13层卷积层构建的VGG16模型一致;解码器的功能是从低分辨率编码特征图重建至与输入分辨率相当的空间尺寸,并用于完成像素级别的分类任务。

SegNet的核心创新在于其解码器对输入端低分辨率特征图进行上采样的处理过程。具体而言,在Max-Pooling过程中所生成的位置信息被用来指导编码阶段非线性重建。这样做的结果是消除了对上采样阶段进行学习的需求。经过上述操作后得到的是一个稀疏度较低的空间分布结果,在此基础上通过可训练滤镜进行卷积运算以生成更加密集且完整的特征表示。

作者对本文提出的结构进行了与FCN、DeepLab-LargeFOV及DeconvNet等现有架构的对比分析。该网络设计目标源于对视觉理解能力的追求,在内存占用与计算速度方面表现出显著优势,并具有较低的可训练参数数量。此外,该模型特别适合通过随机梯度下降方法进行端到端训练。研究者分别在道路场景以及SUN RGB-D室内场景中进行了性能评估。

Introduction

Literature Review

Architecture

下图是SegNet网络结构:

在这里插入图片描述

编码器包含了一系列13个卷积层(具体对应了VGG16前13个卷积层),因此能够利用在ImageNet大规模视觉识别挑战赛中获得的权重初始化网络。此外,在舍弃全连接层后(与之相比),我们得以保留最深编码输出处的高分辨率特征图,并在此基础上与FCN以及DeconvNet等其他网络结构进行对比分析,在此过程中将SegNet编码部分的参数量从134减少至14.7 million。

在这里插入图片描述

编码器中的各层与解码器中的各层相互匹配,在此基础之上由此可知解码器共有13层结构。随后该解码器的输出结果会被传递至一个多类别的soft-max分类系统当中从而实现对每个像素点在各个类别下的独立概率计算

编码器网络中的每个编码器都通过一组滤波器执行卷积运算。随后经过批归一化处理,并对每个像素应用ReLU激活函数 max(0, x)。接着,在没有重叠的情况下采用2×2窗口进行最大值池化操作,从而实现输入图像的空间分辨率下降(缩小两倍)。其原因在于确保在小空间位移下输入图像的平移不变性(translation invariance over small spatial shifts)。采样后,在特征图中每个像素代表了原始输入图像中较大的空间区域。

尽管下采样与最大值池化能够在一定程度上增强分类任务下的平移不变性特性,但它们也会导致特征图的空间分辨率出现显著下降,从而丢失了一些重要的图像描述信息,例如边缘细节等关键特征,这对于分割任务来说是非常关键的信息来源

然而,这些逐渐消失的图像描述细节尤其是边缘信息对于分割任务来说是非常重要的

因此,为了确保分割任务能够有效捕捉到这些边缘信息,建议在执行下采样操作之前必须先捕获并保留这些边缘信息

如果忽略内存限制的话,则建议编码器每一层都应完整地保存其对应的特征层

然而,这种方法在实际应用场景中并不完全适用

为了避免上述问题,在本文中提出了一种新的存储策略

该策略仅需保存每个池化窗口的最大值位置索引

解码器基于之前存储的max-pooling indices进行upsampling输入的特征图。该过程输出的特征图具有稀疏性。解码技巧如下图所示。

在这里插入图片描述

卷积操作之后紧跟的是batch normalization模块。其对应的解码器层拥有多个通道(而非仅对应于三通道)。除此之外的所有层均保持与编码器相同的尺寸和通道数量。解码器输出被传递给一个可学习参数化的Softmax分类器。该分类器对每个像素独立地进行分类。其输出共有K个独立的概率分布通道。最终分割结果基于每个像素的最大概率类别进行判定。

与SegNet等架构相比较而言

Decoder Variants

许多分类结构的基础编码模块结构基本一致,在此基础之上主要区别在于采用了不同的解码模块。为了便于对比现有研究中的典型实现(即译码模块部分),我们采用了编解码各仅有4层的SegNet模型与之对比。在卷积操作后未添加偏置项,并且同样未采用ReLU激活函数。通过固定尺寸为7×7的窗口处理确保了平滑标签效果(即第4层特征图中一个像素对应输入图像覆盖106×106个像素区域)。

在图3左侧部分展示了SegNet所采用的技术方案,在这一部分中并未涉及具体的学习过程;然而,在获得稀疏特征图后需通过卷积操作将其转换为密集特征图。值得注意的是,在此过程中仅处理单个通道;即每个卷积核仅作用于对应层级的特征数据。这种方法显著降低了计算时间和参数数量。右侧部分展示了FCN中的解码策略;这种做法在内存占用方面存在较大压力:例如,在图像分辨率180x240像素时所需内存为11MB;其中第一层存储了64个不同通道的空间位置信息。

除此之外,作者进一步探索使用固定双线性插值权重进行上采样,并避免了权重学习的过程。在另一种极端情况下,则将所有64层特征添加到解码器中。为了提升内存消耗更大一些的效果,在这种情况下不需要进行尺度缩小操作(例如保留与输入相同的通道数量如64个),而是在解码器的最后一层直接延续第一层的通道数量(例如设为64个)。

此外, 作者还尝试了其他变体方法. 例如, 在 replication 中采用了上采样的方式; 另一种方法是基于固定稀疏indices array进行上采样操作. 然而, 在现有研究中并未发现采用max-pooling与sub-sampling结合的方式能够有效提升性能的情况; 这些方法在资源利用和收敛速度方面都表现欠佳.

这里博主总结一下所有的变体:

名称 结构 max-pooling sub-sampling 上采样 bias ReLU batch normalization 核函数 备注
SegNet-Basic 结构与SegNet相同,但是编解码器各只有4层 编码器 编码器 解码器用max-pooling indices上采样,无学习,采样后卷积 NO 编码器 BOTH 7x7 感受野106x106
FCN-Basic 编码器与SegNet-Basic相同,解码器用FCN解码方式(见Fig.3) 解码器8x8 先缩小至K再上采样(compress),上采样用双线性插值权重初始化
SegNet-Basic-SingleChannelDecoder 与SegNet-Basic相同,但卷积每次只处理一个特征图 训练参数和训练时间大幅减小
FCN-Basic-NoAddition 与FCN-Basic相同 没有编码器求和过程,只学习上采样kernels
SegNet-Basic-EncoderAddition 结构与SegNet-Basic相同,但是将所有64个特征图都加到对应解码器上
FCN-Basic-NoDimReduction 与FCN-Basic相同,但不用Compress

Training

该数据库包含了来自不同道路场景的图像数据集,在RGB格式(涵盖白天与夜晚场景)下提供了高质量的训练样本与测试样本各367张与233张,并具有高分辨率的特征图(分辨率达到360x480)。该数据集按照类别进行了精细划分:如道路、建筑、车辆等主要物体类别以及辅助物体如路牌、标志杆等共11个主要类别。经过预处理处理以增强数据集的质量:应用了局部对比度归一化方法进行处理(如局部对比度增强)。

编解码器的权重都遵循He等人文章所述的技术性初始化方法。

采用SGD作为优化方法,并设置学习率为0.1及动量因子为0.9。基于Caffe框架实现模型训练过程直至训练损失函数收敛为止。确保每个epoch中所有图片均按顺序遍历一次,并分割为mini-batch 12。(注意:此处括号中的说明属于补充信息而非必要内容)

选择的模型是在验证集上表现最好的模型。

损失: 交叉熵损失。损失在所有mini-batch中的所有像素点之间求和。当类别间的像素点个数变化很大的时候(比如天空、道路、建筑类别的像素点主导了整个CamVid数据库),对于不同类别的损失就需要增加权重了。这个操作称作 class balancing 。文中使用的是median frequency balancing,即分配给每个类别的权重的计算方式是,所有类别出现频率的中值除以类别频率。也就是说,出现频率大于中值的类别的权重小于1,而出现频率最小的类别的权重最大。论文作者也尝试了不使用class balancing或使用natural frequency balancing的方式训练不同的变体。

Analysis

通过以下三个指标进行定量评估(Pascal VOC2012 challenge所采用):

  • 总体准确性(G)——评估数据库中被正确分类像素的比例
  • 类别平均准确率(C)——各类别预测精确度的均值
  • 平均交并比(mIoU)——各类别交并比的平均值。

其中,mIoU较之于C具有更为严格的惩罚机制,因其对false positives的误判给予严厉惩罚。值得注意的是,该度量并未直接参与class balanced cross-entropy loss函数的优化过程。尽管mIoU亦称Jacard Index常被采用,在此领域中Csurka等研究者曾指出该度量并不总是符合人类对于分割质量的直观评判(ranks)。他们提供了一个实例表明即使在mIoU较高时也可能缺乏边界精度这一缺陷也被FCN开发者的内部讨论所提及。为此他们开发了一种基于边界特性的替代方法。

该方法的核心思想是基于F1-measure进行评估,在给定像素容忍度的前提下计算两类别间的precision和recall值。具体而言,在这一过程中将图像对角线长度设定为0.75%作为容差距离。对于单幅图像而言,在每个类别内部的所有样本均被用于计算该图像对应的F1-score;随后取测试集中所有图像所获得F1-score的平均值来确定边界F1-measure(BF)。

我们每隔一千次迭代计算一次训练损失直至损失收敛,在 mini-batch 大小为十二的情况下相当于每隔 thirty-three 个 epoch 测试一次。我们还观察到,在类别平均值最高的时候报告数值性能通常会对应较低的整体准确性这表明分割输出具有某种程度上的感知噪声

下表是结果。

在这里插入图片描述
在这里插入图片描述

Benchmarking

Road Scene Segmentation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SUN RGB-D Indoor Scenes

该数据库以其高难度著称,并包含了大量训练样本(共5285幅训练图像)与测试样本(共5050幅测试图像)。由于采用了多种传感器技术(不同传感器采集到的图像具有不同的分辨率),带来了分辨率上的差异。目标分为37个类别(如墙面、天花板、地面等)。每个类别内部呈现多样的形态特征,并且空间重叠与遮挡现象普遍存在,在测试集中常见的是多类别共存的情况。这些特性使得该分割任务成为极具挑战性的难题之一。研究者仅采用RGB通道的数据进行分析与实验,并在此基础上扩展了早期的研究成果——NYUv2数据集也被纳入该数据库范畴

拍摄道路场景通常更为简便,并非因为操作难度较低,而是由于对物体类别的关注集中在较为单一且均匀的空间区域上,并且车辆在路面上行驶时基本呈现平行状态。相比之下,在室内环境中观察物体时会面临更多的挑战:视野中的景物种类变化多端且包含丰富类型;各类别的数量及空间布局更加多样化;此外,在同一场景中可能出现大量不同类别的物体。下图展示了基于SUN RGB-D数据库的部分实验结果。

在这里插入图片描述
在这里插入图片描述

Discussion and Future Work

Conclusion

更多内容,欢迎加入星球讨论。

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~