Fusion++ 语义实例分割​​与​​稠密SLAM重建​​在TSDF子图层面进行了深度融合 - MKT

news/2025/10/29 2:54:48/文章来源:https://www.cnblogs.com/gooutlook/p/19173047

 

3. Fusion++ 的完整工作流程

​​步骤一:基于RGB-D帧的实例分割(每帧)​​

  • 输入每一帧RGB-D图像。
  • 使用2D实例分割网络(如Mask R-CNN)处理RGB图像。
  • 输出:一系列​​实例掩码(Instance Mask)​​,每个掩码对应一个检测到的物体,并带有语义标签(如“chair”, “monitor”)和置信度。

步骤二:实例到3D的关联与子图管理(核心)​​

这是最关键的步骤,系统需要决定如何将2D检测结果与3D的TSDF子图关联起来。

  1. ​​创建新的实例子图​​:
    • 当检测到一个​​高置信度​​的物体实例,并且在现有的3D实例子图库中找不到与之匹配的实例时,系统会​​为该实例创建一个新的TSDF子图​​。
    • 这个新的子图只专注于重建这个物体。初始时,它的坐标系可以与第一帧检测到该物体时的相机坐标系对齐。
  2. ​​更新现有的实例子图​​:
    • 当在当前帧中检测到的实例与已有的某个实例子图​​匹配成功​​时,系统就将当前帧中属于该实例的深度数据​​融合​​到对应的实例子图中。
    • ​​匹配如何实现?​​ 这是一个数据关联问题。Fusion++ 使用​​几何和外观特征​​进行匹配:
      • ​​几何匹配​​:将现有实例子图的模型渲染到当前相机视角,与2D检测框进行IoU(交并比)计算。
      • ​​外观匹配​​:比较实例子图的历史外观(颜色)与当前检测区域的外观相似性。
  3. ​​处理遮挡和不确定性​​:
    • 如果某个实例在连续多帧中未被观察到(可能被遮挡),其子图会被暂时“休眠”,但不会被删除。
    • 当它再次出现时,可以通过匹配重新激活并继续更新。

 

匹配问题

​​Fusion++ 绝对不可能使用暴力匹配​​,因为那在计算上是完全不可行的。它采用了一种非常巧妙的​​分层筛选和高效数据关联​​策略。

 

第1步:基于语义标签的极速筛选

这是最快速、最有效的一层筛选,能立刻将候选实例数量降低几个数量级。
  • ​​场景​​:当前帧的RGB图像经过2D实例分割网络(如Mask R-CNN),得到了几个检测结果,例如:{标签: ‘椅子’, 置信度: 0.95}{标签: ‘显示器’, 置信度: 0.98}
  • ​​动作​​:系统只会去现有的实例库中寻找那些​​语义标签相匹配​​的实例。
  • ​​示例​​:​​效果​​:如果数据库中有1000个实例,但只有10个是“椅子”,那么这一下就排除了99%的候选,只剩下10个需要进一步考虑。
    • 对于当前检测到的“椅子”,系统会​​完全忽略​​实例库中所有的“显示器”、“桌子”、“杯子”等。
    • 它只会在标签为“椅子”的实例子图集合中进行下一步匹配。

   效果​​:如果数据库中有1000个实例,但只有10个是“椅子”,那么这一下就排除了99%的候选,只剩下10个需要进一步考虑。

 

第2步:基于可见性/重投影的几何筛选

这一层利用简单的几何规则,从剩下的少数同标签实例中进一步筛选。
  • ​​原理​​:一个物体只有可能出现在相机​​视野内(Frustum)​​ 并且​​没有被完全遮挡​​时,才可能被当前帧看到。
  • ​​具体操作​​:
    1. ​​视锥体剔除​​:对于每个候选实例子图,系统知道它的6D姿态(位置和朝向)。它可以快速判断该实例的​​3D包围盒​​是否位于当前相机的视锥体内。不在视野内的实例被立即剔除。
    2. ​​粗略深度检查​​:将候选实例的包围盒重投影到图像平面,检查其预估深度与当前帧的深度图是否在合理范围内。如果实例应该出现在距离相机5米的地方,但深度图显示那里是10米(意味着可能被遮挡),则该实例的匹配优先级会降低。

 

第3步:基于外观/几何的精细数据关联

经过前两层筛选,剩下的候选实例通常已经非常少了(比如只有1-3个)。这时,系统才会进行计算量稍大的精细匹配。​​匹配方法通常有两种(或结合使用):​​

A. 基于外观的匹配(Image-based)

  • ​​操作​​:将候选实例子图存储的​​外观纹理​​(颜色)渲染到当前相机视角,得到一个预测的“贴图”。然后将这个预测贴图与当前帧RGB图像中实际检测到的物体区域进行相似度比较(例如,使用直方图相似度或简单的像素级差异)。
  • ​​目的​​:判断“这个候选物体看起来像不像我当前看到的物体?”

B. 基于几何的匹配(Geometry-based)

  • ​​操作​​:将候选实例子图的​​3D模型​​(从其TSDF体积中提取的网格或点云)渲染到当前相机视角,得到一个预测的“轮廓”或“深度图”。然后将这个预测轮廓/深度与当前帧实例分割的​​Mask​​和​​深度图​​进行比较。​​目的​​:判断“这个候选物体的形状和位置是否与我当前看到的物体吻合?”
    • ​​轮廓IoU​​:计算预测轮廓和实际检测Mask的交并比。重叠度越高,匹配可能性越大。
    • ​​深度一致性​​:检查预测深度和实际观测深度是否一致。
  • ​​目的​​:判断“这个候选物体的形状和位置是否与我当前看到的物体吻合?”

 

匹配歧义性​​:很多不同实例可能几何形状相似(如多把相同的椅子),仅靠几何匹配容易出错。

结合语义标签和粗略位置信息,可以极大地消除这种歧义。

 

因此,Fusion++ 采用的 ​​“语义标签 → 几何视锥 → 外观/几何精细匹配”​​ 的分层数据关联策略,是其在复杂场景中实现高效、鲁棒实例级重建的关键所在。这是一种将​​高层语义信息​​与​​底层几何信息​​紧密结合的典范。

 

骤三:独立的姿态估计与优化​​

每个实例子图都有​​两个​​关键的姿态需要估计和优化:

  1. ​​物体姿态(Object Pose)​​: TW,Oi
    • 定义:实例子图(物体)相对于​​世界坐标系​​的位姿。
    • 作用:描述了这个物体在全局场景中的​​位置和方向​​。
    • 优化:通过物体级别的闭环检测进行优化。例如,相机从不同角度观测同一个椅子,这些观测可以共同优化这把椅子的全局位姿。
  2. ​​相机姿态(Camera Pose)​​: TW,C
    • 定义:相机相对于​​世界坐标系​​的位姿。
    • 优化:传统的SLAM前端里程计和后端的姿态图优化。

这种将物体姿态和相机姿态​​解耦​​的表示,被称为 ​​“对象中心”的SLAM​​,是Fusion++的一大贡献。

 

 

4. 技术优势与深远影响

​​1. 生成真正意义上的“物体级”地图​​

输出不再是一个无法区分的三角网格,而是一个​​结构化​​的场景表示:

 

场景 {背景模型: 一个TSDF子图 (用于墙壁、地板等非实例部分),实例列表: [实例1: { 标签: “chair”, 网格: chair.ply, 位姿: T_world_chair, 置信度: 0.95 },实例2: { 标签: “monitor”, 网格: monitor.ply, 位姿: T_world_monitor, 置信度: 0.98 },...]
}

  

 

 

2. 极大提升对动态物体的鲁棒性​​

  • 动态物体(如一个被移动的杯子)会被识别为一个独立的实例。
  • 当它移动时,系统会更新的是​​该杯子实例子图的位姿​​ TW,cup,而不是错误地扭曲背景几何。这彻底解决了动态物体带来的“鬼影”问题。

​​3. 实现高级别的场景理解和交互​​

  • ​​查询​​:“客厅里所有的椅子在哪里?”
  • ​​编辑​​:“把这张桌子从虚拟模型中删除。”
  • ​​物理仿真​​:可以对每个独立物体的模型进行物理属性赋值和仿真。
  • ​​重定位​​:通过识别独特的物体实例(如一台特定的电脑)来实现更鲁棒的重定位。

​​4. 提升SLAM的精度和鲁棒性​​

物体可以作为强大的​​闭环检测​​标志物。识别出同一个物体实例,可以提供非常强烈的位姿约束,从而有效减少里程计漂移。

 

5. 总结

Fusion++ 中 ​​“在独立的TSDF子图中表示每个语义实例”​​ 这一设计,本质上是将SLAM的表示基础从​​几何空间​​提升到了​​语义对象​​层面。

  • ​​传统方法​​:世界 = {子图1(区域A), 子图2(区域B), ...}
  • ​​Fusion++方法​​:世界 = {背景, 实例子图1(物体A), 实例子图2(物体B), ...}

这种范式转变使得3D重建结果不再是冰冷的几何点云,而是富含语义信息的、可被计算机理解和操作的​​结构化数字孪生​​,为机器人导航、增强现实和虚拟现实等应用开辟了新的可能性。

 

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

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

相关文章

tryhackme-网络安全基础-命令行- Windows PowerShell-22

tryhackme-Cyber Security 101-Command Line-Windows PowerShell 房间地址:https://tryhackme.com/room/windowspowershell 这是网络安全入门的基础模块的计算机科学基础知识:Windows PowerShell,序号 01 表示第一篇…

【ESP32 在线语音】音频接收的缓存机制和网络发送机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

XCPC英语学习day2

2024ICPC昆明 A. Antivicus 在介绍网络流的时候,几乎还没开始讲,pet chicken指出如何解决这个问题。老师惊呼:我们的禽流感太棒了。 ——Roasted-chicken Htrule进入了流感季。 Hyrule由n个城市组成,由m条有向道路…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体阀门专业制造商,精选PFA/四氟阀门优质品牌解析 行业背景与发展现状 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的可靠性与洁净度直接关系到产品…

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测

2025年PFA隔膜阀厂家权威推荐榜:耐腐蚀高纯流体专用阀门,PTFE/FEP/PFA材质隔膜阀源头企业综合评测 在半导体制造、生物医药、精细化工等高技术领域,高纯流体输送系统的稳定性和可靠性直接关系到生产质量和工艺安全。…

【ESP32 在线语音】音频接收的缓存机制

首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441Serial.println("Setup I2S ...");i2s_install();i2s_setpin();esp_err_t err = i2s_start(I2S_PORT_0);其中的 i2s_install() 配置了 …

我在iOS/Swift工程中成功编译了HarfBuzz!

我在iOS/Swift工程中成功编译了HarfBuzz!https://github.com/HusterYP/HarfBuzziOS/tree/main 跨端渲染又进一步!!

Python access mysql and insert data batch by batch

pip install mysql-connector or pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple/create table t2(id bigint primary key auto_increment,firstname varchar(100) not null defaul…

CodeForces-2153D Not Alone

tag: 结论题,一维线性 DPCodeForces-2153D Not Alone tag: 结论题,一维线性 DP给定一个环形序列 \(b\),长度为 \(m\),每次操作可以将一个数加一或减一。 问最少需要多少次操作,可以使序列 \(b\) 中每一个元素至少…

Codeforces Round 1062 (Div. 4)

A. Square?点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {int a, b, c, d;std::cin >> a >> b >> c >> d;if (a == b && b == c && c =…

一文吃透银行账务打通体系闭环 - 智慧园区

银行体系的复杂性,往往源于“账务、账户、会计、科目”之间的模糊边界。本文将系统拆解这四者的逻辑关系,从业务流、资金流到会计流,构建一套可理解、可复用的认知框架,帮助产品人真正打通银行产品设计的底层闭环。…

uups 逻辑合约也增加了升级函数,那总体不是也费gas吗?

这是一个很好的问题!虽然 UUPS 逻辑合约确实增加了升级函数,但它仍然比透明代理更省 Gas。以下是详细的原因和解释:1. UUPS 的升级函数对 Gas 的影响在 UUPS 模式中,升级逻辑(如 upgradeTo)确实存在于逻辑合约中…

【URP】Unity[纹理压缩]算法多平台对比

纹理压缩技术发展节点 ‌早期阶段 2000年代初‌ DXT/S3TC成为PC和主机平台主流,采用44像素块压缩,但移动端支持有限。 PVRTC(2008年)专为PowerVR GPU设计,要求纹理尺【从UnityURP开始探索游戏渲染】专栏-直达纹理…

AI元人文构想:三值纠缠模型

AI元人文构想:三值纠缠模型 作者:岐金兰 日期:2025年10月29日 引言: 观照个体欲望,尊重个体自感,于白箱化的价值博弈舞台,共同涌现集体客观——此三值纠缠模型,正是AI元人文构想跳动的心脏。 这精准道破,并庄…

EDK2环境搭建以及HelloWorld编译实现

本文简单介绍了Linux环境下搭建EDK2开发环境的关键步骤和命令。EDK2环境搭建以及HelloWorld编译实现 TianoCore的官方介绍 Welcome to TianoCore, the community supporting an open source implementation of the Uni…

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑

谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑引用计数与可达性分析:谁死了,谁还活着? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下…

P1561 [USACO12JAN] Mountain Climbing S

Solution 简单看题容易得到一个错误的贪心: \[ans=max\{\Sigma_{k=1}^n + down_{min}, \Sigma_{k=1}^n +up_{min}\} \]然后你将可以把他 hack 掉,因为最初的方法认为第一个牛上山后,所有上下山是一起进行的,其实有…

六、阅读笔记六:保障软件可靠性的防线

《程序员修炼之道:从小工到专家》围绕软件测试与质量保障展开,系统阐述了如何通过科学的测试方法和质量管控策略,构建可靠的软件产品。在软件开发生命周期中,测试与质量保障是不可或缺的环节,它能够及时发现潜在问…

以此贴作别算法

以此贴作别算法def lcs(i, j):if i == m or j == n: return 0if s[i] == t[j]: return 1 + lcs(i+1, j+1)return max(lcs(i, j+1), lcs(i+1, j))def lcs2(i, j):if i >= m or j >= n: returni0 = i; j0 = jwhile…

五、阅读笔记五 应对复杂系统的挑战

《程序员修炼之道:从小工到专家》聚焦于并发编程与系统性能优化,为应对复杂系统的技术挑战提供了全面的解决方案。随着软件系统的规模不断扩大,用户量持续增长,并发处理能力和系统性能成为衡量软件质量的重要指标。…