跳转到内容

生成你自己的数据 / 基准

在本章节中,我们将介绍如何使用 GenManip 来生成你自己的数据集或基准测试任务。

用户可以直接编辑 USD 场景并编写对应的 Config 配置文件,然后运行 GenManip 来生成数据。以下视频展示了完整的操作流程,建议在 YouTube 中以原始清晰度观看:

与数据生成类似,基准生成的流程也大体相同。我们通常会先基于当前的 Layout(布局) 执行一次闭环验证,以确保我们的 Oracle 求解器能够完成任务。

  • 如果验证成功,说明该任务是可解的;
  • 如果你已经确认任务可以完成,可以将 Config 中的 mode 设置为 Benchmark,以跳过闭环验证,直接保存 Layout。

在编写好 Config 文件后,使用以下命令生成数据:

Terminal window
# 遍历 demonstration_configs 中的每个配置字典,生成 num_episode 条数据
python demogen.py -cfg configs/tasks/xxx.yml
# 遍历 demonstration_configs 中的每个配置字典,渲染 num_episode 条数据
python render.py -cfg configs/tasks/xxx.yml

生成的数据将保存在:

saved/demonstrations/<task_name>/

对于测试用例(evaluation cases),你可以运行:

Terminal window
# 遍历 evaluation_configs 中的每个配置字典,生成 num_test 条测试用例
python demogen.py -cfg configs/tasks/xxx.yml --eval
# 收集基准资产并打包成 GenManip 包
python standalone_tools/collect_benchmark_assets.py --asset_path saved/tasks/<task_name> --dataset_id <task_package> --upload_to_huggingface

生成的测试用例将保存在:

saved/tasks/GenManip-Package-{<task_name>}/

值得注意的是,GenManip 支持大规模并行运行

  • 无论是 demogen.pyrender.py 还是 eval.py,都可以在多台服务器上同时运行多个实例
  • 这些程序通过文件系统的文件锁listdir 同步机制来避免冲突、保证进度一致。

你可以在不同服务器上启动任意数量的进程,只需确保它们共享同一个 saved 文件夹即可。