π0论文阅读

article/2025/8/10 2:00:05

https://www.physicalintelligence.company/download/pi0.pdf
模型输出的token,接diffusion模型,相比自OpenVLA那样的回归模型解码出action,输出更快,精度也会更高。在这里插入图片描述

一、动作专家模块与流匹配(Flow Matching)详解

1. 动作专家模块(Action Expert)
  • 定位:π₀模型的核心组件,负责将视觉-语言模型(VLM)的语义理解能力与机器人动作生成结合。
  • 输入:多模态观测 ( o_t = [I_t, \ell_t, q_t] ),包括图像 ( I_t )、语言指令 ( \ell_t )、机器人本体状态(关节角度 ( q_t ))。
  • 架构
    • VLM主干:基于预训练VLM(如PaliGemma),处理图像和语言输入,继承互联网级语义知识。
    • 专家模块:独立于VLM的参数,专门处理机器人动作相关输入输出,包括状态 ( q_t ) 和动作序列 ( A_t )。
  • 目标:将离散的语言/视觉语义映射为连续的机器人动作,支持高频(最高50Hz)精细操作(如衣物折叠、组装盒子)。
2. 流匹配(Flow Matching)技术
  • 核心思想:通过建模连续动作分布,替代传统自回归离散化,直接生成未来一段时间内的动作序列(动作块 ( A_t ),含未来50步动作)。
  • 数学建模
    • 条件分布:建模 ( p(A_t | o_t) ),其中 ( A_t = [a_t, a_{t+1}, …, a_{t+H-1}] )(( H=50 ) 为动作块长度)。
    • 流匹配损失:通过噪声扰动和去噪过程学习动作分布,损失函数为:
      [
      L^\tau(\theta) = \mathbb{E}\left| v_\theta(A_t^\tau, o_t) - u(A_t^\tau | A_t) \right|^2
      ]
      其中 ( A_t^\tau = \tau A_t + (1-\tau)\epsilon ) 为噪声动作((\tau) 为时间步,(\epsilon \sim \mathcal{N}(0, I)) 为高斯噪声),( v_\theta ) 是模型预测的去噪向量场,( u ) 是真实去噪目标(( u = \epsilon - A_t ))。
  • 训练与推理
    • 训练阶段:采样不同 (\tau) 生成噪声动作,训练模型预测去噪向量 ( v_\theta ),使噪声动作逐步逼近真实动作。
    • 推理阶段:从随机噪声 ( A_t^0 \sim \mathcal{N}(0, I) ) 开始,通过欧拉积分逐步积分去噪向量场,生成最终动作序列:
      [
      A_t^{\tau+\delta} = A_t^\tau + \delta \cdot v_\theta(A_t^\tau, o_t)
      ]
3. 关键优势
  • 连续动作生成:直接输出连续动作分布,避免自回归离散化的量化误差,适合高频精细控制(如衣物折叠时的关节角度微调)。
  • 多模态建模:支持不同机器人配置(单臂、双臂、移动机械臂),通过零填充统一动作空间维度,实现跨实体训练。
  • 鲁棒性:噪声扰动训练使模型对初始状态偏差和环境噪声更鲁棒,适合真实场景中的错误恢复(如物体位置偏移时的自适应调整)。

二、传统自回归离散化(Autoregressive Discretization)对比

1. 核心原理
  • 离散化处理:将连续动作(如关节角度、末端坐标)转换为离散 tokens(类似文本分词),例如将动作空间划分为1000个离散类别。
  • 自回归生成:按时间步逐个预测动作 token,依赖前一步动作作为输入,如:
    # 伪代码:自回归动作生成
    for t in 0 to T:obs = get_observation()action_token = model.predict(obs, prev_action_token)execute(action_token)prev_action_token = action_token
    
  • 典型应用:早期视觉-语言-动作模型(如OpenVLA),用于低频任务(如物体抓取,控制频率≤10Hz)。
2. 局限性
  • 量化误差:离散化丢失动作细节,难以处理精细操作(如衣物折叠时的布料捏合力度控制)。
  • 低频控制:自回归逐步预测效率低,无法支持高频动作生成(如50Hz时需每秒预测50步,自回归延迟显著)。
  • 跨模态不匹配:文本token与连续动作的语义映射存在鸿沟,需复杂映射层,增加训练难度。

三、流匹配代码示例(简化版)

1. 训练阶段:流匹配损失计算
import torch
import torch.nn as nnclass ActionExpert(nn.Module):def __init__(self, vlm_backbone, action_dim, hidden_dim):super().__init__()self.vlm = vlm_backbone  # 预训练VLM主干self.state_encoder = nn.Linear(robot_state_dim, hidden_dim)  # 本体状态编码器self.action_head = nn.Linear(hidden_dim, action_dim)  # 动作预测头def forward(self, images, language_tokens, robot_state, noisy_actions, tau):# 1. VLM处理图像和语言vlm_output = self.vlm(images, language_tokens)# 2. 编码本体状态state_emb = self.state_encoder(robot_state)# 3. 拼接VLM输出、状态嵌入和噪声动作concat_input = torch.cat([vlm_output, state_emb, noisy_actions], dim=-1)# 4. 预测去噪向量场denoising_vector = self.action_head(concat_input)return denoising_vector# 流匹配损失函数
def flow_matching_loss(model, images, language_tokens, robot_state, true_actions, tau_distribution):B, H, action_dim = true_actions.shape  # B=批量大小,H=动作块长度tau = tau_distribution.sample((B, 1, 1))  # 采样时间步noise = torch.randn_like(true_actions)noisy_actions = tau * true_actions + (1 - tau) * noise  # 生成噪声动作pred_denoising = model(images, language_tokens, robot_state, noisy_actions, tau)target_denoising = noise - true_actions  # 真实去噪目标loss = nn.MSELoss()(pred_denoising, target_denoising)return loss
2. 推理阶段:动作序列生成(欧拉积分)
def generate_actions(model, images, language_tokens, robot_state, num_steps=10):action_dim = 18  # 最大动作空间维度(如双臂+移动底座)# 初始化噪声动作current_action = torch.randn(1, 50, action_dim)  # 生成未来50步的噪声动作for step in range(num_steps):tau = (step + 1) / num_steps  # 线性递增时间步pred_denoising = model(images, language_tokens, robot_state, current_action, tau)current_action += 0.1 * pred_denoising  # 欧拉积分(δ=0.1)# 提取当前时间步的第一个动作(后续动作用于未来预测)return current_action[0, 0, :]  # 返回下一个时间步的动作

四、核心对比总结

特性流匹配(Flow Matching)传统自回归离散化
动作表示连续分布(直接生成关节角度等)离散token(需量化映射)
控制频率支持高频(50Hz)低频(≤10Hz)
精细操作能力优(无量化误差)差(依赖离散化粒度)
跨实体兼容性优(零填充统一动作空间)差(需为每个机器人定制)
训练数据效率高(利用噪声增强鲁棒性)低(需大量离散标签)

五、论文原文支撑

  • 流匹配公式:论文Section IV.B,公式 ( L^\tau(\theta) ) 和欧拉积分步骤。
  • 跨实体训练:Section V.C,7种机器人配置通过零填充统一动作维度(如18DoF)。
  • 高频控制:Section VI.A,衬衫折叠等任务验证50Hz控制下的高精度(成功率近100%)。

通过动作专家模块与流匹配的结合,π₀模型突破了传统自回归方法的局限,为复杂灵巧操作提供了高效的连续动作生成方案,是实现通用机器人控制的关键技术创新。


http://www.hkcw.cn/article/XoYFiqwOAP.shtml

相关文章

安全漏洞修复导致SpringBoot2.7与Springfox不兼容

项目基于 springboot2.5.2 实现的&#xff0c;用 springfox-swagger2 生成与前端对接的 API 文档&#xff1b;pom.xml 中依赖如下 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…

VisionPro —— 不规则胶路检测

简介 本文介绍了一种基于Cognex视觉工具的胶路检测方法&#xff0c;分为直线和弧形两部分检测。 直线部分采用卡尺工具检测胶路宽度&#xff0c;通过动态调整仿射矩形区域进行多位置测量&#xff1b;弧形部分使用blob工具沿圆周设置检测区域。 两种方法均通过脚本实现工具映…

QT中更新或添加组件时出现“”qt操作至少需要一个处于启用状态的有效资料档案库“解决方法”

在MaintenanceTool.exe中点击下一步 第一个&#xff1a; 第二个&#xff1a; 第三个&#xff1a; 以上任意一个放入资料库中

【PyQt5】从零开始的PyQt5 - QLabel篇

从零开始的PyQt5 - QLabel篇 引言一、简述二、例程2.1 显示到QWidget窗口上2.2 重新设置Label大小和对齐方式2.3 添加内容&#xff0c;设置边框2.4 显示富文本 三、参考 引言 QLabel主要用于显示文本或图像&#xff0c;不提供用户交互功能。本文主要简述PyQt5中的QLabel以及展…

Microsoft Rewards——微软免费发钱!

Microsoft Rewards 是微软推出的用于推广其搜索引擎 Bing 的一项服务&#xff0c;用户只需要使用 Bing 进行任何搜索&#xff0c;就可以获得对应积分&#xff0c;可以兑换礼品卡等奖励。 ps&#xff1a;Bing本来就是中国大陆最好的搜索引擎。 举例&#xff1a;假设将 Bing 最为…

基于python的天气可视化系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

设计模式——组合设计模式(结构型)

摘要 组合设计模式是一种结构型设计模式&#xff0c;用于将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使客户端对单个对象和组合对象具有一致的访问方式。它包含抽象组件、叶子节点和组合节点&#xff0c;具有统一处理、支持递归结构和易扩展等优点&#x…

Launcher3体系化之路

&#x1f44b; 欢迎来到Launcher 3 背景 车企对于桌面的排版布局好像没有手机那般复杂&#xff0c;但也有一定的需求。部分场景下&#xff0c;要考虑的上下文比手机要多一些&#xff0c;比如有如下的一些场景&#xff1a; 手车互联。HiCar&#xff0c;CarPlay&#xff0c;An…

pikachu通关教程- over permission

如果使用A用户的权限去操作B用户的数据&#xff0c;A的权限小于B的权限&#xff0c;如果能够成功操作&#xff0c;则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 水平越权 当我们以Lucy账号登录&#xff0c;查询个人信息时&#xff0c;会有…

刷leetcode hot100--矩阵6/1

1.螺旋矩阵【很久】6/1【感觉就是思路的搬运工&#xff0c;没完全理解】 54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 原来想 但是如果是奇数矩阵&#xff0c;遍历不到中间 解决思路&#xff1a; 用left,right,top,down标记/限定每次遍历的元素&#xff0c;每次从…

Redis最佳实践——秒杀系统设计详解

基于Redis的高并发秒杀系统设计&#xff08;十万级QPS&#xff09; 一、秒杀系统核心挑战 瞬时流量洪峰&#xff1a;100万 QPS请求冲击库存超卖风险&#xff1a;精准扣减防止超卖系统高可用性&#xff1a;99.99%服务可用性要求数据强一致性&#xff1a;库存/订单/支付状态同步…

搭建基于VsCode的ESP32的开发环境教程

一、VsCode搜索ESP-IDF插件 根据插件处搜索找到ESP-IDF并安装 安装完成 二、配置安装ESP-IDF 配置IDF 按照如下配置&#xff0c;点击安装 安装完成 三、使用案例程序 创建一个闪光灯的例子程序&#xff0c;演示程序编译下载。 选择blink例子&#xff0c;闪烁LED的程序 选…

实现RabbitMQ多节点集群搭建

目录 引言 一、环境准备 二、利用虚拟机搭建 ​ 三、镜像集群配置 四、HAProxy实现负载均衡(主用虚拟机操作) 五、测试RabbitMQ集群搭建情况 引言 在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;扮演着至关重要的角色,而 RabbitMQ 作为…

B站视频下载器 v1.0.4|免登录下载1080P视频

核心亮点 ✅ 无需登录下载1080P高清视频✅ 支持Windows/macOS双平台✅ 纯净无广告完全免费✅ 可单独下载视频/音频/弹幕/字幕/封面 三步极简操作 粘贴B站视频链接选择保存位置点击「开始下载」 特色功能 独立下载选项&#xff08;视频/音频/弹幕/字幕/封面&#xff09;登录…

LLM-MPC混合架构:车载大语言模型用来增强自动驾驶系统

1. 概述 2025年&#xff0c;苏黎世研究团队在RSS2025会议上正式提出「LLM-MPC混合架构」&#xff0c;标志着大语言模型&#xff08;LLM&#xff09;在自动驾驶系统中的实用化迈出关键一步。该方案旨在解决传统深度学习模型在极端交通场景中泛化能力不足的问题。通过在车载终端…

leetcode-hot-100 (矩阵)

1、矩阵置零 题目链接&#xff1a;矩阵置零 题目描述&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解答 方法一&#xff1a;使用一个二维数组 这是我看到这道题目的第一个想法&am…

黑马Java面试笔记之Redis篇(分布式锁)

面试题 我看你做的项目中&#xff0c;都用到了redis&#xff0c;你在最近的项目中那些场景使用了redis呢 如果回答了分布式锁&#xff0c;那么就会有以下这个问题 redis分布式锁&#xff0c;是如何实现的&#xff1f; 需要结合项目中的业务进行回答&#xff0c;通常情况下&…

建筑兔零基础python自学记录102|Beautiful Soup库(1)-15

1、安装Beautiful Soup 2、使用测试网页获取源代码 This is a python demo page a)法1&#xff1a;直接网页右键获取 b)法2&#xff1a;request库 import requests rrequests.get(https://python123.io/ws/demo.html) print(r.text) 3、使用Beautiful Soup库 同样解析出了源…

【Java学习笔记】枚举

枚举(enum) 一、基本介绍 引出关键字&#xff1a;enum&#xff0c;全称为enumerate 枚举是一组常量集合 理解&#xff1a;枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象 二、使用场景 当一个类的属性有限定条件时&#xff08;例如一个星期只能有七天&…

FFmpeg学习笔记

1. 播放器的架构 2. 播放器的渲染流程 3. ffmpeg下载与安装 3.0 查看PC是否已经安装了ffmpeg ffmpeg 3.1 下载 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解压 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …