Benchmarking Knowledge Transfer in Lifelong Robot Learning
| Files | Last commit | Last update |
|---|---|---|
| 3 years ago | ||
| 2 years ago | ||
| 2 years ago | ||
| 2 years ago | ||
| 2 years ago | ||
| 3 years ago | ||
| 3 years ago | ||
| 3 years ago | ||
| 2 years ago | ||
| 3 years ago | ||
| 3 years ago |
Translated by AI, submit an issue feedback
LIBERO 是为了研究多任务和终身机器人学习中知识转移而设计的。成功解决这些问题需要关于对象/空间关系的声明性知识以及关于运动/行为的过程性知识。LIBERO 提供:
- 一种理论上可以生成无限数量操纵任务的程序化生成管道。
- 分为四个任务集合的 130 个任务:LIBERO-Spatial、LIBERO-Object、LIBERO-Goal 和 LIBERO-100。前三个任务集合具有受控分布变化,意味着它们需要特定类型的知识转移。相反,LIBERO-100 包含 100 个需要交织知识转移的操纵任务。LIBERO-100 进一步分为用于预训练策略的 LIBERO-90 和用于测试代理下游终身学习性能的 LIBERO-10。
- 五个研究主题。
- 三种视觉运动策略网络架构。
- 使用顺序微调和多任务学习基线的三种终身学习算法。
内容
安装
请按顺序运行以下命令以安装 LIBERO 的依赖项。
conda create -n libero python=3.8.13
conda activate libero
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
cd LIBERO
pip install -r requirements.txt
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
然后安装 libero 包:
pip install -e .
数据集
我们为 LIBERO 的四个任务集合提供了高质量的人类远程操作示范。要下载演示数据集,请运行:
python benchmark_scripts/download_libero_datasets.py
默认情况下,数据集将存储在 LIBERO 文件夹下,并且所有四个数据集都将被下载。要下载特定数据集,请使用
python benchmark_scripts/download_libero_datasets.py --datasets DATASET
其中 DATASET 可选自 [libero_spatial, libero_object, libero_100, libero_goal]。
开始使用
有关详细说明,请参阅文档或 notebooks 目录下提供的笔记本示例。以下是获取任务、训练和评估的示例脚本。
任务
以下是从特定任务集合中检索特定任务的最小示例。
from libero.libero import benchmark
from libero.libero.envs import OffScreenRenderEnv
benchmark_dict = benchmark.get_benchmark_dict()
task_suite_name = "libero_10" # 也可以选择 libero_spatial、libero_object 等
task_suite = benchmark_dict[task_suite_name]()
# 检索特定任务
task_id = 0
task = task_suite.get_task(task_id)
task_name = task.name
task_description = task.language
task_bddl_file = os.path.join(get_libero_path("bddl_files"), task.problem_folder, task.bddl_file)
print(f"[info] 获取任务 {task_id} 从集合 {task_suite_name},语言指令是 {task_description},BDDL 文件是 {task_bddl_file}")
# 步进环境
env_args = {
"bddl_file_name": task_bddl_file,
"camera_heights": 128,
"camera_widths": 128
}
env = OffScreenRenderEnv(**env_args)
env.seed(0)
env.reset()
init_states = task_suite.get_task_init_states(task_id) # 为了基准测试,我们固定一组初始状态
init_state_id = 0
env.set_init_state(init_states[init_state_id])
dummy_action = [0.] * 7
for step in range(10):
obs, reward, done, info = env.step(dummy_action)
env.close()
目前,我们仅支持稀疏奖励函数(即,当任务完成时,代理会收到 +1)。由于稀疏奖励强化学习极其困难,我们当前主要关注终身模仿学习。
训练
要启动一个终身学习实验,请选择:
BENCHMARK从[LIBERO_SPATIAL, LIBERO_OBJECT, LIBERO_GOAL, LIBERO_90, LIBERO_10]POLICY从[bc_rnn_policy, bc_transformer_policy, bc_vilt_policy]ALGO从[base, er, ewc, packnet, multitask]
然后运行:
export CUDA_VISIBLE_DEVICES=GPU_ID && \
export MUJOCO_EGL_DEVICE_ID=GPU_ID && \
python libero/lifelong/main.py seed=SEED \
benchmark_name=BENCHMARK \
policy=POLICY \
lifelong=ALGO
请查看文档以详细了解如何重现研究结果。
评估
默认情况下,政策将在训练期间在线进行评估。如果您有限的 GPU 计算资源,我们可以提供一个单独的评估脚本供您使用。
python libero/lifelong/evaluate.py --benchmark BENCHMARK_NAME \
--task_id TASK_ID \
--algo ALGO_NAME \
--policy POLICY_NAME \
--seed SEED \
--ep EPOCH \
--load_task LOAD_TASK \
--device_id CUDA_ID
引用
如果 LIBERO 在您的研究中很有帮助,请考虑引用我们的论文:
@article{liu2023libero,
title={LIBERO: Benchmarking Knowledge Transfer for Lifelong Robot Learning},
author={Liu, Bo and Zhu, Yifeng and Gao, Chongkai and Feng, Yihao and Liu, Qiang and Zhu, Yuke and Stone, Peter},
journal={arXiv preprint arXiv:2306.03310},
year={2023}
}
许可证
| 组件 | 许可证 |
|---|---|
| 代码库 | MIT 许可证 |
| 数据集 | 知识共享署名 4.0 国际 (CC BY 4.0) |
Introduction
Benchmarking Knowledge Transfer in Lifelong Robot Learning
MIT Jupyter Notebook38Commitsbenchmarkimitation-learninglifelong-learningmanipulationmultitask-learningrobot-learning
Customize your domain
