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
相关推荐
揽秀亭长2 分钟前
音频转简谱实测:AI扒谱与传统制谱方式有什么区别
人工智能·音视频
码视野4 分钟前
基于 Vue3 + Element Plus 的【智慧社区洗车养车与上门流动洗车预约调度系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
deepseek235 分钟前
英伟达 Vera Rubin NVL72 首次实测拆解:每兆瓦 30 倍吞吐与 35 倍 Token 成本降幅,Agent 算力账本被重写
人工智能·深度学习·ai基础设施
2601_966949659 分钟前
如何利用 1 分钟 K 线在 14:50 精准捕捉尾盘异动?Python 量化实战:1 分钟 K 线 + 全市场扫描
开发语言·人工智能·python·量化·quantdash·量化数据源
码视野10 分钟前
基于 Vue3 + Element Plus 的【无人值守共享自习室与空间智能预约系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
海天一色y10 分钟前
强化学习工具函数详解:从经验回放到优势函数计算
人工智能·python·强化学习
yuhulkjv33514 分钟前
告别复制粘贴式降级:纳米AI鸿蒙版导出word格式为何绕不开“AI 导出鸭”
人工智能·ai·word·harmonyos·ai导出鸭
故七月17 分钟前
生成式引擎优化(GEO)的底层逻辑与产业实践
大数据·人工智能·机器学习
MacroZheng20 分钟前
又一个神级画图Skill开源,再见draw.io!
java·人工智能·后端
船厂电气自动化ai大模型21 分钟前
AI大模型与数学·第56课 快速傅里叶变换FFT:DFT高效优化算法,图像、音频、扩散模型工程加速核心工具
数据结构·人工智能·深度学习·算法·机器学习