CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割

本文主要是介绍CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI算法修炼营”,选择加星标或“置顶”

标题以下,全是干货

论文地址:https://arxiv.org/abs/2003.05128 

代码地址:https://github.com/shachoi/HANet

该论文利用了城市场景图像的内在特征,并提出了一个通用的附加模块,称为高度驱动的注意力网络(HANet),用于改善城市场景图像的语义分割。

将城市场景图像进行水平分割后(分为上部、中部、下部),像素级类别分布彼此之间存在显著差异。同样,城市场景图像具有其自身独特的特征,但是大多数语义分割网络并未反映出体系结构中的此类独特属性。HANet网络架构结合了利用垂直属性来有效处理城市场景数据集的能力。HANet根据像素的垂直位置来选择相关特征并进行像素类

经过广泛的定量分析表明,HANet模块能既简单又经济高效地添加到现有模型中。在基于ResNet-101的分割模型中,该方法在Cityscapes基准上实现了新的SOTA性能。此外,文中通过可视化和解释注意力图来表明所提出的模型与在城市场景中观察到的事实是一致的。

1. 简介

由于城市现场图像是由安装在汽车前部的摄像头捕获的,因此城市现场数据集仅由道路行驶图片组成这导致有可能根据空间位置,特别是在垂直位置,引入共同的结构先验。

下图显示了垂直位置上的城市场景数据集的类别分布。尽管少数类别的像素在整个图像区域中都是主要的(图1(a)),但类别分布对垂直位置有很大的依赖性。也就是说,图像的下部主要由道路组成,而中间部分则包含各种相对较小的对象。在上部,建筑物,植被和天空是主要对象,如图1(b)所示。

可以看出,类别分布极为不平衡, 主要的前五类的概率:道路,建筑物,植被,汽车和人行道。占主导地位的类占据了整个数据集的88% 。如上所述,如果将图像分为三个区域:上部,中部和下部,则类别分布完全不同。

如果能够识别出图像中任意像素所属的部分,将有助于语义分割中的像素级分类。提出了一种新型的高度驱动的注意力网络(HANet),作为城市场景图像语义分割的通用附加模块。给定一个输入特征图,HANet提取代表每个水平划分部分的“高度上下文信息”,然后从高度上下文信息中预测每个水平部分中特征或类别。

论文主要贡献:

  • 提出了一种新颖的轻量级附加模块HANet,可以轻松地将其添加到现有模型中,并通过根据像素的垂直位置通道的注意力驱动来提高性能。通过广泛的实验,我们证明了该方法的有效性和广泛适用性.

  • 通过将HANet添加到DeeplabV3+基线中,在Cityscapes数据集上获得了最新的性能,而计算和内存开销可忽略不计。

  • 可视化并解释各个渠道上的注意力权重,并以实验方式证实了高度位置对于改善城市场景中的片段化性能至关重要。

 2. 背景

语义分割的模型中,在捕获高级语义特征的同时保持特征图的分辨率对于实现语义分割的高性能至关重要。主要方法有:

  • 跳级连接(利用编码器层中较早存在的高分辨率特征来恢复解码器层中的对象边界)

  • 空洞卷积(在不增加计算量的情况下,增加感受野的大小)

  • 自注意力机制(捕获远程依赖)

  • 关注类别的边界信息

3. 方法

根据空间位置的不同,城市场景图像通常包含共同的结构先验。就类别分布而言,图像的每一行都有明显不同的统计信息。从这个意义上说,在城市场景分割的像素级分类过程中,可以分别捕获表示每一行的全局上下文信息即高度上下文信息来估计信道的权重。

因此,提出了HANet,其目的是:i)提取高度方向的上下文信息,ii)使用上下文计算高度驱动的注意权重以表示每行的特征(中间层)或类(最后一层)的重要性。。

 

(a)width-wise pooling

压缩空间维。在宽度合并操作的最大合并和平均合并之间进行选择是一个超参数,并根据经验设置为平均合并

 

(b,d)interpolation for coarse attention

合并操作后,模型生成矩阵Z∈RC`×H`。但是,并不是矩阵Z的所有行对于计算有效的关注图都是必要的。因此,先经过插值进行下采样(b),同时,由于由下采样表示构造的注意图也是粗糙的,因此还需要通过上采样将注意图转换为与给定的高层次特征图Xh具有等效的高维(图2(d))。

(c)computing height-driven attention map

高度驱动的通道式注意力图A是由卷积层获得的,这些卷积层将宽度合并和插值后的特征图ˆZ作为输入。在生成注意力图过程中,采用卷积层而不是全连接层(与SENet有区别),以便在估计注意力图时考虑相邻行之间的关系,因为每一行都与其相邻行相关。同时,为了允许这些多个功能和标签,在计算注意力图时使用了S形函数,而不是softmax函数。这些由N个卷积层组成的运算可以写成:

(c)positon encoding

当人类识别出驾驶场景时,他们对特定物体的垂直位置具有先验知识(例如,道路和天空分别出现在下部和上部)。受此观察的启发,将NLP领域的正弦位置编码添加到HANet中。具体位置编码定义为:

在计算注意力图之后,可以将给定的较高级特征图Xh转换为通过A和Xh的元素乘积获取的新表示。每个通道的单个缩放向量是由每个单独的行或多个连续行每组派生的,因此该向量与水平方向一起进行计算,公式为:

4. 具体细节和可视化

采用DeepLabv3 + 作为语义分割任务的基准。 DeepLabv3 +具有带ASPP的编解码器架构,该架构采用各种扩张速率对应于不同rate的空洞率。在从骨干网络对高级表示进行编码之后,将HANet添加到五个不同层的分段网络。这是因为高级特征与垂直位置的相关性更强

HANet具体的结构图如上图所示。在Pytorch中使用二维自适应平均池化操作2来实现针对粗略注意的宽度方向池化和插值。此后,应用了dropout层和三个一维卷积层。

如上图所示,宽度方向上的列与高度方向上的相应的列类别分布相似。因此,相对于图像的水平位置提取不同的信息将相对困难。同样,从经验上讲,使用注意力网络与预测宽度类别分布时,没有观察到有意义的性能提升。这证实了HANet概念的基本原理,该思想提取并合并了高度方向的上下文信息,而不是宽度方向的上下文信息。

5. 效果

为了与其他最新模型进行比较,使用经过精细注释的训练和验证集,9000次迭代进行训练。在采用ResNext-101 骨干的情况下,额外使用了粗注释的图像,并且该模型在Mapillary 上进行了预训练。crop和批量大小分别更改为864×864和12。将基于ResNet-101和ResNext-101的最佳模型与Cityscapes测试集上的其他最新模型进行了比较,模型实现了最新的性能。

目标检测系列

  • 秘籍一:模型加速之轻量化网络

  • 秘籍二:非极大值抑制及回归损失优化

  • 秘籍三:多尺度检测

  • 秘籍四:数据增强

  • 秘籍五:解决样本不均衡问题

  • 秘籍六:Anchor-Free

语义分割系列

  • 一篇看完就懂的语义分割综述

  • 最新实例分割综述:从Mask RCNN 到 BlendMask

面试求职系列

  • 决战春招!算法工程师面试问题及资料超详细合集

一起学C++系列

  • 内存分区模型、引用、函数重载

竞赛与工程项目分享系列

  • 如何让笨重的深度学习模型在移动设备上跑起来

  • 基于Pytorch的YOLO目标检测项目工程大合集

  • 点云配准领域全面资料、课程、数据集合集分享

  • 10万奖金天文数据挖掘竞赛!0.95高分Baseline分享

  • 目标检测应用竞赛:铝型材表面瑕疵检测

SLAM系列

  • 视觉SLAM前端:视觉里程计和回环检测

  • 视觉SLAM后端:后端优化和建图模块

  • 视觉SLAM中特征点法开源算法:PTAM、ORB-SLAM

  • 视觉SLAM中直接法开源算法:LSD-SLAM、DSO

视觉注意力机制系列

  • Non-local模块与Self-attention之间的关系与区别?

  • 视觉注意力机制用于分类网络:SENet、CBAM、SKNet

  • Non-local模块与SENet、CBAM的融合:GCNet、DANet

  • Non-local模块如何改进?来看CCNet、ANN

这篇关于CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484049

相关文章

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.