想象一下你正在构建一个虚拟世界。你有一个椅子的 3D 模型和一个人物的 3D 模型。现在,你想让人坐在椅子上。在传统动画中,这是一个手动的、枯燥的过程。你必须拖动角色,弯曲他们的膝盖,确保他们不会穿模 (clip through) 穿过木头,并把他们的手自然地放在扶手上。

现在,想象一下只要告诉 AI “让这个人坐在椅子上”,它就直接发生了。

这就是 人-物交互 (Human-Object Interaction, HOI) 合成的承诺。虽然生成式 AI 的最新进展已经让通过文本创建 3D 物体 (如“一辆红色跑车”) 变得容易,但创建一个逼真的、人与物体之间的交互却要难得多。如果你要求一个标准的图像生成器创建“一个人骑自行车”,你经常会得到一个克罗嫩贝格式的噩梦,人的腿和轮子融合在了一起。

在这篇文章中,我们将深入探讨 InteractAnything , 这是在 CVPR 上展示的一篇引人入胜的论文,它提出了一个强大的框架,用于 零样本人-物交互合成 (Zero-shot Human Object Interaction Synthesis) 。 这种方法不仅仅是“猜测”交互是什么样子的;它使用大语言模型 (LLM) 作为大脑来推理物理规律,并使用扩散模型作为眼睛来理解物体几何形状。

(c) Novel interactions given generative objects.

如上图所示,结果令人震惊。无论是骑着未来的摩托车、抱着婴儿,还是举起一辆特斯拉,该系统都能以惊人的物理合理性处理“开放集 (open-set) ”物体 (即它没有经过明确训练的物体) 。

让我们来拆解一下他们是如何实现这一点的。


问题: 为什么交互如此困难?

在看解决方案之前,我们需要了解瓶颈所在。我们目前拥有强大的“文本转 3D”模型 (如 DreamFusion 或 Magic3D) 。这些模型使用 分数蒸馏采样 (Score Distillation Sampling, SDS) , 这是一种 2D 图像生成器 (如 Stable Diffusion) 迭代地批评 3D 模型直到它看起来像文本提示的技术。

SDS 的公式通常如下所示:

Equation for SDS Loss

简单来说,这个公式计算一个梯度,推动 3D 模型参数 (\(\theta\)) 去匹配文本提示 (\(y\)) 。

然而,当你直接将其应用于交互 (例如,“一个人拿着杯子”) 时,会出现两个主要问题:

  1. 空间歧义 (Spatial Ambiguity) : AI 可能会生成一个人在杯子旁边,或者杯子漂浮在人的胸腔里。它难以处理精确的接触。
  2. 可供性盲区 (Affordance Blindness) : “可供性 (Affordance) ”是一个专业术语,指“物体可以被如何使用”。椅子提供坐的功能;把手提供抓取的功能。标准模型本身并不理解人的手应该包裹住把手,而不是壶嘴。

InteractAnything背后的研究人员指出,要解决这个问题,你需要一个能够理解 关系 (人相对于物体的位置) 和 可供性 (接触点在哪里) 的系统。


InteractAnything 框架

研究人员设计了一个模仿人类艺术家解决问题方式的流程:

  1. 思考 (LLM 推理) : “如果我要举起一把椅子,我需要抓住椅腿或靠背。”
  2. 观察 (可供性解析) : “这把特定椅子的腿在哪里?”
  3. 草绘 (姿态合成) : “让我大致摆好身体的位置。”
  4. 精修 (优化) : “让我收紧抓握,让它看起来更逼真。”

这是他们方法的高级架构:

Figure 2. Framework of InteractAnything.

让我们逐一分解这四大支柱。

1. 大脑: LLM 引导的初始化

第一个挑战是幻觉。如果你只是告诉生成模型把一个人和一个物体放在一起,它可能会把人倒着放。

作者使用 LLM (具体来说是 GPT) 作为“导演”。当给出像“一个人抓住椅子”这样的提示时,系统会要求 LLM 对场景进行推理。它不直接生成 3D 网格;相反,它从预定义的逻辑中选择来初始化参数:

  • 旋转与平移 (Rotation & Translation) : 物体相对于人应该朝向哪个方向?
  • 缩放 (Scale) : 物体相对于人有多大?
  • 状态 (State) : 物体是在地上 (像椅子) 还是被举在空中 (像杯子) ?

这一步提供了一个粗略的“边界框”初始化,确保我们在开始优化过程时,不会让人站在物体里面。

2. 眼睛: 开放集物体可供性解析

这可以说是论文中最巧妙的部分。在没有针对大量 3D 抓取数据集进行训练的情况下,你如何教计算机人类应该在哪里触摸一个通用的、未见过的物体 (比如形状怪异的科幻枪) ?

答案是: 利用 2D 重绘 (Inpainting) 。

2D 扩散模型已经看过数十亿张图片。它们知道手握住物体是什么样子的。研究人员利用这一点,从不同角度拍摄 3D 物体的快照,并要求扩散模型“填补” (重绘) 一个人与它交互的画面。

自适应掩码 (The Adaptive Mask)

他们不只是随机重绘。他们使用 LLM 数据创建一个“掩码 (mask) ”——一个告诉重绘模型关注哪里的指南。

Equation for Full Body Mask Equation for Body Part Mask

这些方程描述了将 3D 设置投影到 2D 视图中 (\(\mathcal{J}\) 是投影函数) 。这为重绘模型创建了一个指南,确保它在合理的位置绘制人物。

创建热力图 (The Heatmap)

一旦重绘器从多个角度生成了人类与物体交互的图像,系统就会使用 2D 姿态检测器 (OpenPose) 来找到这些图像中的手或身体部位。

然后它计算概率图。如果重绘器在多个视图中一致地在物体的手柄附近绘制一只手,那么该区域就会获得很高的“接触概率”。

Equation for Affordance Probability

在这里,函数 \(f_{\text{afford}}\) 基于检测到的身体部位与物体点之间的距离 \(\|\mathbf{d}_i(\mathbf{p})\|\) 来计算概率。

通过将这些 2D 概率聚合回 3D 网格上,他们创建了一个 3D 可供性映射 (3D Affordance Map)

Equation for Aggregated Probability

结果就是 3D 物体上的一个热力图,在人应该触摸它的地方发光。

Figure 5. Visualization of the adaptive inpainting and affordance parsing.

看上面的图片。在中间一列,你可以看到 2D 重绘的结果——AI “想象”出一个人在交互。在右边一列,你可以看到椅子上生成的红色热力图。注意热力图是如何根据文本变化的:

  • “Sits on” (坐在…上) : 热力图在座位上。
  • “Pulls” (拉) : 热力图在靠背上。
  • “Lifts” (提/举) : 热力图在椅腿上。

这为 3D 人体网格提供了一个具体的依附目标。

3. 身体: 文本-物体驱动的姿态合成

现在我们知道应该触摸物体的哪里了,我们需要一个 3D 人体。该论文使用的是 SMPL-H 模型。这是一个参数化的人体模型,可以控制形状和姿态 (包括手部关节) 。

Equation for SMPL Model

系统使用 SMPL 参数 (\(\beta\) 代表形状,\(\theta\) 代表姿态) 初始化人体网格。它使用我们前面提到的文本提示和“分数蒸馏采样” (SDS) 来优化姿态。

然而,他们添加了一个 空间约束 (spatial constraint) 。 如果在这个阶段人体网格与物体网格相交,他们会惩罚模型。这可以防止出现人穿过家具行走的“幽灵”效应。

4. 微调: 表达性 HOI 优化

在这个阶段,我们有一个人在物体附近,并且我们知道他们应该触摸哪里。最后一步是优化,使其看起来在物理上是真实的。

作者将其分为两个阶段: 全局 (Global)精细 (Finer)

全局优化

这将大致对齐人和物体。损失函数如下所示:

Equation for Global Optimization Loss

这个复合损失函数包括:

  • \(L_{\text{inter}}\): 交互损失。它将特定的身体部位 (如手) 拉向我们要生成的、位于可供性热力图上的“热点”。
  • \(L_{\text{pene}}\): 穿透损失。防止人穿模进入物体内部。
  • \(L_n\): 法线一致性。确保手表面与物体表面平行 (手掌接触表面) 。

交互损失的具体定义为:

Equation for Interaction Loss

它最小化人手点集 (\(\mathcal{P}_h\)) 和物体点集 (\(\mathcal{P}_o\)) 之间的倒角距离 (Chamfer distance,\(f_{\text{cham}}\)) ,并由可供性映射 (\(W_{\mathcal{M}}\)) 加权。本质上就是: 把手移动到热力图的红色区域。

精细优化 (物理部分)

让手靠近物体很容易。让它看起来像是在用力抓握却很难。为此,作者引入了一个受物理学启发的概念,称为 力封闭 (Force Closure)

在机器人学中,力封闭意味着如果手指施加的力可以抵抗外力,则抓取是稳定的。作者将其转化为损失函数:

Equation for Fine-Grained Optimization

其中力封闭项 (\(L_{fc}\)) 为:

Equation for Force Closure

这个方程试图最小化物体上的净力和力矩,模拟稳定的抓握。它迫使手指包裹住几何体,而不仅仅是停留在它附近。


它有效吗?实验与结果

结果在视觉上优于以前的方法。作者将 InteractAnything 与 Magic3D、DreamFusion 和 DreamHOI 等最先进的方法进行了比较。

定性比较

Figure 3. Qualitative comparison results.

在图 3 中,看“A person holds the chair” (一个人拿着椅子) 这个提示:

  • DreamFusion 创造了一团模糊的东西。
  • DreamHOI 创造了一个人,但接触是漂浮的,令人难以信服。
  • Ours (InteractAnything) 显示了一个清晰的人形,双手清楚地抓住了椅子的靠背结构。

在“A person types the keyboard” (一个人敲键盘) 中,差异更加明显。以前的方法很难将手与按键分开,而 InteractAnything 将手掌正确地放在设备上方。

精细优化的力量

那个复杂的“力封闭”数学公式真的有用吗?消融实验表明是的。

Figure 4. Ablation study on fine-grained optimization.

在左边 (红圈) ,没有精细优化,手漂浮在桌子边缘附近。看起来像是一个故障。在右边 (绿圈) ,手稳稳地放在那里,手指稍微卷曲在边缘。这种微妙的细节是“故障游戏”外观和“专业动画”外观的区别。

定量指标

研究人员使用 CLIP 分数 (衡量图像与文本的匹配程度) 和 GPT-4V (视觉版) 作为裁判。

Table 1. CLIP similarity scores.

如表 1 所示,InteractAnything 获得了最高的 CLIP 分数,表明语义对齐更好。

Table 2. GPT-4V selection.

在表 2 中,当要求 GPT-4V 挑选最佳图像 (盲测) 时,它在总体上超过 45% 的时间选择了 InteractAnything 的结果,而在 接触质量方面具体超过 52%

场景填充

该方法不仅限于白色背景的渲染。生成的交互可以放入完整的 3D 场景中。

Figure 6. Qualitative results of scene populating.

图 6 展示了如何使用这些生成的角色来填充健身房或礼堂,与设备自然地交互。这表明在视频游戏或数字孪生中生成背景角色的巨大潜力。


结论

InteractAnything 代表了生成式 3D 的重要一步。通过分解问题——使用 LLM 进行高级逻辑推理,使用扩散模型进行低级视觉线索感知,并使用基于物理的优化处理几何形状——它解决了困扰标准文本转 3D 模型的“悬浮手”和“穿模身体”问题。

给学生的主要启示:

  1. 混合流程很强大: 纯端到端模型往往在复杂任务上失败。将任务分解为“推理” (LLM) 和“感知” (扩散模型) 通常能产生更好的控制。
  2. 先验无处不在: 你并不总是需要 3D 数据集。作者使用 2D 重绘模型来学习 3D 可供性。这是绕过数据稀缺的一种聪明方法。
  3. 物理很重要: 视觉效果是不够的。添加像力封闭这样的约束可以确保生成的内容在物理上讲得通。

虽然该方法仍然依赖于底层 2D 扩散模型的质量 (如果重绘失败,结果也会受影响) ,但它为未来打开了一扇大门: 我们可以仅仅通过输入故事来填充虚拟世界。