DFANet: 实时语义分割的深度特征聚集

DFANet: 实时语义分割的深度特征聚集

DFANet: Deep feature aggrgation for real-time semantic segmention

文章目录

  • DFANet: 实时语义分割的深度特征聚集
    • 摘要
    • 引言
      • 背景、之前工作的缺点
      • 本文工作
      • 贡献
    • 相关工作
      • 实时分割
      • 深度可分离卷积(Depthwise Separable Convolution)
      • 高层特征
      • 上下文编码
      • 特征聚集
    • 深度特征聚集网络
      • 观察
      • 深度特征聚集
      • 网络结构
    • 结论

摘要

【本文工作】本文针对资源限制的语义分割介绍了一个极其高高效的CNN结构,名字叫DFANet。我们提出的网络从一个单个的轻量骨架开始,通过子网络和子层级聚集了鉴别性的特征。基于这些多尺度的特征传播,DFANet显著减少了参数数量,但是仍然获得了足够的感受野,以并提升了模型的学习能力,在速度和分割性能上达到了平衡。

【结果】在Cityscapes和CamVid数据集上的实验展示了DFANet比现存的最先进的实时语义分割,少了8倍的浮点运算次数,速度变成原来的两倍,同时提供了可以比较的准确率。特别的,在Cityscaps测试数据集上取得了70.3%的平均交并比,仅仅使用了1.7GFLOPS,在一台NVIDIA Titan X上速度为160fps。当预测一个更高的分辨率图像时,取得了71.3%的平均交并比,算力是3。4GFLOPs。

引言

背景、之前工作的缺点

1、语义分割重要,应用很多,速度和准确率是需要解决的问题。

2、之前的实时分割取得了好结果,但是U型结构在高分辨率上花费时间很多。减少时间的工作:限制输入图像的大小、修建网络的冗余特征图),但是损失了空间细节和边界、小物体。另外, 多分支网络结合空间细节和上下文信息,但是同时也限制了速度,分值之间的相互独立性限制了模型的学习能力。

3、空间金字塔池化获取高层上下文,计算消耗很多,可以考虑特征重用。

本文工作

两个跨特征级别的特征聚集策略:

  1. 重用backbone提取的高层特恒
  2. 组合不同阶段的特征,提升特征的表现能力。

细节上:

  1. 复现轻量级的backbone验证方法的有效性。

提出的Deek Feature Aggregation Network, DFANet有三个部分:

  1. 轻量级的骨架 —> 修改的Xception+全连接的注意力机制
  2. 子网络聚集单元 —> 上采样高层特恒,精校预测结果。coarse-to-fine
  3. 子阶段聚集单元

最后一个轻量级的解码器和上线性插值生成分割结果。

网络结构:

DFANet: 实时语义分割的深度特征聚集_第1张图片

图中:

Cconcatenation连接, × N \times N ×N代表N个上采样操作。

贡献

  1. 实时、低算量语义分割的新纪录
  2. 新的网络结构:内部连接的编码流,结合了高层上下文。
  3. 一个最大化感受野更好的方法、多次精校高层特征但是计算量增加很少。
  4. 修改了Xception,给它增加了一个FC,增大感受野,但是计算量增加不大。

相关工作

实时分割

  • SegNet:小结构和池化索引技术减少网络参数
  • ENet:减少下采样次数,但是感受野太少。
  • ESPNet:新的空间金字塔单元
  • ICNet:多尺度图片作为输入
  • BiSeNet:引入空间路径、语义路径

深度可分离卷积(Depthwise Separable Convolution)

深度卷积后加一个point卷积,具体可看 这里

高层特征

在通常的编码器-解码器结构中,编码器输出的高层特征描绘了输入图片的语义信息。

使用更多上下文信息:

  • PSPNet
  • DeepLab
  • PAN

特征金字塔结果很有用,对多尺度的不同尺寸的物体很有用,但是计算资源消耗很大。

上下文编码

  • SE-Net:特征级别的注意力机制。
  • EncNet:上下文编码

特征聚集

  • RefineNet:复杂的精校单元
  • DLA:实现密集连接。

深度特征聚集网络

观察

DFANet: 实时语义分割的深度特征聚集_第2张图片

比较了常见的网络,作者的做法:

  1. 用上采样替换高层操作,用另一个子网络替换精校特征图。

深度特征聚集

1、子网络聚集

就是不停地输入到骨架中。

骨架定义为 y = Φ ( x ) y=\Phi(x) y=Φ(x) Φ n \Phi_n Φn的输出马上作为 Φ n + 1 \Phi_{n+1} Φn+1的输入,子网络聚集可以公式化为:
Y = Φ n ( Φ n − 1 ( ⋯ Φ 1 ( X ) ) ) Y = \Phi_n(\Phi_{n-1}(\cdots \Phi_1(X))) Y=Φn(Φn1(Φ1(X)))
2、子阶段聚集

关注于在多个网络之间的阶段级别上融合语义和空间信息。

U型结构中的skip-connection可以缓轻由于深度增加导致的准确率降低。

作者的做法:在编码时组合特征,在相同深度的子网络中融合不同阶段。就是说,一个阶段的输出,作为下一个阶段子网络的输入(这不是很显而易见的吗?你特征出来之后,不输入到下一个层级,还能放哪去?还需要偏偏搞出一个"子阶段"聚集。。)

阶段处理定义为 Φ n i \Phi_n^i Φni,子网络聚集就可以公式化为:
x n i = { x n i − 1 + ϕ n i ( x n i − 1 )  if  n = 1 [ x n i − 1 , x n − 1 i ] + ϕ n i ( [ x n i − 1 , x n − 1 i ] )  otherwise  x_{n}^{i}=\left\{\begin{array}{ll}{x_{n}^{i-1}+\phi_{n}^{i}\left(x_{n}^{i-1}\right)} & {\text { if } n=1} \\ {\left[x_{n}^{i-1}, x_{n-1}^{i}\right]+\phi_{n}^{i}\left(\left[x_{n}^{i-1}, x_{n-1}^{i}\right]\right)} & {\text { otherwise }}\end{array}\right. xni={xni1+ϕni(xni1)[xni1,xn1i]+ϕni([xni1,xn1i]) if n=1 otherwise 
i i i代表阶段的索引。大概意思就是,第一层可以直接用上一个阶段的输入,加上阶段处理后的输出。

其它层则是用了残差连接,concatenation

网络结构

编码器:Xception(骨架)

解码器:上采样单元(骨架+双线性插值)

结论

本文中,我们提出深度特征聚集以处理高分辨率图上的实时语义分割问题。我们的聚集策略李娜接了一系列的卷积层,以高效地精校高层和低层特征,而不需要任何特殊设计的操作。分析和在cityscapes、camvid上的定量实验结果表明了我们方法的有效性。

你可能感兴趣的:(语义分割)