Project Icon

calvin

机器人长时间操作任务中基于语言条件的策略学习

CALVIN是一个开源的模拟基准,用于学习长时间的语言条件任务,旨在开发能够通过人类语言指令和车载传感器完成多种机器人操作任务的代理。该项目支持复杂任务序列、动作空间和语言规格,提供灵活的传感器配置详细评估协议,并通过多种难度模式提高测试效能。项目资源包括训练模型、评估脚本和数据下载选项,是机器人视觉与语言研究的理想选择。

CALVIN

代码风格:black
语言评分:Python
总警告数
许可证:MIT

CALVIN - 一种面向长时间机器人操作任务的语言条件策略学习基准

Oier MeesLukas HermannErick RoseteWolfram Burgard

CALVIN 获得了2022年IEEE机器人与自动化快报(RA-L)最佳论文奖!

我们介绍了 CALVINComposing Actions from Language and Vision),一个用于学习长时间语言条件任务的开源模拟基准。
我们的目标是开发能够在长时间内通过机载传感器并仅通过人类语言指令完成多种机器人操作任务的智能体。CALVIN任务在序列长度、动作空间和语言方面比现有的视觉与语言任务数据集更为复杂,并支持传感器套件的灵活指定。

:computer: 快速开始

首先,本地克隆此仓库

git clone --recurse-submodules https://github.com/mees/calvin.git  
$ export CALVIN_ROOT=$(pwd)/calvin

安装依赖项:

$ cd $CALVIN_ROOT  
$ conda create -n calvin_venv python=3.8  # 或使用virtualenv  
$ conda activate calvin_venv  
$ sh install.sh

如果安装pyhash时遇到问题,您可能需要将setuptools降级到58版本以下。

下载数据集(使用参数DABCABCD选择要下载的拆分版本):
如果您想在不下载整个数据集的情况下开始,请使用参数debug下载一个小的调试数据集(1.3 GB)。

$ cd $CALVIN_ROOT/dataset  
$ sh download_data.sh D | ABC | ABCD | debug

:weight_lifting_man: 训练基线智能体

训练基线模型:

$ cd $CALVIN_ROOT/calvin_models/calvin_agent  
$ python training.py datamodule.root_data_dir=/path/to/dataset/ datamodule/datasets=vision_lang_shm

vision_lang_shm选项将在训练开始时将CALVIN数据集加载到共享内存中,加快训练期间的数据加载速度。
准备共享内存缓存需要一些时间(在我们的SLURM集群中大约20分钟)。
如果您想使用原始的数据加载器(例如用于调试),只需使用datamodule/datasets=vision_lang覆盖命令即可。
为了进一步加快速度,您可以通过添加~callbacks/rollout~callbacks/rollout_lh来在训练期间禁用评估回调。

想要将训练扩展到多GPU设置?只需指定GPU数量,DDP将自动用于训练,多亏了Pytorch Lightning。 在所有可用GPU上进行训练:

$ python training.py trainer.gpus=-1

如果您可以访问Slurm集群,请按照此指南操作。

您可以使用Hydra灵活的覆盖系统来更改超参数。 例如,使用静态摄像机和夹持器摄像机的RGB图像进行相对动作训练模型:

$ python training.py datamodule/observation_space=lang_rgb_static_gripper_rel_act model/perceptual_encoder=gripper_cam

使用两台摄像机的RGB-D图像训练模型:

$ python training.py datamodule/observation_space=lang_rgbd_both model/perceptual_encoder=RGBD_both

使用静态摄像机的RGB图像和视觉触觉观察进行绝对动作训练模型:

$ python training.py datamodule/observation_space=lang_rgb_static_tactile_abs_act model/perceptual_encoder=static_RGB_tactile

查看所有可用的超参数:

$ python training.py --help

要恢复训练,只需覆盖Hydra工作目录:

$ python training.py hydra.run.dir=runs/my_dir

:framed_picture: 感知观察

CALVIN支持用于视觉运动控制的一系列常用传感器:

  1. 静态摄像机RGB图像 - 形状为200x200x3
  2. 静态摄像机深度图 - 形状为200x200
  3. 夹持器摄像机RGB图像 - 形状为84x84x3
  4. 夹持器摄像机深度图 - 形状为84x84
  5. 触觉图像 - 形状为120x160x6
  6. 本体感受状态 - EE位置(3)、EE欧拉角方向(3)、夹持器宽度(1)、关节位置(7)、夹持器动作(1)。

:joystick: 动作空间

在CALVIN中,智能体必须执行闭环连续控制以遵循描述复杂机器人操作任务的不受约束的语言指令,以30hz向机器人发送连续动作。
为了让研究人员和实践者能够自由实验不同的动作空间,CALVIN支持以下动作空间:

  1. 绝对笛卡尔姿态 - EE位置(3)、EE欧拉角方向(3)、夹持器动作(1)。
  2. 相对笛卡尔位移 - EE位置(3)、EE欧拉角方向(3)、夹持器动作(1)。
  3. 关节动作 - 关节位置(7)、夹持器动作(1)。

更多信息,请参阅更详细的README

:muscle: 评估:Calvin挑战赛

长时间多任务语言控制 (LH-MTLC)

CALVIN基准的目的是评估长时间语言条件连续控制策略的学习。在这种设置中,单个智能体必须通过理解一系列不受约束的语言表达来解决复杂的操作任务,例如,“打开抽屉……捡起蓝色积木……现在把积木推入抽屉……现在打开滑动门”。
我们提供了一种评估协议,通过选择不同的传感器套件和训练环境数量,以不同的难度模式进行评估。
为了避免偏置的初始位置,机器人在每个多步骤序列之前会被重置到中立位置。

要评估训练的calvin基线智能体,请运行以下命令:

$ cd $CALVIN_ROOT/calvin_models/calvin_agent  
$ python evaluation/evaluate_policy.py --dataset_path <PATH/TO/DATASET> --train_folder <PATH/TO/TRAINING/FOLDER>

可选参数:

  • --checkpoint <PATH/TO/CHECKPOINT>:默认情况下,评估会加载训练日志目录中的最后一个检查点。
    您可以通过在评估命令中添加此项来指定另一个检查点的路径。
  • --debug:打印调试信息并可视化环境。

如果您想在CALVIN挑战赛中评估您自己的模型架构,可以在evaluate_policy.py 视觉-语言基础模型作为有效的机器人模仿者
李星航, 刘明欢, 张汉波, 于存君, 徐杰, 吴宏韬, 曾智霖, 景亚, 张伟楠, 刘华平, 李航, 孔涛
论文, 代码

使用预训练图像编辑扩散模型进行零样本机器人操控
凯文·布莱克, 中本光彦, 普拉纳夫·阿特雷亚, 荷马·沃克, 切尔西·芬恩, 阿维拉尔·库马尔, 谢尔盖·莱文
论文, 代码

语言控制扩散:高效地在空间、时间和任务中扩展
张艾迪, 陆玉洁, 王威廉, 张艾米
论文, 代码

在非结构化数据上进行语言条件机器人模仿学习的关键因素
欧尔·米斯, 卢卡斯·赫尔曼, 沃尔夫拉姆·布尔加德
论文, 代码

使用基本技能先验进行非结构化数据下的语言条件模仿学习
周鸿宽, 邴震山, 姚翔通, 苏晓杰, 杨晨光, 黄凯, 阿里奥斯·诺尔
论文, 代码

联系欧尔添加你的模型。

CALVIN中的强化学习

您是否有兴趣在CALVIN环境中的不同操控任务上尝试强化学习代理? 我们提供了一个Google Colab,展示如何利用CALVIN任务指示器在稀疏奖励的情况下学习强化学习代理。

常见问题

为什么使用EGL渲染?

我们使用EGL将子弹渲染从默认的CPU移动到GPU,这样速度更快。 通过这种方式,我们还可以在代理的训练过程中进行回滚以跟踪其性能。 从CPU切换到GPU后,渲染的纹理会略有变化,因此如果您计划测试预训练模型,请注意这一点。

我在使用多GPU进行训练时,为什么在回滚过程中会出现OOM错误?

PyBullet最近才添加了在使用EGL时选择使用哪个GPU进行渲染的选项(修复于2021年10月22日提交,见这里)。 如果你使用的是旧版本的PyBullet,则无法选择GPU,这可能会导致在具有多个GPU的集群节点上出现问题,因为所有实例都会放置在同一个GPU上,导致渲染速度变慢,并可能导致OOM错误。

该修复引入了一个环境变量EGL_VISIBLE_DEVICES(类似于CUDA_VISIBLE_DEVICES),可让你指定用于渲染的GPU设备。 然而,有一个问题:在某些机器上,CUDA和EGL的设备ID不匹配(例如CUDA设备0可能是EGL设备3)。 我们在calvin_env的封装中自动处理了这一点,并找到相应的egl设备ID,因此您不必自己设置EGL_VISIBLE_DEVICES,见这里

我对记录的操控任务不感兴趣,可以用遥控操作记录不同的演示吗?

可以,尽管目前还没有文档,但所有使用VR头盔记录数据的代码都存在于calvin_env中,见https://github.com/mees/calvin_env/blob/main/calvin_env/vrdatacollector.py

更新日志

2023年2月24日

  • D数据集中错误的scene_info.npy。请注意我们已更新了相应的校验和。请按以下步骤替换:
cd task_D_D
wget http://calvin.cs.uni-freiburg.de/scene_info_fix/task_D_D_scene_info.zip
unzip task_D_D_scene_info.zip && rm task_D_D_scene_info.zip

2022年9月16日

  • ABC和ABCD数据集中的重大错误: 如果您在此日期之前下载了这些数据集,您需要进行以下修复:
    • ABC和ABCD数据集中错误的语言注释。您可以这里下载更正后的语言嵌入。
    • calvin_env中仅影响语言嵌入生成的错误。
    • ABC和ABCD数据集中错误的scene_info.npy。请按以下步骤替换:
cd task_ABCD_D
wget http://calvin.cs.uni-freiburg.de/scene_info_fix/task_ABCD_D_scene_info.zip
unzip task_ABCD_D_scene_info.zip && rm task_ABCD_D_scene_info.zip
cd task_ABC_D
wget http://calvin.cs.uni-freiburg.de/scene_info_fix/task_ABC_D_scene_info.zip
unzip task_ABC_D_scene_info.zip && rm task_ABC_D_scene_info.zip
  • 数据集中添加了额外的语言嵌入。

2022年5月15日

  • 添加了共享内存数据集加载器以加快训练速度。重构了数据加载类。

2022年2月7日

  • 对长时间跨度多步序列的任务分布进行了小幅调整。
  • 修改了推送和提升任务的成功标准。
  • 在数据集的hydra配置中为机器人设置use_nullspace: true。如果您在此日期之前下载了其中一个数据集,请编辑 <PATH_TO_DATASET>/training/.hydra/merged_config.yaml 和 <PATH_TO_DATASET>/validation/.hydra/merged_config.yaml 中的这一行。
  • model.decoder重命名为model.action_decoder

2022年1月10日

  • 评估中的重大变化,使用不同的环境初始状态。

引用

如果您觉得该数据集或代码有用,请引用:

@article{mees2022calvin,
author = {Oier Mees and Lukas Hermann and Erick Rosete-Beas and Wolfram Burgard},
title = {CALVIN: A Benchmark for Language-Conditioned Policy Learning for Long-Horizon Robot Manipulation Tasks},
journal={IEEE Robotics and Automation Letters (RA-L)},
volume={7},
number={3},
pages={7327-7334},
year={2022}
}

许可

MIT许可

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号