一、思路

语义分割既需要丰富的空间信息,又需要较大的感受野。然而,现代方法通常会牺牲空间分辨率来实现实时推理速度,导致性能低下。本文提出了一种新的双边分割网络(BiSeNet)来解决这一难题。我们首先设计一个空间路径以较小的步幅保存空间信息并生成高分辨率特征。同时,采用快速下采样策略的上下文路径获取足够的接受域。在此基础上,提出了一种新的特征融合模块,实现了特征的有效融合。

二、语义分割研究现状

实时语义分割的算法表明,模型的加速方法主要有三种。1)尝试通过裁剪或调整大小来限制输入大小,降低计算复杂度。虽然该方法简单有效,但空间细节的丢失会破坏预测,特别是边界附近的预测,导致度量和可视化精度下降。2)一些工作不是调整输入图像的大小,而是对网络的通道进行修剪以提高推理速度,特别是在基础模型的早期阶段。然而,它削弱了空间能力。3)对于最后一种情况,ENet建议放弃模型的最后一个阶段,追求一个非常紧密的框架。然而,这种方法的缺点是显而易见的:由于ENet在最后阶段放弃了向下采样操作,模型的接受域不足以覆盖较大的对象,导致识别能力较差。总的来说,以上方法都是在精度和速度之间进行折衷,在实际应用中效果较差。

为了弥补上述空间细节的损失,研究者们广泛采用了U型结构。通过融合骨干网的层次特征,u形结构逐渐提高了空间分辨率,填补了一些缺失的细节。然而,这种技术有两个缺点。
1)由于在高分辨率地形图上引入了额外的计算,完整的u型结构会降低模型的速度。2)更重要的是,通过下图(b)所示的浅层,大部分在修剪或剪切过程中丢失的空间信息很难恢复。换句话说,u型技术更像是一种减轻,而不是一种必要的解决方案。

在此基础上,我们提出了由空间路径(SP)和上下文路径(CP)两部分组成的双边分割网络(BiSeNet)。正如它们的名字所暗示的,这两个组成部分被设计用来分别应对空间信息的丢失和接受域的收缩。这两条道路的设计理念是明确的。对于空间路径,我们仅将3个卷积层叠加得到1/8的feature map,它保留了丰富的空间细节。在上下文路径方面,我们在Xception[8]的尾部附加了一个全局平均池层,其中接受域是主干网络的最大值。上图(c)显示了这两个组件的结构。

为了在不损失速度的情况下获得更好的精度,我们还研究了两种路径的融合以及最终预测的细化,提出了特征融合的方法分别为注意细化模块(FFM)和注意细化模块(ARM)。

三、限制语义分割模型的原因

丰富的空间信息或扩大接受域

空间信息:卷积神经网络(CNN)[16]通过连续的下采样操作来编码高级语义信息。然而,在语义分割任务中,图像的空间信息是预测细节输出的关键。现代现有的方法致力于编码丰富的空间信息。DUC [32], PSPNet [40],DeepLab v2[5]和DeepLab v3[6]使用扩展卷积来保持特征图的空间大小。全局卷积网络[26]利用了“大核”,扩大感受野。

U型方法:u型结构[1,10,22,24,27]可以恢复一定程度的空间信息。原始的FCN[22]网络通过一个跨跃连接的网络结构来编码不同层次的特征。一些方法将其特有的细化结构转化为u形网络结构。[1,24]利用反卷积层创建u形网络结构。U-net[27]为这个任务介绍了有用的跳跃连接网络结构。全局卷积网络[26]将u型结构与大核相结合。LRR[10]采用拉普拉斯金字塔重构网络。RefineNet[18]增加了多路径细化结构来细化预测。DFN[36]设计了一个通道注意块来实现特征选择。然而,在u型结构中,一些丢失的空间信息是不容易恢复的。

上下文信息:语义分割需要上下文信息来生成高质量的结果。大多数常用的方法是扩大接受域或融合不同的上下文信息。[5,6,32,37]利用卷积层中不同的膨胀率来捕获不同的上下文信息。在图像金字塔的驱动下,语义分割网络结构通常采用多尺度特征集成。在[5]中,提出了一个“ASPP”模块来捕获不同接受域的上下文信息。PSPNet[40]应用了一个PSP模块,它包含了几个不同规模的平均池化层。[6]设计了一个带有全局平均池的ASPP模块来捕获图像的全局上下文。[38]通过自适应卷积层对神经网络进行改进,获得自适应的场环境信息。DFN[36]将全局池添加到u形结构的顶部以对全局上下文进行编码。

注意力机制:注意机制可以利用高层信息来引导前馈网络[23,31]。在[7]中,CNN的注意力取决于输入图像的尺度。在[13]中,它们将通道注意力机制应用于识别任务,达到了最先进的水平。像DFN[36]一样,他们学习全局上下文作为注意力并修改特性。

四、感受野
在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野Receptive field。
感受野大才能充分考虑图片信息,使得分割结果完整、精确。
网络深,感受野就大,设置Context Path, 采用Resnet, Xception等骨架网络,增加深度,扩大感受野。
五、网络框架

1、Spatial Path

每一层包含一个stride = 2的卷积,然后批量归一化[15]和ReLU[11],输出图像为原图的1/8。由于特征图的空间尺寸大,编码的空间信息丰富。

2、Context path
空间路径编码丰富的空间信息,而上下文路径的设计是为了提供足够的接受域。

包含一个深度骨架网络,用于模型调整的卷积网络,以及一系列注意力优化模块。值得一提的是采用了全局均值化来降低计算量,稳定最大感受野。

ARM(注意力优化模块)

在 Context Path 中,借助全局平均池化捕获全局语境,计算注意力向量,优化 Context Path 中每一阶段的输出特征,便于整合全局语境信息,大大降低计算成本。

3、(FFM)特征融合模块:

Spatial Path 捕获的空间信息编码了绝大多数的丰富细节信息,Context Path 的输出特征主要编码语境信息。两路网络的特征并不相同,因此不能简单地加权两种特征,要用一个独特的特征融合模块以融合这些特征。简而言之,两个路径的特征图直接叠加不合适,那就设定个卷积网络,去训练学习一下两部分如何叠加,如上图。
针对不同层次的特征,首先将空间路径和上下文路径的输出特征串联起来。然后利用批处理归一化[15]来平衡特征的尺度。接下来,我们将连接的特征集合到一个特征向量并计算一个权重向量,就像SENet[13]那样。该权向量可对特征进行重权,相当于特征的选择和组合。

六、总结

a、单独用Spatial path 来保留丰富的空间信息

b、Context Path 直接用预训练经典网络提取深层特征,扩大感受野,提取上下文信息

c、使用了一个ARM模块,优化 Context Path 中每一阶段的输出特征,便于整合全局语境信息

d、Context Path 与Spatial path的特征整合方式:FFM

e、Loss Function 中,对Context Path 另外做监督

BiseNet阅读总结的更多相关文章

  1. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  2. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  3. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  4. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  5. 【原】AFNetworking源码阅读(五)

    [原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...

  6. 【原】AFNetworking源码阅读(四)

    [原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...

  7. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  8. 【原】AFNetworking源码阅读(二)

    [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

  9. 【原】AFNetworking源码阅读(一)

    [原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...

随机推荐

  1. Django--一对多表操作

    目录 Django--一对多表操作 需求 步骤 添加路由映射关系 学生表的增删改查 ajax更新和添加 Django--一对多表操作 今天还以一个学生管理系统为例,先通过pymysql这个模块,进行一 ...

  2. 鼠标按下改变RelativeLayout背景颜色,松开变回

    在drawable下创建bg.xml文件 <?xml version="1.0" encoding="utf-8"?> <selector x ...

  3. CENTOS7-JAVA模拟CPU占用高及排查( 转)

    环境 centos7 1核2GB Java8 模拟cpu占用高 新建一个名为jvm-learn的springboot项目 模拟代码如下 import org.springframework.boot. ...

  4. PHP应用如何对接微信公众号JSAPI支付

    微信支付的产品有很多,1. JSAPI支付  2. APP支付  3. Native支付  4.付款码支付  5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...

  5. Linux more与less命令

    1.命令简介 more (more) 该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比,方便逐页阅读(file perusal filter fo ...

  6. Sql 语句中 IN 和 EXISTS 的区别

    IN 语句:只执行一次 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选.所以相对内表比较小的时候,in的速度较快 ...

  7. Django 之 ContentType组件

    一.什么是 ContentTypes ContentTypes 是 Django 内置的一个应用,它可以追踪记录项目中所有 app 和 model 的对应关系,并记录在 django_content_ ...

  8. docker(ubuntu)中安装cron运行crontab定时任务

    1.安装cron apt-get install cron 设置crontab定时任务 crontab -e */ * * * * /usr/bin/python /python/asch-check ...

  9. Linux(Redhat)传送门汇总

    Linux(Redhat)传送门汇总 linux 环境布置 常用命令与shell 常用命令 shell 环境布置 Linux虚拟机安装(rhel 7.4) 虚拟机网络设置 VMware虚拟机开机启动 ...

  10. 小型SSM项目出现Failed to load ApplicationContext错误的解决方法(个人向)

    使用单元测试的时候,出现了Failed to load ApplicationContext错误,在添加了一个新的Mapper.xml文件才出现的,在保证其他配置文件没有出错的情况下,检查mapper ...