看来具身智能行业又有了一些新的进展。至少在受控的操作场景里,机器人已经开始能够比较成体系地从视频中学习技能了。
不知道大家还记不记得,去年 5 月,马斯克接受 CNBC 采访时曾经谈到过一个设想。
他说,如果特斯拉的机器人 Optimus 能够像人一样,可以从各种视频中学习某项技能,那它的任务扩展能力就会发生巨大的变化。因为这意味着它可以非常快地学会任何事情。
主持人紧接着问马斯克,现在还没有做到,对吧?马斯克回答,还没有。
他把通过观看视频学习技能,定义为 Optimus 需要跨过的一个重要门槛。
今天我看到,自变量机器人开源了一个叫 HOST 的框架。简单来说,它能让一个已经完成大规模训练的机器人,在面对新任务时,只观察一段人类演示视频,就可以学会执行这项任务。
论文给出的实验结果是,每项新技能需要的视频演示平均为 29 秒,在用于定量对比的一组新任务上,获取技能的成功率达到 62%。
相比目前仍占据主流的后训练微调方法,这个方案的学习速度提升了 500 倍,需要的数据量仅为 1/50,同时成功率还提升了 24%。
所以我就感觉,这事讨论了很多年,现在看来有些眉目了。
话说这个论文也很值得一看,写得非常精彩:
arxiv.org过去的解决思路
其实让机器人看视频学习技能,这个方向在学术界有一个专门的名字,叫 One-Shot Visual Imitation,单次视觉模仿。
早在 1994 年,就已经有研究者提出,让机器人通过观看一次人类操作,提取可以重复使用的任务知识。
过去这些年,也出现过很多不同的技术路线。
早期的方法是先从人类视频里识别手的位置、物体的移动轨迹、手和物体在哪里发生接触,再把这些信息转换成机器人能够执行的路径。
这类方案的问题是中间往往要经过手部识别、物体识别和轨迹转换等多个环节,有些方案还需要三维重建。
关键问题在于,机器人与人体的结构不同,直接对应双方动作很可能不匹配。
只要前面的某个环节出现误差,到了机器人真正执行的时候,误差就可能不断累积。
后来,大家开始尝试用一个统一的模型解决这件事。
说白了,思路就是把人类演示视频和机器人当前看到的画面一起输入模型,让模型直接预测机械臂接下来应该怎样行动。
这类方法确实会利用视频中的动作过程,但问题在于,整段视频通常作为一个整体条件进入模型。
机器人真正开始执行以后,模型需要自己从整段视频中判断,当前最应该参考哪一部分。
如果机器人还停留在抓取阶段,输入的视频里却同时包含了移动、对准和插入等后续画面,其中很多内容和机器人当前的状态没有直接关系。
人类和机器人的执行节奏又不一样,这个判断就会变得更困难。所以,视频虽然参与了动作预测,却没有被明确地变成机器人执行过程中的进度参照。
HOST 如何找到视频中的任务进度?
HOST 首先就要解决对齐任务进度的问题。
他们认为,之前很多方法从视频中学习技能的效果不够好,可能并不只是因为视频中的信息不够,也不是因为人和机器人的身体差距太大,更核心的卡点是模型使用视频的方式不对。
比如,把花插进花瓶。机器人开始执行以后,系统需要持续判断,它现在是在准备抓花、移动花、对准花瓶,还是已经到了插入阶段。
这个问题之所以重要,是因为人类演示和机器人执行,通常不会按照相同的节奏推进。
这种差异也不只是人整体做得快,机器人整体做得慢。具体到不同阶段,两边的速度差异也不一样。
还是拿插花来说。假设机器人刚刚夹住花,HOST 会先在人类演示视频里找到人刚刚完成抓取的那一段。
接下来,机器人主要参考的就不再是整段视频,而是人如何移动花、靠近花瓶的后续画面。
机器人完成一小段动作以后,系统会再次对照演示视频,判断机器人现在进行到了哪里,然后继续参考后面的内容。
为了做到这一点,HOST 在训练时会学习人类演示和机器人执行之间的对应关系。即使两边速度不同,它也能判断哪些画面处于同一个任务阶段。
看到这里,我恍然大悟。这才是真正的跟着视频学习啊。论文把这个过程称为,把视频从被动的上下文,变成执行过程中的主动驱动信号。
从结果画面反推动作
但只解决进度错位,还不够。
即使机器人已经找到了视频中最应该参考的那一段,它依然很难直接把人类的画面翻译成自己的动作。视频里出现的是人的手、人的身体和人的视角。
机器人最终需要输出的,却是机械臂的移动位置、旋转角度和夹爪状态。
这中间的跨度非常大。
之前一些端到端模型,会让模型直接完成这次转换,整段人类视频,加上机器人当前的画面,直接生成机器人动作。
HOST 没有采用这样的思路。它会先参考人类演示接下来的变化,将这个变化的结果画面转换成机器人自己的视角、对应自己本体的画面,相当于是自己完成动作后想要实现的结果,再根据这个结果去反推要做的动作。
继续拿把花插进花瓶来说。
假设机器人已经夹住了花。演示视频里的人接下来把花移动到了花瓶口,并且完成了对准。
过去的做法,可能会让模型直接根据这段人类画面,计算机械臂接下来应该怎样移动。HOST 没有这样做。
它会先参考人类操作的结果,替换成机器人自己的视角:机械夹爪拿着花,已经移动到了花瓶口,并且对准了花瓶。
这组画面相当于给机器人设定了一个下一阶段的目标。模型再对比机器人当前看到的画面和这个目标,生成机械臂接下来需要执行的动作。
整个过程就被拆成了两步。先把人类演示结果转换成机器人自己的未来状态,再生成动作,让机器人逐渐到达这个状态。
所以,HOST 的整个过程可以简化成三步:
先判断机器人当前进行到了演示里的哪个阶段,再预测自己下一阶段应该看到什么,最后生成机械臂需要执行的动作。
HOST 最精髓的一步在于,它没有试图直接将人的动作翻译给机器人,而是瞄准人完成动作后的目标,将这个目标作为机器人要实现的目标,再反推动作。
如此一来,就避免了处理人和机器人构型不同这个最难的问题。
而且,这套过程并不是在任务开始时只运行一次。机器人每执行一段动作,都会重新观察环境,判断当前进度,预测下一阶段的画面,再继续生成动作。
论文还在同一套模型和训练条件下做了一组内部消融实验。
在已经保留目标耦合机制的情况下,直接从视频生成机器人动作,成功率是 34%。增加任务进度定位以后,提高到 43%。
再让模型预测机器人自己的未来画面,提高到 55%;最后,让动作生成明确依赖这些未来画面,成功率达到 62%。你能看到这些方法的每一步起到的作用。
教机器人做事的门槛变低了
HOST 非常大的一个创新是,它没有让模型每学习一个新任务,就去重新后训练微调,反复修改一套权重,而是把整个照着视频学技能的过程 ,都放在推理过程里。
模型本身的权重完全冻结,每次都照着视频现学现卖,如此就避免了过去后训练常见的灾难性遗忘。
这套开创性的做法,效果好得出奇:机器人观看一段平均 29 秒的人类视频,复现技能的成功率高达 62%。
相比之下,同样观看单段视频的 Vid2Robot/AWDA,成功率仅有 19%。主流的 Pi-0.5 + 后训练微调的方法,即使给模型示范 50 次任务,并花 4 小时微调训练,成功率也仅有 38%。
相比之下,HOST 用 1/50 的数据样本量和 1/500 的学习时间,成功率反而最高。这堪称当前表现最好的机器人技能学习方案。
62% 的成功率,看起来离 100% 还有段距离。
但在大家都关注的家庭场景中,恰恰不太关注单次成功率,而是更关心泛化性,也就是学得够快、能完成任务就好。
想象一下以后机器人进你家干家务活儿,你想让它按照特定的样式叠衣服,或者叠袜子。
这是它原本预训练不会的技能。只要给它演示一遍,它就能自己完成后续任务了。
这才是让机器人在家庭场景真正有用、能落地的技术。机器人学技能不再需要专业的数据采集和后训练,而是人人能做、成本低廉。
挺有意思的。
这距离机器人真正从一段视频里完整学会一项技能,肯定还有很长的路要走。但我觉得,HOST 提出的这个思路很有启发。
至少它让我们意识到,过去机器人从视频中学习技能的效果不好,未必说明这条路走不通,也可能只是我们使用视频的方式还不对,某些方法反而限制了自己的想象空间。
做具身智能或者对机器人感兴趣的同学,强烈推荐大家去看看这个项目。