【论文阅读】GraspNeRF: Multiview-based 6-DoF Grasp Detection

文章目录

  • GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF
    • 针对痛点和贡献
    • 摘要和结论
    • 引言
    • 模型框架
    • 实验
    • 不足之处

GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF

基于多视角的透明和镜面物体6自由度抓取检测

Project page

针对痛点和贡献

痛点:

  • 深度相机在感知透明和镜面物体的几何形状方面失败了。

贡献:

  • 我们的方法将可泛化的 NeRF 扩展到抓取,无需优化即可实现稀疏输入和直接实时推理。即场景表示和抓取的联合学习,以利用它们之间的协同作用。
  • 我们在杂乱的桌面场景中生成了一个大规模的合成多视图抓取数据集,利用域随机化来弥合模拟到真实的差距。

摘要和结论

本文首次提出了一种基于多视图rgb的六自由度抓取检测网络GraspNeRF,该网络利用可推广的神经辐射场(NeRF)在杂波中实现与材料无关的物体抓取
我们的系统可以使用稀疏 RGB 输入执行零样本 NeRF 构造,并实时可靠地检测 6-DoF 抓取。

引言

  • 第二段【其他工作缺陷与挑战,进而引出动机和方法】:ClearGrasp[8]、TransCG[7]、SwinDRNet[9]致力于深度恢复和基于rgb的抓取方法,利用RGBD输入,学习恢复缺失的深度,并在执行抓取之前将错误的深度纠正为一个单独的步骤。DexNeRF [10] 提供了一种有价值的替代方案,只需要 RGB 输入。它首先构建一个 NeRF,完成对物体的三维重构inverse rendering但这种方法有几个重要的局限性。①它的NeRF构造需要耗时的每个场景训练,这需要至少几个小时,这与所需的实时运行相差甚远。②对于多目标顺序抓取,这变得更糟,因为场景在每次抓取后都会发生变化,因此需要重新训练 NeRF。
    EvoNeRF[12] 提出了一个并行工作,EvoNeRF[12]提出使用Instant-NGP[13]来加速NeRF训练,并在每个抓取后进化NeRF。然而,每次更新仍然需要 7 秒,依赖于密集的图像输入,并且只能从自上而下的视图执行 3-DoF 抓取。 使用 vanilla NeRF 的另一个大缺点是从 NeRF 中提取的场景几何通常不完美,并且对于由透明物体和无纹理背景组成的场景,质量非常低,因为 NeRF 只过度拟合它们的 RGB 颜色。 错误的几何图形会严重降低下游预训练抓取算法的性能。
  • 第三段:为了缓解这些问题,我们建议利用可推广的NeRF (generalizable NeRF) ,例如MVSNeRF[14]、NeuRay[15],它在许多不同的场景上进行训练,并学习聚合多视图观察和零镜头构造nerf,用于没有训练的新场景。此外,它只需要稀疏的输入视图,这对于现实世界的应用更实用。我们的框架首先构建了一个类似 3D 网格的工作空间,并通过聚合多视图图像特征来获得网格特征。在这些网格点上,我们建议预测截断符号距离函数 (TSDF,truncated signed distance function) 以获得完整的 3D 几何场景表示,这使我们不必计算深度。 输入这个TSDF,我们的体积抓取检测网络可以预测每个网格点的6自由度抓取。请注意,这个 TSDF 也可以变成密度并用于体绘制。

NeRF,这是一种强大的隐式 3D 表示,它使用 MLP 对场景几何进行编码,通过从不同视点捕获一组RGB 图像,然后使用体积渲染来渲染进一步传递到 3-DoF 抓取模块的俯视图深度图。
truncated signed distance function:TSDF地图算法分析 实时三维重建

模型框架

在这里插入图片描述

  • 问题陈述和方法概述
    我们将6-DoF自由度抓取检测,公式化为一个学习问题。该问题映射来自N个输入视图的一组图像{Ii}i=1…N,到一组6-DoF抓取{gj|gj=(tj,Rj,wj,qj)},其中,对于每个检测到的抓握(grasp)gj,tj∈R3是3D位置,Rj∈SO(3)是3D旋转,wj∈R是开口宽度,qj∈{0,1}是质量。
    框架由场景表示构建模块(scene representation construction module)Fscene和体积抓取检测模块(volumetric grasp detection module)Fgramp组成,如图2所示。
    在Fscene中,我们首先提取并聚合多视点图像,两个目的是:提取的几何特征(geometric feature)形成一个特征网格(feature grid),并将其传递到我们的TSDF预测网络,以构建场景的TSDF,该TSDF对场景几何结构以及底层NeRF的密度进行编码;同时,这些特征被用于预测颜色,这与密度输出一起实现了NeRF渲染。将预测的TSDF作为输入,我们的体积抓取检测模块Fgravity然后学习预测TSDF的每个体素处的6-DoF抓取。

  • 场景表示构建
    我们利用可泛化的NeRF来学习聚合来自多个视图的观察结果并形成体积特征网格。我们的场景表示构建模块中使用的可泛化 NeRF 受到 NeuRay [15] 的启发。(输出密度和颜色)

  • 体积抓取检测
    3D CNN抓取检测器Fgrasp学习从TSDF网格到密集抓取候选体积的映射,灵感来自[2]。我们将体积内每个体素的中心视为抓取位置候选。在给定位置 t∈R3时,检测器从单独的解码器头预测三个输出,包括抓取质量q、旋转R和开口宽度w。
    为了选择合适的抓取执行,我们根据预测的TSDF丢弃远离表面的抓取位置候选。随后,我们使用高斯平滑质量体积,过滤掉低于阈值的抓取,并利用非最大抑制。我们还选择满足夹持器最大开口宽度的抓取。最后,我们从剩余的候选中随机选择抓取进行机器人执行,以防止由于假阳性而重复执行不成功的抓取

  • 基于域随机化的合成数据生成
    提出了一种基于大规模合成多视图RGB的抓取数据集,该数据集包含100K场景,对象范围从漫反射、镜面反射到透明、240万个RGB图像和200万个6自由度抓取姿势。
    为了弥合 sim2real 差距,我们利用域随机化,它随机化对象材料和纹理、背景、照明和相机姿势。在对具有足够变化的合成数据集进行训练后,网络在测试时将真实数据视为训练数据的变化,从而推广到真实数据。

  • Network End-to-End Training
    端到端训练来联合学习场景表示和抓取,鼓励这两个任务相互受益。对于抓取,感知和重建场景几何至关重要;准确的抓取预测,反过来又需要高质量的场景表示。训练目标由三部分组成。
    **抓取损失:**对于抓取学习,我们监督所做的抓取质量、方向和开口宽度,公式为:在这里插入图片描述颜色损失: 学习一个可推广的辐射场,我们随机抽取6个训练视图作为每个训练场景的输入,并随机选择另一个目标视图进行渲染。我们使用 L2 损失监督新颖的视图合成。
    在这里插入图片描述
    几何损失:
    在这里插入图片描述

在这里插入图片描述

实验

在本节中,我们通过仿真和实际机器人实验来评估我们提出的方法抓取任务的性能。我们还对模拟数据进行了消融研究,以分析我们框架中包含的主要设计的影响。

  • Experiment Setup:
    Grasping Environment Setup: Franka Emika Panda机器人手臂,RealSense D415 RGBD 相机(我们的方法没有使用深度)连接到夹具的手腕上。
    Simulation Environment Setup: 我们在 PyBullet 和 Blender 上构建了模拟环境,分别用于物理抓取模拟和多视图逼真图像渲染。

  • 评估指标: 我们通过 1)Success Rate (SR) 来衡量性能:成功抓取次数与尝试次数的比率,以及 2) 整洁率 (DR):所有轮次中移除对象的平均百分比

  • 模拟抓取实验:
    利用广泛的模拟数据来评估所有方法。我们的实验包括:
    1)单个对象检索:一个对象被放置在工作空间的中心。机械臂执行基线预测的抓取,成功的抓取表明对象被抓取在工作空间之外。我们使用 12 个测试对象、4 个每个透明、镜面或漫反射材料进行评估。每个对象经过三次测试,遵循与EvoNeRF[12]相同的协议,并报告抓取成功率。
    2) 顺序去杂:我们在成堆和拥挤的场景中进行了200次圆桌清理实验,每个实验包含5个对象。每一轮都共享相同的对象和对象姿势,具有两种材质组合:A)透明和高光,以及B)所有漫反射、透明和高反射材质的混合。在一轮的每次试验中,机械臂抓取并移除一个物体,直到工作空间被清空或抓取检测失败或达到两个连续的失败。报告了两种材料组合的结果。

在这里插入图片描述

与其他方法相比,我们的方法显著提高了透明和镜面物体抓取的性能。

  • real 机器人实验:
    我们遵循模拟实验的协议。
    1)对于单个对象检索,我们选择6个对象,包括透明、镜面反射和漫反射各2个,并将它们以相同的姿势放置在相同的位置。抓取迭代重复三次。
    2)对于顺序杂波去除,我们对堆积场景和压缩场景进行了15轮迭代,报告了透明和镜面对象场景以及混合材料场景的结果。每个场景包括4-6个随机选择的对象,我们从6个视图中捕获RGB图像,就像在模拟环境中一样。网络接收多视点输入并输出6-DoF抓取候选者,其中机械臂执行顶部抓取。如果将对象从工作空间中移除,我们认为抓取是成功的。当抓取失败两次或所有物体都被清除时,一轮结束。

尽管如此,我们确实注意到了一些失败案例。例如,当抓取填充场景中的直立圆柱形物体时,如硬玻璃瓶,由于摩擦不足,夹持器可能会滑掉瓶子。
在这里插入图片描述

在这里插入图片描述
不同方法的TSDF比较。直接从原始深度观测融合的VGN的几何形状是不完整的。即使SwinDRNet恢复,几何图形仍然过于平滑,难以进行抓取检测。NeRF-VGN 也由于它在无纹理背景下渲染深度不准确而失败。由于对不同数据的学习,我们的方法仅对镜面和透明物体产生良好的 TSDF。

不足之处

一个局限性在于体积网格,其有限的分辨率可能是几何重建和抓取性能的瓶颈。我们将进一步改进留给未来的工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么TestNg会成为Java测试框架的首选?还犹豫什么,看它!

上一篇自动化测试我们大概了解了测试的目标、测试的技术选型以及搭建平台的目标及需求,也确定了自动化测试方案以testNg作为整个测试流程贯穿的基础支持框架,那么testNg究竟有什么特点?本篇开始我们来详细的学习testNg这个测试框架。 为什么要…

qwt直角坐标 画sing(x)/x

cmath的常见函数&#xff1a;qPow()求平方&#xff0c;log(&#xff09;对数10为底 角度转弧度&#xff1a;x(angel/180)*M_PI 图示&#xff1a; 头文件&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <qwt_plot.h> #in…

使用 CDC MinIO 汇入端为 CockroachDB 保持持久数据

CockroachDB 数据库迅速崭露头角&#xff0c;作为一个坚韧且可扩展的分布式 SQL 数据库。它从其昆虫名字的坚持不懈中汲取灵感&#xff0c;即使面对硬件故障&#xff0c;CockroachDB 也能保证高可用性。其分布式架构横跨多个节点&#xff0c;类似于其昆虫原型的适应性。 凭借强…

SpringCloud Aliba-Seata【下】-从入门到学废【8】

目录 1.数据库创建 1.seata_account库下建表 2.seata_order库下建表 3.seata_storage库下建表 4.在每个库下创建回滚日志 2.创建订单模块 2.1建工程 2.2加pom 2.3改yml 2.4file.conf 2.5registry.conf 2.6domain 2.7Dao 2.8Service 2.9controller 2.10confi…

阅读go语言工具源码系列之gopacket(谷歌出品)----第一集 DLL的go封装

gopacket项目是google出品的golang第三方库&#xff0c;项目源码地址google/gopacket: Provides packet processing capabilities for Go (github.com) gopacket核心是对经典的抓包工具libpcap(linux平台)和npcap(windows平台)的go封装&#xff0c;提供了更方便的go语言操作接…

36、WEB攻防——通用漏洞XSS跨站MXSSUXSSFlashXSSPDFXSS

文章目录 MXSSUXSSFlashXSSPDF XSS 跨站的艺术-XSS入门与介绍 UTF-7 XSS、MHTML XSS、CSS XSS、VBScript XSS已经过时&#xff0c;基本上不会出现。 MXSS 简单来说&#xff0c;就是你往前端页面插入payload&#xff0c;但是前端有些防御策略会将payload编码&#xff0c;导致…

防火墙综合实验

实验需求&#xff1a; 1、生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器。 2、办公区全天可以访问服务器区&#xff0c;其中&#xff0c;10.0.2.20可以访问FTP服务器和HTTP服务器&#xff0c;10.0.2.10仅可以ping通10.0.3.10。 3、办公区在访问服务器…

【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式

【VBA解决方案】全自动将Word中的文本公式转换为标准公式 写在最前面VBA代码全自动方法将md文档导出为word代码如何运行VBA代码注意事项 一些如何实现的回忆记录步骤解析手动将文本转换为Word公式代码逻辑步骤设想代码解析代码解释总结 其他背景介绍应用场景VBA脚本介绍如何使用…

信息安全认证首选CISP-PTE

&#x1f525;在信息安全领域&#xff0c;CISP-PTE认证正逐渐成为行业的新星。作为中国信息安全测评中心推出的专业认证&#xff0c;CISP-PTE为信息安全从业者提供了国内Z高标准的资质培训。 &#x1f3af;为什么选择CISP-PTE&#xff1f; 1️⃣业界认可&#xff1a;CISP-PTE是…

JAVA_EE_api_中英文对照版

点击即可下载&#xff1a; JAVA_EE_api_中英文对照版

STM32标准库——(3)GPIO输入

1.按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动&#xff1a;由于按键内部使用的是机械式弹簧片来进行通断的&#xff0c;所以在按下和松手的瞬间会伴随有一连串的抖动 1.1 硬件电路图 上面两个是外加上拉电阻&#xff08;常用…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求&#xff1a;不使用内置函数len&#xff08;&#xff09;&#xff0c;完成字符串长度的计算 #统计字…

MyBatis 批量插入数据优化

前言 最近在项目上遇到了批量插入的场景问题&#xff0c;由于每次需要插入超过 10w 的数据量并且字段也蛮多的导致如果使用循环单次插入的方式插入数据插入的效率不高。相信读者们在实际开发中也遇到过这样类似的场景&#xff0c;那么批量插入如何实现呢&#xff1f; 其实我也…

分寝室

L1-7 分寝室 分数 20 作者 陈越 单位 浙江大学 学校新建了宿舍楼&#xff0c;共有 n 间寝室。等待分配的学生中&#xff0c;有女生 n0​ 位、男生 n1​ 位。所有待分配…

Vue使用svg图片-svg-sprite-loader插件

需求&#xff1a;设计给的一个按钮图标是svg的&#xff0c;不是element自带的图标使用插件svg-sprite-loader svg-sprite-loader 什么是svg-sprite-loader&#xff1f; 将多个 svg 打包成 svg-sprite。svg 雪碧图。类似于 CSS 中的 Sprite 技术。图标图形整合在 一起&#xf…

爆火《幻兽帕鲁》被指用AI缝合宝可梦,开发者自曝传奇经历:是人类的奇迹

梦晨 克雷西 发自 凹非寺 量子位 | 公众号 QbitAI 4天卖出600万份&#xff0c;爆火游戏《幻兽帕鲁》最高180万人同时在线&#xff0c;直接登顶。 这个成绩&#xff0c;甚至在整个Steam游戏平台历史上也能排到第二&#xff0c;连平台自家王牌CS2都被挤下去了。 同时&#xff0…

NGINX如何实现rtmp推流服务

最近直播大火&#xff0c;直播推流软件遍地开花&#xff0c;那么用NGINX如何进行推流呢&#xff1f;下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流&#xff0c;我们主要从一下几点介绍&#xff1a; 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

[MQ]常用的mq产品图形管理web界面或客户端

一、MQ介绍 1.1 定义 MQ全称为Message Queue&#xff0c;消息队列是应用程序和应用程序之间的通信方法。 如果非要用一个定义来概括只能是抽象出来一些概念&#xff0c;概括为跨服务之间传递信息的软件。 1.2 MQ产品 较为成熟的MQ产品&#xff1a;IBMMQ&#xff08;IBM We…

公司内网虚拟机中穿透服务器Coturn的搭建

1. 写在前面 coturn服务器的搭建文章已经非常多&#xff0c;但是对于对linux不熟悉的人来说排查错误的文章不多&#xff0c;此篇文章把我这次搭建过程以及如何排查问题做一个梳理我这里是在oracle vm虚拟机中搭建安装的ubuntu&#xff0c;通过H3C路由器映射到外网以下介绍我只…

SpringBoot的默认组件扫描

本篇博客主要探究&#xff1a;为什么SpringBoot项目中我们没有配置组件扫描的包&#xff0c;为什么它会默认扫描启动类所在的包&#xff1f; 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口&#xff1a; 我们可以观察到&#xff0c;HelloController这个类处在…