《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抓出来就要优化,在真实的生产环境下这种故障第一个要去复线,有可能去排查的时候没,所以没法复线。 可能需要它跑半天或者一天来缩小筛查的范围,…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
从零手写Java版本的LSM Tree (一):LSM Tree 概述
🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…...
【技巧】dify前端源代码修改第一弹-增加tab页
回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码,在知识库增加一个tab页"HELLO WORLD",完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
