Diffusion Policies
探索 Diffusion Policies 如何塑造现代机器人技术。了解它们如何通过去噪建模动作,并与 Ultralytics YOLO26 集成以实现智能感知。
Diffusion Policies 代表了机器人学和机器学习领域的一个范式转变,其中人工智能代理的视觉运动策略被建模为一个条件去噪扩散过程。传统上,行为克隆(一种模仿学习形式)依赖于直接回归,根据感官输入预测单个确定性动作。虽然直接回归适用于简单任务,但当存在多个有效动作时,它往往会失效,从而导致不稳定或不安全的平均运动。Diffusion Policies 通过将动作生成构建为一个序列细化任务来解决这个问题。从纯随机噪声开始,算法会根据图像或空间状态数据等感官观察结果对信号进行迭代去噪,从而生成高度准确、稳健且多模态的动作序列。
扩散策略的工作原理#
核心机制依赖于生成建模中的数学原理,改编自最初为原始视觉运动扩散策略论文中的高保真图像合成而开发的技术。在称为前向过程的训练阶段,少量的噪声被逐渐添加到最优专家动作轨迹中。然后,训练一个神经网络来根据给定的观察上下文预测并逆转此噪声。
在推理过程中,当机器人与环境交互时,它会观察周围环境,初始化一个随机动作序列,并使用随机朗之万动力学对其进行去噪。这种迭代优化会产生精细、平滑的电机指令,能够处理复杂的高维动作空间。
实际应用#
通过准确表示复杂分布而不会发生模式崩溃,Diffusion Policies 正在积极重塑现代物理人工智能。
- **机器人操作:**在工业环境中,机械臂利用这些策略来执行灵巧、触觉丰富的任务,例如抓取形状不规则的物体、组装复杂的电子产品或执行流体倾倒动作。
- **自主导航:**自动驾驶系统和无人机将深度估计与 Diffusion Policies 结合起来,以便在动态环境中规划安全、连续的轨迹,从而优雅地适应会使标准强化学习模型感到困惑的突发障碍。
区分关键术语#
为了阐明扩散策略的具体功能,将其与密切相关的生成式架构进行区分很有帮助:
- **Diffusion Policies 与 Diffusion Models:**Diffusion Models 广义上是指用于创建静态数据(如文本到图像合成)的基础生成架构。Diffusion Policies 将此特定机制应用于预测活跃机器人的连续时间序列电机指令。
- **Diffusion Policies 与 Diffusion Forcing:**Diffusion Forcing 是一个通用的序列生成框架,它使用每个标记不同的噪声级别来训练因果 Transformer。虽然它们相关,但 Diffusion Forcing 严重侧重于自回归预测,而 Diffusion Policies 严格表示视觉运动控制的模仿学习策略。
策略学习的最新进展#
来自顶级机构的研究,包括OpenAI 研究计划和Google DeepMind 机器人技术,继续突破这些算法所能实现的目标的界限。值得注意的是,于 2024 年在 arXiv 上发表的 3D Diffusion Policy (DP3) 引入了一项突破,它将策略条件设定在紧凑的3D 点云表示上,而不是简单的 2D 图像上。这显著提高了机器人的空间意识,同时显着减少所需的专家演示次数。诸如D3P: Dynamic Denoising Diffusion Policy等进一步的创新已经开始解决标准扩散推理速度慢的问题,通过动态跳过常规动作的去噪步骤,释放了实时响应能力。
基于计算机视觉的实际实现#
在 Diffusion Policies 能够生成动作之前,它需要对其环境有清晰、结构化的理解。工程师经常将强大的目标检测模型与策略算法结合起来,形成一个完整的计算机视觉管道。例如,诸如Ultralytics YOLO26之类的快速感知模型可以实时隔离目标对象,将空间坐标馈送到基于PyTorch 库的 Diffusion Policy 中。
import torch
from ultralytics import YOLO
# Load the Ultralytics YOLO26 Nano model for high-speed robotic perception
model = YOLO("yolo26n.pt")
# Predict bounding boxes on the robot's active camera feed
results = model.predict("robot_camera_feed.jpg")
# Condition the policy by extracting the bounding box center coordinate
if len(results[0].boxes) > 0:
box = results[0].boxes[0].xyxy.squeeze()
center_x = (box[0] + box[2]) / 2.0
center_y = (box[1] + box[3]) / 2.0
# Create a spatial observation tensor to condition the PyTorch Diffusion Policy.
# This directly guides the denoising process to generate accurate motor actions.
observation_state = torch.tensor([center_x, center_y])
print(f"Conditioning action trajectory on object center: {observation_state}")为了简化此工作流,开发者可以使用Ultralytics Platform为定制数据集利用快速的自动标注工具。这种端到端支持加速了从原始摄像机画面到可操作机器人智能的模型部署。






