深圳Yolo 视觉
深圳
立即加入
词汇表

动作分块

了解动作分块如何提升机器人的精准度和模仿学习能力。探索如何利用Ultralytics 减少 AI 代理中的累积误差。

动作分块是一种先进的 深度学习技术,广泛应用于 机器人学和模仿学习领域,该技术使模型能够预测未来动作的序列(或“动作块”), 而非在每个时间步仅预测单一动作。 通过预测多步轨迹,动作分块使 AI 代理能够以 更流畅、更可靠的方式执行复杂且具有长时效性的任务。随着 “基于 Transformer 的动作分块”(ACT)的推出,这种方法获得了显著关注,该模型架构 将时间预测与高维 计算机视觉输入相结合。

减轻累积错误

在传统的行为克隆中,模型会根据当前状态预测下一个立即采取的步骤。然而, 在实时推理过程中,微小的预测 偏差会使系统偏离至未观测到的状态。这些错误会迅速累积,最终导致任务失败——这一 现象被称为“复合错误”。

动作分块技术直接解决了这一局限性。通过同时预测多个动作(例如,50个关节 运动覆盖1秒的动作),有效控制时限得以缩短。 系统基于单一可靠的视觉观测,制定出连贯的 短期计划,从而大幅降低了反应性错误的发生频率。当 Ultralytics 视觉骨干网络 以实现空间感知和 边界框定位时,所得预测 在面对过程噪声时表现出极高的稳定性。

实际应用

动作分块技术为物理自动化开辟了新的可能性,尤其是在部署于 由Intel 等框架优化的 边缘 AI硬件时:

  • 精细化机器人操作:在工业自动化领域,机器人利用分块预测来 执行需要高精度的、涉及大量接触的任务,例如穿线、电池插槽安装,或处理 由 包裹分割数据集追踪的物品。生成 连贯的动作序列,可以避免单步 模仿学习中常见的动作生硬、不连贯的问题。
  • 自主导航:在自动驾驶和无人机飞行中,预测一组控制 指令(如转向和加速)有助于实现更平滑的轨迹规划,这一概念在近期 的IEEE机器人学论文中得到了深入探讨。结合连续 目标跟踪 深度估计,车辆能够安全地在 复杂的动态环境中导航。

区分相关概念

为了更好地理解该技术在更广泛的人工智能生态系统中的定位, 有必要将其与类似术语区分开来:

  • 动作分块与动作识别:动作分块会生成一系列 供机器执行的未来指令, 而动作识别则是通过分析 来识别视频流中正在发生的活动。
  • 动作分块与序列到序列模型:序列到序列架构将输入 序列映射到输出序列,并被广泛应用于 机器翻译领域。动作分块技术大量 采用了这些架构——特别是 Transformer——但将输出严格限制在 低级运动控制和运动学方面,而非文本。
  • 动作分块与强化学习: 强化学习依赖于奖励 信号,通过试错来训练智能体。相反,动作分块主要应用于有监督的 行为克隆,在此过程中,模型直接从人类演示中学习,而不进行显式的奖励最大化。

实施行动分块法

实际上,视觉系统负责评估环境,而序列解码器则生成分段轨迹。 以下 Python 代码片段演示了一个概念性的 PyTorch 模块(作为 TensorFlow的替代方案),该模块接受环境状态(例如源自 物体检测过程的结果),并输出未来 动作序列。

import torch
import torch.nn as nn


class ActionChunker(nn.Module):
    def __init__(self, state_dim, action_dim, chunk_size):
        super().__init__()
        # Maps the current state to a sequence of future actions
        self.decoder = nn.Linear(state_dim, chunk_size * action_dim)
        self.chunk_size = chunk_size
        self.action_dim = action_dim

    def forward(self, state):
        # Predict the entire action chunk at once
        chunk = self.decoder(state)
        return chunk.view(-1, self.chunk_size, self.action_dim)


# Example: 128-dim state, 6 degrees of freedom, 50-step chunk
model = ActionChunker(state_dim=128, action_dim=6, chunk_size=50)

# Generate a 50-step action trajectory from a single observation
current_state = torch.randn(1, 128)
action_trajectory = model(current_state)

print(f"Action Chunk Shape: {action_trajectory.shape}")

管理用于训练这些机器人策略的海量数据集需要消耗大量资源。行业领军企业如 OpenAIAnthropic 虽在大型 模型领域开辟了新路,但普通开发者仍依赖易于使用的工具。 Ultralytics 简化了视觉输入的数据生命周期, 提供自动数据标注和无缝 模型训练功能。随着模型向统一的 视觉-语言-动作(VLA)架构演进,将高效的视觉系统与强大的动作分块技术相结合, 将继续定义下一代智能自动化。

让我们一起共建AI的未来!

开启您的机器学习未来之旅