跳转至

ACT (Action Chunking with Transformers)

ACT 是一个轻量级且高效的模仿学习策略,特别适合精细操作任务。由于其快速的训练时间、低计算要求和强大的性能,它是我们推荐初学者使用 LeRobot 时的首选模型

观看 LeRobot 团队的教程了解 ACT 的工作原理:LeRobot ACT 教程

模型概述

Action Chunking with Transformers (ACT) 在 Zhao 等人的论文 Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware 中提出。该策略旨在使用经济实惠的硬件和最少的演示数据实现精确的、接触丰富的操作任务。

为什么 ACT 非常适合初学者

ACT 作为一个出色的起点有几个原因:

  • 快速训练:在单个 GPU 上几小时内完成训练
  • 轻量级:仅约 80M 参数,使其高效且易于使用
  • 数据高效:通常仅需 50 个演示即可达到高成功率

架构

ACT 使用基于 Transformer 的架构,包含三个主要组件:

  1. 视觉主干网络:ResNet-18 处理来自多个摄像头视角的图像
  2. Transformer 编码器:综合来自摄像头特征、关节位置和学习到的潜在变量的信息
  3. Transformer 解码器:使用交叉注意力生成连贯的动作序列

策略的输入包括:

  • 多个 RGB 图像(例如来自腕部摄像头、前置/顶部摄像头)
  • 当前机器人关节位置
  • 潜在风格变量 z(在训练期间学习,在推理期间设置为零)

输出 k 个未来动作序列的块。

安装要求

  1. 按照我们的安装指南安装 LeRobot。
  2. ACT 包含在 LeRobot 基础安装中,因此不需要额外的依赖项!

训练 ACT

ACT 与标准 LeRobot 训练流程无缝配合。以下是在您的数据集上训练 ACT 的完整示例:

lerobot-train \
  --dataset.repo_id=${HF_USER}/your_dataset \
  --policy.type=act \
  --output_dir=outputs/train/act_your_dataset \
  --job_name=act_your_dataset \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_policy

训练技巧

  1. 从默认值开始:ACT 的默认超参数对大多数任务都很有效
  2. 训练时长:在单个 GPU 上进行 100k 训练步骤预计需要几个小时
  3. 批次大小:从批次大小 8 开始,根据您的 GPU 内存进行调整

使用 Google Colab 训练

如果您的本地计算机没有强大的 GPU,您可以通过遵循 ACT 训练笔记本使用 Google Colab 训练您的模型。

评估 ACT

训练完成后,您可以使用 lerobot-record 命令和您训练的策略来评估您的 ACT 策略。这将运行推理并记录评估回合:

lerobot-record \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_robot \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --display_data=true \
  --dataset.repo_id=${HF_USER}/eval_act_your_dataset \
  --dataset.num_episodes=10 \
  --dataset.single_task="您的任务描述" \
  --dataset.streaming_encoding=true \
  --dataset.encoder_threads=2 \
  # --dataset.camera_encoder.vcodec=auto \
  --policy.path=${HF_USER}/act_policy