零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

物体姿态估计在许多现实世界应用中扮演着关键角色,如具身智能、机器人灵巧操作和增强现实等领域。

在这一领域中,最先受到关注的任务是实例级别 6D 姿态估计,其需要关于目标物体的带标注数据进行模型训练,使深度模型具有物体特定性,无法迁移应用到新物体上。后来研究热点逐步转向类别级别 6D 姿态估计,用于处理未见过的物体,但要求该物体属于已知的感兴趣类别。

零样本 6D 姿态估计是一种更具泛化性的任务设置,给定任意物体的 CAD 模型,旨在场景中检测出该目标物体,并估计其 6D 姿态。尽管其具有重要意义,这种零样本的任务设置在物体检测和姿态估计方面都面临着巨大的挑战。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

图 1. 零样本 6D 物体姿态估计任务示意

最近,分割一切模型 SAM [1] 备受关注,其出色的零样本分割能力令人瞩目。SAM 通过各种提示,如像素点、包围框、文本和掩膜等,实现高精度的分割,这也为零样本 6D 物体姿态估计任务提供了可靠的支撑, 展现了其前景的潜力。

因此,研究人员从跨维智能、香港中文大学(深圳)、华南理工大学联合提出了一种创新的零样本6D物体姿态估计框架SAM-6D。这项研究已被CVPR 2024收录。

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

论文链接: https://arxiv.org/pdf/2311.15707.pdf代码链接: https://github.com/JiehongLin/SAM-6D

SAM-6D 通过两个步骤来实现零样本 6D 物体姿态估计,包括实例分割和姿态估计。相应地,给定任意目标物体,SAM-6D 利用两个专用子网络,即实例分割模型(ISM)和姿态估计模型(PEM),来从 RGB-D 场景图像中实现目标;其中,ISM 将 SAM 作为一个优秀的起点,结合精心设计的物体匹配分数来实现对任意物体的实例分割,PEM 通过局部到局部的两阶段点集匹配过程来解决物体姿态问题。SAM-6D 的总览如图 2 所示。

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

图 2. SAM-6D 总览图

总体来说,SAM-6D 的技术贡献可概括如下:

SAM-6D 是一个创新的零样本 6D 姿态估计框架,通过给定任意物体的 CAD 模型,实现了从 RGB-D 图像中对目标物体进行实例分割和姿态估计,并在 BOP [2] 的七个核心数据集上表现优异。SAM-6D 利用分割一切模型的零样本分割能力,生成了所有可能的候选对象,并设计了一个新颖的物体匹配分数,以识别与目标物体对应的候选对象。SAM-6D 将姿态估计视为一个局部到局部的点集匹配问题,采用了一个简单但有效的 Background Token 设计,并提出了一个针对任意物体的两阶段点集匹配模型;第一阶段实现粗糙的点集匹配以获得初始物体姿态,第二阶段使用一个新颖的稀疏到稠密点集变换器以进行精细点集匹配,从而对姿态进一步优化。

实例分割模型 (ISM)

SAM-6D 使用实例分割模型(ISM)来检测和分割出任意物体的掩膜。

给定一个由 RGB 图像表征的杂乱场景,ISM 利用分割一切模型(SAM)的零样本迁移能力生成所有可能的候选对象。对于每个候选对象,ISM 为其计算一个物体匹配分数,以估计其与目标物体之间在语义、外观和几何方面的匹配程度。最后通过简单设置一个匹配阈值,即可识别出与目标物体所匹配的实例。

物体匹配分数的计算通过三个匹配项的加权求和得到:

语义匹配项 —— 针对目标物体,ISM 渲染了多个视角下的物体模板,并利用 DINOv2 [3] 预训练的 ViT 模型提取候选对象和物体模板的语义特征,计算它们之间的相关性分数。对前 K 个最高的分数进行平均即可得到语义匹配项分数,而最高相关性分数对应的物体模板视为最匹配模板。

外观匹配项 —— 对于最匹配模板,利用 ViT 模型提取图像块特征,并计算其与候选对象的块特征之间的相关性,从而获得外观匹配项分数,用于区分语义相似但外观不同的物体。

几何匹配项 —— 鉴于不同物体的形状和大小差异等因素,ISM 还设计了几何匹配项分数。最匹配模板对应的旋转与候选对象点云的平均值可以给出粗略的物体姿态,利用该姿态对物体 CAD 模型进行刚性变换并投影可以得到边界框。计算该边界框与候选边界框的交并比(IoU)则可得几何匹配项分数。

姿态估计模型 (PEM)

对于每个与目标物体匹配的候选对象,SAM-6D 利用姿态估计模型(PEM)来预测其相对于物体 CAD 模型的 6D 姿态。 

将分割的候选对象和物体 CAD 模型的采样点集分别表示为零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 和零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步,其中 N_m 和 N_o 表示它们点的数量;同时,将这两个点集的特征表示为零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步,C 表示特征的通道数。PEM 的目标是得到一个分配矩阵,用于表示从 P_m 到 P_o 之间的局部到局部对应关系;由于遮挡的原因,P_o 只部分与匹配 P_m,而由于分割不准确性和传感器噪声,P_m 也只部分与匹配 P_o。

为了解决两个点集非重叠点的分配问题,ISM 为它们分别配备了 Background Token,记为 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 和 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步,则可以基于特征相似性有效地建立局部到局部对应关系。具体来说,首先可以计算注意力矩阵如下:

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

接着可得分配矩阵

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 和 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 分别表示沿着行和列的 softmax 操作,零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 表示一个常数。零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 中的每一行的值(除了首行),表示点集 P_m 中每个点 P_m 与背景及 P_o 中点的匹配概率,通过定位最大分数的索引,则可以找到与 P_m 匹配的点(包括背景)。

一旦计算获得 零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步 ,则可以聚集所有匹配点对 {(P_m,P_o)} 以及它们的匹配分数,最终利用加权 SVD 计算物体姿态。

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

图 3. SAM-6D 中姿态估计模型 (PEM) 的示意图

利用上述基于 Background Token 的策略,PEM 中设计了两个点集匹配阶段,其模型结构如图 3 所示,包含了特征提取、粗略点集匹配和精细点集匹配三个模块。

粗糙点集匹配模块实现稀疏对应关系,以计算初始物体姿态,随后利用该姿态来对候选对象的点集进行变换,从而实现位置编码的学习。

精细点集匹配模块结合候选对象和目标物体的采样点集的位置编码,从而注入第一阶段的粗糙对应关系,并进一步建立密集对应关系以得到更精确的物体姿态。为了在这一阶段有效地学习密集交互,PEM 引入了一个新颖的稀疏到稠密点集变换器,它实现在密集特征的稀疏版本上的交互,并利用 Linear Transformer [5] 将增强后的稀疏特征扩散回密集特征。

实验结果

对于 SAM-6D 的两个子模型,实例分割模型(ISM)是基于 SAM 构建而成的,无需进行网络的重新训练和 finetune,而姿态估计模型(PEM)则利用 MegaPose [4] 提供的大规模 ShapeNet-Objects 和 Google-Scanned-Objects 合成数据集进行训练。

为验证其零样本能力,SAM-6D 在 BOP [2] 的七个核心数据集上进行了测试,包括了 LM-O,T-LESS,TUD-L,IC-BIN,ITODD,HB 和 YCB-V。表 1 和表 2 分别展示了不同方法在这七个数据集上的实例分割和姿态估计结果的比较。相较于其他方法,SAM-6D 在两个方法上的表现均十分优异,充分展现其强大的泛化能力。

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

表 1. 不同方法在 BOP 七个核心数据集上的实例分割结果比较

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

表 2. 不同方法在 BOP 七个核心数据集上的姿态估计结果比较

图 4 展示了 SAM-6D 在 BOP 七个数据集上的检测分割以及 6D 姿态估计的可视化结果,其中 (a) 和 (b) 分别为测试的 RGB 图像和深度图,(c) 为给定的目标物体,而 (d) 和 (e) 则分别为检测分割和 6D 姿态的可视化结果。

零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步

图 4. SAM-6D 在 BOP 的七个核心数据集上的可视化结果。

关于 SAM-6D 的更多实现细节, 欢迎阅读原论文.

以上就是零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/423629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 10:40:23
下一篇 2025年11月7日 10:44:45

相关推荐

  • PHP中array_merge和+合并数组的差异

    array_merge 和 + 运算符在php中用于合并数组,但处理键名的方式不同。1. array_merge 会重新索引数字键并从0开始分配,且对于字符串键,后面数组的值会覆盖前面的同名键;2. + 运算符保留左侧数组的键,忽略右侧数组中已存在的键,且只能合并两个数组。例如,在配置合并时使用 a…

    2025年12月11日 好文分享
    000
  • PHP消息队列:RabbitMQ实战

    php结合rabbitmq构建异步处理系统需安装rabbitmq和amqp扩展1,通过amqp类连接服务器2,声明交换机和队列并绑定路由键3,使用publish方法发布消息4,利用consume消费消息并调用ack确认5,为避免消息丢失应启用持久化、发布者确认或事务机制6,可通过rabbitmq m…

    2025年12月11日 好文分享
    000
  • PHP怎样处理STOMP协议 STOMP消息队列处理指南

    php处理stomp协议主要有两种方式:使用pecl扩展或第三方库。1. 使用pecl的stomp扩展:通过pecl install stomp安装,需配置php-dev工具和启用extension=stomp.so,适用于追求高性能的场景;2. 使用第三方库如enqueue/stomp-clien…

    2025年12月11日 好文分享
    000
  • PHP表单数据提交到MySQL的完整流程

    创建html表单以收集用户输入;2. 编写php脚本接收数据并使用预处理语句防止sql注入;3. 创建mysql数据库表用于存储信息;4. 使用filter_var函数验证数据有效性;5. 设置html、数据库连接及表的字符集为utf-8以解决中文乱码问题。该流程通过前端与后端协作实现安全可靠的数据…

    2025年12月11日 好文分享
    000
  • PHP中unset和null的变量处理区别

    php中unset()和赋值为null的主要区别在于:1.unset()销毁变量本身,使其从符号表中移除;2.而赋值为null保留变量名,仅将其值设为空。unset()断开变量与值的关联,若该变量是唯一引用,则标记值为垃圾等待回收;赋值为null则改变变量值但保留其存在性。使用场景上:3.需彻底移除…

    2025年12月11日 好文分享
    000
  • 在Laravel框架中如何解决“Too many open files”错误?

    在laravel框架中解决“too many open files”错误的方法 在使用php7.3和laravel框架执行定时任务时,你可能会遇到一个错误提示,指出“打开文件太多”,错误信息大致如下: [2023-03-15 00:14:13] local.ERROR: include(/www/v…

    好文分享 2025年12月11日
    100
  • php中的卷曲:如何在REST API中使用PHP卷曲扩展

    php客户端url(curl)扩展是开发人员的强大工具,可以与远程服务器和rest api无缝交互。通过利用libcurl(备受尊敬的多协议文件传输库),php curl有助于有效执行各种网络协议,包括http,https和ftp。该扩展名提供了对http请求的颗粒状控制,支持多个并发操作,并提供内…

    2025年12月11日
    000
  • 如何用PHP和CURL高效采集新闻列表及详情?

    本文将阐述如何利用PHP和cURL高效抓取目标网站的新闻列表和新闻详情,并展示最终结果。 关键在于高效运用cURL获取数据,处理相对路径并提取所需信息。 首先,解决第一个挑战:从列表页(例如,页面1)提取新闻标题和完整URL。 代码示例如下: <?php$url = 'http://…

    2025年12月11日
    100
  • HTML表单onsubmit事件失效,如何排查表单验证问题?

    HTML表单提交验证失效:排查与解决 在使用HTML表单进行数据提交时,onsubmit事件常用于客户端验证,确保数据符合要求后再提交至服务器。然而,onsubmit事件有时失效,导致表单直接提交,本文将分析一个案例,解决onsubmit=”return check()”失效的问题。 问题描述: 用…

    2025年12月11日
    000
  • Beego项目中如何访问main函数定义的全局变量?

    在Beego项目中,如何正确访问main函数中定义的全局变量?本文将详细讲解如何在Go语言的Beego框架中,从非main.go文件(例如controllers目录下的文件)访问在main.go文件中定义的全局变量。对于Go语言新手来说,这个问题常常令人困惑。 问题背景:假设您需要在一个Beego项…

    2025年12月11日
    000
  • PHP二维数组如何排序并添加排名?

    PHP二维数组排序及排名:高效解决方案 本文将详细阐述如何对PHP二维数组进行排序,并为每个子数组添加排名信息。假设我们的二维数组包含多个子数组,每个子数组包含“xuhao”(序号)和“piaoshu”(票数)两个字段。目标是根据“piaoshu”字段降序排序,票数相同时则按“xuhao”字段升序排…

    2025年12月11日
    000
  • HTML表单onsubmit事件无效,表单仍提交:问题出在哪里?

    HTML表单onsubmit事件失效:排查与解决 在使用HTML表单时,onsubmit事件通常用于表单提交前的验证。然而,有时即使添加了onsubmit=”return check();”,表单仍会直接提交。本文分析此问题,并提供解决方案。 问题描述: 用户在HTML表单中添加onsubmit=”…

    2025年12月11日
    000
  • ThinkPHP5框架下如何不修改模型实现Archives表与B表的多表关联查询?

    ThinkPHP5框架多表关联查询:无需修改模型 本文介绍如何在ThinkPHP5框架中,不修改现有模型的情况下,实现Archives表与自定义表B的多表关联查询,并以Archives表数据为主返回结果。 此方法适用于已有的TP5 CMS系统,需要在原有Archives模型查询基础上关联其他表的情况…

    2025年12月11日
    000
  • 高效的异步操作:Guzzle Promises 的实践与应用

    最近在开发一个需要同时访问多个外部 API 的应用时,遇到了严重的性能问题。 传统的同步请求方式导致应用响应时间过长,用户体验极差。 每个 API 请求都需要等待完成才能发出下一个请求,这在处理大量请求时效率极低,严重影响了系统的吞吐量。 为了解决这个问题,我开始寻找异步处理的方案,最终选择了 Gu…

    2025年12月11日
    000
  • PHP记录:PHP日志分析的最佳实践

    php日志记录对于监视和调试web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题,并支持更快的故障排除和决策 – 但仅当它有效地实施时。 在此博客中,我概述了PHP记录以及它在Web应用程序中的使用方式。然后,我概述了一些关键的最佳实践,…

    2025年12月11日
    000
  • 告别依赖注入的困扰:使用 PSR-11 容器接口简化代码

    我最近参与了一个大型PHP项目的重构工作。项目中充斥着大量的new操作,各个类之间紧密耦合,代码难以测试和维护。修改一个类往往需要修改多个地方,这使得开发效率极低,而且容易引入新的bug。 我意识到,我们需要引入依赖注入来改善这种情况。然而,仅仅引入依赖注入的概念还不够,我们需要一个高效的机制来管理…

    2025年12月11日
    000
  • 高效处理 JSON 数据:scienta/doctrine-json-functions 库的使用指南

    我最近参与的项目使用了 Doctrine ORM 管理数据库,其中一个实体包含一个 JSON 类型的字段,用于存储用户的配置信息。最初,我尝试使用原生 SQL 查询来处理 JSON 数据,例如使用 MySQL 的 JSON_EXTRACT 函数。这种方法虽然可以实现功能,但代码变得冗长且难以阅读,而…

    2025年12月11日
    000
  • 告别崩溃:使用Sentry提升Symfony应用的稳定性

    在开发过程中,我们都经历过应用崩溃的痛苦。 用户报告问题,但我们却苦于无法快速定位错误,只能在茫茫代码海洋中大海捞针。 更糟糕的是,一些错误可能只在特定环境或用户操作下才会出现,难以在本地复现。 我之前的项目使用的是简单的日志记录,虽然能记录一些错误信息,但缺乏上下文信息,例如请求参数、用户身份、堆…

    2025年12月11日
    000
  • 告别数据库操作难题:CakePHP Datasource 库的实践指南

    在之前的项目中,我使用的是传统的数据库连接和操作方式,例如直接使用PDO或数据库驱动程序。随着项目规模的扩大和数据源类型的增加,这种方法的缺点逐渐显现出来: 代码冗余: 对于不同的数据库操作(查询、保存、删除等),以及不同的数据源,都需要编写大量的重复代码。难以维护: 代码难以理解和维护,修改一个地…

    2025年12月11日
    000
  • 如何高效查询MySQL中指定部门及其所有子部门下的所有员工?

    高效查询mysql中指定部门及其所有子部门下的所有员工 本文介绍如何高效查询MySQL数据库中指定部门(包含所有子部门)下的所有员工信息,并处理员工可能隶属于多个部门的情况。 数据库包含三个表:department(部门表)、user(员工表)和department_user_relate(部门员工…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信