Instruct2Act:使用大型语言模型将多模态指令映射到机器人动作
基础模型在多种应用中取得了重大进步,包括文本到图像的生成、全景分割和自然语言处理。本文提出了一个名为Instruct2Act的框架,该框架利用大型语言模型将多模态指令映射为机器人操作任务的顺序动作。
具体来说,Instruct2Act使用大型语言模型生成Python程序,构成了一个完整的机器人任务的感知、规划和行动循环。
在感知部分,预定义的API用于访问多个基础模型,其中"Segment Anything Model"(SAM)精确地定位候选物体,而CLIP对它们进行分类。
通过这种方式,该框架利用基础模型的专业知识和机器人的能力,将复杂的高级指令转化为精确的策略代码。我们的方法可以调整和灵活地适应各种指令模态和输入类型,并满足特定任务需求。
我们通过在不同场景下的机器人任务中评估,验证了我们的方法的实用性和效率。此外,我们的零射击方法在许多任务中都超越了许多最先进的基于学习的策略。
近年来,大型语言模型(LLMs),如GPT-3、LLaMA和ChatGPT在人类文本生成和理解自然语言指令方面取得了前所未有的进步。这些模型在被训练大量收集的语料库并吸收人类反馈后,展示了出色的零样本泛化能力。继续发展的工作,例如Visual ChatGPT,结合了多种视觉基础模型,利用提示管理器实现视觉绘图和编辑。此外,VISPROG提出了一种神经符号化方法,用于复杂的视觉任务,包括图像理解、操作和知识检索。受到将LLMs和多模态基础模型结合的巨大潜力的启发,我们的目标是开发通用的机器人操纵系统。我们是否能建立一个像ChatGPT那样支持机器人操作、视觉目标达成和视觉推理的机器人系统?
开发能够在动态环境中执行复杂任务的通用机器人系统是机器人研究中的一大挑战。这样的系统必须具备感知环境、选择相关机器人技能,并将它们适当地排列以实现长期目标的能力。实现这些功能需要集成各种技术,包括感知、规划和控制,以使机器人能够在非结构化环境中自主操作。受到从LLMs的文档字符串中合成简单Python程序的强大能力的启发,CaP直接基于几个在上下文中的示例语言命令生成以机器人为中心的策略代码。然而,由于代码的高精度要求,它受限于感知API可以提供的内容,并且在解释更长更复杂的命令时会遇到困难。
为了解决这些挑战,我们提出了一种新的方法,利用多模态基础模型和LLMs同时实现感知识别、任务规划和低级控制模块。与现有的直接生成策略代码的方法(如CaP)不同,我们生成可以帮助降低执行复杂任务的错误率的决策制定动作。具体来说,我们使用各种基础模型(如SAM和CLIP)精确地在环境中定位和分类对象。然后,我们结合机器人技能和LLMs生成决策制定动作。
我们在多个领域和场景中评估了我们的方法,包括简单的物体操纵、视觉目标达成和视觉推理。我们的框架提供了一个易于使用的通用机器人系统,并在VIMABench的六个代表性元任务中显示出强大的竞争性能能力。我们的方法可以作为机器人研究领域的强基线方法,并有助于开发更智能、更有能力的机器人。
论文相关特点
- 通用机器人系统。 我们介绍了一个通用功能的机器人系统Instruct2Act,该系统利用LLMs的上下文学习能力和多模态指令生成来自自然语言和视觉指令的中级决策制定动作。
- 灵活的模态输入。 本文研究了机器人任务(如操纵和推理)上的统一模态指令输入,并提出了一个灵活的检索架构来处理各种类型的指令。
- 强大的零样本性能和最小的代码开销。 与最先进的基于学习的策略相比,我们提出的Instrcut2Act显示出优越的性能,甚至无需微调。此外,与从头开始训练的方法相比,使用基础模型的适应效果相对较小。
境中的物体的精确定位和分类
结合外部模块作图像处理,通过结合LLMs的自然语言理解和生成能力,以及各种基础模型,例如SAM和CLIP,来实现环境中的物体的精确定位和分类。这些信息结合机器人技能,可以由LLMs生成决策行动。这种方法的优点是,相比直接生成策略代码的传统方法,例如CaP,此方法可以通过生成决策行动来减少执行复杂任务的错误率。
视觉基础模型的应用
论文提到了视觉任务上的基础模型的使用,包括使用预训练的图像编码器改进从图像中提取的视觉特征,使用大规模的视觉基础模型进行更好的图像分析
同时,预训练的LLMs在文本理解和生成方面也取得了重大进展。最近的研究试图将LLMs的推理能力与视觉基础模型的视觉理解能力相结合。这一点与论文提出的Instruct2Act非常相似,其目标是通过利用先进的基础模型,借助LLM的推理能力,赋予机器人感知能力。
基础模型在机器人学中的应用
LID使用预训练的语言模型来初始化政策网络,其中目标和观察结果被嵌入;R3M探索了如何通过对多元化的人类视频数据进行时差对比学习和视频语言训练,使得下游的机器人操作任务学习数据更为高效;CACTI提出了一个可扩展的视觉模仿学习框架,该框架利用预训练模型将像素值映射到低维的潜在嵌入,从而提高了泛化能力。Instruct2Act框架则采用了视觉基础模型作为可以通过API调用的模块化工具,无需进行微调,从而消除了数据收集和训练成本的需求。
具体实现
Instruct2Act使得机器人能够根据用户的指令以及一个由顶视摄像头捕捉的观察图像来执行一系列的动作。它旨在改变环境中的物体状态,以匹配指令描述中的配置。它使用大型语言模型(LLM)生成可以执行的感知到动作的代码。任务相关的变量(包括在任务指令中使用的图像剪裁和图像到机器人坐标的转换)被存储在一个可以通过API访问的环境缓存中。系统使用感知模型获得对其操控环境的视觉理解。基于这些信息,系统生成可执行的动作代码,机器人在可用的低级控制器的帮助下执行这些代码。为了指导LLM的输出,我们向LLM提供API定义和上下文示例。
为了帮助LLM完成机器人任务,我们提供了一个设计好的提示,以引导LLM的生成,并伴随具体的任务指令。这个提示包括应用程序接口(API)和上下文示例来展示他们的使用,这将在下一节中介绍。LLM的最终输入是一系列的代码API,使用示例和任务指令。LLM的输出是一个可以被Python解释器执行来驱动机器人动作的Python函数字符串。
使用LLM作为机器人驱动有几个优点。首先,由LLM的API生成的机器人策略具有高度的灵活性,因为上下文示例可以被调整以指导LLM的行为并适应新的任务。其次,通过直接利用视觉基础模型,无需收集训练数据或进行训练过程,且任何基础模型的改进都可以提高动作准确性,而无需额外的成本。最后,简单的API命名和可读的Python代码使得生成的策略代码高度可解释。
具体控制实现:
在获取了输入图像的语义信息(包括目标对象的位置和语义类别)后,我们需要在图像空间和动作空间之间建立一个映射来生成可执行的动作。我们使用一个预定义的变换矩阵将物体位置转换为机器人坐标,并应用边界夹持来防止意外的动作。LLM根据指令和上下文示例识别合适的动作。
具体的驱动:
可以利用大型语言模型(LLM)通过为其提供设计好的提示来驱动机器人任务。这包括应用程序编程接口(API)、使用示例和任务说明。LLM输出一个可以执行机器人动作的Python函数。这种方法具有多个优点,包括灵活性、无需训练数据以及由于基础模型的改进动作准确性。在获取输入图像的语义信息后,建立图像空间和动作空间之间的映射,以生成可执行的动作。
论文通过提供任务的API定义和使用示例的方式演示了这种工作原理的示例,如“将斑点方块放入绿色容器中”和“将拖动的对象旋转150度”。
Instruct2Act的提示
完整的Instruct2Act提示应包括有关第三方库、API定义和上下文示例的信息。这有助于LLM理解如何使用API并执行计算。根据机器人系统层次结构的功能,对API进行分类。例如,SAM()函数是感知模块的一部分。作者还为不同模块提供了完整的代码示例。提示的设计涵盖了所有任务,并包含较少的上下文示例。
使用现成的基础模型进行感知
Instruct2Act使用现成的视觉基础模型,如Segment Anything Model(SAM)和CLIP模型,通过两个API进行访问:SAM()和CLIPRetrieval()。这些函数分析任务的视觉元素。然而,使用预训练的视觉模型时可能存在不正确和不完整的问题。作者通过应用各种图像处理技术和过滤机制来解决这些问题。
结果的评估
论文使用六个桌面操纵元任务来评估所提出的方法。示例包括视觉操纵、旋转和重新排列任务,每个任务都与单模态和多模态指令相关联。
多模态输入处理
将输入分类型进行处理,Instruct2Act能够处理多模态指令,包括纯语言指令和语言-视觉指令。对于纯语言输入,Instruct2Act利用大型语言模型(LLM)从指令中提取查询,然后使用该查询从环境中获取适当的对象。对于语言-视觉指令,指令包括目标对象或状态的图像,Instruct2Act使用该图像获取所需的对象。
Instruct2Act还提供了一种指向-语言增强指令的方法,其中使用光标移动方法生成指向提示,用于引导分割。
该方法使用VIMABench中的各种任务进行了评估。实验结果显示,Instruct2Act在性能上与最先进的基于学习的方法VIMA相当。在需要多个步骤的任务中,它也明显优于VIMA。
Instruct2Act在多模态指令任务中的性能通常优于单模态指令。该方法还展示了在L2和L3泛化任务上强大的泛化能力。此外,该方法是零样本学习的,意味着它能够在没有任何先前训练的情况下执行这些任务。
疑惑: “Instruct2Act还提供了一种指向-语言增强指令的方法,其中使用光标移动方法生成指向提示,用于引导分割。” 不熟悉的领域,这个是怎么实现的?
错误生成情况的处理
缺乏使用示例的情况下,模型可能生成不必要的动作,如在Listing 2中所见,或者不返回已执行的信息,如在Listing 4中所见。然而,我们很高兴发现,LLM能够通过调用SaveFailureImage函数来处理执行失败的情况
和adapter一起使用
其他
Instruct2Act中的处理模块A.2可以解决预训练模型在没有进行微调的情况下直接用于下游任务所出现的问题,如不完整性或错误。在这个全程执行机器人任务的循环中,我们制定了各种处理程序,分别针对感知、规划和执行这三个模块,并针对桌面操作领域进行了设计。例如,图像预处理方法,我们使用灰度阈值过滤器和闭合形态学操作来减少阴影对目标对象识别的影响。在遮罩后处理中,我们开发了一套处理模块来处理SAM的输出,包括基于遮罩大小的过滤过程、扩张操作以及非极大值抑制(NMS)操作等。
此外,通过引入指向语言增强指令,用户可以通过点击来选择目标对象,这些点击点将作为点提示来引导SAM的分割过程。结果显示,与纯语言指令模式相比,使用指向语言增强模式的Instruct2Act效果更好。
结论
Instruct2Act框架利用LLM将多模态指令映射到机器人领域的顺序动作。通过LLM生成的策略代码,使用API调用各种视觉基础模型来获得对任务集的视觉理解。为了弥补零样本设置中的差距,引入了一些处理模块。广泛的实验证实了Instruct2Act在机器人操作任务中的有效性和灵活性。