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