Title:Learning a Discriminative Feature Network for Semantic Segmentation
From:CVPR2018
Note data:2019/06/10
Abstract:为解决类内不一致和类内模糊两个语义分割的挑战,提出了一种判别特征网络DFN,包含了平滑网络与边界网络。
Code :pytorch
目录
DFN论文解读
1 Abstract
论文提出一种Semantic Segmentation模型:DFN
网络结构:提出一种判别特征网络(DFN),其中包含了平滑网络(Smooth Network)和边界网络(Border Network)
创新:解决了语义分割面临的类内不一致与类间模糊的问题
动机:提升分割准确率的同时开拓了新的思路
大多数现有的语义分割方法仍然存在两个方面的挑战:类内不一致和类内模糊。 为解决这两个问题,论文提出了一种判别特征网络(DFN),它包含两个子网络:平滑网络和边界网络。为了处理类内不一致性问题设计了具有通道注意块的平滑网络和全局平均池,以选择更具辨别力的特征。 提出了一个边界网络,使边界的双边特征可以与深层语义边界监视区分开来。 提出的DFN,在PASCAL VOC 2012和Cityscapes数据集上的IOU达到了86.2%和80.3%。
2 Introduction
之前的一些工作相比(如FCN)获得的特征通常不能区分:
- 共享相同语义标签但不同外观的补丁,如图1第一行所示,为类内不一致;
- 具有不同语义标签但具有相似外观的两个相邻贴片,如图1的第二行所示,称为类间模糊
论文中较为新颖的地方不在将语义分割局限在像素标签上,而是将宏观的一类事物考虑在分类任务中。从宏观的角度来看,关于每个像素类别作为一个整体,固有的考虑类内一致性和类间变化,这说明分割任务需要具有一定辨别特征。基于以上说明,作者提出了判别特征网络(DFN)来学习考虑“类内一致性”和“类间区分”的特征表示。
DFN网络主要包含:
- 平滑网络(Smooth Network):Channel Attention Block(CAB)+global average pooling+RRB 这样可以选取更加具有判别性的特征。
- 边界网络(Border Network):使边界的双边特征更加分明
网络结构如下图所示:
论文的主要贡献有:
- 从宏观角度重新思考语义分割任务。 将语义分割视为一项任务,为一类事物分配一致的语义标签,而不仅仅是在像素级别。
- 提出了一个判别特征网络,以同时解决“类内一致性”和“类间变异”问题。
- 我们提出了一个平滑网络,以增强与全局上下文和Channel Attention Block的类内一致性。
- 设计了一个自下而上的边界网络,深入监督,以扩大语义边界两侧特征的变化。 这还可以细化预测的语义边界。
3 Related work
作者编码-解码,全局上下文,注意力机制,分割边界检测四个方面介绍相关工作。
编码-解码:对于FCN内在的对于不同的级别的features进行了编码,另外一些工作把他们进行融合。这些方法最主要的就是考虑如何去恢复在池化,卷积中丢失的信息。在这里有SegNet,U-net,LRR,RefineNet
之前的一些工作没有考虑到global context,大部分方法都是对于相邻部分的特征进行总结,而没有考虑到他们之间的多种多样的表示,这会导致类内不一致的结果
全局上下文:全局平均池化的有效性。从全局平均池化到空间金字塔,再到空洞空间金字塔。 然而,为了充分利用金字塔池模块,这两种方法采用基本特征网络进行8次下采样,采用迂回卷积,这是耗时和内存密集的。
注意力机制:注意力机制指的是把那些值得关心的部分赋予高的权重,给他最大的注意力。
分割边界检测:这些方法中的大多数直接连接不同级别的特征以提取边界。 然而我们的目标是通过精确的边界监督尽可能地获得具有阶级间区别的特征。
4 Method
4.1 平滑网络
在Smooth Network中采用ResNet作为基本的骨架,在low stage中感受野比较小只能编码空间信息,而对于语义的连续性比较差;但是在high stage有很强的语义连续性,因为他有很大的感受野,但是预测很粗糙。论文结合了low stage和high stage的特点去达到更加好的效果。
在现在流行的语义分割的结构中,这里主要有两种风格:
- ‘Backbone-Style’ 典型的approches如,PSPNet,Deeplab v3;这种类型的方法主要是用空间池化模块(Pyramid pooling module)和空洞金字塔模块(Atrous spatial Ptramid Pooling module)注入不同尺度的信息去提高网络的连续性
- 'Encoder-Decoder-style'典型的方法如,RefinNet ,Global Convolutional Network;这种方法主要利用在不同阶段的内在的多种尺度的信息,但是它缺乏全局上下文信息,在全局上下文中含有很强的连续性。
论文将全局评价池化层嵌入U型结构变为了V型结构,而且给网络注入了很强的一致性。其次我们设计了一个注意力模块,它把相邻的部分结合起来计算得出一个channel attention vector,而这个 channel attention vector 可以攒去具有辨别力的特征。
通道注意力模块CAB:
通道注意力模块的目的就是为了改变每个阶段的特征权重,增强其连续性。
在FCN架构中,卷积运算输出得分图,该得分图给出每个像素处的每个类的概率。得分图的最终得分仅对特征图的所有通道求和。
X代表网络输出特征,W卷积核,K是通道数,D是像素位置的集合, δ预测概率,y是网络输出
作者引入一个参数 α以将最高概率值从y0改变为y1,如等式3所示。其中y0是预测结果,y1是真实标签。
是新的网络预测,α = Sigmoid(x;w)
在等式1中,它隐含地表明不同通道的权重是相等的。 但是,如第1节所述不同阶段的特征具有不同程度的区分,这导致预测的不同一致性。 为了获得类内一致预测,我们应该提取判别特征并抑制不加区别的特征。 因此,在等式3中,α值应用于特征图x,其表示使用CAB的特征选择。 通过这种设计,我们可以使网络逐步获得判别特征,使预测内部一致。
细化残差块:特征网络中每个阶段的特征图都通过精化残差块,如图(b)所示。 该块的第一个组件是1×1卷积层。 我们使用它将通道数统一到512.同时,它可以组合所有通道的信息。 然后,以下是基本残差块,可以细化特征图。 此外,该块可以增强每个阶段的识别能力,灵感来自ResNet 的架构。
4.2 边界网络
设计了一个自下而上的边界网络。该网络可以同时从低级获取准确的边缘信息,从高级获取语义信息,消除了一些原始边缘缺乏语义信息。这样,高阶段的语义信息可以逐步地从低阶段细化详细的边缘信息。网络的监控信号是通过传统的图像处理方法从语义分割的基础上获得的,如Canny 。
为了弥补正负样本的不平衡,使用焦点丢失来监督边界网络的输出,如公式4所示。我们调整焦点损失的参数α和γ以获得更好的性能。
4.3 网络结构
网络使用ResNet作为基本网络,在Smooth Network为了得到更多的一致性在网络最高层使用全平均池化操作,然后利用通道注意力机制改变通道的权重进一步增强其连续性。与此同时,边界网络获得更加准确的语义边界信息。
对于显式特征优化,使用深度监督来获得更好的性能并使网络更易于优化。 在平滑网络中,我们使用softmax loss来监督每个阶段的上采样输出(不包括全局平均合并层),同时我们使用焦点丢失来监督边界网络的输出。 最后,我们使用参数λ来平衡分段损失和边界损失'b,如公式7所示。
5 Experiment
5.1 实验细节
项目 | 属性 |
数据集 | PASCAL VOC 2012 与 Cityscapes |
骨架网络 | ResNet-101,FCN4分割框架 |
优化器 | SGD |
Batch SIze | 32 |
权重衰减 | momentum 0.9 ,weight decay 0.0001 |
学习率 | 4e -3 |
5.2 消融实验
平滑网络
全局池化与深度监督:
边界网络:
判别网络:
在cityscapes数据集上表现:
6 Conclusion
前面对应论文所提到的一些创新已经做了说明。但在实验部分与deeplabv3+的对比中,发现在VOC2012表现比人家好的时候就列出来,在cityscapes不好的时候就不列出来,这是否能说明这个模型好?还有一点在与其他模型进行比较的时候,数据集有很大的差异,之前的一些工作并没有使用一些辅助数据集,抛开这个能否说明这个模型性能提升了?还是主观的想法?