Learning a Discriminative Feature Network for Semantic Segmentation

Learning a Discriminative Feature Network for Semantic Segmentation

收录:CVPR2018(IEEE Conference on Computer Vision and Pattern Recognition)

原文地址:DFN

代码:

  • 非官方:TensorFlow

Introduction

许多现存的语义分割方法虽然获得了先进的表现。但是这些方法存在没有使用discriminative features的情况。故依旧存在两个方向的挑战:

  • intra-class inconsistency:类内不一致。这表示一个区域内,有着相同的语义标签,但是预测结果有所不同。(如Fig.1第一行)
  • inter-class indistinction:类别之间模型不清晰。这表示两个相邻的区域,有着类似的外表,但是语义标签不同。(如Fig.1第二行)

论文从更宏观的角度来看语义分割。论文认为语义分割是将相同的语义标签分配给一类事物,而不是分配对单个像素分配单个标签。认为一类事物的像素是一个整体,这自然就会有论文开始提及的两个挑战。

针对这两个挑战,论文最终提出了Discriminative Feature Network(DFN)来解决。

DFN

DPN涉及到了两个组件:Smooth Network(SN)和Border Network(BN).

Smooth Network(SN).

SN用于学习更鲁棒性的特征表示,从而用于解决intra-class inconsistency

这主要涉及两个因素:

  • 1) 需要多尺度和全局特征用于学习局部和全局的信息。

  • 2) 因为多尺度特征的引入,对于同一事物,因为尺度的原因可能会产生错误的预测。故需要学习更具区分力的有效的特征。

受到这两个方向的启发。Smooth Network基于U-shape结构,该结构用于捕获多尺度信息,并带有全局平均池化用于捕获全局信息。并且提出了Channel Attention Block(CAB),使用high-level的特征逐步指导选择low-level的特征。

Border Network(BN)

该sub-network用于解决inter-class indistinction。即用于去区分具有相似外表但不同语义标签的相邻区域。大多数模型语义分割作为密集的识别任务,这通常会忽略物体类别间的明显关系。因此,明确的语义边界去指导特征学习是很有必要的,这可以方法特征两边的变化趋势。

Border Network通过在训练期间集成 semantic boundary loss去学习区分力的特征。说白了,就是用传统的图像方法从ground truth上提取边缘信息,用这些边缘信息做一个旁监督,从而达到细化边界结果的效果

DFN的整体架构和贡献

整体架构如下:

该结构和GCN,PAN都很相似。

论文的主要贡献在于:

  • 论文从宏观的角度再思考语义分割任务,认为语义分割是将同样的语义标签分配到同一物体区域。
  • 论文提出了DFN用于同时解决 intra-class inconsistencyinter-class indistinction问题。实验结果证明了新模型的有效性。
  • 论文提出了具有全局信息和通道注意力模型的Smooth Network用于提升类内一致性。
  • 论文设计的具有深度监督的bottom-up结构的Border Network用于扩张语义边界两边的特征变化。这可以细化预测的边界。


Architecture

由前面叙述可知,论文针对intra-class inconsistencyinter-class indistinction这两个挑战,提出了Discriminative Feature Network(DFN)来应对,其中DFN包含两个子网络Smooth networkSmooth network和Border network。

先介绍Smooth network和Border network,然后全盘托出整个DFN的architecture.

Smooth Network

intra-class inconsistency主要是因为缺乏上下文,因此,论文使用全局平均池化来引入全局上下文信息。然而,全局上下文信息只是具备高级的语义信息,这对于恢复空间信息没有多大帮助。因此,我们需要多尺度的感受野帮助恢复空间信息,而许多方法在这里存在另一个问题,不同尺度的感受野产生的特征会有一些不同尺度的区分力,这会造成错误的结果。
为了解决这个问题,我们需要选择更具区分力的特征来产生一致的语义标签。论文引入了注意力机制来解决。

论文的backbone是Resnet,Resnet依据输出特征的大小分成了5个阶段。论文观察到:不同阶段有着不同的特征观察能力,这导致了不同的表征(manifestation):

  • 在低阶段:网络编码更多的空间信息。由于网络的感受野较小并且没有空间上的上下文指导,导致语义特征不佳。
  • 在高阶段:因为有着大的感受野,故语义特征不错。但是空间预测就比较模糊了。

总的来讲,就是底阶段偏向空间信息,高阶段偏向语义信息。那么Smooth Network意在使用高阶段的信息来指导底阶段,从而产生更优的预测。

而现存的语义分割架构主要有两个风格:

  • backbone-style:代表的有PSPNet和DeepLabv3,这样的结构通过PSP module和ASPP 来集成多尺度信息。
  • Encoder-Decoder style: 代表有RefineNet和GCN,这种结构利用不同阶段固定的多尺度上下文,但是这缺乏上下文信息。

此外,许多网络结构结合不同阶段的特征是仅仅是通过通道加完成的,这样的操作忽略了不同阶段之间的差异性。为了解决这个问题,Smooth Network 先是在U-shape结构上嵌入全局池化操作,以产生了V-shape结构(多了个全局池化)。同时,提出了通道注意力模块(Channel Attention Block),这用于结合相邻阶段的特征。高级特征提供语义来指导选择低级特征,从而达到选择更具区分力的特征。

Channel attention block

通道注意力模块结构如图所示:

其工作原理如下:

在FCN架构上,卷积操作输出的是score map,这给出每个像素的每个类别的概率值,最终的分数是在最后的特征图上相加得到的,公式如下:

yk=F(x;w)=∑i=1,j=1Dwi,jxi,jyk=F(x;w)=∑i=1,j=1Dwi,jxi,j

y_{k}=F(x;w)=\sum_{i=1,j=1}^{D}w_{i,j}x_{i,j}
其中 xxx就是网络输出的特征图,w" role="presentation">www表示卷积操作。 k∈{1,2,..K}k∈{1,2,..K}k∈\{1,2,..K\}, KKK表示通道数。D表示所有像素位置的集合。

σi(yk)=exp⁡(yk)∑j=1Kexp⁡(yj)" role="presentation">σi(yk)=exp(yk)∑Kj=1exp(yj)σi(yk)=exp⁡(yk)∑j=1Kexp⁡(yj)

\sigma_{i}(y_k)=\frac{\exp(y_k)}{\sum_{j=1}^{K}\exp(y_j)}
其中 σσ\sigma表示预测的概率值, yyy表示网络的输出。

由上述两个公式可以看出,最终的预测标签是有着最高概率值的。我们假设对某一区域的预测标签为y0" role="presentation">y0y0y_0,而真正的标签为 y1y1y_1。论文引入了参数 αα\alpha用于改变最高的概率值从 y0y0y_0到 y1y1y_1,如下面公式所示:

y¯=αy=⎡⎣⎢α1...αK⎤⎦⎥⋅⎡⎣⎢y1...yK⎤⎦⎥=⎡⎣⎢α1w1...αKwK⎤⎦⎥×⎡⎣⎢x1...xK⎤⎦⎥y¯=αy=[α1...αK]⋅[y1...yK]=[α1w1...αKwK]×[x1...xK]

\bar{y}=\alpha y = \begin{bmatrix} \alpha_{1}\\ ...\\ \alpha_{K} \end{bmatrix} \cdot \begin{bmatrix} y_{1}\\ ...\\ y_{K} \end{bmatrix} = \begin{bmatrix} \alpha_{1}w_{1}\\ ...\\ \alpha_{K}w_{K} \end{bmatrix} \times \begin{bmatrix} x_{1}\\ ...\\ x_{K} \end{bmatrix}

其中y¯y¯\bar{y}表示新的预测值,而α=Sigmod(x;w)α=Sigmod(x;w)\alpha=Sigmod(x;w)。

基于上述的公式描述,第一个公式隐式的表示每个通道的权重是一样的。而前面有讲到过,不同阶段的特征具有不同特性,这导致了预测的不一致性,为了获得更加的预测,我们需要选择具有区分力的特征。而通过第三个公式可以通过通道注意力模块对通道加权,用于选择特征。

Refinement residual block

网络的每个阶段的特征都会经过Refinement residual block,如下图所示:


开始是一个恒定的512通道1×11×11×1卷积,这可以结合所有通道的信息,达到细化特征图的效果。

Experiment

论文以ResNet101为backbone,使用FCN4为主框架。SGD优化器,batch=32,采用”poly”学习率策略。

可以看到RRB和CAB,GP的性能提升都是很明显的。

部分可视化结果:

Border Network

在语义分割任务上,尤其是在相邻的区域上有相似外表的物体,预测常会产生混淆。因此,我们需要增强特征之间的区别。受到这样的启发,为了更为精准的提取语义边界,论文采用语义边界监督,让网络学习具有类间区分能力的特征。

论文设计了Bottom-up结构的Boader Network,该网络能够同时从low stage上获得精准的边缘信息,也可以从high stage上获得语义信息,这弥补了一些原始边界缺乏的语义信息。这样,是的high stage的语义信息可以refine low stage的边缘信息。这样的监督信息是来源于在语义分割ground truth上使用传统的图像处理方法,例如Canny边缘等.

为了处理正负样本不均衡,论文使用了focal loss来监督Border network,调整αα\alpha和γγ\gamma参数获得更佳的性能:

FL(pk)=−(1−pk)γlog(pk)FL(pk)=−(1−pk)γlog⁡(pk)

FL(p_k)=-(1-p_k)^{\gamma}\log(p_k)
其中 pkpkp_k 是对每个类别 kkk的概率估测值。

Experiment

在PASCAL上的实验:

增加BN的性能提升较小~

部分边界可视化结果:

(PS:看Experiment部分,这个Boader Network的提升性能很小,感觉不是那么好使)

Network Architecture

基于Smooth Network和Border Network,论文提出了DFN:

使用了预训练的ResNet作为网络主干。

  • 在Smooth NetWork:顶端使用了一个全局池化层捕获全局信息。使用channel attention block来改变权重。 除了最终的全局池化,其他所有stage都使用softmax loss来做深度监督学习。
  • 在Border Network上,使用语义边界监督,网络获得更为精准的边界,得到的mask也更具区分度。使用focal loss来监督学习。

使用参数λ" role="presentation">λλ\lambda来平衡分割loss的 lslsl_s和边界loss的 lblbl_b.

ls=SoftmaxLoss(y;w)ls=SoftmaxLoss(y;w)

l_s=SoftmaxLoss(y;w)

lb=FocalLoss(y;w)lb=FocalLoss(y;w)

l_b=FocalLoss(y;w)

L=ls+λlbL=ls+λlb

L=l_s+\lambda l_b

Experiment

经过试验,论文最终使用的λ=0.1λ=0.1\lambda=0.1,为了提升性能,使用多尺度输入,共5个尺度0.5,0.75,1,1.5,1.750.5,0.75,1,1.5,1.75{0.5,0.75,1,1.5,1.75}.

随机的放缩:

有着较大的性能提升。

不一样的λλ\lambda带来的性能影响:

无论是Smooth Network还是Border Network都是采取了逐stage的策略。下面是该策略的可视化结果:

PASCAL and Cityscape



Conclusion

论文从更为宏观的角度审视语义分割任务,认为现存的语义分割任务存在两个挑战:intra-class inconsistencyinter-class indistinction。针对这两个挑战,论文分别提出了Smooth Network还是Border Network。在次基础上,提出了完整的结构DFN,实验结果证明了新模型的有效性。


语义分割--(DFN)Learning a Discriminative Feature Network for Semantic Segmentation相关推荐

  1. [分割]Learning a Discriminative Feature Network for Semantic Segmentation(DFN)

    本文转自3篇文章当作自己的笔记. 文章1:链接 Learning a Discriminative Feature Network for Semantic Segmentation Learning ...

  2. Learning a Discriminative Feature Network for Semantic Segmentation

    创新点就是特征区分网络discriminative feature network,本别叫做平滑网络Smooth Network以及边界网络Border Network. 这两个网络可以处理类内一致性 ...

  3. CVPR2022自适应/语义分割:Class-Balanced Pixel-Level Self-Labeling for Domain Adaptive Semantic Segmentation

    CVPR2022自适应/语义分割:Class-Balanced Pixel-Level Self-Labeling for Domain Adaptive Semantic Segmentation用 ...

  4. 【语义分割】ICCV21_Mining Contextual Information Beyond Image for Semantic Segmentation

    文章目录 一.背景 二.动机 三.方法 3.1 整体结构 3.2 特征存储模块 Feature Memory Module 3.3 数据集层面的上下文聚合 Dataset-level Context ...

  5. 【文献阅读笔记之】ACFNet: Attentional Class Feature Network for Semantic Segmentation

    摘要 传统的语义分割网络大的是从空间的角度设计的,充分利用丰富的上下文信息.文章中提出一种新的观点,类中心,即从分类的角度提取全局的上下文.除此之外,作者还提出一个新的模块,名为注意类特征(ACF)模 ...

  6. 语义分割--Not All Pixels Are Equal:Difficulty-Aware Semantic Segmentation via Deep Layer Cascade

    Not All Pixels Are Equal: Difficulty-Aware Semantic Segmentation via Deep Layer Cascade CVPR2017 本文针 ...

  7. 这就是神经网络 11:深度学习-语义分割-DFN、BiSeNet、ExFuse

    前言 本篇介绍三篇旷视在2018年的CVPR及ECCV上的文章.旷视做宣传做的很好,出的论文解读文章很赞,省去了我从头开始理解的痛苦,结合论文基本能很快了解全貌. 语义分割任务同时需要 Spatial ...

  8. 语义分割--DeconvNet--Learning Deconvolution Network for Semantic Segmentation

    Learning Deconvolution Network for Semantic Segmentation ICCV2015 http://cvlab.postech.ac.kr/researc ...

  9. 语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic

    语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic .. https://blog.csd ...

最新文章

  1. 安卓 python termux_Android Termux 安装 Linux 就是这么简单
  2. Echarts动态加载地图数据(Dynamic load Echarts map data)
  3. 用JDBC直连方式访问SQL Server 2005详解
  4. (14)VHDL测试激励编写(时钟)
  5. 牛顿迭代法解非线性方程组
  6. 【微软2014实习生及秋令营技术类职位在线測试】题目1 : String reorder
  7. 计算机图形学完整笔记(五):二维图形变换
  8. LeetCode 49 - Group Anagram 归类同构字
  9. Python微信打飞机游戏编程学习笔记04
  10. linux配置c11,C11标准的泛型机制
  11. 【供应链架构day12】电商仓储WMS的业务UseCase
  12. Ubuntu的共享文件夹
  13. 记一次面试(被骗)经历
  14. 名悦集团:冬季汽车保养怎么做才到位
  15. python sklearn Rideg岭回归--交通流量预测实例
  16. 曾鸣:取势、明道、立理、优术
  17. AnyChat开发流程指南
  18. XL7005A xlsemi 降压型直流电源变换器芯片(高电压型)
  19. Flume 安装使用(自己总结) 吐槽CSDN 对Markdown 的mermaid 语法支持不完整
  20. mac 系统安装服务器配置,服务器配置安装 mac os

热门文章

  1. 解决pycharm里显示数据不完全问题(pandas)
  2. nexmo 验证码的使用
  3. 经管保研|2022复旦经院推免研究报告
  4. Search()函数使用方法
  5. sap Payment Terms Terms of payment 收付款条件
  6. 商标主要特征是什么?商标注册申请流程是什么?
  7. 理解ES6中暂时性死区TDZ
  8. stm32cubeide烧写程序_初学STM32CubeIDE
  9. 【微机汇编语言学习笔记(四)】十进制数的ASCII转换为BCD码
  10. IEEE认证Pdf格式失败问题