当前位置: 首页 > news >正文

Voxel mamba :基于Mamba的3D目标检测算法解析

目录

  • 1 算法简介
      • 1.1 前提补充
        • 空间填充曲线(Space-filling Curve)
        • 点云分组
  • 2 模块介绍
      • 2.1 希尔伯特输入层(Hilbert Input Layer)
      • 2.2 双尺度 SSM 模块(Dual-scale SSM Block)
      • 2.3 隐式窗口分区 (Implicit Window Partition)
      • 2.4 Voxel Mamba Backbone
      • 2.5 有效感受野 Effective Receptive Field of Voxel Mamba

github链接: https://github.com/gwenzhang/Voxel-Mamba/tree/master
参考链接: https://www.bilibili.com/read/cv35707685/

1 算法简介

  • 背景:传统的基于序列化方法的三维体素(voxel)在输入到 Transformer 前会牺牲体素的空间邻近性,这限制了模型的性能。
  • Voxel Mamba:提出了一种无组(group-free)策略,将整个体素空间序列化为单一序列,减少了空间邻近性的损失。
  • Dual-scale SSM Block:提出了一种双尺度状态空间模块,通过建立层次结构来增强模型的接收域。
  • Implicit Window Partition:隐式窗口划分通过位置编码增强空间邻近性,无需显式进行空间窗口划分。

在这里插入图片描述

1.1 前提补充

空间填充曲线(Space-filling Curve)

空间填充曲线是一系列分形曲线,可以不重复地穿过多维空间中的每个点。经典的空间填充曲线包括希尔伯特曲线、Z阶曲线和扫描曲线等。这些方法可以在保持空间拓扑和局部性的同时进行降维。许多研究人员引入了用于点云处理的空间填充曲线。 例如HilbertNet使用希尔伯特曲线将 3D 结构折叠到 2D 空间中,以减少计算量和 GPU 占用。对于 3D 对象检测,一些方法也采用窗口扫描曲线对体素特征进行分组以进行并行计算。本文采用希尔伯特曲线是因为它具有保局部性的有利特性。

点云分组

LiDAR 点云稀疏且分布不均匀,密度各异。因此,现有方法对点或体素进行分组以促进并行计算并降低复杂度。然而,分组只是计算复杂性的折衷方案,限制了信息的流动和有效的感受野。为了解决这个问题,本论文将整个体素建模为一个序列,并允许每个体素了解全局上下文信息

2 模块介绍

在这里插入图片描述

Voxel Mamba 的概述如图所示。

  • 首先,Voxel Mamba 通过体素特征编码策略将点云转换为稀疏体素。
  • 然后,使用希尔伯特输入层将整个场景的体素序列化为单个序列(与之前执行大量窗口分区和体素分组的基于 Transformer 的方法不同)。
  • 随后,提出了一种作用于体素序列的双尺度 SSM 块,它允许在全局上下文中处理体素。
    为了扩大有效感受野,DSB在前向路径中采用更细粒度的体素序列感知;
    在后向路径中对体素序列进行下采样。后向路径从低分辨率 BEV 表示中提取特征,并在更深的块中增加下采样因子。
  • 最后,为了增强序列中的空间接近度,Voxel Mamba 采用隐式窗口分区来保留提取的体素特征中的 3D 位置信息,并将其投影到 BEV 特征图。

2.1 希尔伯特输入层(Hilbert Input Layer)

希尔伯特曲线可以遍历空间中的所有元素而不重复,并保留空间拓扑
为了提高序列化中体素的接近度,文中提出希尔伯特输入层来重新排序体素序列。

  1. 将体素特征的坐标表示为 C = { ( x , y , z ) ∈ R 3 ∣ 0 ≤ x , y , z ≤ n } \begin{aligned}\mathcal{C}=\{(x,y,z)\in\mathbb{R}^3|0\leq x,y,z\leq n\}\end{aligned} C={(x,y,z)R3∣0x,y,zn}
  2. 将体素映射到其在希尔伯特曲线内的遍历位置 h h h 上。即将 ( x , y , z ) (x, y, z) (x,y,z) 转换为其具有 l o g 2 n log_{2}n log2n 位的二进制格式。例如, x x x 转换为 ( x m x m − 1 . . . x 0 ) (x_mx_{m-1}...x_0) (xmxm1...x

相关文章:

  • vue2+elementUI实现handleSelectionChange批量删除-前后端
  • 基于物联网技术的智能运动检测仪设计(微信小程序)(230)
  • 数据链路层之以太网
  • windows通过文件系统访问ftp传输中文乱码
  • VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 标准版和厂商定制版
  • 51单片机应用开发(进阶)---数码管显示按键“加”“减”计数
  • Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
  • 【JavaEE】——线程池大总结
  • 上海建站提升在线曝光率的关键
  • 记Flink SQL 将数据写入 MySQL时的一个优化策略
  • 宝塔面板部署雷池社区版教程
  • MySql在更新操作时引入“两阶段提交”的必要性
  • 数据结构及基本算法
  • 《深度学习》卷积神经网络CNN 实现手写数字识别
  • 一次阿里云ECS免费试用实践
  • JS 中的深拷贝与浅拷贝
  • 11111111
  • angular学习第一篇-----环境搭建
  • cookie和session
  • extract-text-webpack-plugin用法
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • js中的正则表达式入门
  • k8s如何管理Pod
  • PHP面试之三:MySQL数据库
  • Python爬虫--- 1.3 BS4库的解析器
  • Python学习之路16-使用API
  • tweak 支持第三方库
  • Vue2.x学习三:事件处理生命周期钩子
  • 阿里云Kubernetes容器服务上体验Knative
  • 利用DataURL技术在网页上显示图片
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 写给高年级小学生看的《Bash 指南》
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ## 1.3.Git命令
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (35)远程识别(又称无人机识别)(二)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (MATLAB)第五章-矩阵运算
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (推荐)叮当——中文语音对话机器人
  • (转) Android中ViewStub组件使用
  • (转)Sql Server 保留几位小数的两种做法
  • (转)winform之ListView
  • **python多态
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .gitignore不生效的解决方案
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET DataGridView数据绑定说明
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET Standard 支持的 .NET Framework 和 .NET Core