当前位置: 首页 > news >正文

NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程

系列文章目录

    目录

    系列文章目录

    前言

    一、Lerobot So100/So101 微调教程

    1.1 数据集

    1.2 微调

    1.3 开环评估

    1.4 部署

    二、Unitree G1 微调

    2.1 下载数据集

    2.2 尝试加载数据集并可视化它

    2.3 微调

    2.4 开环评估

    2.5 部署


    前言

            本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。


    一、Lerobot So100/So101 微调教程

            GR00T-N1.5 适用于各种机器人形态的用户。基于 Huggingface 的低成本 So101 Lerobot 机械臂,用户可通过 new_embodiment 标签在自己的机器人上对 GR00T-N1.5 进行微调。

    So100 Strawberry and Grape PickingSo101 Table Cleanup Task

    {width=400}

    {width=400}

    DatasetObservationViz Link
    so101-table-cleanupDual camera views of table cleanup taskLink
    so100_strawberry_grapeSingle camera view of strawberry and grape pickingLink
    tictac-botSingle camera view of a tic-tac-toe boardLink

    1.1 数据集

            用户可以使用任何 lerobot 数据集进行微调。在本教程中,我们将首先使用一个示例数据集:so101-table-cleanup

    请注意,此实现未包含在我们的预训练数据集混合中。

    首先,下载数据集

    huggingface-cli download \--repo-type dataset youliangtan/so101-table-cleanup \--local-dir ./demo_data/so101-table-cleanup

            其次,复制模态文件

    modality.json 文件提供了关于状态和动作模态的额外信息,以使其与“GR00T”兼容。将 examples/so100_dualcam__modality.json 复制到数据集 <DATASET_PATH>/meta/modality.json。

            对于类似 so101-table-cleanup 数据集的双摄像头设置,请执行以下操作:

    cp examples/so100_dualcam__modality.json ./demo_data/so101-table-cleanup/meta/modality.json

            对于单摄像头设置,如 so100_strawberry_grape 数据集,请执行以下操作:

    cp examples/so100__modality.json ./demo_data/so100_strawberry_grape/meta/modality.json

    然后我们可以使用LeRobotSingleDataset类加载数据集。

    1.2 微调

            微调可以通过使用我们的微调脚本/gr00t_finetune.py来完成,因为它支持“new-embodiment”标签。

    python scripts/gr00t_finetune.py \--dataset-path /datasets/so101-table-cleanup/ \--num-gpus 1 \--batch-size 64 \--output-dir ~/so101-checkpoints  \--max-steps 10000 \--data-config so100_dualcam \--video-backend torchvision_av

    将批处理大小调整为与您的GPU内存匹配。

    1.3 开环评估

            训练完成后,您可以运行以下命令来可视化微调后的策略。

    python scripts/eval_policy.py --plot \--embodiment_tag new_embodiment \--model_path <YOUR_CHECKPOINT_PATH> \--data_config so100_dualcam \--dataset_path /datasets/so101-table-cleanup/ \--video_backend torchvision_av \--modality_keys single_arm gripper

            这是在训练策略7000步后的结果。

            

            经过更多步骤的训练后,模型性能将显著提升。

            太棒了!您已成功在新的实现上对GR00T-N1.5进行了微调。

    1.4 部署

            首先,确保数据可重放,请参考lerobot文档:https://huggingface.co/docs/lerobot/so101

            在机器人上评估策略:

    python eval_lerobot.py \--robot.type=so101_follower \--robot.port=/dev/ttyACM0 \--robot.id=lil_guy \--robot.cameras="{ wrist: {type: opencv, index_or_path: 9, width: 640, height: 480, fps: 30}, front: {type: opencv, index_or_path: 15, width: 640, height: 480, fps: 30}}" \--policy_host=10.112.209.136 \--lang_instruction="Grab pens and place into pen holder."

    有关部署的更多详细信息,请参阅笔记本:5_policy_deployment.md

    二、Unitree G1 微调

            本节展示如何在 Unitree G1 机器人上进行微调,作为新的实现方式。数据集可从以下链接获取:nvidia/PhysicalAI-Robotics-GR00T-Teleop-G1

    规格:

    • 观察:43 维向量化状态(全身和双手的关节位置)
    • 动作:43 维向量化动作(全身和双手的关节位置)
    • 视频:RGB 视频,分辨率为 640x480,帧率为 20fps
    • 语言指令:
      • “从桌子上拿起苹果,把它放进篮子里。”
      • “从桌子上拿起梨并放入篮子。”
      • “从桌子上拿起葡萄并放入篮子。”
      • “从桌子上拿起星果并放入篮子。”

    2.1 下载数据集

    huggingface-cli download \--repo-type dataset nvidia/PhysicalAI-Robotics-GR00T-Teleop-G1 \--local-dir ./datasets/

    2.2 尝试加载数据集并可视化它

            示例:加载苹果数据集的第一集

    python scripts/load_dataset.py --dataset-path datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/ --plot-state-action### Similar for other fruits
    # Switch to other fruits -- pear, grapes, starfruit

            ·您应看到以下图表:

    2.3 微调

            在此,我们可以提供用于微调的數據集列表。我们将使用包含苹果、梨、葡萄和星果采摘任务的混合数据集对模型进行微调。

    dataset_list=("datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-pear/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-grapes/""datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-starfruit/"
    )python scripts/gr00t_finetune.py \--dataset-path ${dataset_list[@]} \--num-gpus 1 --batch-size 95  --output-dir ~/checkpoints/full-g1-mix-fruits/  \--data-config unitree_g1 --max-steps 15000

    注意:由于该数据集采用H.264编码格式录制,因此在加载视频时需使用decord后端。

    2.4 开环评估

            示例:评估苹果数据集

    python scripts/eval_policy.py --plot \--embodiment_tag new_embodiment \--model_path <YOUR_CHECKPOINT_PATH> \--data_config unitree_g1 \--dataset_path datasets/PhysicalAI-Robotics-GR00T-Teleop-G1/g1-pick-apple/ \--video_backend decord \--modality_keys left_arm right_arm

            我们可以看出,策略对动作的预测似乎与真实情况非常接近,这表明微调是成功的。然而,对于策略的实际性能,我们需要在真实机器人上进行评估。

    2.5 部署

            G1 的部署脚本在此未提供。但该管道与 so100 微调管道类似。

    http://www.dtcms.com/a/250976.html

    相关文章:

  • 一个字节一定是8比特吗?如何查看二进制文件前几个字节?计算机存储单元bit?数据类型大小?
  • 函数指针与指针函数:本质区别与高级应用
  • YOLOv4 改进点详解
  • Spring Boot多数据源切换:三种实现方式详解与实战
  • 二.干货干货!!!SpringAI入门到实战-记忆存储和会话隔离
  • Adobe 发布 Android 版 Photoshop(目前免费测试)
  • 电阻篇---下拉电阻
  • 行列式的逆序数法定义 线性代数
  • 论文笔记 <交通灯> <多智能体>DERLight双重经验回放灯机制
  • Web server failed to start. Port XXX was already in use.
  • Nginx限速配置详解
  • CountDownLatch与CyclicBarrier的区别
  • AOP +ThreadLocal实现对接口监控
  • 共享内存实现进程通信
  • C++ STL常用二分查找算法
  • 第二十六周:序列化和反序列化
  • Jenkins 全面深入学习目录
  • MFE微前端:如何捕捉远程应用的remote.js加载失败的错误?
  • 001微信小程序入门
  • sql中like and not like的优化
  • Web后端基础:数据库
  • 【1】Redis 缓存穿透原理和解决方案
  • 操作系统核心名词解释--期末简答题快速复习
  • 【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!
  • Python 训练营打卡 Day 46-通道注意力
  • 电影院管理系统的设计与实现
  • VINS-Fusion 简介、安装、编译、数据集/相机实测
  • Linux系统编程 | IPC对象---共享内存
  • 算法的几大模块
  • HTML 从入门到起飞 · 系列合集:一站式学习不掉线