A3VLM: Actionable Articulation-Aware Vision Language Model

news2024/11/24 14:05:29

发表时间:13 Jun 2024

作者单位:SJTU

Motivation:以往的机器人VLM如RT-1[4]、RT-2[3]和ManipLLM[21]都专注于直接学习以机器人为中心的动作。这种方法需要收集大量的机器人交互数据,这在现实世界中非常昂贵。

解决方法:因此,我们提出了 A3VLM,这是一种object-centric, actionable, articulationaware vision language model。A3VLM 专注于对象的铰接结构和动作可供性。它的表示与机器人无关,可以使用简单的动作原语翻译成机器人动作。(以对象为中心的与以机器人为中心的方法有什么不同?有什么优势?不再需要机器人数据,而是从被操作物体的物理性质出发建立模型,然后通过动作原语让机器人采取相应的操作)。

实现方式:a representation that describes the object's articulation structure and action affordance simultaneously. 与之前的以机器人为中心的动作表示[3,21]相比,A3VLM的表示是以对象为中心的,这使得在不收集昂贵的机器人交互数据的情况下学习对象的可操作模型,并且各种机器人可以使用相同的学习对象模型。

在强大的VLM主干的支持下,A3VLM能够直接从单个RGB图像中预测3D铰链结构,而不需要任何深度数据。

Proposed Articulation Representation:A3VLM使用以对象为中心的表示,专注于对象内可移动部件的链接和可供性。A3VLM 中可操作的部分、可供性和链接结构被表示为三元组:(边界框 B、Axis A(轴)、语义标签 S)。边界框 B 定位给定图像中感兴趣的可操作部分。Axis A 表示零件的链接结构。S语义标签是指关节类型(prismatic 或 rotation)、链接名称和动作类型。

Instruction-following Dataset Construction(构建本文用到的数据集):we do not train A3VLM from scratch,为了微调VLM,我们需要构建一个指令跟踪数据集,其中输入是图像和文本提示,答案应该是结构化文本。在实践中,我们不要求 VLM 在一个推理步骤中生成所有内容,而是将任务分为四种不同类型的子任务(与其他文章的做法类似)。

  • Raw A3 Annotation Generation:生成指令跟踪数据集的第一步是创建对象级原始注释。Within each image, we provide an annotation (B, A, S) for each visible and movable link. 我们将所有链接分为平动型和转动型。对于转动链接,axisA 是 URDF 中提供的旋转轴。对于平动连杆,我们使用URDF中提供的棱柱方向作为轴方向,确保轴A通过连杆的3D中心。 在确定轴 A 之后,我们沿 A 投影链接点并计算投影形状的最小 2D 边界框。我们使用这个边界框的较长边作为 x 轴,较短的边作为 y 轴,轴 A 作为边界框 B 的 z 轴(原来是通过轴的方向之后,利用轴向量进行投影,投影到物体上,来确定三维空间中的bbox的)。边界框 B 的中心是铰链的 3D 中心。边界框B的宽度、高度和长度是根据链路的最远点与中心之间的距离来计算的。语义信息 S 存储链接的链接类型、名称和link的可供性动作。 值得注意的是,没有提供PartNet-Mobility 数据集中链接负担得起的操作因此,我们从机器人技能库Roboagent中选择动作。同时为了使得选择的动作与link匹配,使用gpt4进行筛选(都是数据构建的过程)。

  • Sub-tasks Construction:与ManipVQA一样REC和REG,但是最开始并不是ManipVQA提出的,而是参考文献9。Following these definitions, we construct four different sub-tasks: (1) Detection, (2) REC-Link, (3) REG-Joint, and (4) REC-Action. Each sub-task consists of an image, a text question, and a text answer.(与ManipVQA一样,同样对任务进行了扩展)。

  • Data Augmentation Strategy:原始 PartNet-Mobility 数据集的一个限制是没有纹理细节。为了解决模拟到现实(Sim2Real)的差距,我们使用ControlNet[39]来生成更真实的图像,使用深度图作为主要控制信号,因为它们能够传达几何和语义信息。(具体是怎么做的? 这里的控制信号应该指的是输入Stable Diffusion的condition)。

Fine-tuning Strategy:两阶段微调。

我们的训练范式遵循传统的视觉问答 (VQA) 框架,并在自然语言框架内封装有关链接的所有信息。为了弥合我们专业数据集和通用自然图像之间的视觉差异,我们采用了两阶段微调策略。最初,视觉投影层使用简单的图像标题任务进行微调,利用“这是一个 [OBJ]”等基本模板来生成简单的标题。然后,我们在指令跟踪数据集上同时微调视觉投影层和LLM。

Action Primitives:As previously mentioned, A3VLM utilizes an objectcentric representation. To translate this into a robot movement, we need to define specific action primitives。A3VLM 旨在与各种类型的机器人一起使用;因此,它没有针对任何特定的机械手进行优化,例如平行或吸力夹具。需要一个独立的通用抓取姿势提议器来生成抓取候选列表。在操作过程中,我们利用 A3VLM 生成的三元组 (B, A, S) 和抓取姿势候选。

我们定义了三种类型的动作原语:Rotate、Slide 和 Scroll。对于给定的link,如果它对应的关节类型是棱柱,我们选择滑动动作;如果它是旋转的,我们选择旋转动作,除非目标链接在语义上被标记为瓶盖或滚动按钮,在这种情况下我们选择滚动动作。(也就是说,根据的是三元组 (B, A, S)中的S(语义标签是指关节类型(prismatic 或 rotation)、链接名称和动作类型)来选择对应的动作源语)。

如果选择的动作是“滚动”,我们确保抓取姿势与旋转轴 A 重叠。否则,我们在边界框 B 中随机选择一个抓取姿势作为接触点 C。然后,我们为每个动作类型使用 C 和 A 生成轨迹。(根据rotation axis和contact point和反解算法生成轨迹,这些轨迹构成了我们生成的动作)。

实验:A3VLM is developed based on the SPHINX-X [12] with LLaMA2 serving as the language backbone.(SPHINX-X模型的优势:关注目标对象的部分或区域细节).The visual encoders were kept frozen throughout the fine-tuning phase to maintain the integrity of the pre-trained features.我们认为这种改进来自两个方面:一方面来自可操作的部分和关节结构的准确基础(形成的结构化三元组),另一个方面是动作原语的引入。动作原语使 A3VLM 能够对不同的铰接对象执行不同的动作。

Action Primitives Details(定量评估时候的过程):与上述基线不同,A3VLM 以以对象为中心的方式对动作进行建模。更具体地说,对于每个对象,我们首先检测出a list of action parts的相应的边界框 B、轴 A、关节类型和链接名称 S(也就是说把都按照三元组的形式存储在list里面)。 我们从列表中选择一个随机动作部分,并使用其边界框B和轴 A 来生成两个机器人轨迹(B和A就能表示物体的pose,利用反解算法生成轨迹)。例如,对于faucet(水龙头)的处理,我们将生成轨迹顺时针和逆时针旋转。我们将在两个尝试中执行这些轨迹。如果任务在两种尝试中都成功,则认为该任务是成功的。

结论:了解铰接物体的关节和动作可供性。与之前的以动作为中心的机器人VLM不同,A3VLM不需要任何机器人交互数据,可以适应各种机器人配置。不需要的是机器人的轨迹数据。

现有的用于操作的llm/VLM可以分为三个主要类别:

第一种是生成code(高级规划)并调用API:depends on the implementation of the low-level skills and APIs, and it is primarily limited to simple tasks such as pick-and-place。eg:Code-as-Policies, Instruct2Act, SayCan.

第二种是直接生成low-level action的:需要大量的机器人轨迹数据。eg:RT-1 [3], RT-2 [3], and ManipLLM

第三种是生成中间的机器人表示,然后使用简单的动作原语或控制将其转换为机器人动作。such as cost maps (VoxPoser [18]), action constraints (MOKA [25]), or affordances (ManipVQA [17]), which are then translated into robot actions using simple action primitives or controls. Our A3VLM falls into this third category.

附录:Exploration on More Input Modalities:

  1. 尝试使用深度图与RGB图像一起作为模型的输入。然而,训练阶段效果都很好,在测试阶段,A3VLM 显示出显著的改进,表明纯 RGB 输入实际上更适合泛化。这种消融研究证实了我们最初的假设,即使用纯 RGB 作为输入模态。

  2. For point cloud inputs, we utilized PointBert [37] and RECON [30] as the point encoders,尽管修改后的大型语言模型 (MLLM) 产生了高质量的字幕取得了成功的训练,但 LLM 未能预测部分对象边界框坐标(训练没崩,测试崩了)。这个困难归因于:Lack of Visual Texture 和 Model and Data Limitations。

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

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

相关文章

数据中台之数据开发-离线开发和实时开发

目录 一、离线开发 1.1 概述 1.2 作业调度 1.3 基线控制 1.4 异构存储 1.5 代码校验 1.6 多环境级联 1.7 推荐依赖 1.8 数据权限 二、实时开发 2.1 概述 2.2 实时计算的特点 2.2.1 实时且无界(unbounded)的数据流 2.2.2 持续且高效的计算 2.2.3 流式且实时的数据…

go,gin封装gorm使用,增删改查

1、主 package mainimport ("fmt""wbGo/configs" )type Dades struct {Id intName stringAge int }func main() {//连接数据库configs.BaseName("wbrj_sample")var data []Dades//查询configs.Db.Raw("select * from dade where id>…

机器学习/深度学习——关于分类任务的机器学习、深度学习模型的评估指标详解

机器学习/深度学习——模型的评估详解 搭配以下文章进行学习: 卷积神经网络: 深度学习——卷积神经网络(convolutional neural network)CNN详解(一)——概述. 步骤清晰0基础可看 深度学习——卷积神经网…

Ciallo~(∠・ω・ )⌒☆第十七篇 Ubuntu基础使用 其一

Ubuntu是一种基于Linux的操作系统,它是开源的、免费的,并且具有广泛的用户群体。 基本文件操作:Ubuntu使用命令行工具来进行文件操作。以下是一些常用的命令: 切换到用户主目录: cd ~ 切换到上级目录: cd .…

QT 数据导出到Excel

原创:QT 数据导出到Excel 在Qt自带的axcontainer模块中,我们可以使用QAxObject类来将数据保存到Excel中。Qt中将数据保存到Excel通常有两种方式:一种是以Excel格式导出,需要电脑上安装Office软件;另一种是以CSV格式导出…

用户端是小程序,后台管理系统是PC端的CMS系统

1. 数据库表设计 1.1 课程轮播图表 CREATE TABLE course_banners (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 轮播图主键,image_url varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 轮播图图片链接,title varchar(255) CHARAC…

高考志愿智能推荐系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设残哥 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目、 源…

Lesson 64 Don‘t ... You mustn‘t ...

Lesson 64 Don’t … You mustn’t … 词汇 play n. 戏剧(真人演的,话剧)v. 玩耍 搭配:play with 物体 / 人    玩…… / 和……一起玩 例句:我正在和Leo玩。    I am playing with Leo.演奏(乐器…

代码随想录算法训练营第十六天

力扣题部分: 513.找树左下角的值 题目链接:. - 力扣(LeetCode) 题面: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路(层序遍历): 应该是这道题最简单的方法了&#xff0…

数据结构与算法——DFS(深度优先搜索)

算法介绍: 深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。这种算法会尽可能深地搜索图的分支,直到找到目标节点或达到叶节点(没有子节点的节点),然后…

Vue3 reactive 响应式原理源码实现

学习小满的视频,更详细的讲解 Vue3响应式原理 视频 需要了解Proxy、Reflect函数 目录结构: 配置环境: package.json {"name": "vue-reactive","version": "1.0.0","description": &quo…

【Kubernetes】Service 类型

Service 类型 1.NodePort2.ClusterlP3.LoadBalance4.ExternalName 在《Service 概念与实战》一文中,Service 的发布使用的是 NodePort 类型。除此之外,Service 的发布还支持 ClusterlP、LoadBalancer 和 ExternalName 这 3 种类型。 1.NodePort 在把 Se…

基于STM32开发的智能门铃系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化按钮与蜂鸣器控制显示与远程通知Wi-Fi通信应用场景 家庭智能门铃办公室访客通知常见问题及解决方案 常见问题解决方案结论 1. 引言 智能门铃系统通过集成按钮、蜂鸣器、显示屏、W…

HTML补充——表格表单

一、表格 1、在现实生活中,我们经常需要使用表格来表示一些格式化数据:课程表、人名表、成绩单 同样在网页中我们也需要使用表格,我们通过table标签创建表格。 2、在table标签中使用tr表示表格中的一行,有几个tr就有几行&#xff…

prometheus数据如何清理

1. 停止prometheus服务 2. 进到prometheus数据目录 3. 删除数据 3.1 删除持久化的数据块 Prometheus 将数据分块存储,每个块对应一个时间段。你可以通过查看目录中的时间戳来找到需要删除的数据块。 每个块的目录名是一个时间戳范围,例如 16094592000…

单片机在线升级架构(bootloader+app)

1、架构(bootloaderapp) 在一定的时间内如果没有程序需要更新则自动跳转到app地址执行用户程序 内部flash 512K bootloader 跑裸机 48k 主要实现USB升级和eeprom标志位升级 app 跑freeRtos 464K 程序的基本功能,升级时软件复位开始执行bootloader升级…

互斥锁以及进程间通信

写线程 ---写资源 可以写数据 的条件 1.开始时 ,buf空的 2.读线程 读完了 读线程 //buf充当读资源 //1.一开始,buf中没有数据可读的 1.写线程结束 信号量的机制 1.信号量 ----来描述 可使用的资源的个数 2.p操作 表示 使用这个资源 资…

毕业生实习与就业管理系统的设计与实现

TOC springboot297毕业生实习与就业管理系统的设计与实现 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化&a…

保存数据至后台表

保存数据至后台表-供大数据平台使用-JOB程序 *&---------------------------------------------------------------------* *&程序名称 :ZBD_JOB_001 *&程序描述 : 保存数据至后台表-供大数据平台使用-JOB程序 *…

[Linux] 什么是 Shell?

一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…