YAOTU INSIGHTS

LeRobot 训练可视化:日志、渲染与评估视频

LeRobot 训练可视化:日志、渲染与评估视频
LeRobot 训练可视化日志、渲染与评估视频【免费下载链接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot训练跑了一整夜早上打开曲线发现 loss 在中段就平了而你能做的只有盯着终端日志猜原因。LeRobot 训练可视化的核心是把 loss、学习率、传感器流、评估行为这些黑箱环节变成可查询的图表、实时窗口和可回放的视频让有 Python 基础但刚接触机器人学习方向的开发者调试时不再靠猜。这里覆盖三个工具WandB 指标日志、Rerun 实时渲染与评估视频录制。三个模块按数据类型分工WandB 管离散的数字Rerun 管连续的帧视频管需要你回看的行为。模块用途触发时机入口文件WandB 指标日志记录标量指标、checkpoint 与评估视频训练循环按log_freq/ 评估步common/wandb_utils.pyRerun 实时渲染把观测/动作帧流式推给本地查看器控制循环的每一帧utils/rerun_visualization.py评估视频录制把环境 rollout 渲染成 mp4每env_eval_freq训练步scripts/lerobot_eval.py WandB 指标日志wandb 日志配置与指标归档说白了WandB 是 LeRobot 训练可视化里数字的入口它在训练循环里按log_freq写标量指标在保存 checkpoint 和评估节点归档模型权重与视频。启用它只需要在训练配置里填一段wandb: enable: true project: lerobot-training # 不填这个日志器根本不会创建 entity: your-team mode: online初始化条件是一个合取判断缺一个就会被静默跳过见 scripts/lerobot_train.pyif cfg.wandb.enable and cfg.wandb.project and is_main_process(): wandb_logger WandBLogger(cfg) # 终端会打印可点击的 run 链接 else: wandb_logger None训练循环里train_tracker汇总的 loss 与学习率以train/前缀写入评估分支则走eval/通道wandb_logger.log_dict(train_tracker.to_dict(), step) # train/loss、train/lr wandb_logger.log_dict({eval_loss: eval_loss}, step, modeeval)预期输出仪表盘上出现train/loss、train/lr、eval_loss的交互式曲线每次运行自动带上 policy 类型、seed、数据集标签超过 64 字符会被截断checkpoint 以 model artifact 上传终端用黄色高亮打印 run 地址点开即可对比多次实验。易踩的坑log_dict只接受 int/float/str非标量类型只会打一条 warning 后被丢弃纯本地调试时把mode设为offline否则数据会持续堆积在output_dir/wandb下。标量指标进了仪表盘之后Rerun 接手的就是连续的帧——那些没法压成一个数的传感器流。 Rerun 实时渲染rerun 传感器数据可视化Rerun 不挂训练循环它挂在录制与遥操作的控制循环上每一帧的观测和动作都推给本地查看器查看器由 SDK 直接拉起不需要你手动打开任何界面。入口是统一的分发函数由display_mode决定后端# 录制脚本中初始化一次会话之后每帧打一次日志 init_visualization(cfg.display_mode, session_namerecording) log_visualization_data(cfg.display_mode, observationobs, actionaction)内部按数据形状自动分流标量变成时间序列点一维数组整批合并进同一条曲线图像则先做布局转换再上屏if arr.ndim 3 and arr.shape[0] in (1, 3, 4): arr np.transpose(arr, (1, 2, 0)) # CHW - HWC rr.log(key, rr.Image(arr))单通道深度图会被直接套上 Viridis 色图以DepthImage渲染不需要你预处理。预期输出收到第一帧数据时查看器自动搭好网格布局——每个相机一路画面、观测与动作各一条时间序列。遥操作时你能同步看到相机画面与每个关节的动作曲线在推进易踩的坑要先装可视化依赖pip install lerobot[viz]display_mode也只接受rerun与foxglove两个值拼错会直接抛ValueError。Rerun 给你看的是当下的流训练阶段你要的是回看行为这就是评估视频补位的地方。 评估视频录制训练评估视频回放训练挂了仿真环境cfg.env之后每env_eval_freq步会把策略放进环境 rollout 一轮逐帧渲染成按 episode 划分的 mp4首个视频同时上传 WandB让指标曲线和行为在同一页对照eval_info eval_policy_all( envseval_env, policypolicy, n_episodescfg.eval.n_episodes, videos_dircfg.output_dir / eval / fvideos_step_{step_id}, ) wandb_logger.log_video( eval_info[overall][video_paths][0], step, modeeval, )预期输出本地output_dir/eval/videos_step_{step}/下出现eval_episode_*.mp4完整记录若干个 episode 从初始状态到结束的全过程WandB 的 run 页在对应 step 处出现eval/video字段点击即可内嵌预览不必下载。易踩的坑eval_stepsheld-out 集上算 eval loss和env_eval_freq环境 rollout 并出视频是两个独立开关只开前者不会生成任何视频。实战组合把三个工具串起来用LeRobot 训练可视化这三个工具串起来用比单看任何一个都省事。三个高频场景对比两组超参的训练曲线。同一数据集跑两次只改学习率。两次运行的 WandB tag 会自动带上 policy/seed/dataset天然可区分不用手动打标叠加两条train/loss与eval_loss曲线重点看 warmup 结束后的分叉位置曲线接近时再对比两次 run 评估视频的成功率差异。预期产出不改一行代码就能判断哪组超参收敛更快、后期是否过拟合。交叉定位异常帧。WandB 曲线上看到 step N 附近 reward 突变。先取outputs/eval/videos_step_N下的视频回放看行为层面发生了什么视频正常的话实际上问题在数据侧——用遥操作重跑同一任务开 Rerun盯 observation 时间序列里是否有断流。预期产出能分清异常来自策略输出抖动还是某个传感器瞬时丢帧。回放一次失败评估的完整轨迹。按 episode 取失败样本。eval_info的video_paths与successes一一对应找出successFalse的那一路逐帧看对应的eval_episode_*.mp4对照该 episode 的 reward 曲线定位失败时刻。预期产出抓取打滑、初始位姿不对这类失败原因直接看得出来。延伸路径想看流式数据源下的训练链路examples/training/train_with_streaming.py想把 Rerun 换成浏览器端 Foxglove 后端src/lerobot/utils/foxglove_visualization.py不连实时流、直接离线浏览数据集帧src/lerobot/scripts/lerobot_dataset_viz.py。WandB 管数字、Rerun 管帧、视频管行为这条 LeRobot 训练可视化的链路意味着训练再出问题你总能找到一个能直接看见它的窗口。【免费下载链接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考