南洋理工MAMHOI:机器人搬家具为何总撞墙?场景理解与动作生成难兼顾
你有没有想过,让一个虚拟人在屋子里搬一张桌子,到底难在哪里?听起来好像没什么技术含量。人走过去,弯腰,抬起桌子,绕开沙发,放到指定位置。小孩子都会做的事情,为什么会成为一篇正经学术论文的研究主题?答案藏在一个你平时根本不会注意的细节里:生成这段动作的AI,往往根本不知道屋子里有沙发。这不是夸张。目前大...
虚拟人搬起一张桌子,到底卡在哪一步?这事你有没有琢磨过。
乍看之下,这活儿没什么门槛。走两步、弯个腰、把桌子抬起来、绕过沙发,最后搁到该放的地方,连小孩都做得来。可它偏偏成了正经学术论文的研究题目,为什么?
答案就在一个平时谁都不会留意的细节上:负责生成这套动作的AI,往往压根不知道房间里杵着一张沙发。
这话不夸张。眼下能生成“人搬东西”动作的模型,多数是在空无一物的虚拟空间里练出来的。叫它演一段“端起杯子喝水”,手指扣住杯沿、手腕倾斜的角度,都像模像样。可把它丢进摆满家具的真实房间,它多半会让人体直接穿进桌腿、把箱子怼到墙上。动作它懂,空间它不懂。
新加坡南洋理工大学的研究者写了篇论文叫MAMHOI,要处理的核心矛盾正是这个:场景理解和动作生成,两种能力几乎没办法从同一批数据里一起学出来。
两种数据,两个世界
有人会问,那为什么不直接找一堆“人在真实房间里搬家具”的视频来训练?
麻烦就出在“直接”两个字上。
按研究者的说法,现有的数据集分两类。一类是人-场景数据集,拍的是人在复杂房间里走动、躲开障碍物的真实轨迹,可里面的人基本不碰东西,最多就是来回走。另一类是人-物体数据集,抓的是“怎么抓、怎么搬、怎么放”这些极细的动作,但动作几乎都发生在空荡荡的实验室里,连件能撞上的家具都没有。
理想中的数据得同时具备复杂房间场景和精细搬运动作,这种“人-物体-场景”三合一的数据,少得几乎找不出来。
打个比方,你想培养一个既懂建筑结构又懂室内装修的人,结果市面上只有两门课:一门讲承重墙和门窗布局,沙发怎么挑怎么搭完全不提;另一门教你把整套家具配得漂漂亮亮,可上课的教室永远是空的,没墙也没门。既会看房子又会摆家具的人,没法直接拼出来,因为没人把这两件事一起教过。
那硬把两类数据凑到一块训练模型会怎样?论文里提到的InfBaGel就是这么干的,把合成的“人-物体-场景”数据和真实的“人-场景”数据混在一起训练。场景适应性确实上去了,代价是动作精细度打了折扣。两种分布不一致的数据一起学,模型容易哪头都学不透,这是一种此消彼长的权衡。
拿一张“可行性地图”当中间人
MAMHOI的路子听上去简单得近乎朴素:别让两种能力硬凑着一起学,找个中间媒介,各自学自己擅长的部分,再靠这个媒介对接。
这个媒介叫motion affordance,论文译作运动可供性。
所谓运动可供性,指的是在给定场景和任务下,人和物体的交互动作能够合理执行的空间范围。说白了就是标出“哪里能动、哪里不能动”。
具体怎么跑?系统拆成两个各自独立训练的模块。头一个是场景理解模型,它看房间深度图、规划好的物体移动路径,再加一句任务指令,比如“把落地灯搬到椅子旁边”,然后输出一张二维“可行区域地图”,用颜色标出哪些地方是安全的、可通行的交互空间。第二个是动作扩散生成器,它完全不用知道房间长什么样,只要清楚“这个局部范围里哪儿是空的、哪儿堵着”,就能生成人和物体配合搬运的具体动作。
两个模块吃的训练数据完全不同。场景理解模型用的是LINGO这个人-场景数据集,学的是把房间几何、路径、语言指令揉成一张可行性地图。动作生成器用的是OMOMO这个人-物体数据集,学的是依照局部空间约束生成逼真的搬运动作。两者之间唯一的通道,就是那张可行性地图转换成的局部三维体素网格。
这个设计让人想到一个挺具体的场景。假设你刚搬到一个陌生城市跑外卖,完全不必先把整座城市的地图背下来才能接单。你需要的只是导航告诉你“接下来五十米右转,前面是单行道”这种局部指令。路网结构由导航软件去理解,你管的是拐弯、刹车这些骑车技巧。要是导航非把你练成既精通城市规划又精通骑行技巧的全能选手,培训成本高得离谱,多半还两头都学不精。MAMHOI干的正是这件事:把“城市规划”交给场景理解模型,把“骑行技巧”交给动作生成器,中间用一张简化的局部地图接上。不这么拆,直接训一个端到端大模型同时吃场景数据和动作数据,两种数据分布差异太大,模型很难兼顾,前面InfBaGel碰上的权衡问题,根子也在这里。
可供性地图是怎么画出来的
场景理解模型的内部结构值得多说两句,这里藏着一个挺巧的设计。
模型拿到三样输入:房间的二维深度图、一条由A*算法规划好的物体移动路径、一句自然语言指令。深度图先送进一个叫U-Net的卷积网络处理。
U-Net是一种常用于图像处理的卷积神经网络结构,特点是先把图像压缩成小尺寸的特征,再一步步还原回原始尺寸,中间保留多层级的细节信息。
路径信息会被编码成一串位置特征,语言指令则交给CLIP
CLIP 是一个能同时读懂图片和文字的预训练模型。放到这套系统里,它只干一件事:把文字指令变成一组数字向量,好跟别的特征拼到一起。
真正把各路信息合到一起的地方在网络最深处。场景的空间特征被当成“问题”,路径特征和文字特征被当成“答案”,靠多头交叉注意力这套机制,让场景特征主动去“问”跟任务有关的信息,最后解码出可行性地图。这么设计的意思很明确:语言指令不是摆着看的,它实际在引导模型判断“人该站在路径哪一侧才合乎搬东西的常理”。抬箱子的人一般分站箱子两边,不会杵在正前方——这类常识,就是靠语言指令调动起来的。
训练这个地图预测模型时,研究者没图省事给每个像素同样的权重。他们注意到,跟任务相关的可行区域常常只占房间很小一块,权重平均摊开,模型学出来就会糊成一片。于是他们加了距离衰减的加权交叉熵损失:离规划路径越近,权重给得越高,起点和终点还额外加了码。打个比方,老师批作文不会每个字都花一样的力气圈点,开头结尾这两处最容易出问题,会格外上心,中间按正常力度看。不做这层加权,模型多半把劲使在无关紧要的边角上,反倒漏掉真正决定任务成败的起点终点衔接处。
怎么让动作生成器“听懂”空间里的那些信息
可行性地图有了,下一步是怎么把它变成动作生成器能直接用的东西?
这一步有个处理挺讲究。系统没把整张房间地图直接甩给动作生成器,只切出三个局部的三维体素网格:一个围住人的骨盆,一个围住物体当前所在位置,一个围住物体最终要去的位置,每块都是32乘32乘32的小方块。三块小方块会重新调整朝向,统一对齐到人体的局部坐标系,再拼起来送进基于ViT的编码器
ViT 全称 Vision Transformer,思路是把图像切成小块、再用注意力机制处理,这里专门负责把体素网格编码成特征向量。
局部截取加坐标对齐这套操作,论文里单独做了对比实验。要是省掉坐标对齐、保留房间原本的全局朝向,会怎样?数据给了答案:场景碰撞的几个关键指标全面变差,人体和场景的穿模深度从28.587涨到41.016,动作抖动程度从4429.3飙到7299.8,差不多翻了一倍。
这个差距能说明什么?设想你蒙着眼被人领进一间陌生屋子摸家具,每次伸手碰到的物体朝向都随机转了个角度,你很难建立起稳定的空间直觉,因为大脑没法把“桌子在左边”这类相对关系固定下来反复学。可要是每次摸索前都先把自己转向固定朝向,比如始终面朝北开始摸,你很快就能总结出“伸右手摸到的通常是桌沿”这种规律。坐标对齐做的就是后面这件事:把变化不定的全局朝向问题,转成统一视角下的局部相对关系问题,模型学起稳定的空间规律来就轻松多了。
动作生成器用的也是一个扩散模型
扩散模型的套路是:先把真实数据一步步加噪声,直到变成彻底随机的噪声,再训练一个网络学会把噪声一步步还原回真实数据。这里用它来生成逐帧的人体和物体运动序列。
局部体素特征通过交叉注意力注入动作生成的中间过程,相当于生成时随时递上的“场地提示”。整段长时间的交互动作是分段生成的:每生成完一段三十帧的动作,人和物体的新位置就更新一次,下一段要用的局部体素也会重新从那张大可行性地图里查询、截取,这样动作能随着交互推进不断跟上周围环境的变化。
光靠正例学还不够,还得学会分辨“相似但错误”的选项
训练里有个损失函数的设计值得单独拎出来说,因为它解决的是一个挺反直觉的问题。
一开始研究者只用了叫Lsdf的损失:把二维可行区域转成有符号距离场,正值表示在可行区域内,负值表示越界,然后惩罚那些跑出可行区域的人体关节。听着挺合理吧?可实验发现,一旦大多数生成动作已经落在可行区域里面,这个损失就几乎给不出有效的梯度信号,模型也没了继续优化的动力。
毛病出在哪?同样的起点和终点约束下,其实存在好几种合理的中间路径。搬一张桌子从A点到B点,贴着墙边走行,从房间中间穿过去也行,只要起终点一致,这两条路理论上都算“把任务完成了”。可真正贴合可行区域、更安全合理的只有一条,另一条没准会蹭到家具边缘。光靠正例损失,分不清这两种“看着都对”的选择。
所以他们又加了个叫Lrank的排序损失。思路是构造一对动作:一个是正确的、贴合可行区域的,另一个是起点终点相似、中间路径却明显不同的“替代方案”。然后要求正确动作的距离场惩罚值至少比替代方案低出一个安全边界;差距没拉开,损失就一直发信号,逼模型继续调。
这好比判卷时只告诉学生对错,学生可能答对几次就没了精进的劲头;换成“你这个答案跟另一个看着也差不多的答案比,哪个更稳妥、差多少”,学生就得去琢磨更细的取舍,不会满足于勉强及格。实验数据也印证了这套设计的价值:加上Lrank后,场景穿模的帧级指标从2.002降到1.440,动作抖动指标从6907.6骤降到4429.3,人物接触率从92.27%升到94.87%。不过有意思的是,去掉Lrank之后,在不涉及场景的纯交互评测里,衡量动作真实感的FID指标反倒更好了。这说明Lrank本质上是种场景感知的正则化,逼着模型别无视场景提示;到了完全没场景的测试环境里,这种约束就显得“多管闲事”了。
测试时的补救:几何修正并非万能药
论文还做了一个挺诚实的区分实验,专门看“训练阶段学到的场景适应能力”和“推理阶段临时加的几何修正”之间到底是什么关系。
研究者设计了一个叫Gsdf的测试时引导机制,原理很直白:采样过程中直接查场景的占据情况,对穿进墙体或家具的身体关节施加惩罚力,把它们硬推出障碍物。这套手段不用重新训练模型,属于事后补救的工程做法。
实验数据给出了直观答案:CHOIS这个基线模型叠加Gsdf之后,人体与场景穿模的平均指标由47.337降至32.936,改善幅度不小。可问题在于,加了这层补救的CHOIS+Gsdf,各项表现仍旧全面输给完全没有补救措施的MAMHOI。这组对比很能说明问题——MAMHOI的领先并非来自临场打补丁,它的场景适应能力在训练阶段就已经融进动作生成的分布里了。
用户调研的结果更有意思。研究者做了一场双选强制评测,52位参与者一共看了884组成对比较,结论是人类更青睐MAMHOI原始版本,而非加上Gsdf补救的那一版。也就是说,量化指标上Gsdf的确把穿模数值压低了,但落到人眼里,这种硬邦邦的几何修正反倒让动作看着更别扭。
这个现象值得细想。好比修图软件里的一键去瑕疵,技术上能把照片上的毛病抹平,数值上皮肤也确实"更光滑"了,可修完的照片摆到真人面前,旁人常常一眼就瞧出哪里别扭,僵硬又失真。真正自然的照片,靠的是拍摄时就把光线和角度调好,并非后期硬修。MAMHOI走的正是前一条路:把场景适应能力提前学进生成过程,而不是在采样阶段硬来。
数据说话:这套方法到底好在哪
研究者搭了一个专门的测试环境,从LINGO数据集的测试场景中挑出20个房间,规划了164条物体移动路径,每条路径搭配5种可移动物体,累计跑了大约820次试验,专门用来检验物理可行性。
拿来对比的基线是CHOIS和InfBaGel这两个代表性方法。核心结果方面,人体场景穿模的平均深度指标上MAMHOI为28.587,明显好于CHOIS的47.337和InfBaGel的36.478。物体场景穿模这项更棘手的指标,MAMHOI做到0.403,低于CHOIS的0.545和InfBaGel的3.136,InfBaGel在这项上尤其糟糕,差距接近八倍。
物体路径遵循度上,MAMHOI的0.1492也略胜CHOIS的0.1532,InfBaGel这项甚至没给出有效数值。人物接触率方面,MAMHOI为94.87%,高于CHOIS的90.97%和InfBaGel的92.39%。
把这些数字放到一起看,指向一件事:MAMHOI没有靠牺牲某一方面去换另一方面的提升,场景适应性、路径遵循、交互真实感这几个时常互相拉扯的目标,它都做到了相对均衡的改善。
写在后面
读这篇论文时,让我停下来想了很久的,其实不是那张可行性地图,而是关于Lrank损失的那个反直觉实验结果:加入场景感知的排序损失之后,场景碰撞指标明显好转,可在完全不含场景的纯动作评测里,代表动作真实感的FID指标却变差了。
这个细节背后有个朴素却容易被忽略的道理:让系统同时兼顾两件事,本身就要付出代价,代价不会凭空消失,只会转移到你没盯着的那项指标上。做场景适应训练时,模型不得不分出一部分"注意力"去照顾场景提示,而这部分注意力原本可以百分之百用来打磨动作的流畅度。研究者没把这份代价藏起来,反倒专门做了一组对比实验摆到台面上,这份诚实比论文的主要结论更让我记得住。
还有一点值得单独拎出来说,就是用户调研里"几何修正压低了数值、却压低了人类偏好"这个结果。它提醒人,每当看到一个指标被优化得漂漂亮亮,都该多问一句:这个指标真能完全对应人类的感受吗?会不会存在某种优化方式,数字上好看了,代价却是某种更难量化的东西被悄悄牺牲掉?
论文没解决的问题也摆在那里:它要靠一个外部路径规划器给出粗略的物体移动轨迹,整套系统的表现多少受制于这个规划器输出的路径质量。万一规划器本身给出了一条不太合理的路径,后面的可行性地图和动作生成会不会被源头的错误带偏?论文没有展开讨论,留给了后续研究。
Q&A
Q1:MAMHOI是什么?
这套叫 MAMHOI 的 AI 方法,专门生成“人在复杂房间里搬运物体”的动作。它的做法是把场景理解和动作生成拆成两个各自独立训练的模块,一个从人-场景数据里学,一个从人-物体数据里学,最后拼到一起配合干活,中间靠的是一张运动可供性地图。
Q2:MAMHOI和之前的方法比有什么优势?
A:在物体与场景的碰撞穿模指标上,MAMHOI比CHOIS和InfBaGel都低出不少,物体路径遵循度和人物接触率也更高,而且这份优势主要来自训练阶段学到的场景适应能力,不靠推理时的几何修正。
Q3:MAMHOI需要人-物体-场景三者同时标注的数据吗?
A:不需要。MAMHOI的核心价值恰恰在于避开了对这种稀缺三位一体数据的依赖:场景理解模型只用人-场景数据训练,动作生成器只用人-物体数据训练,两者靠可行性地图这个中间媒介衔接。