DFN之语义分割

DFN笔记

摘要

1.现在语义分割面对的挑战:类内不一致;类间模糊。
2.解决办法:DFN,其包含平滑网络与边界网络。带有Channel attention block与global average pooling的平滑网络能够学习更具区别的特征(比如奶牛身上像素不一样的地方会被认为不是奶牛的部分),在边界网络中,使用深度语义边界监督使边界的双边特征可区分
3.实验效果:在pascal voc2012上的平均Iou达到了86.2,在cityscape上达到了80.3

引言

定义:
intra-class:有相同的标签,外观不一样
inter-class:相邻的东西外观一样,但label不一样
如下图所示:
DFN之语义分割_第1张图片

本文中作者认将语义分割看成是为事物的类别分配一个一致的语义标签,而不是逐像素的分配语义标签.那么我们既要考虑类内的一致性,也要考虑类间的区分性。DFN就是设计去学习到这两个特征的网络。
对于类内一致性,有以下两个重要的因素:
1)我们需要多尺度与全局context特征编码局部与全局信息(比如奶牛白色的部分由于缺乏足够的context信息而不能够预测正确的分类)
2)随着多尺度的引入,features有不同程度的区分能力,因此筛选出有用的特征是很有必要的
受上面两个因素的影响,smooth-network利用U-shape去捕获多尺度的上下文信息,使用global average pooling获取global context。同时,我们提出了一个通道注意块(CAB),该块利用高features逐步指导选择低级features.
对于边界网络:
问题:大多数方法会忽略类间关系的建模(导致邻近且相似的东西如上面图片的电脑与主机会被认为是一个东西)
在我们的边界网络中,我们在训练过程中集成了语义边界损失,以学习区分特征,以扩大“类间差异”。

relate work

现在的大多数基于FCN方法仍然被intra-class inconsistent与inter-class indistinction所限制。

1)编码-解码

SegNet利用了反池化,U-Net利用了跳跃连接、GCN、refinenet等都没有利用global contents。大多数方法仅仅将相邻阶段的特征组合,并未考虑their diverse representation。其导致了inconsistent的结果。

2)Attention Context

本文利用通道注意力获取与SENet相似的特征

3)Semantic Boundary Detection:

边界检测是计算机视觉里很重要的一个任务,现在的方法基本上是通过连接不同level的特征以提取边界。本文的目的是获取具备类间区分的特征,尽可能精化边界。因此,文章设计了一个自顶向上的结构去优化每个阶段的特征。

Method

Smooth network

许多人将语义分割视为密集的像素分类,但是其预测有时不正确,尤其是大区域或复杂的场景的部分,这被称为类内不一致问题。
intra-class问题主要是缺乏context,故通过全局平均池化以获取global context,但其仅仅是高语义的信息,对于恢复空间信息没有帮助。故我们需要多尺度的感受野与上下文信息refine spatial information。然而不同尺度的感受野会产生不同区分程度的特征。故需要选择出更具备区别能力的特征以预测一个统一标签的类。
文章采用的网络是ResNet,lower有利于spatial predicted,higher 有利于semanticpredicted(具备很好的语义一致性,因为其高层感受野更大)
现在网络框架主要有两种:
1)backbone-style:比如PSP-Net、deeplab。他们使用空洞空间金字塔池化或金字塔空间池化嵌入不同尺度的context以提高一致性。
2)编码-解码:refinenet、GCN。它仅仅是利用不同阶段固有的context,但其缺乏global context(仅仅拥有很高的语义信息,有很强的一致性)
现在网络的缺点:现在大多数网络融合相邻阶段的特征,仅仅是通过通道数叠加这些特征,但这些操作忽略了不同阶段的diverse consistency。
本文采用global average pooling layer,引入strongest consistency 约束到网络中作为指导。为了提高一致性,作者还设计了通道注意力模块。此设计结合了相邻阶段的特征,以计算通道注意向量如下图所示
DFN之语义分割_第2张图片
高阶段的特征提供很强的一致性指导,而低阶段的特征提供不同的特征区分信息,通道关注向量可以选择有区分的特征。
CBA模块:被设计去改变每个阶段特征的权重以提高一致性。(具体原理请参考论文对应的地方)
在FCN中分数图的表达公式如下:
在这里插入图片描述

Refinenet residual block:
特征网络中每个阶段的特征图都经过精炼残差块,该块能够refine特征图,强化每个阶段的识别能力。

Border network

对于空间上相邻又相似的东西很容易被认为是一个东西,所以需要扩大特征的区别能力,所以我们采用语义边界去指导特征学习,为了提取准确的语义边界,我们对语义边界进行了显式的监督,这使得网络学习了具有强大的类间区分能力的特征。因此,我们提出了一个边界网络来扩大特征之间的类间区别。它通过显式语义边界监督直接学习语义边界,类似于语义边界检测任务。这使得语义边界两侧的特征都可以区分。我们需要具有更多语义含义的语义边界。因此,我们设计了一个自底向上的边界网络,以从低阶段获取更精确的边界信息并从高阶段获得语义信息,消除了原始边界缺乏语义信息的问题。
利用传统的图像处理方法,例如Canny [2],从语义分割的groundtruth上获得网络的监督信号,为了纠正正负样本的不平衡,我们使用focal损失[22]来监督边界网络的输出.边界网络提取到的语义边界将使得边界双方的特征将变得更加可区分

网络架构

总的网络架构如下图所示:
DFN之语义分割_第3张图片
本架构说明:
1)使用预训练的resnet作为基础架构;
2)在平滑网络中,作者在下采样最后一层末端增加了global average pooling以增强一致性,然后利用通道注意力模块改变通道的权重进一步增强consistency
3)在边界网络中由于利用了语义边界监督,使得网络拥有精确的分割边界并且使双边特征更具有区分性。
为了进行明确的功能细化,我们使用深度监督来获得更好的性能并使网络更易于优化。在平滑网络中,我们使用softmax损失来监督每个阶段的上采样后的输出(不包括全局平均池化层),而使用焦点损失来监督边界网络的输出。最后,我们使用一个参数λ 平衡细分损失 ℓs 和边界损失 ℓb。

实验结果

实施细节

我们提出的网络基于在ImageNet上预训练的ResNet-101。我们使用FCN4 ,作为我们的基础架构分割。

数据增

我们使用均值减法和随机水平翻转
作者做了一些列实验来阐明各个模块的作用效果。
其结果如下表所示(具体的对比请看论文)
DFN之语义分割_第4张图片
其可视化效果如下图所示
DFN之语义分割_第5张图片

你可能感兴趣的:(深度学习,自动驾驶,神经网络,机器学习,pytorch)