学习记录——BiSeNetV1、BiSeNetV2、BiSeNetV3、PIDNet、CMNeXt

news2024/11/24 19:45:50

BiSeNetV1

BiSeNetV1为了在不影响速度的情况下,同时收集到空间信息和语义信息,设计了两条路:
Spatial Path: 用了三层stride为 2 的卷积,卷积+BN+RELU模块。最后提取了相当于原图像 1/8 的输出特征图。由于它利用了较大尺度的特征图,所以可以编码比较丰富的空间信息,并生成高分辨率特征图。
Contex Path: 上下文路径的backbone可以替换成任意的轻量网络,比如 Xception,ShuffleNet 系列,MobileNet 系列。可以看到,为了准确率考虑,Context Path 这边使用了类似 U-shape 结构的设计,最终进行了32倍下采样。不过,不同于普通的 U-shape,此处只结合了最后两个 Stage,这样设计的原因主要是考虑速度。值得注意的是,Context Path 依然在最后使用了 Global Average Pooling 来聚合特征、降维、减计算量,看下图中的ARM模块,通过全局池化+卷积+BN+sigmoid模块,设计了一个注意力机制(类似SENet),来学习每个通道特征的重要性。
Feature Fusion Module(特征融合) 在特征的不同层级给定的情况下,每层输出特征都有各自的重要性。特征融合模块首先连接 S p a t i a l P a t h Spatial PathSpatialPath 和 C o n t e x t P a t h Context PathContextPath 的输出特征,接着,通过批归一化平衡特征的尺度。下一步,像 SENet 一样,把相连接的特征池化为一个特征向量,并计算一个权重向量。这一权重向量可以重新加权特征,起到特征选择和结合的作用。在这里插入图片描述

BiSeNetV2

双边引导聚合网络。重点在 Guided Aggregation上。
论文中重新简述了语义分割的的一些发展。
如下图a中,利用空洞卷积可以扩大感受野的能力,来替换下采样和上采样操作。
B图还是熟悉的Unet网络结构
C图就是BiSeNet中双端网络,一条路提取空间细节信息,另一条路提取语义抽象信息
在这里插入图片描述

网络结构

在这里插入图片描述
还是标准的双边网络,一条路负责细节信息,另一条路负责语义信息

Detail Branch 三次下采样,最终下采用8倍,设计是遵循 宽而短 的原则。文中解释,这条路是为了获取细节信息,所有网络需要宽,也就意味着有更多的卷积核来提取细节特征。
Semantic Branch 4次下采样,最终下采样 16倍, 设计是遵循 窄而长的原则。原因是这条路为了提取深层次的语义特征,对网络深度有要求,为了效率速度,可以牺牲网络的宽度。

在这里插入图片描述

Stem和GE以及CE模块

在这里插入图片描述
CE 模块:从命名上看,是一个上下文编码模块。从网络结构上看,是为了融合 输入特征图中不同通道,可以看作对同一层不同通道间增加了一个注意力机制,全局池化提取全局信息,接1 ∗ 1 卷积后,与输入特征图相加,最后3*3卷积输出

Detailed design of Bilateral Guided Aggregation Layer

在这里插入图片描述

BiSeNetV3

2021
BiSeNetV3主要是在之前两个版本的BiSeNet模型的基础上进行思考与优化,考虑旧有模型的两个不足:1)主干网络简单借鉴分类任务缺乏对分割任务的针对性;2)多加一条额外通路用于编码空间信息增加了计算量。为此论文的解决方案是:1)提出一个短时密集连接网络STDCNet作为主干逐步对特征图进行降维聚合;2)提出一个细节聚合模块,以单一流的方式将空间信息的学习聚合到浅层网络中。

模型整体架构如下图所示,主干网络为STDCNet,Stage3、4、5输出的特征图下采样率分别为8、16、32,然后对大感受野的特征图应用全局平均池化,并应用ARM模块将两个不同阶段的特征图融合后,再与来自Stage3的特征图进行融合,输出8x下采样的特征图,最终分割头使用3×3CBR模块、1×1卷积和一个8x上采样来获得最终分割结果。
在这里插入图片描述

STDCNet短时密集聚合模块

如下图所示,单个stdc模块由多个CBR Blocks组成,除第一个Block的卷积核尺寸为1×1外,其余均为3×3,给定输入该模块的特征图通道数为N,前三个Block不断将其降为前一个Block的1/2,Block4则保持不变(快速通道降维然后多尺度融合以升维),下图©和下图(b)的区别在于前者在Block2阶段发生了下采样,然后应用3×3平均池化后参与融合。最后总是通过多个不同感受野的特征图concat实现多尺度信息的融合。
在这里插入图片描述

PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers

PIDNet:一个由PID控制器启发的实时语义分割网络
CVPR 2023
本文介绍了一种名为PIDNet的实时语义分割网络架构。虽然传统的双分支网络结构例如大家最熟悉的BiSeNet,其在实时语义分割任务中已经被证明有效。但是,作者认为直接融合高分辨率的空间细节信息和低频的上下文信息的方法存在缺陷,容易使得细节特征被周围的上下文信息淹没。这种现象被称为overshoot,限制了现有两分支模型的分割准确性的提高。

overshoot 即超调,是控制系统中一种普遍的现象,指的是系统在达到稳态之前或之后,输出变量会超过其最终稳态值的情况。在PID(即比例积分微分)控制器中,当反馈信号与期望值不同时,PID 控制器会根据比例、积分、微分三个部分计算出一个控制量来调整输出,从而使反馈信号逐渐接近期望值。但是在比例系数过大或系统响应过快时,控制器可能会产生超调现象,使得输出超过期望值一段时间,这可能导致系统出现震荡、不稳定等问题。

本文提出了一种新的三分支网络架构:PIDNet,其包含三个分支,分别用于解析:空间细节信息、上下文信息、边界信息。同时,采用边界注意力机制来指导空间细节信息分支和上下文信息分支的融合。

一个 PID 控制器包含三个组件:
比例(P)控制器 关注当前信号
积分(I)控制器 累加所有过去信号
微分(D)控制器

由于积分的惯性效应,当信号变化相反时,简单的 PI 控制器的输出会出现超调现象。因此通常会引入了 D控制器进行调节,当信号变小时,D分量将变为负数,并作为阻尼器减少超调现象。类似地,TBN,即双分支网络也是通过不同的卷积层来解析上下文和空间细节信息。
相比于空间细节信息分支,上下文信息分支对局部信息的变化不太敏感。换个角度理解,便是细节信息和上下文信息分支在空间域中的行为类似于时间域中的P(当前)和I(所有先前)控制器。
在这里插入图片描述
现有的双分支结构可以类比于 PI 控制器,这类控制器容易出现 overshoot 的问题。因此,为了缓解这个问题,本文在 TBN 上增加了一个辅助的导数分支 ADB,即在空间上模拟 PID 控制器,并突出高频语义信息。其中,考虑到每个 object 内部像素的语义是一致的,只有在相邻对象的边界处才会出现语义不一致,因此语义的差异仅在对象边界处为非零,所以 ADB 的目标是边界检测。遂本文建立了一种新的三分支实时语义分割体系结构,即比例-积分-微分网络——PIDNet,如下图所示。
在这里插入图片描述
PIDNet 拥有三个分支,具有互补的职责:

比例分支负责解析和保留高分辨率特征图中的详细信息;
积分分支负责聚合局部和全局的上下文信息以捕获远距离依赖;
微分分支负责提取高频特征以预测边界区域。

同DDRNet一样,本文也采用级联残差块作为骨干网络,以更好地移植到硬件部署。此外,为了实现更加高效,作者将 P、I 和 D 分支的深度设置为适中、较深和较浅。因此,通过加深和加宽模型可以生成一系列 PIDNet 模型,即PIDNet-S、PIDNet-M和PIDNet-L,也就是做对网络架构进行缩放。

Pag: Learning High-level Semantics Selectively

即像素注意力引导模块,很好理解,就是将比例和积分分支的特征利用一个注意力机制进行交互增强
在这里插入图片描述
首先,作者提到了在其他语义分割网络中常用的横向连接lateral connection技术,该技术可以加强不同尺度的特征图之间的信息传递,提高模型的表达能力。而在 PIDNet 中,I 分支提供了丰富准确的语义信息,对于 P 和 D 分支的细节解析和边界检测至关重要。因此,作者将 I 分支视为其他两个分支的备用支持,并使其能够为它们提供所需的信息。此外,与 D 分支直接添加提供的特征图不同,作者为 P 分支引入了Pag 来选择性地学习 I 分支中有用的语义特征

PAPPM: Fast Aggregation of Contexts

PPM,主要用于构建全局场景的先验信息。其主要对不同尺度的特征图进行池化操作,然后将不同尺度的池化特征图进行拼接,形成本地和全局上下文的表示。说白了就是个多尺度融合
在这里插入图片描述
作者认为 PPM 虽然能够很好地嵌入上下文信息,但它的计算过程无法并行化,非常耗时,而且对于轻量级模型来说,PPM 包含的每个尺度的通道数太多,可能会超过这些模型的表示能力。因此,作者对 PPM 进行了修改,提出了一种可并行化的新的 PPM,叫做 Parallel Aggregation PPM, PAPPM,并将其应用于PIDNet-M 和 PIDNet-S 以保证它们的速度。对于深度模型 PIDNet-L,作者仍然选择 PPM,但减少了每个尺度的通道数,以减少计算量并提高速度。

Bag: Balancing the Details and Context

边界注意力引导 Bag 模块的作用是利用边界特征来指导细节(P)和上下文(I)表示的融合,以实现更好的语义分割效果。作者指出,尽管上下文分支具有语义精度,但它在边界区域和小物体上丢失了太多的空间和几何细节,因此,PIDNet 利用细节分支来提供更好的空间细节,并强制模型在边界区域更加信任细节分支,同时利用上下文特征来填充其他区域。
在这里插入图片描述

Delivering Arbitrary-Modal Semantic Segmentation

CVPR 2023 任意模态语义分割

多模态融合可以让语义分割更加鲁棒,然而,融合任意模态的特征的方法目前还没有人探索。
因此,本文提出了DELIVER ,任意模态分割基准数据集, 覆盖了 Depth, LiDAR, multiple Views, Events, and RGB,该基准算在四种恶劣天气条件下以及五种传感器故障情况下提供的,以利用模态互补性并解决部分中断。

  1. 模态越多,性能应该是单调上升的。 但是以前的方法因为他们模态组合设计的缺陷没有展示出这一点
  2. 多个传感器同时运作有希望有效对抗单个传感器的损坏。大多数方法都假设每个传感器都精确运行。在现实机器人系统中常见的部分传感器故障(例如LiDAR抖动)下,融合不对齐的感知数据甚至可能会降低分割性能

3种不同范式:
图2a的范式:单独分支,计算成本高
图2b的范式:单个联合分支,会丢弃有价值的信息
图2c的范式(CMNeXt):两个分支的非对称架构,一个用于RGB,另一个用于各种辅助模态(毕竟rgb信息往往更全面且广泛)。

在这里插入图片描述

CMNeXt结构:

在这里插入图片描述

主要贡献:
本文为任意模态语义分割(Arbitrary-Modal Semantic Segmentation)(AMSS)创建了新的基准DELIVER,包含四种模态,四种恶劣天气条件,五种传感器故障模式。
本文回顾和比较了不同的多模态融合范式,并提出了采用非对称架构的Hub2Fuse范式来实现AMSS。
提出的了通用的任意跨模态融合模型(arbitrary cross-modal fusion model)CMNeXt,该模型具有用于选择信息特征的Self-Query Hub(SQ-Hub)和用于获取判别线索的Parallel Pooling Mixer(PPX)。

CMNeXt是两个分支的非对称架构,一个用于RGB,另一个用于各种辅助模态,其中的创新性结构为自查询中心SQ-Hub,它作用于与RGB分支融合之前,从所有模态中动态选择信息量大的特征,沿着Attention取最大值,可以减少计算量。

Self-Query Hub

在这里插入图片描述
首先,对于每个模态的特征 fm ∈H×W ×C,先做一个dwconv、conv和sigmoid,得到代表informative score mask维度为H×W的 Qm
在这里插入图片描述
随后,将 Qm 与dwconv后的 fm 相乘,在与 fm 相加,最后沿着m(H×W×C×M)维度取最大值,就可以得到 fq ∈H×W×C。
整体上比较简单,因为每加一个模态,反应在计算量上也就是m维度上多了一维,所以计算量加的很少,最后选取最有用的信息的方式是取最大值,也是比较清晰简单的。

Parallel Pooling Mixer

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎样把手机录音转换成文字免费?分享3个免费方法给给大家!

将手机录音转换为文字可以提高工作和学习效率,但很多人不知道如何实现。在本文中,我将分享三个免费的方法来帮助您将手机录音转换为文字,分别是使用记灵在线工具(网页)、微信和剪映。无论您是需要转录会议记录、课堂笔…

界面控件DevExtreme UI组件——增强的API功能

虽然DevExtreme刚刚发布了v23.1,但今天我们仍然要继续总结一下之前的主要更新(v22.2)中发布的一些与DevExtreme API相关的重要特性。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈&#xff…

C语言 — 指针进阶篇(上)

前言 指针基础篇回顾可以详见: 指针基础篇(1)指针基础篇(2) 指针进阶篇分为上下两篇,上篇介绍1 — 4,下篇介绍5 — 6 字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的…

Leetcode-每日一题【147.对链表进行插入排序】

题目 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序…

MySQL分区表详解

目录 分区表介绍 分区适用场景 分区方式 分区策略 常见分区命令 1. 分区表介绍 MySQL 数据库中的数据是以文件的形势存在磁盘上的,默认放在 /var/lib/mysql/ 目录下面,我们可以通过 show variables like %datadir%; 命令来查看: 我们进入…

a标签form表单,转发,重定向

a标签需要写项目名,form表单需要写项目名,转发写请求路径,重定向需要写项目名 // window.location.href"请求路径" 需要写项目名 // window.location"请求路径" 需要写项目名 // document.location.href"请求路径" 需要写项目名 …

业务流程图怎么画?这几种绘制方法看一看

业务流程图怎么画?流程图提供了对业务流程的清晰概述,帮助人们理解工作流程中涉及的活动、决策和步骤。它定义了任务的顺序和依赖关系,使人们能够更好地了解整个流程。通过绘制流程图,可以更容易地识别出潜在的问题、瓶颈和延迟。…

SOPC之NiosⅡ系统(一)

1. 基础概念 1.1 CPU软核与硬核 简单来说 CPU硬核就是在FPGA上的一颗硬件结构固定并且用户不能对其结构进行任何更改、只能进行编程控制的芯片。 CPU软核则是FPGA上本来不存在这样的硬件结构,用户可根据硬件描述语言利用NIOS Ⅱ软核搭建出一个CPU。 1.2 SOC和S…

面试题大杂烩-记不住

1、分库分表图啥 分库是为了解决单库io连接数的瓶颈 分表是为了解决单表效率瓶颈 2、分表后如何limit分页 如果是根据xxx字段进行分表的话 那么shardingjdbc会根据字段进行笛卡尔积计算 去对应表里面执行sql到内存中计算,比如根据用户id进行hash算法进行查表&…

如何选择软文发布平台?软文发布平台的分类、特点及推广策略

在现今的市场竞争中,软文作为一种重要的推广方式,受到了越来越多企业的关注和运用。而软文发布平台,则是软文营销过程中不可或缺的一个环节,不同的软文发布平台会对软文的传播效果产生重要影响。本文将从软文发布平台的分类、特点…

淘宝APP商品详情源数据接口代码分享(API接口系列可高并发)

电商平台APP商品详情源数据接口代码分享如下: 商品数据:淘宝提供了商品的基本信息,包括商品名称、描述、规格、价格、销量、库存等信息。此外,也可以通过淘宝提供的API接口来获取商品的图片、评价、物流信息等详细数据。 公共参数…

深入理解DRF中的Mixin类

DRF官网地址: Home - Django REST framework Generic views - Django REST framework 一、Mixin类介绍 1.1 Mixin类介绍 Mixin类是一种常见的设计模式,在多个类之间共享功能或行为时非常有用。 一个Mixin类通常包含一组方法或属性,可以被…

unity 使用vrtk4的插件 打包htv vive VR客户端包,手柄不生效

背景: 目的:u3d使用vrtk开发pico应用(vrtk是为了到时候无缝衔接后续要买的htc vive pro 2) 先导入了tilia importer(也就是vrtk4.0,根据教程模块化使用功能)和pico官网下的“PICO Unity IntegrationSDK-214-20230302…

Leetcode-每日一题【138.复制带随机指针的链表】

题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…

手捏Java知识点

今天开始面向对象了 面向对象基础 类:由属性和行为组成属性:在类中通过成员变量来体现行为:在类中通过成员方法来体现public class 类名{//成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;...//成员方法方法1;方法2;...}有几个重要的概…

百度iOS端长连接组件建设及应用实践

作者 | 百度消息中台团队 导读 在过去的十年里,移动端技术飞速发展,移动应用逐渐成为主要的便捷访问和使用互联网的方式,承接了越来越多的业务和功能,这也意味着对移动端和服务器之间的通信效率和稳定性提出了更高的要求。为了实现…

ellisys 过滤设备

1、通过关键字过滤 输入蓝牙名称关键字,比如下面输入的是BNCM Transmitter "*BNCM*" || Receiver "*BNCM*" 之后,所有与这个设备相关的信号都会抓取过滤出来 2、通过地址过滤 之后,所有与这个设备相关的信号都会抓取过…

港联证券-深夜,大利好!人民币暴拉超500点,全球股市大反攻

全球商场一夜狂欢。 美国通胀大降温,全球危险资产全线大涨。北京时间7月12日晚间,美国劳工统计局发布数据,美国6月CPI同比涨幅回落至3%,低于预期3.1%,接连第12个月下降,且为2021年3月以来最低。数据发布后&…

02 |「Android Studio 新建项目」

前言 新手入门安卓开发 文章目录 前言一、步骤一、步骤 New Project选择 Empty Activity1)Name:项目的名字; 2)Package name:项目的包名(项目的唯一标识); 3)Save location:项目的保存路径; 4)Language:

QT实现按钮开关Form窗体的效果

实现效果叙述如下: MainWindow中的按钮实现Form窗体的开关,Form窗体的关闭按钮禁用掉,只允许使用窗体按钮进行,且关闭MainWindow按钮时Form窗体随之关闭。 注意: 要想实现关闭MainWindow按钮时Form窗体随之关闭&#x…