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
文件夹下提供的notebook示例。以下我们提供了检索任务、训练和评估的示例脚本。
任务
以下是从特定任务套件中检索特定任务的最小示例。
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_suite_name}中检索任务{task_id}," + \
f"语言指令为{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) |