MimicGen 子任务标注实战:用annotate_subtasks.py解决演示轨迹手动切分的难题

MimicGen 子任务标注实战:用annotate_subtasks.py解决演示轨迹手动切分的难题 MimicGen 子任务标注实战用annotate_subtasks.py解决演示轨迹手动切分的难题【免费下载链接】mimicgen_environmentsThis code corresponds to simulation environments used as part of the MimicGen project.项目地址: https://gitcode.com/gh_mirrors/mi/mimicgen_environmentsMimicGen 是用人类演示轨迹批量生成机器人操作数据的系统而一切的基础是子任务切分只有知道每条演示里抓取结束放置结束发生在哪一帧数据生成才能把演示拆成子任务再拼接成新场景。对于难以用规则判断边界的任务annotate_subtasks.py提供了边看视频边标注的手动切分方案几分钟就能搞定一条演示。为什么需要手动标注子任务MimicGen 数据生成要求每条源演示都带有子任务终止信号subtask termination signals一组 0/1 二值数组信号从 0 跳变到 1 的第一帧就定义了该子任务的结束位置。以叠方块任务为例一条演示会被切成 4 段1. grasp_1 抓取方块A → 信号在 50 帧 0→1 2. place_1 A 放到 B 上 → 信号在 94 帧 0→1 3. grasp_2 抓取方块C → 信号在 148 帧 0→1 4. (无信号) C 放到 A 上 → 演示结束信号有两条获取途径规则推断通过 prepare_src_dataset.py 调用任务接口的get_subtask_term_signals方法靠任务内物体位姿等启发式规则自动计算人工标注用本文的主角 annotate_subtasks.py 回放演示视频用键盘手动标注每个子任务的结束帧。什么时候选第 2 条路当任务的子任务边界依赖视觉细节比如盖子盖上了没有螺母拧到位了没有难以写成可靠规则时人工标注是最直接可靠的选择。这时在环境接口中让get_subtask_term_signals返回空字典即可其余交给标注脚本。一键启动标注命令与参数速查脚本会打开一个播放窗口逐帧回放演示中的图像观测支持多视角横向拼接你只需按键完成标注。完整说明可参考官方文档 subtask_termination_signals.md。核心启动命令python mimicgen/scripts/annotate_subtasks.py --dataset /path/to/demo.hdf5 \ --signals grasp_1 insert_1 grasp_2 \ --render_image_names agentview_image robot0_eye_in_hand_image常用参数一览参数说明建议用法--dataset要修改的 hdf5 数据集路径就地写入必填先用备份文件试--signals子任务终止信号名称序列不含最后一个子任务名称要与 TaskSpec 配置一致--render_image_names回放时显示的相机观测省略则按环境类型自动选默认相机--n/--start标注前 n 条 / 从第几条开始新手先用--n 2试水--video_skip每 n 步渲染一帧默认 1嫌卡可调大--image_scale屏幕渲染放大倍数默认 5看不清可调 10⚠️ 两个前置条件数据集必须先经过prepare_src_dataset.py处理脚本会校验datagen_info字段标注窗口依赖pygame安装后不会自动带上需要pip install pygame。键盘操作指南5 个按键完成切分脚本启动后会自动打印按键说明核心就 5 个按键作用↑/↓加减速在 1/5/10/20/40 Hz 之间切换←/→前后快退/快进 10 帧空格按下并松开标注当前子任务结束f本条演示标注完成保存并进入下一条r重播本条演示清空本次标注操作节奏很简单正常速度看一遍演示心里记下每个动作的切换点重播到第一段子任务结束处如抓起物体的瞬间按空格继续播到下一段结束再按空格……直到所有信号都标完按f保存。脚本会自动校验标注数量是否等于--signals数量数量不对会强制重标不用担心漏标。每次标注后画面边框会切换红框提示方便确认进度标错了就按r重播整条重新标。标注结果存到哪里标注完成后脚本以追加写入方式把结果直接写进原数据集位置在data/demo_key/datagen_info/subtask_term_signals/信号名每个信号存为一个与轨迹等长的二值数组结束帧之前为 0之后为 1——与规则推断生成的信号结构完全一致后续数据生成流程无需任何改动。建议随时用两个工具验证结果get_source_info.py打印数据集的结构与信号形状确认subtask_term_signals已正确写入visualize_subtasks.py按信号偏移把每条演示的子任务段可视化成视频红框交替显示各段直观检查切分点是否合理。验证命令示例python mimicgen/scripts/get_source_info.py --dataset datasets/source/square.hdf5 python mimicgen/scripts/visualize_subtasks.py --dataset /path/to/demo.hdf5 \ --signals grasp_1 insert_1 grasp_2 --offsets 10 10 10 --render常见问题与技巧信号命名必须前后一致--signals里写的名字就是写进数据集的信号名必须与任务配置中 TaskSpec 的subtask_term_signal字段一一对应否则数据生成时找不到信号。最后一个子任务不要标它的边界默认是演示结束帧所以--signals数量 子任务总数 - 1。切分点偏早/偏晚不用重新标注。配置里的subtask_term_offset_range可以整体平移边界例如设 (5, 10) 让子任务在信号跳变 5~10 帧后才算结束适合抓起后继续抬升再结束这类场景。先试水再全量用--n 2只标前两条配合visualize_subtasks.py确认切分质量满意后再跑全量。想改某一条用--start N --n 1精确定位到指定演示重新标注脚本会覆盖该演示已有的信号。写在最后手动切分听起来费时但annotate_subtasks.py把这件事压缩成了看视频 按空格的流畅体验回放、快退、重播一应俱全标注即写盘。当规则推断搞不定边界时它就是你打通 MimicGen 数据生成流程的最后一块拼图——标好信号剩下的交给 generate_dataset.py 即可。【免费下载链接】mimicgen_environmentsThis code corresponds to simulation environments used as part of the MimicGen project.项目地址: https://gitcode.com/gh_mirrors/mi/mimicgen_environments创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考