習(xí)數(shù)據(jù)集實戰(zhàn))
從10條演示到1000條IsaacLab模仿學(xué)習(xí)數(shù)據(jù)集實戰(zhàn)【免費下載鏈接】IsaacLabUnified framework for robot learning with multi-physics/renderer support項目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab你手里只有 10 條 Franka 抓方塊的演示靠這點量策略很難訓(xùn)穩(wěn)。倉庫里的 Mimic 流程給出的路徑是錄、標(biāo)、裂變——IsaacLab 模仿學(xué)習(xí)數(shù)據(jù)集由此從十幾條擴到上千條。全流程鳥瞰整條流水線就三步全部在本地跑通先把遙操作動作落成演示文件再在時間軸上標(biāo)出每個子任務(wù)完成的幀最后腳本沿這些標(biāo)記把演示切成片段、換隨機初始狀態(tài)并行重放批量產(chǎn)出新演示。原始演示 → 子任務(wù)切片 → 隨機重放擴增 → HDF5 訓(xùn)練集 第一站如何錄制第一批演示錄制的入口是 record_demos.py。手動遙操作最基礎(chǔ)自己拿鍵盤控臂完成任務(wù)適合任務(wù)早期完全沒有現(xiàn)成策略的時候。# 錄制 10 條演示--teleop_device 指定輸入設(shè)備如 keyboard # --num_demos 是成功演示的目標(biāo)條數(shù)達(dá)標(biāo)即停--device 指定物理設(shè)備后端 ./isaaclab.sh -p scripts/tools/record_demos.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --teleop_device keyboard \ --num_demos 10 \ --dataset_file ./datasets/dataset.hdf5 \ --device cpu兩個參數(shù)值得先弄明白。--teleop_device決定你手里拿的是哪套輸入——鍵盤、空間鼠標(biāo)或者環(huán)境配置里注冊的任意設(shè)備名不傳時腳本自動退回環(huán)境里的 IsaacTeleop 配置再不行就用鍵盤。--num_demos是停止線成功演示錄滿這個數(shù)就自動收尾寫盤傳 0 則錄到你手動退出為止。自動方式適合已經(jīng)攢下幾條可用演示的中期。replay_demos.py 直接吃演示文件把它們在隨機初始狀態(tài)的并行環(huán)境里重放一遍數(shù)據(jù)產(chǎn)出速度明顯快于人工。# 已有演示的并行重放--demos_file 指向演示源文件 # --data_gen 打開數(shù)據(jù)生成模式而非純回放--num_envs 是并行環(huán)境數(shù) ./isaaclab.sh -p scripts/tools/replay_demos.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --demos_file ./datasets/dataset.hdf5 \ --data_gen \ --num_envs 10混合模式是兩者的合體consolidated_demo.py 讓 0 號環(huán)境負(fù)責(zé)遙操作錄制其余環(huán)境在后臺自動做重放生成人錄的同時機器也在產(chǎn)數(shù)據(jù)。# 混合采集--num_envs 5 表示 1 個環(huán)境遙操作 4 個環(huán)境自動生成 # --generated_output_file 單獨存放機器生成的部分--num_success_steps 為成功判定閾值 ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/consolidated_demo.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --teleop_device keyboard \ --num_demos 5 \ --num_envs 5 \ --output_file ./datasets/recorded.hdf5 \ --generated_output_file ./datasets/generated.hdf5?? 第二站如何標(biāo)注子任務(wù)邊界沒有子任務(wù)邊界擴增環(huán)節(jié)就不知道該把演示從哪一刀切開整個重放流程起不了步——所以錄完的文件要先過一遍標(biāo)注。annotate_demos.py 給了兩種模式。自動模式任務(wù)完成信號明確時環(huán)境自己判定子任務(wù)完成的幀你只需帶上--auto。# 自動標(biāo)注--auto 讓環(huán)境按內(nèi)置信號自動打點 # --annotate_subtask_start_signals 可額外標(biāo)記子任務(wù)的起點 ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --input_file ./datasets/dataset.hdf5 \ --output_file ./datasets/annotated_dataset.hdf5 \ --auto手動模式信號不明確時腳本把演示逐條跑給你看用鍵盤暫停、逐幀標(biāo)記子任務(wù)邊界質(zhì)量差的整條跳過。# 手動標(biāo)注不加 --auto逐條觀看演示并在關(guān)鍵幀手動打點 ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/annotate_demos.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --input_file ./datasets/dataset.hdf5 \ --output_file ./datasets/annotated_dataset.hdf5完成信號明確就走自動否則手動逐幀標(biāo)。信號從哪來可以看這張環(huán)境架構(gòu)Mimic 層在ManagerBasedRLMimicEnv里掛上了get_subtask_term_signals這類接口你的任務(wù)環(huán)境實現(xiàn)它之后標(biāo)注腳本才有東西可判。? 第三站10條裂變1000條的生成命令裂變靠的是重放。generate_dataset.py 把已標(biāo)注演示按邊界切成子任務(wù)片段然后在隨機初始狀態(tài)下執(zhí)行源演示里的動作序列——方塊、機器人的擺放每次都不同跑成功的整條保留成為一條新演示。動作骨架來自你的標(biāo)注多樣性來自初始狀態(tài)抽樣。# 生成 1000 條演示--generation_num_trials 是本次生成嘗試的目標(biāo)條數(shù) # 官方文檔推薦值就是 1000--num_envs 是并行環(huán)境數(shù)越大越快 ./isaaclab.sh -p scripts/imitation_learning/isaaclab_mimic/generate_dataset.py \ --task Isaac-Stack-Cube-Franka-IK-Rel-v0 \ --input_file ./datasets/annotated_dataset.hdf5 \ --output_file ./datasets/mimic_dataset_1k.hdf5 \ --generation_num_trials 1000 \ --num_envs 10--generation_num_trials就是這一輪我要多少條的旋鈕寫多少就嘗試產(chǎn)多少夠不夠用直接調(diào)這個數(shù)。數(shù)據(jù)長什么樣HDF5 數(shù)據(jù)集的關(guān)鍵字段產(chǎn)出的.hdf5按集分組存放每個 episode 的觀測、動作、初始狀態(tài)都有獨立條目子任務(wù)信號則嵌在datagen_info下面。關(guān)鍵字段如下字段類型用途actions浮點張量每步動作序列訓(xùn)練時直接喂給策略initial_state浮點張量episode 的機器人初始狀態(tài)隨機重放依賴它obs/datagen_info字典數(shù)據(jù)生成元信息含子任務(wù)結(jié)構(gòu)obs/datagen_info/subtask_term_signals布爾張量子任務(wù)完成信號擴增時的切片依據(jù)下游框架讀這個文件時actions和initial_state直接組成訓(xùn)練批次subtask_term_signals決定按子任務(wù)級切分時從哪里斷開。 提速與避坑跑之前確認(rèn)的四件事并行--num_envs調(diào)大最直接官方文檔提到 10 個環(huán)境在中端筆記本 CPU 上就能跑起來機器越強給得越多。成功閾值混合模式的--num_success_steps默認(rèn) 10要求成功狀態(tài)連續(xù)保持若干步才算數(shù)專治碰巧碰對一下的偽成功??梢暬{(diào)試非 headless 模式下可實時觀察重放過程生成腳本加--pause_subtask能逐個子任務(wù)暫停方便確認(rèn)切片位置對不對。格式兼容這個 HDF5 可以直接給 robomimic 等主流模仿學(xué)習(xí)框架用倉庫內(nèi) scripts/imitation_learning/robomimic/train.py 也把它當(dāng)作演示源輸入。跑完全程之后你拿到什么三步跑完你手上是一個能直接進訓(xùn)練的.hdf5動作、初始狀態(tài)、子任務(wù)信號都齊了交給訓(xùn)練腳本就能開始迭代策略??ㄔ谀囊徊桨聪卤砘夭閷?yīng)腳本采集scripts/tools/record_demos.py標(biāo)注scripts/imitation_learning/isaaclab_mimic/annotate_demos.py生成scripts/imitation_learning/isaaclab_mimic/generate_dataset.py混合模式scripts/imitation_learning/isaaclab_mimic/consolidated_demo.py【免費下載鏈接】IsaacLabUnified framework for robot learning with multi-physics/renderer support項目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考