做机器人学习的同行应该都有这个感觉:手里的真机数据,永远不够用。每次看到CV群体动辄几亿、几十亿的数据量,再回头看看自己辛辛苦苦录了几千条操作数据,那种落差是真的扎心。所以当PointZero这篇挂在NeurIPS 2026的工作出来的时候,我第一时间就把原文翻出来啃了一遍。标题里那句“不用一条机器人数据”特别扎眼——这不是做预训练+微调的老路子吗?怎么就能在6/7个下游操作任务上刷出高分?
先把结论放在前面:这篇由某顶尖研究型大学和某头部AI芯片与计算厂商联合开源的工作,核心卖点不是“模型更大”,而是换了一条预训练的赛道——从传统的2D视觉表征学习或者静态图像对比学习,直接改成在3D动态空间里做状态变化预测。也就是说,它在预训练阶段看的是“一个物体在真实物理世界里怎么动起来”,而不是单纯看“这个物体长什么样”。这一点听起来改动不大,但实际操作过下游策略训练的人,应该能马上意识到这意味着什么。
这篇文章我不会去复述论文里的公式,也不打算把整套架构搬到博客里。我想从一个从业者的角度,把PointZero为什么能绕开机器人数据、它的3D动态预训练到底在学什么、以及如果你想在自己的场景里复现思路,有哪些坑是论文摘要里绝对不会告诉你的,一次说清楚。
1. 技术背景:机器人操作学习的“数据鸿沟”到底有多深
1.1 为什么机器人数据这么珍贵,问题卡在哪一环
接触过真机策略训练的朋友都知道,机器人操作数据的采集成本和视觉数据完全不是一个量级。拿一张图片,爬虫一天能抓几百万张;拿一条机器人操作演示,你需要一台真机、一个机械臂、一堆传感器,再加上操作员一帧一帧地遥控录制。一条干净可用的演示数据,算上清洗和标注,成本往往是视觉数据的几十上百倍。
更麻烦的是多模态同步问题。机器人操作数据里,视觉观测、关节角度、末端力反馈、夹爪开合状态,每一路信息都需要严格的时间对齐,稍微差几十毫秒,策略就可能学出一个“视力正常但手脚不协调”的病。这也是为什么很多团队宁可去做仿真,也不愿意大规模采真机数据,可仿真和真机之间又存在sim-to-real的差距,弄不好就是白训一场。这个恶性循环,本质上是卡在“机器人数据不划算”这一个核心矛盾上。
1.2 已有的预训练方案,为什么还是绕不开机器人数据
很多人可能会反驳:不是已经有大规模视觉预训练了吗?把CLIP特征、视频预训练特征拿来给机器人用,也算是不用机器人数据吧。
确实有,但效果一直有天花板。原因在于,这一类预训练学到的表征,本质上是“静态语义”或者“空间对应关系”。CLIP知道杯子是什么、知道杯子和桌子之间的语义关系,但它不知道杯子被碰一下会怎么滑、倾斜多大角度会倒、液体在里面会怎么晃。这些恰恰是操作策略最需要的信息。用这种静态表征去做抓取任务,前几帧可能看得准,一旦涉及到推、拉、翻、倒、拧这些动态动作,模型就会暴露出对物理规律理解不够的毛病。
所以过去两年有一个共识逐渐形成:机器人操作需要的是跨实体的物理动态理解。问题是这个共识挺好,落地却很难,因为大家默认“动态理解”必须靠机器人数据来学——毕竟只有机器人操作才能生成带动作标签的动态轨迹。PointZero聪明的地方在于,它把“动态”的定义从“机器人动作”里剥离了出来,只看“场景自身的变化”。
1.3 从2D静态预训练到3D动态预训练的范式转移
这里要理解PointZero的定位,关键在于区分三个层次。
第一个层次是2D静态预训练,比如CLIP、DINOv2,学到的是“这帧图像里有什么东西”。第二个层次是2D动态预训练,比如VideoMAE、video-text对比学习,学到的是“这个视频里像素是怎么变化的”,但它是2D平面上的变化,拿不到真实的几何尺度,也就无法直接把变化转化为机械臂末端该走的轨迹。第三个层次就是PointZero想做的3D动态预训练:不仅知道场景发生了变化,还知道变化发生在三维空间的具体位置、方向和幅度上。
为什么这个转移这么关键?因为操作本质上就是3D空间的几何变换。机械臂在物理世界里推一把箱子,执行的是3DoF或6DoF的位姿改变;这个改变在2D视频里对应的可能是一个不规则的像素张缩,但在3D空间里就是一个刚体变换加接触变形的问题。你在3D空间里学动态,学到的规律才可以直接被下游策略“拿来即用”。
2. PointZero的方法论:3D动态预训练到底在训练什么
2.1 用“世界模型”的眼光重新理解预训练目标
PointZero的核心思路,如果非要用一句话概括,就是:把预训练变成一个“3D世界动态预测”的自监督任务。说白了,给定当前三维场景的状态,再给定一个查询点或者遮挡部分,模型要学会预测未来短时间内的3D场景拓扑和几何变化。
我打个比方。你下象棋的时候,真正厉害的棋手不是背棋谱,而是脑子里有“推演能力”:如果我这步车走到这里,对方的马会怎么应对,局面会变成什么样。机器人操作也一样,策略真正需要的是“如果我推这个杯子一下,杯子和里面的水下一步会变成什么样”的推演能力。传统预训练只让模型记住“这里是杯子”,PointZero让模型学会“杯子的状态螺旋”。这两者的区别,就是死记硬背知识点和学会做物理因果推理的区别。
这个思路我愿称之为“世界模型式的预训练”。它不依赖任何机器人的动作标签,因为未来3D状态可以通过视频中下一帧的物体运动状态直接自监督构造。人类视频中有人推动杯子,杯子会内部运动,模型需要预测这种运动,这就够了。它学的不是“人类怎么操作”,而是“物体在物理规则下如何响应外界干涉”。
2.2 从海量视频里提取3D动态监督信号
光有目标还不够,还有一个致命问题:自监督的监督信号从哪里来。这里PointZero使用的思路,是从视频动态构建3D状态轨迹,然后用预测未来状态的误差作为loss。
具体来说,对一段操作视频,每一帧都通过单目或多视角重建得到3D表征(通常可能是点云、占据场或者3D高斯表示),这样每一帧都有一个对应的3D状态。于是原来的2D视频就变成了一条“3D状态序列”。模型要做的事就是:给我前T帧的3D状态,预测第T+1帧甚至更远的3D状态;然后拿预测出来的状态和真实重建出来的下一帧状态做对比,计算误差并反向传播。
这个流程妙就妙在,它完全不需要手动标注。视频里的物理变化本身就是标注,模型只要能准确预测物体在下一步的几何位置、形变程度和拓扑关系,就说明它真的看懂了物理动态规律。这也是为什么它敢说“不用一条机器人数据”——训练数据的源头变成了海量的人类日常互动视频,和机器人的动作数据没有半毛钱关系。
这里有一个容易忽略的技术细节:预测目标到底是离散的还是连续的。如果直接回归未来的点云坐标,计算量会非常大,而且点云无序性很难约束。据我判断,合理的设计应该是先把3D状态压缩到某个隐空间,在隐空间里做动态预测,再用解码器把隐状态还原成3D结构。这种做法既能控制预测的复杂度,又能保证输出有界、物理上合理。这个思路在视觉自监督里已经比较成熟了,PointZero应该是做了类似的适配。
2.3 为什么预训练的动态知识能迁移到机器人操作上
看到这里可能有人会问:人类视频里推动物体的是人手,机器人操作里推动物体的是夹爪,物体状态的变化规律一样吗?
答案是:绝大多数场景下,一样。这里面有个物理常识作为支撑——物体在刚体动力学层面的响应,只取决于外部施力产生的力和力矩,而不取决于施力主体的结构。人手推杯子和机械臂推杯子,杯子会以几乎相同的方式滑动和倾斜,因为杯子的质量分布、摩擦系数和接触几何没有变化。这就是跨实体迁移的可行性根基。
PointZero相当于把这种“与施力主体无关”的物理动态规律逼了出来。模型在人手的视频里学会了“杯子受推力会加速滑动,遇到桌沿会减速甚至翻倒”这样一堆物理直觉,这些直觉和机械臂执行时需要的物理理解是完全一致的。下游机器人策略需要的,也无非是给这些物理理解套上一个更精确的执行控制政策罢了。
当然,完全一致是不可能的。人手这种柔性接触和夹爪刚性接触、指尖的压力分布始终有细微差别。所以PointZero也不是完全零接触就能在所有任务上做到完美,它很可能统一的表述是“大多数任务在零样本或极少样本条件下就能达到甚至超越从头训练的效果”。核心卖点是它大幅降低了下游机器人数据的依赖门槛,而不是说“任何任务都一把梭就能成功”。这一点在后面的实操部分还会展开。
3. 实操落地:复现PointZero思路的关键环节与经验
3.1 预训练数据源怎么选:不是所有视频都适合
如果要在自己的场景里复现这套3D动态预训练思路,最难的第一步还不是写代码,而是准备数据。我踩过一些类似的坑,这里集中说一下。
- 视频内容多样性优先于单场景精度。PointZero的思路里隐含一个假设:动态规律可以通过大量场景学出来。所以你的视频数据集应该尽可能覆盖不同物体、不同光照、不同背景、不同操作类型,而不是盯着一个桌面拍一千段。动态泛化靠的是多样性,不是重复度。
- 多视角优于单视角,但也不是绝对。单目重建容易出现尺度模糊和深度噪声,导致动态序列的物理量不自洽。条件允许的话,优先考虑多视角同步采集或者说使用多视角数据源。如果只能用单目,那就必须使用具备时间一致性的重建方案的输出作为监督信号。
- 过滤静态片段。训练动态预测最怕的就是“预测即原地不动”的朴素解。如果数据里有大量静态帧,模型很容易学会一个“不预测也不会错”的偷懒策略。所以数据预处理时一定要把长时间没有状态变化的片段切掉,或者给动态帧更高的采样权重。
- 保持时间分辨率对齐。3D状态序列的时间步长要稳定,否则模型会混淆“同样的变化量是应该在一帧内完成还是分多帧完成”。统一重采样到固定帧率是我建议的第一道预处理步骤。
3.2 3D表征选型:点云、占据场还是高斯
预训练之前必须先定一个3D表征,这直接决定模型能学到什么粒度的动态。
点云表达比较直观,计算成本可控,但它在无序性和密度不均上处理起来麻烦。占据场表达对拓扑变化更友好,特别适合学习“物体被拿起后原位置出现空洞、新位置出现实体”这类拓扑改变,不过它输出分辨率受到体素网格限制,细粒度动态容易丢。3D高斯表达近几年很火,可以做到高质量重建,渲染效率也高,但动态预测时的物理约束比较难设计。
我的建议是,如果你的下游任务偏重刚体操作(推箱子、开抽屉、摆放),点云或占据场已经够用;如果你的下游任务涉及柔性物体或液体类动态,那么对状态表达细节的要求会成倍提升,可能必须上更高表达力的表征。PointZero的具体选型我不好断言,但从技术趋势上,这类预训练大概率会采用混合策略:预测在紧凑隐空间完成,解码时用高表达力模块还原。
3.3 下游迁移策略:冻结、微调还是零样本上手
预训练完之后,怎么把它接到机器人的操作策略上,这里也有取舍。
如果是自己构建下游VLA(视觉-语言-动作)模型或者ACT类模型,通常会有三种做法。第一种,完全冻结预训练编码器,只在后面接一个轻量的策略头做行为克隆,适合机器人数据量极少的情况,好处是不怕灾难性遗忘,坏处是预训练特征不一定完全适配末端执行器的控制精度需求。第二种,低秩微调适配器,在预训练模型的每一层插入低秩矩阵,只更新新增参数,保留原有动态先验不动,这是目前我看到性价比最高的选项,特别推荐给下游数据只有几百条的人。第三种,全量微调,适合下游数据量大、任务非常特殊的情况,但会牺牲模型的通用性,也增加了过拟合风险。
在6/7个操作任务中,我猜PointZero取得最好成绩的任务应该是那些和中低精度空间推理强相关的场景,比如抓取、摆放、推箱子。而失败的那个任务,大概率是在高精度接触建模,比如插孔、螺丝拧紧之类,这类任务不仅需要动态预测,还需要非常精确的接触力反馈和误差校正能力,纯靠视觉预训练给出的先验很难直接把精度拉满。如果你自己也卡在这种任务上,不要灰心,这不是预训练模型没用,而是你需要额外引入一个精调环路来补偿接触层面的细节。
3.4 评估口径要自己盯紧:6/7到底怎么算
“横扫6/7操作任务”这种表述,在论文摘要里很常见,但作为实践者,我有义务提醒你——评估口径的差异非常大,同一套模型可能有完全不同的真实手感。
首先要看每个任务的成功率阈值。有的任务成功判定是“物体最终位姿在10厘米误差内”,有的是“在下一次物理交互之前保持稳定”,这个阈值对难度影响极大。其次要看初始状态随机化范围。如果每轮测试物体随机位置角度都固定,那任务难度会低很多;如果做到完全随机域随机化,那是另外一回事。最后还要看训练数据是从头训还是微调来的。如果是微调,对比基线也应该是微调过的模型,否则对比不公平。
所以我建议所有想参考这篇工作的人,在看6/7这个数字的同时,一定要去原文的实验设置里核对一下这7个任务的难度分布和评估协议。不要只看标题就觉得自己抄到答案了。
4. 常见问题与排查技巧实录
4.1 3D重建质量差导致训练不稳定
这是复现这类3D动态预训练时最普遍的痛点。训练过程loss上蹿下跳,很多情况不是模型的问题,而是重建模块输出的3D状态里面有大量随机噪声,模型被噪声干扰,学不到稳定的动态信号。
排查方案分三步走。第一步做重建质量可视化,把重建的3D结果和原视频逐帧播放对齐,确认没有出现严重抖动、漂移或者人体手臂遮挡导致的对象凹陷。第二步做状态序列平滑,在重建坐标上做时间维度的低通滤波,模式上优先保留刚体运动的分量。第三步才轮到模型训练策略,比如提高预测时间跨度的噪声鲁棒性、降低深度误差对loss的权重。
如果做完了这三步还在炸loss,我就比较怀疑是数据里面混入了太多切不干净的静态片段。回到数据清洗,把动态幅度在阈值以下的视频段全部过滤掉,往往会有立竿见影的效果。
4.2 预训练模型迁移到下流环境时发生“负迁移”
有时候你会遇到更头疼的情况:理论上应该帮上忙的预训练模型,反而让下游任务收敛更慢。这通常不是模型没用,而是预训练数据和你下游任务的真实场景分布差异太大。
比如预训练集中大量是俯视角度的桌面互动视频,而你的真实机器人是安装在固定侧前方的视角,观测角度、背景纹理、物体外观都有巨大分布偏移。此时预训练模型输出的特征在语义上仍然有效,但几何位置上可能产生了视角诱导的偏差,直接用于策略网络反而带偏了初始状态。
处理办法有两个:一是在预训练数据中刻意加入多种视角的数据增强,尤其是和多视角重建任务配合,强制模型学出视角无关的3D动态表征;二是下游微调时,不要一上来就用极小学习率冻结训练,而是先用中等学习率快速适应300步,再切回小学习率精调,让预训练特征先和下游分布的偏差解除耦合,再接入动态先验。这个方法我叫它“解冻热身”,实测下来比直接微调稳定不少。
4.3 推理速度撑不起实时控制
3D动态预训练模型通常是一个参数体量不小的Transformer或扩散框架,推理时的开销是真实机器人部署必须考虑的问题。如果一帧3D状态预测要跑300毫秒,下游策略只能望洋兴叹。
我的经验是:动态预测不需要每一帧都跑。先分析你的任务需求,如果只是做子目标生成或者运动意图预测,完全可以降低调用频率到2Hz-5Hz,再在高频控制层用简单插值器或者PID去追赶子目标。这样预训练模型的输出变成了“宏观轨迹的航路点”,而不是“逐帧的末端速度”,推理耗时的压力立刻缓解。另外一个技巧是把动态预测推进到隐空间提前计算,只在需要可视化或者和下游策略对齐时解码到3D空间,省掉每帧解码的开销。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| 训练loss不收敛 | 3D重建噪声大、静态片段过多 | 重建状态可视化检查、时间滤波、过滤静态帧 |
| 预训练特征引入后反而掉点 | 数据分布差异过大、视角分布错位 | 增加视角增强、使用解冻热身策略 |
| 零样本迁移效果远低于论文数据 | 评估协议不一致、任务定义不同 | 核对成功率阈值、初始状态随机化范围 |
| 动态预测崩坏,物体飞入桌面 | 物理一致性约束缺失 | 加入刚体约束正则、物体接触关系约束 |
| 推理速度达不到实时控制 | 模型结构过大、逐帧调用 | 降低调用频率、隐空间预测、轻量蒸馏 |
4.5 一个容易被忽视的细节:3D归一化空间的一致性
最后提一个特别容易被忽视但实际又极端影响迁移效果的细节——3D状态空间的坐标系原点、尺度单位、朝向定义,在预训练和下游任务之间必须保证一致。
这个看起来是常识,但实际项目里很容易翻车。预训练阶段用的是重建坐标系,尺度是单位化后的,可能一米等于1.0还是0.5都说不清;到了下游机器人平台上,又用的是世界坐标系,单位是米,零点在机器人基座。如果你不做归一化对齐,模型学到的“推5个单位会滑1个单位”完全对不上真机的“推5厘米会滑1厘米”,迁移效果天然就废了。
我建议统一使用一个以“物体中心为原点、尺度按最大包围盒半径归一化”的局部空间作为动态预测空间,下游策略再通过预测出的局部3D动态结果转换到机器人操作空间。这样预训练学到的动态规律和下游无关,空间尺度都在局部层面完成,域偏移会减小不少。
5. 后续可以这样扩展使用
5.1 轻量化版本蒸馏给真机实时推理
前面提到推理速度和实时性的矛盾,后续如果你验证了PointZero思路在你的场景里确实能提升策略性能,可以考虑做一个蒸馏版本:用完整预训练模型生成大量“虚拟轨迹对”,然后把它蒸馏到一个更小的稠密网络里,专门负责动态预测的子模块。轻量化后的模型可以做到单帧推断10ms以内,这样就能真正解耦出“动态规划+高频执行”的双层控制结构。
5.2 和因果推理、任务分解结合
PointZero的动态预测本身只是“预测下一步会发生什么”,不直接等于“我应该做什么”。但如果把它作为任务分解的底层引擎,可以衍生出更高级的功能。比如对“整理桌面”这个任务,模型逐帧预测物体的未来状态轨迹,策略可以从这些轨迹中选择与目标状态一致的路径,再分解成可执行的子步骤。这个思路我在做长程任务规划时用过一版简化替代,收益很明显。
5.3 引入多模态的非视觉动态
现在PointZero基于视频的3D动态基本上只覆盖了视觉可观测的变化。但真实操作里有些关键动态信息根本看不出变化,比如柔顺力、温度变化、材料疲劳等。后续如果条件允许,可以把预训练改造为“多模态动态模型”——用视频学几何动态,用触觉学接触动态,用音频学材料响应动态。这种跨模态动态预训练如果真的跑通,我想大概率就是下一代这类工作的方向。
我个人目前做机器人抓取与操作这块也有几年了,PointZero这次的工作给我一个比较大的刹醒:过去我们做机器人学习,总默认“数据尤其是机器人数据”是唯一的瓶颈,论文里所有对比也是大家比谁的机器人数据用得更狠更重。但PointZero把这个问题拆开看了——机器人真正稀缺的,是“知道物体下一步会变成什么样”的物理推演能力,至于“怎么用自己的硬件去实现这个推演”,反而相对容易解决。一个长期困扰我的问题:“为什么机器人策略在这个场景好、换个物体就失灵”,在这类3D动态预训练的思路下,算是看到了一个新世界。如果这篇分享能让你在复现或者开发时少踩一个坑,多省一天调试时间,那这大半天嚼论文的功夫就值了。