清华发布UniAct:仅需50条数据,快速适配新机器人!跨平台泛化能力震惊行业

随着人工智能技术的快速发展,具身智能(Embodied AI)逐渐成为研究热点。具身智能的目标是让机器人能够像人类一样感知和操作物理世界,但不同机器人之间的动作空间异构性一直是这一领域的重大挑战。为了解决这一问题,清华大学、商汤、北京大学和上海人工智能实验室等机构联合推出了UniAct框架。UniAct通过学习通用行为,能够消除不同机器人之间的动作异构性,为具身智能的发展提供了新的思路和工具。本文将详细介绍UniAct的技术架构、主要功能、应用场景以及如何快速上手使用。

一、项目概述

UniAct是一个新型的具身基础模型框架,旨在解决不同机器人之间的行为异构性问题。通过学习通用行为,UniAct能够捕捉不同机器人共享的原子行为特征,消除因物理形态和控制接口差异导致的行为异构性。UniAct的架构包括通用行为提取器、通用行为空间和异构解码器,能够实现跨平台的高效控制。

二、技术架构

1. 通用动作空间(Universal Action Space

UniAct通过向量量化(Vector Quantization)构建了一个离散的通用动作空间。这个空间被设计为一个向量化的码本(codebook),每个向量嵌入代表一种通用的原子行为。这些原子行为是不同机器人在不同情境下共享的基本行为模式,例如“移动到目标位置”或“避开障碍物”。通过这种方式,UniAct能够将不同机器人的动作统一表示,消除动作空间的异构性。

2. 通用动作提取器(Universal Action Extractor

UniAct基于视觉语言模型(VLM)的通用动作提取器来识别和提取通用动作。提取器在给定观察结果和任务目标的情况下,输出选择通用动作的概率。这种方法使得提取的通用动作与任务进展直接相关,而不仅仅是观察变化。

3. 异构解码器(Heterogeneous Decoders

为了将通用动作翻译为特定机器人的可执行命令,UniAct引入了异构解码器。这些解码器针对不同的机器人平台进行设计,能够根据机器人的具体特征(如关节力矩或摄像头视角)将通用动作转换为具体的控制信号。通过这种方式,UniAct能够灵活适配不同类型的机器人,实现高效的跨平台控制

4. 轻量化架构与高效训练

UniAct采用了轻量化的模型架构,即使在低参数设置下也能保持良好的性能UniAct通过行为克隆损失进行训练,并根据动作标签的性质选择合适的损失函数(如离散动作的交叉熵和连续动作的均方误差)。这种高效的训练方式使得UniAct能够快速适应新环境和新机器人。

三、主要功能

1. 通用动作编码

UniAct将不同机器人的原子行为通过向量量化形成一个通用的codebook,每个token代表一种可跨平台共享的通用技能。

2. 轻量化架构与高效性能

UniAct-0.5B模型仅需0.5亿参数,在真实与模拟环境的任务测试中,表现已经超过了参数达到14亿的OpenVLA模型。

3. 快速适应新环境和机器人

UniAct仅需50条专用示教数据即可完成模型在新环境中的微调,能快速适应新机器人和控制接口。通过添加新的轻量级解码器,可以轻松扩展到新的机器人平台。

4. 跨领域数据利用

UniAct通过通用行为空间,能更好地利用跨领域的数据进行训练,在不同机器人和环境中实现更高效的泛化。

5. 一致的行为模式

在不同的部署场景和机器人类型上,同一个通用动作可以表现出一致的行为模式。为具身智能体的控制提供了新的便捷方式,操作人员只需从codebook中挑选相应的通用动作,即可指挥不同类型的机器人完成任务

四、应用场景

1. 自动驾驶与智能交通

UniAct的技术原理和架构也适用于自动驾驶领域。通过学习通用的驾驶行为模式,UniAct能为自动驾驶系统提供更高效的动作规划和控制。

2. 医疗机器人

UniAct可以应用于医疗机器人领域,例如辅助康复机器人或手术机器人。通过通用动作空间,医疗机器人能更灵活地适应不同的患者需求和手术场景。

3. 工业自动化

在工业自动化领域,UniAct可以用于控制多种工业机器人,实现高效的生产流程优化。通过快速适应不同的机器人平台和任务需求,UniAct能显著提高工业生产的灵活性和效率。

4. 智能家居与服务机器人

UniAct可以应用于智能家居和家庭服务机器人领域。通过通用动作空间,服务机器人能更自然地与人类交互,完成各种家务任务。

五、快速使用

1. 安装依赖

首先,需要安装UniAct框架所需的包和依赖。运行以下命令来克隆项目仓库并安装所需依赖:

git clone https://github.com/2toinf/UniAct-Preview.gitcd UniAct-Previewpip install -r requirements.txt
2.下载预训练模型

Model Zoo下载预训练的UniAct模型。目前,UniAct提供了以下模型的预训练权重:

  • Libero-MLP-Decoder适用于Libero环境的MLP解码器,平均成功率61.3%

  • Bridge-MLP-Decoder适用于Bridge环境的MLP解码器,平均成功率63.3%

下载完成后,将模型权重文件保存到本地路径,例如`/data/UniAct/`

3. 加载模型

加载预训练的UniAct模型,包括通用动作提取器、视觉骨干网络和通用动作码本,以及特定机器人的解码器。以下是加载模型的代码示例:

import models.UniAct_V1from timm.models import create_model# 加载通用动作提取器、视觉骨干网络和通用动作码本uniact_model = create_model("UniAct_05B_CodeBook_256_V1")uniact_model.load_state_dict(torch.load("/data/UniAct/basemodel.pt"), strict=False)# 加载特定机器人的解码器# 例如,加载Libero环境的MLP解码器uniact_model.load_state_dict(torch.load("/data/UniAct/libero_mlp.pt"), strict=False)

4. 准备输入数据

准备输入数据,包括图像观察、语言指令和机器人自身的状态信息(可选)。以下是准备输入数据的代码示例:

from datasets.utils import LLAVAOV_PREPROCESSOR, R18_PREPROCESSORfrom PIL import Imageimport numpy as npimport torch # 准备图像观察image_list = ["image-view1.jpg""image-view2.jpg"]img_np = []img_tensor = []for image in image_list:    with Image.open(image) as img:        img = img.convert('RGB')    img_np.append(np.asarray(img))    img_tensor.append(R18_PREPROCESSOR(img)) img_np = np.stack(img_np)img_tensor = torch.stack(img_tensor) # 准备语言指令language_instruction = "your language instruction here"text = [LLAVAOV_PREPROCESSOR.apply_chat_template([    {        "role""user",        "content": [            {"type""video"},            {"type""text""text": language_instruction},        ]    }], add_generation_prompt=True)] # 准备输入字典video = [np.expand_dims(img_np[0], axis=0)]  # 只使用主视图进行提取inputs = LLAVAOV_PREPROCESSOR(videos=video, text=text, return_tensors="pt", padding=True)inputs = {'inputs': inputs.to('cuda', torch.bfloat16),          'images': img_tensor.unsqueeze(0).to('cuda', torch.bfloat16)}

5. 运行推理

使用加载的模型对输入数据进行推理,得到预测的动作。以下是运行推理的代码示例:

# 运行推理pred_action = uniact_model.infer(domain_name="libero-1-rgb",  # 根据目标环境选择合适的domain_name**inputs)# 注意:需要对预测的动作进行反归一化处理# 请参考action statics中的归一化方法,例如:# pred_action = pred_action * std + mean

6. 适配新机器人(可选)

如果需要将UniAct模型快速适配到新的机器人平台,可以按照以下步骤进行:

  • 准备数据收集少量(例如50条)新机器人的示教数据,包括图像观察、语言指令和对应的机器人动作。

  • 训练解码器使用示教数据训练针对新机器人的解码器。可以参考训练指导中的“Fast-Adapt to your embodiment”部分,使用`UniAct_05B_CodeBook_256_V1_For_Fast_Adaptation`模型进行训练。

  • 加载新解码器训练完成后,将新解码器的权重加载到UniAct模型中,即可实现对新机器人的适配。

通过以上步骤,即可可以快速部署和使用UniAct框架,实现跨平台的机器人控制和任务执行。

六、结语

UniAct作为清华大学、商汤、北京大学和上海人工智能实验室等机构联合推出的具身基础模型框架,通过通用动作空间和异构解码器解决了不同机器人之间的动作异构性问题。其轻量化架构和高效训练方式使得UniAct能够快速适应新环境和新机器人,展现出卓越的跨平台控制和适应能力。无论是自动驾驶、医疗机器人还是工业自动化等领域,UniAct都为具身智能的发展提供了强大的技术支持。希望本文的介绍能够帮助你更好地了解UniAct,并在你的技术探索中发挥重要作用。

七、相关资源

项目官网:https://2toinf.github.io/UniAct/

GitHub仓库:https://github.com/2toinf/UniAct

技术论文:https://arxiv.org/pdf/2501.10105

(文:小兵的AI视界)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往