《BASeg: Boundary aware semantic segmentation for autonomous driving》论文解读
期刊:Neural Networks | Journal | ScienceDirect.com by Elsevier
年份:2023
代码:https://github.com/Lature-Yang/BASeg
摘要
语义分割是自动驾驶领域街道理解任务的重要组成部分。现有的各种方法要么专注于通过聚合全局或多尺度上下文信息来构建对象内部的一致性,要么简单地将语义特征与边界特征相结合来细化对象细节。尽管令人印象深刻,但大多数都忽略了内部对象和边界之间的长程依赖关系。本文提出一种边界感知网络(BASeg)用于语义分割,利用边界信息作为指导上下文聚合的重要线索。具体而言,在BASeg中提出了边界细化模块(Boundary Refined Module, BRM),通过骨架中的高层多尺度语义特征来细化Canny检测器粗粒度的底层边界特征;在此基础上,进一步提出了上下文聚合模块(Context Aggregation Module, CAM),以捕获边界区域与目标内部像素之间的长程依赖关系,实现相互增益并增强类内一致性。此外,所提出方法可以插入到其他CNN主干中以较小的计算预算获得更高的性能,并在数据集ADE20K、Cityscapes和CamVid上分别获得了45.72%、81.2%和77.3%的mIoU。与一些最新的基于resnet101的分割方法相比,大量的实验证明了该方法的有效性。
Introduction
主要贡献:
- 针对语义分割问题,提出了由边界特征、语义特征和聚合特征组成的语义分割框架BASeg,该框架采用基于注意力的机制来引导边界特征的上下文聚合。
- 将边界细化模块(BRM)集成到BASeg中,从Canny检测器获得的粗轮廓中生成显著的细化边界信息。
- 在Cityscapes和CamVid等公共驾驶场景数据集和ADE20K等语义数据集上进行了广泛的实验,证明了所提出模型的优越性能。
Method

网络架构:
- BASeg网络由边界流、语义流和聚合流组成,利用边界上下文信息来分割对象。
- 边界流用于预测给定图像的二值边界,语义流用于生成语义特征图,聚合流用于捕获语义特征图和边界特征图之间的长距离依赖。
- 网络架构包括使用ResNet101作为主干网络,ASPP(Atrous Spatial Pyramid Pooling)模块用于提取空间信息,以及引入全局平均池化分支以提供图像级信息。
主要组件:
- AGB:注意门块,过滤噪声并增强更高层级特征的细节
- ASPP:Atrous空间金字塔池,融合多尺度特征
- CAM:上下文聚合模块,用于捕获边界区域与对象内部像素之间的长距离依赖关系,实现相互增益并增强类内一致性。
- BRM:边界细化模块,用于通过高级多尺度语义特征来细化Canny检测器粗略检测到的低级边界特征。
- Canny:边缘检测器
2.1 Boundary Refine Module(BRM)
提升从Canny边缘检测器获得的粗略边界特征,并将其与深层的语义特征结合起来,以便于网络能够更准确地识别和细化对象的边界。

AGB中,特征信号X(来自Canny检测的轮廓特征)和门控信号G(来自语义特征图的高级特征)被结合起来,以增强边界区域的特征。
2.2 Context Aggregation Module (CAM)
负责捕获边界区域与对象内部像素之间的长距离依赖关系,以增强语义分割的性能。

计算过程:
- 特征转换:CAM通过三个1×1卷积层将语义特征F和边界特征B转换为三个新的特征图Q (Query), K (Key), V (Value)。这有助于减少参数数量和计算成本。
- 亲和力矩阵计算:通过计算Key和Query之间的亲和力矩阵S,来衡量不同像素间的相互影响。亲和力矩阵S是通过Key和Query的矩阵乘法以及Softmax函数得到的。
- 注意力机制:亲和力矩阵S反映了像素间的相关性,通过Softmax函数进行归一化处理,以突出显示重要像素对其他像素的影响。
- 特征适应:对亲和力矩阵S应用另一个1×1卷积层进行特征适应,以进一步优化特征表示。
- 上下文聚合:利用亲和力矩阵和Value特征图V,通过元素级求和操作,聚合输入的语义特征图和上下文注意力图,生成聚合后的特征图F。
2.3 Loss function
用来衡量模型预测与真实标签之间的差异,并指导网络训练过程中的参数更新。BASeg采用了一个多任务损失函数,它联合了三个独立的损失来优化网络的不同部分:
1. body loss:计算了网络对每个像素预测的类别概率与真实标签之间的差异。

2. bound loss:衡量了预测的边界与真实边界标签之间的差异,有助于细化边界区域的分割。
![]()
3. 辅助损失:像素级交叉熵损失,用于对选定的中间层特征进行辅助监督,以帮助网络学习更泛化的特征表示。中间层 F4 施加辅助监督来训练模型、
4. 联合损失:![]()
![]()
相关文章:
《BASeg: Boundary aware semantic segmentation for autonomous driving》论文解读
期刊:Neural Networks | Journal | ScienceDirect.com by Elsevier 年份:2023 代码:https://github.com/Lature-Yang/BASeg 摘要 语义分割是自动驾驶领域街道理解任务的重要组成部分。现有的各种方法要么专注于通过聚合全局或多尺度上下文…...
高效利用iCloud指南
高效利用iCloud的指南主要包括以下几个方面: 一、注册与登录 创建Apple ID: 如果尚未拥有Apple ID,可以在苹果官网或iOS设备的设置中创建。Apple ID是访问iCloud服务的前提。登录iCloud: 在苹果设备上,进入“设置”应…...
【MySQL】常见的MySQL日志都有什么用?
MySQL日志的内容非常重要,面试中经常会被问到。同时,掌握日志相关的知识也有利于我们理解MySQL 底层原理,必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启…...
IDEA社区版使用Maven archetype 创建Spring boot 项目
1.新建new project 2.选择Maven Archetype 3.命名name 4.选择存储地址 5.选择jdk版本 6.Archetype使用webapp 7.create创建项目 创建好长这样。 检查一下自己的Maven是否是自己的。 没问题的话就开始增添java包。 [有的人连resources包也没有,那就需要自己添…...
C/C++ list模拟
模拟准备 避免和库冲突,自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…...
android studio开发
Kotlin 编程简介 | Android Basics Compose - First Android app | Android Developers (google.cn) 这是官网的教程,实现试一下。 之后进入课程 您的第一个 Kotlin 程序 (google.cn) 程序可以被视为一系列指示计算机或设备执行某项操作的指令,...
PostgreSQl 物化视图
物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它不支持 INSERT…...
Win10工具:批量word转png图片
首先声明这个小工具是小编本人开发的,无任何广告,会员收费机制等,永久使用。允许公司或个人使用,不允许倒卖,否则发现后会追究法律责任,毕竟开发不易。工具是用python开发的。 功能非常单一,就…...
期货量化交易客户端开源教学第八节——TCP通信服务类
private FReciveStr: AnsiString; {接收到的数据} IsConErr: Boolean; {网络连接是否失败} FSocket_LB: Integer; {TCP连接类别,0为交易,1为行情,2为查询} FRetryCount: Integer; {网络连接重试次数} FLoginErrEvent: TLoginErrEvent; {…...
bi项目笔记
1.bi是什么 bi项目就是商业智能系统,也就是数据可视画、报表可视化系统,如下图的就是bi项目了 2.技术栈...
金蝶云苍穹-插件开发(四)GPT开发相关插件
我只对GPT开发的相关插件进行讲解,因为我的是插件开发教程,关于GPT的一些提示词的写法,GPT任务的配置,请去金蝶云苍穹的文档和社区内学习。 GPT自定义操作 GPT自定义操作的代码的类要实现 IGPTAction 这个接口,这个接…...
【机器学习】精准农业新纪元:机器学习引领的作物管理革命
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 🔍1. 引言📒2. 精准农业的背景与现状🍁精准农业的概念与发展历程🍂国内外精准农业实践案…...
一键掌握天气动态 - 基于Vue和高德API的实时天气查询
前言 本文将学习如何使用Vue.js快速搭建天气预报界面,了解如何调用高德地图API获取所需的天气数据,并掌握如何将两者有机结合,实现一个功能丰富、体验出色的天气预报应用 无论您是前端新手还是有一定经验,相信这篇教程都能为您带来收获。让我们一起开始这段精彩的Vue.js 高德…...
PostgreSQL修改最大连接数
在使用PostgreSQL 的时候,经常会遇到这样的错误提示, sorry, too many clients already,这是因为默认PostgreSQL最大连接数是 100, 一般情况下,个人使用时足够的,但是在生产环境,这个连接数是远远不够的&am…...
C# SqlSugar 如何使用Sql语句进行查询,并带参数进行查询,防注入
一般ORM查询单表数据已经是很简单的一种方式了 详情可以看我的另一篇文章:ORM C# 封装SqlSugar 操作数据库_sqlsugar 基类封装-CSDN博客 下面是介绍有些数据是需要比较复杂的SQL语句来进行查询的时候,则需要自行组装SQL语句来进行查询,下面…...
slf4j日志框架和logback详解
slf4j作用及其实现原理 SLF4J(Simple Logging Facade for Java)是一种日志框架的抽象层,它并不是一个具体的日志实现,而是一个接口或门面(Facade),旨在为各种不同的日志框架提供一个统一的API。…...
解决@Data与@Builder冲突的N种策略
前言 在Java项目中,Lombok的Data和Builder注解因其便捷性深受开发者喜爱,但两者并用时可能引发构造方法冲突。本文将全面解析这一问题的根源,并介绍包括利用实验性思路探讨的Tolerate概念在内的多种解决方案,确保您在实践中游刃有…...
一文看懂LUT(Lookup Table)查找表
文章目录 原理方法具体步骤和代码实现 查找表(Lookup Table,LUT)方法是一种通过预先计算并存储函数值来加速计算的方法。对于激活函数(例如ReLU),使用LUT可以在一定范围内通过查找预计算的值来近似函数计算…...
06 人以群分 基于邻域的协同过滤算法
这一讲我们将正式进入算法内容的学习。 推荐算法本质 推荐算法本质上是一一种信息处理方法,它将用户信息和物品信息处理后,最终输出了推荐结果。因为 05 讲中基于热门推荐、基于内容推荐、基于关联规则推荐等方法比较粗放,所以推荐结果往往…...
SQL性能下降的原因
一、SQL性能下降的原因 主要是性能下降SQL慢、执行时间长、等待时间长 不是一条SQL抓出来就要优化,在真实的生产环境下这种故障第一个要去复线,有可能去排查的时候没,所以没法复线。 可能需要它跑半天或者一天来缩小筛查的范围,…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
