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

0摘要:
Encoder - Decoder结构。Encoder是VGG16的前13层,Decoder的作用是把Encoder的低分辨率特征图变成和输入相当分辨率的特征图。
Specifically, the decoder uses pooling indices computed in the max-pooling step of the corresponding encoder to
perform non-linear upsampling.
具体地,解码器使用在相应Encoder中的最大池化(maxpooling)层步骤中计算的pooling索引来执行非线性上采样。这消除了学习上采样的需要。
上采样的图稀疏,然后与可训练的filter卷积以生成密集的特征图。
与其他竞争架构相比,它的可训练参数数量也明显更少,并且可以使用随机梯度下降进行端到端训练。

在这里插入图片描述

1介绍:
在典型的道路场景中,大多数像素属于大类,例如道路,建筑物,因此网络必须产生平滑的分割。而且系统还必须识别那些很小物体的形状。因此,在提取的图像表示中保留边界信息很重要。
Segnet的Encoder是VGG前13层,删除了全连接层。关键组件是Decoder,该层级结构中的每个部分都有Encoder的部分相对应。Decoder上采样的方法是使用Encoder中计算的最大池化层的池索引。该方法有几大好处:(i)改善边界描绘,(ii)减少启用端到端训练的参数数量,并且(iii)这种上采样形式可以合并到任何编码器-解码器体系结构中,例如[2],[10 ],只需稍作修改。
本文的主要贡献之一是我们对SegNet解码技术和广泛使用的全卷积网络(FCN)的分析[2]。这是为了传达设计分段架构所涉及的实际取舍。新的用于分割的深度架构具有相同的编码器网络,即VGG16,但在解码器网络,训练和推理的形式上有所不同。

2相关工作:略

3.结构:
SegNet具有一个编码器网络和一个相应的解码器网络,后面是最终的按像素分类层。此体系结构如图2所示。编码器网络由13个卷积层组成,这些卷积层对应于VGG16网络[1]中为对象分类而设计的前13个卷积层。因此,我们可以根据在大型数据集上进行分类训练的权重来初始化训练过程[41]。我们也可以丢弃完全连接的层,以便在最深的编码器输出端保留更高分辨率的特征图。与其他最新架构[2],[4](请参阅表6)相比,这也大大减少了SegNet编码器网络中的参数数量(从134M减少到14.7M)。每个编码器层都有一个对应的解码器层,因此解码器网络具有13个层。最终的解码器输出被馈送到多类soft-max分类器,以独立产生每个像素的类概率。
编码器网络中的每个编码器都:
1:与filter组进行卷积,以生成一组特征图。
2:然后将它们BN。
3:使用激活函数(ReLU)max(0,x)。
4:随后,执行具有2×2窗口和跨度2的最大合并(MaxPooling),并将结果输出以2因子进行二次采样。最大合并用于在较小的空间移位上实现平移不变性在输入图像中。下采样会导致特征图中每个像素获得更多的上下文(context)信息。
尽管多层最大池化和下采样可以相应地实现更多的平移不变性,以进行鲁棒分类,但会损失特征图的空间分辨率。越来越多的有损(边界细节)图像表示对于边界轮廓至关重要的分割不利。因此,必须在执行下采样之前在编码器特征图中捕获并存储边界信息。如果推理期间的存储空间不受限制,则可以存储所有编码器功能图(二次采样后)。
在实际应用中通常不是这种情况,因此我们提出了一种更有效的方式来存储此信息。它涉及仅存储最大池索引,即针对每个编码器特征图存储每个池窗口中最大特征值的位置。原则上,可以为每个2×2合并窗口使用2位来完成此操作,因此与以浮点精度存储特征图相比,存储效率要高得多。这种较低的内存存储可能会使精度有所下降,但仍然可以应用。
利用索引进行上采样的步骤:
1.解码器网络中的适当解码器使用来自相应编码器特征图的存储的最大池索引,对其输入特征图进行上采样。此步骤将生成稀疏特征图。 2.然后,将这些特征图与可训练的解码器滤波器组进行卷积,以生成密集的特征图。
3.然后将批归一化步骤应用于这些图的每一个。
请注意,尽管第一个编码器的输入具有3个通道(RGB),但与第一个编码器(最接近输入图像)相对应的解码器会生成多通道特征图。这与网络中的其他解码器不同,后者生成的特征图的大小和通道数与其编码器输入相同。
4.最终解码器输出处的高维特征表示将被馈送到可训练的soft-max分类器。此soft-max对每个像素进行独立分类。 soft-max分类器的输出是概率的K通道图像,其中K是类别数。预测的分割对应于在每个像素处具有最大概率的类别。
DeconvNet和Unet 与 Segnet的区别:我们在这里补充说,另外两个体系结构DeconvNet 和U-Net 与SegNet共享相似的体系结构,但有一些区别。
DeconvNet具有更大的参数化,需要更多的计算资源并且更难于端到端训练(表6),这主要是由于使用了完全连接的层(尽管以卷积方式)。
与SegNet相比,U-Net [16](为医学成像社区建议)不重用池索引,而是将整个特征图(以更多的内存为代价)传输到相应的解码器,然后将它们连接起来进行上采样(通过去卷积)解码器功能图。与VGG网络架构一样,U-Net中没有conv5和max-pool 5块。另一方面,SegNet使用来自VGG net的所有预训练卷积层权重作为预训练权重。
3.1Decoder Variants
许多分段架构共享相同的解码器网络,并且它们仅以其解码器网络的形式变化。其中,我们选择将SegNet解码技术与广泛使用的全卷积网络(FCN)解码技术进行比较。
为了分析SegNet并将其性能与FCN(解码器变体)进行比较,我们使用称为SegNet-Basic1的较小版本的SegNet,它具有4个编码器和4个解码器。 SegNet-Basic中的所有编码器均执行最大池化和二次采样,相应的解码器使用接收到的最大池化索引对其输入进行升采样。在编码器和解码器网络中的每个卷积层之后都使用批处理归一化。卷积后不使用任何偏置,并且解码器网络中不存在ReLU非线性。此外,选择所有编码器和解码器层上恒定的7×7内核大小,以提供用于平滑标记的宽上下文,即,可以将最深层特征图(第4层)中的像素追溯到上下文中的上下文窗口。输入图像为106×106像素。 SegNet-Basic的体积很小,因此我们可以探索许多不同的变体(解码器)并在合理的时间内对其进行训练。SegNet-Basic中的所有编码器均执行最大池化和二次采样,相应的解码器使用接收到的最大池化索引对其输入进行升采样。在编码器和解码器网络中的每个卷积层之后都使用批处理归一化。卷积后不使用任何偏置,并且解码器网络中不存在ReLU非线性。此外,选择所有编码器和解码器层上恒定的7×7内核大小,以提供用于平滑标记的宽上下文,即,可以将最深层特征图(第4层)中的像素追溯到上下文中的上下文窗口。输入图像为106×106像素。 SegNet-Basic的体积很小,因此我们可以探索许多不同的变体(解码器)并在合理的时间内对其进行训练。类似地我们创建了FCN-BISIC一种FCN可比较的版本来分析,他和Segnet使用了相同的Encoder,但是Decoder不同。
。。。

3.2 训练
我们使用CamVid道路场景数据集对解码器变体的性能进行基准测试。该数据集很小,由367个训练图像和233个测试RGB图像(白天和黄昏场景)以360×480分辨率组成。面临的挑战是将道路,建筑物,汽车,行人,标志,杆子,人行道等11类分类。我们对RGB输入执行局部对比度归一化[54]。编码器和解码器的权重都使用He等人的技术(在[55]。为了训练所有变体,我们使用SegNet-Basic的Caffe实现[56],使用固定学习率0.1和动量0.9的随机梯度下降(SGD)[56]。我们对变量进行训练知道其收敛。在每个时期之前,对训练集进行混洗,然后依次拾取每个小批量(12个图像),从而确保每个图像在一个时期中仅使用一次。我们选择在验证数据集上表现最高的模型。
我们使用交叉熵损失[2]作为训练网络的目标函数。损失是在微型批处理中对所有像素求和的。当训练集中每个类别的像素数量变化较大时(例如,道路,天空和建筑物像素主导CamVid数据集),则需要根据真实类别对损失进行加权加权。这称为类平衡。我们使用中值频率平衡[13],其中在损失函数中分配给一个类的权重是在整个训练集上计算出的类频率的中值除以类频率。这意味着训练集中的较大类别的权重小于1,最小类别的权重最高。我们还尝试了在没有类别平衡的情况下或等效地使用自然频率平衡的情况下训练不同的变体。

3.3分析
为了比较不同解码器变体的量化性能,我们使用三种常用的性能指标:
1.全局准确度(global accuracy)(G),它测量在数据集中正确分类的像素的百分比。
2.类别平均准确度(class average accuracy)(C)是Pascal中使用的所有类别的预测准确度的平均值
3.所有类别的联合平均交集(mIoU)。 mIoU度量比类平均准确度更严格的度量,因为它会惩罚假阳性预测。但是,mIoU度量并未直接通过类平衡交叉熵损失进行优化。
基准度量中最常用的是mIoU指标,即Jacard指数。但是,Csurka等人指出该指标并不总是与高质量分割的人类定性判断(等级)相对应。他们举例说明mIoU有利于区域平滑度,并且不评估边界精度,FCN的作者最近也提到了这一点[58]。因此,他们建议使用基于伯克利轮廓匹配分数的边界度量对mIuU度量进行补充,该分数通常用于评估无监督图像分割质量[59]。 Csurka等人只是将其扩展到语义分割,并表明与mIoU度量结合使用的语义轮廓准确度的度量更符合人类对分割输出的排名。
计算语义轮廓分数的关键思想是评估F1量度[59],该计算涉及在给定像素容限距离的情况下,计算预测和地面真实类别边界之间的精度和召回率值。我们使用图像对角线的0.75%作为容差距离。对地面真实性测试图像中存在的每个类别的F1测量值进行平均,以生成图像F1测量值。然后,我们计算整个测试集的平均值,以图像F1度量的平均值表示边界F1-度量(BF)。
在对CamVid验证集进行优化的每1000次迭代之后,我们测试每个体系结构变体,直到训练损失收敛为止。训练小批量大小为12时,这大约对应于每33个历时(通过)测试一次训练集。在验证集的评估中,我们选择全局精度最高的迭代。我们将在暂存的CamVid测试集中报告这三个性能指标。尽管我们在训练变体时使用类平衡,但是实现高全局精度以实现整体平滑分割仍然很重要。另一个原因是,细分对自动驾驶的贡献主要是用于划分道路,建筑物,人行道,天空等类别。这些类别支配图像中的大多数像素,并且较高的全局精度对应于这些重要类别的良好分割。我们还观察到,当班级平均水平最高时报告数值性能通常可能对应于较低的全局准确度,表明感知上有噪声的分段输出。
1)完整存储编码器功能图时,可获得最佳性能。这最清楚地反映在语义轮廓描绘度量(BF)中。
2)当推理过程中的内存受到限制时,可以存储编码器特征图的压缩形式(降维,最大池索引),并与适当的解码器(例如SegNet类型)一起使用以提高性能。 3)较大的解码器可提高给定编码器网络的性能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值