robomimic基础教程(四)——开源数据集

robomimic开源了大量数据集及仿真环境,数据集标准格式为HDF5

目录

一、基础要求

二、使用步骤

[1. 下载数据集](#1. 下载数据集)

[2. 后处理](#2. 后处理)

[3. 训练](#3. 训练)

[4. 查看训练结果](#4. 查看训练结果)

三、HDF5数据集结构与可视化

[1. 数据集结构](#1. 数据集结构)

[(1)根级别(data 组 group)](#(1)根级别(data 组 group))

[(2)轨迹(组 group )](#(2)轨迹(组 group ))

(2.1)属性

(2.2)数据集

[(2.3)观测(组 group)](#(2.3)观测(组 group))

[(3)掩码(组 group)](#(3)掩码(组 group))

[2. 可视化](#2. 可视化)

(1)查看HDF5数据结构

(2)查看数据集轨迹


一、基础要求

编译器:使用pycharm或者Colab notebook均可

pycharm安装在UMI复现基础环境安装配置全流程(二)------实用软件安装及卸载写过

二、使用步骤

robomimic数据集通过记录的环境数据,并用作给定离线RL或IL算法的输入。之后,可以通过以下方式使用robomimic数据集:

  1. 下载所需的数据集

  2. 对数据集进行后处理,保证与robomimic兼容

  3. 用数据集训练机器人

1. 下载数据集

robomimic目前支持以下开箱即用的数据集。点击相应的(1)下载链接下载数据集,点击相应的(2)后处理链接对数据集进行后处理。

Dataset Task Types Downloading Postprocessing
robomimic v0.1 Sim + Real Robot Manipulation Link Link
D4RL Sim Locomotion Link Link
MOMART Sim Mobile Manipulation Link Link
RoboTurk Pilot Sim Robot Manipulation Link Link

也可以在robomimic原程序文件夹中使用download_datasets.py函数下载,例如:

python 复制代码
python robomimic/scripts/download_datasets.py --tasks lift --dataset_types ph

数据集存储为datasets/lift/ph/low_dim_v141.hdf5

2. 后处理

如果下载了low_dim或image数据集,那么数据集可以开箱即用!不需要后处理

如果下载了原始数据集,则必须对数据集进行后处理,因为没有存储观测值。必须运行dataset_states_to_obs.py

3. 训练

在下载和后处理之后,使用train.py对数据集进行训练

python 复制代码
python train.py --dataset <PATH_TO_POSTPROCESSED_DATASET> --config <PATH_TO_CONFIG>

比如针对1中下载的low_dim_v141.hdf5,可以选择运行behavior cloning (BC)算法训练

python 复制代码
python robomimic/scripts/train.py --config robomimic/exps/templates/bc.json --dataset datasets/lift/ph/low_dim_v141.hdf5 --debug

4. 查看训练结果

在tests文件夹中的tmp_model_dir文件夹中包括这几个文件夹,

更多详细内容查看robomimic应用教程(一)------模型训练

三、HDF5数据集结构与可视化

1. 数据集结构

所有后处理的 robomic 兼容数据集被存储为具有高度组织和层次结构的 HDF5 文件

单个数据集是具有以下结构的单个HDF5文件(链接

HDF5 结构详细说明:


(1)根级别(data group**)**

  • total(属性 attribute):表示数据集中状态-动作样本的总数,提供整体大小信息

  • env_args(属性 attribute):一个包含环境元数据的 JSON 字符串,记录了数据收集时的环境信息,该元数据包括:

    • env_name:环境或任务的名称。
    • env_type:环境的类型(例如 robosuite)
    • env_kwargs:传递给环境的其他关键字参数,用于配置

(2)轨迹(组 group )

每个轨迹都被存储为一个组(如 demo_0、****demo_1 等),在每个轨迹组内,包含以下内容:

(2.1)属性
  • num_samples(属性 attribute):该轨迹中的状态-动作样本数量

  • model_file(属性 attribute):MJCF MuJoCo 模型的 XML 字符串,对于 robosuite 数据集是特定的,对于非 robosuite 数据集则省略

(2.2)数据集
  • states(数据集 dataset):包含按时间顺序排列的 MuJoCo 状态,形状为 (N, D),其中:

    • N:轨迹中的样本数量。
    • D:状态向量的维度。对于非 robosuite 数据集,可能为空或填充虚拟值
  • actions(数据集 dataset):包含环境中执行的动作,按时间顺序排列。其形状为(N, A),其中:

    • N:轨迹中的样本数量
    • A:动作空间的维度
  • rewards(数据集 dataset):存储轨迹中从环境获得的奖励,形状为 (N, ),表示每个时间步的奖励

  • dones(数据集 dataset):指示在每个动作后,情节是否结束(1表示结束,0表示未结束),形状为 (N, )


(2.3)观测(组 group)
  • obs(组 group):包含观测键的多个数据集

    • <obs_key_1>(数据集 dataset):第一个观测键,数据集的名称和形状可能不同(例如agentview_image,形状为(N,84,84,3))
    • <obs_key_2>(数据集 dataset):第二个观测键,依此类推
  • next_obs(组 group):包含下一时间步的观测键,结构与 obs 组类似

    • <obs_key_1>(数据集):对应的下一步观测
    • <obs_key_2>(数据集):依此类推

(3)掩码(组 group)

  • mask (组 group):如果数据集包含过滤键(filter keys),则存在此组,用于选择数据集的子集(例如,验证轨迹)
    • <filter_key_1> (数据集):包含轨迹标识符的列表,例如 ["demo_0", "demo_19", "demo_35"],表示用于验证的过滤轨迹
    • <filter_key_2>(数据集):其他过滤键,依此类推

该结构在不同的轨迹(如 demo_0、****demo_1 等)中是一致的,每个轨迹都包含类似的属性和数据集格式

这种设置方式可以访问特定轨迹的数据、元数据、观测和环境中的动作,使其适合使用 robomimic 框架进行策略的训练和测试

2. 可视化

(1)查看HDF5数据结构

存储库提供了一个简单的实用程序脚本(get_dataset_info.py)来查看 hdf5 数据集结构和 hdf5 数据集的一些统计信息,脚本显示如下信息:

  • 关于轨迹的统计信息(数量、平均长度等)
  • 数据集中的筛选键(filter keys
  • 数据集中的环境元数据(environment metadata),用于构建收集数据的相同模拟器环境
  • 第一个演示的数据集结构

可以通过 --verbose 参数打印每个过滤键下的演示键列表,以及所有用于演示的数据集结构

例如,使用 tests/assets/test_v141.hdf5 中的存储库打包得到的小型 hdf5 数据集

python 复制代码
python get_dataset_info.py --dataset ../../tests/assets/test_v141.hdf5

对于如何编写自定义代码以处理 robomimic 数据集,可查看 jupyter 代码

相关分析在 robomimic应用教程(三)------深入理解robomimic数据集

(2)查看数据集轨迹

对于上面打包的小型 hdf5 数据集(基于 robosuite v1.4.1),使用 playback_dataset.py 脚本查看数据集轨迹

python 复制代码
# For the first 5 trajectories, load environment simulator states one-by-one, and render "agentview" and "robot0_eye_in_hand" cameras to video at /tmp/playback_dataset.mp4
$ python playback_dataset.py --dataset ../../tests/assets/test_v141.hdf5 --render_image_names agentview robot0_eye_in_hand --video_path /tmp/playback_dataset.mp4 --n 5

# Directly visualize the image observations in the dataset. This is especially useful for real robot datasets where there is no simulator to use for rendering.
$ python playback_dataset.py --dataset ../../tests/assets/test_v141.hdf5 --use-obs --render_image_names agentview_image --video_path /tmp/obs_trajectory.mp4

# Visualize depth observations as well.
$ python playback_dataset.py --dataset /path/to/dataset.hdf5 --use-obs --render_image_names agentview_image --render_depth_names agentview_depth --video_path /tmp/obs_trajectory.mp4

# Play the dataset actions in the environment to verify that the recorded actions are reasonable.
$ python playback_dataset.py --dataset ../../tests/assets/test_v141.hdf5 --use-actions --render_image_names agentview --video_path /tmp/playback_dataset_with_actions.mp4

# Visualize only the initial demonstration frames.
$ python playback_dataset.py --dataset ../../tests/assets/test_v141.hdf5 --first --render_image_names agentview --video_path /tmp/dataset_task_inits.mp4
相关推荐
weixin_4374977717 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
cnxy18817 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
喝拿铁写前端17 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat17 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技18 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪18 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子18 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z18 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人18 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风18 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习