超越人类姿态: 使用 SKDream 生成基于任意骨骼的 3D 生物

生成式 AI 领域的发展速度惊人。我们从最初的文本生成 2D 图像,发展到生成 3D 资产,现在正在向可控性 (controllability) 的边界推进。虽然像“一条凶猛的龙”这样的文本提示词非常强大,但它们留下了太多的随机性。如果你希望那条龙处于特定的蹲伏姿势怎么办?如果你想要一棵树的分支长在确切的位置怎么办?

在 2D 图像生成中,我们拥有像 ControlNet 这样的工具,可以使用“骨骼” (姿态估计) 来引导输出。然而,这些工具几乎完全专注于人类骨骼。如果你想控制一只狗、一只蜘蛛或一种幻想生物的姿势,在很大程度上你是束手无策的——直到现在。

在这篇文章中,我们将深入探讨 SKDream , 这是 CVPR 的一篇新研究论文,它介绍了一种通过任意骨骼控制生成多视角图像和 3D 模型的框架。无论是双足动物、四足动物还是植物,SKDream 都允许用户通过骨骼定义结构,通过文本定义外观。

纯文本生成与骨骼条件生成的对比。

如图 1 所示,虽然标准的文本生成 3D 模型 (如 MVDream) 可以生成高质量的对象,但用户无法控制姿势。SKDream 填补了这一空白,允许对解剖结构和姿势进行精确操作——从长着螺旋尾巴的狗到长着龙翅膀的骑士。

核心问题: 为什么这很难?

要理解为什么 SKDream 是一个重要的贡献,我们首先需要看看为什么以前没有这样做。有两个主要障碍阻碍了我们使用任意骨骼进行 3D 生成:

  1. 数据稀缺: 人类姿态拥有海量的数据集 (归功于多年的人体姿态估计研究) 。但不存在连接随机物体 (椅子、鱼、龙) 的 3D 网格与语义骨骼的等效海量数据集。没有数据,就无法训练模型。
  2. 表示的歧义性: 人类骨骼是标准化的。我们知道哪个关节是“左肘”。但对于随机结构,简单的 2D 线条是不够的。2D 屏幕上的一条线可能代表指向相机的骨头,也可能代表背对相机的骨头。这种深度歧义会混淆生成模型。

SKDream 的研究人员正面解决了这两个问题。


第一部分: 构建数据 (Objaverse-SK)

由于不存在现成的数据集,作者必须自己构建一个。他们利用了 Objaverse , 这是一个庞大的 3D 对象库,但他们需要自动从这些网格中提取骨骼。

骨骼化流程

现有的方法 (如 RigNet) 使用深度学习来预测骨骼。然而,RigNet 是在特定数据上训练的,当面对奇怪或复杂的几何形状时经常失败,往往会在不应该对称的地方强行添加对称性。

作者没有依赖预训练的神经网络进行提取,而是设计了一个专注于曲线骨骼 (Curve Skeletons) 的几何流程。

从网格到树的骨骼生成流程图示。

如图 2 所示,该过程遵循四个步骤:

  1. 曲线骨骼提取: 他们使用一种称为平均曲率流 (Mean Curvature Flow, MCF) 的算法将网格收缩到其核心曲线。这很稳健,但会产生密集的、混乱的图 (graph) 。
  2. 图划分: 分析图以找到交叉节点 (分支相遇的地方) ,并将其划分为若干部分。
  3. 曲线简化: 使用 Douglas-Peucker 算法将复杂的曲线简化为直的“骨骼”。
  4. 树状结构转换: 最后,将图转换为适合动画的层级树状结构 (关节和骨骼) ,并根据中心性选择根节点。

质量检查: 本方法 vs. RigNet

这种几何方法与像 RigNet 这样的基于学习的方法相比,效果如何?

RigNet 与本方法骨骼生成质量的对比。

如图 4 所示,RigNet (上排) 经常在对齐方面遇到困难,产生的骨骼漂浮在网格之外,或者在非对称物体 (如扭曲的蛇) 上强行施加对称的 T 型姿态。SKDream 的流程 (下排) 忠实地遵循物体的几何形状,无论是蛇还是四足动物。

这一过程产出了 Objaverse-SK , 这是第一个包含 24,000 个网格-骨骼对的大规模数据集,涵盖了动物、人类和植物。


第二部分: 生成流程

解决了数据问题后,作者转向了模型架构。目标是接收一个文本提示词和一个3D 骨骼 , 并输出一个带纹理的 3D 网格

这是一个多阶段的过程:

  1. 多视角生成: 生成物体从四个不同角度看的一致性 2D 图像。
  2. 3D 重建: 将这些图像提升为 3D 模型。
  3. 优化/精细化: 打磨纹理。

SKDream 架构与流程概览。

1. 通过坐标颜色编码 (CCE) 解决歧义

生成阶段的第一个挑战是如何将 3D 骨骼输入到图像生成器 (扩散模型) 中。标准方法是将骨骼投影到 2D 平面上 (就像画火柴人一样) 。

问题在哪?信息的丢失。如果你画一个火柴人,你无法分辨那只手是伸向你还是背离你。这就是所谓的深度歧义

SKDream 使用坐标颜色编码 (Coordinate Color Encoding, CCE) 解决了这个问题。他们不画黑线,而是根据归一化为 RGB 值的 3D 坐标 \((x, y, z)\) 对关节和骨骼进行着色。他们还将深度信息添加到 Alpha 通道中 (CCE-D)。

消融实验展示了 CCE-D 相比二值线条的重要性。

图 8 展示了这为何重要。

  • 底行 (Binary): 使用简单的黑白线条,模型会感到困惑。它会在本该是尾巴的地方生成北极熊的头,或者生成不遵循骨骼方向的企鹅。
  • 顶行 (CCE-D): 颜色渐变准确地告诉模型骨骼在 3D 空间中的方向。生成的北极熊和企鹅因此得以正确对齐和摆姿势。

2. 注入条件: 骨骼相关性模块 (SCM)

SKDream 的主干是一个多视角扩散模型 (基于 MVDream) 。为了注入骨骼信息,标准的 ControlNet 使用卷积层。然而,骨骼是“稀疏”的——它们是大部分为空的图像中的细线。卷积通常难以捕捉远距离关节之间的全局关系 (例如,理解左后腿必须与右前腿协调) 。

作者引入了骨骼相关性模块 (Skeletal Correlation Module, SCM) (如图 3 所示) 。它用以下组件替换了标准卷积:

  • 自注意力 (Self-Attention): 用于建模解剖相关性 (同一视角下骨骼不同部分之间的关系) 。
  • 交叉注意力 (Cross-Attention): 用于建模跨视角相关性 (确保前视图和侧视图理解它们看到的是同一个骨骼) 。
  • 相机嵌入 (Camera Embeddings): 通过自适应层归一化 (AdaLN) 融合,准确告诉模型当前骨骼投影对应哪个相机角度。

这种架构上的改变不仅仅是理论上的;它极大地提高了训练速度。

收敛曲线图显示 SCM-AdaLN 学习速度快 5 倍。

如图 9 所示,带有 AdaLN 的 SCM (粉色线) 比标准卷积方法 (蓝色线) 收敛速度快 \(5\times\),几乎立即就能达到很高的对齐分数。


第三部分: 从图像到精细的 3D 资产

一旦扩散模型生成了物体的四个一致视图 (与骨骼对齐) ,系统就需要将它们转化为 3D 网格。

即时重建

作者使用大型重建模型 (LRM),特别是 InstantMesh,将四张图像快速转换为粗糙的 3D 网格。这大约需要 10 秒钟。虽然形状通常不错,但纹理可能会模糊,因为输入图像的分辨率仅为 \(256 \times 256\)。

纹理优化

为了修复模糊问题,SKDream 包含了一个优化阶段。

  1. 他们使用图像放大器 (ControlNet-Tile) 将生成的图像提升到 \(1024 \times 1024\)。
  2. 他们将这些高分辨率图像投影回 3D 网格的纹理贴图 (UV 空间) 上。

然而,仅仅投影图像可能会在相机没看清楚的区域留下间隙或接缝。为了解决这个问题,他们使用以下损失函数优化纹理 \(u\):

纹理优化损失函数公式。

在这里,第一项确保纹理与高分辨率图像匹配。第二项是正则化项: 它强制纹理在没有新信息的区域保持接近原始 (粗糙) 重建 \(u_0\)。这防止了在“不可见”区域出现伪影。

有无正则化的纹理优化对比。

图 10 展示了这种正则化的影响。如果没有它 (左侧) ,你会看到 UV 贴图和物体底部出现噪点伪影。有了正则化 (右侧) ,不可见区域保持平滑和一致。

结果是纹理质量的显著飞跃:

原始重建结果与优化后纹理的对比。

在图 6 中,注意蛇的鳞片、海龟壳的图案和机器人的细节在优化后变得多么清晰和独特。


实验与评估

SKDream 与其他方法相比如何?由于不存在针对任意骨骼生成的直接竞争对手,他们将其与 SDEdit (一种标准的图像到图像编辑技术) 及其使用引导的变体进行了比较。

定性比较

展示 SKDream 与 SDEdit 的定性对比。

图 5 清楚地显示了差异。

  • SDEdit: 虽然它大致遵循形状,但经常幻造出不正确的解剖结构 (断裂的蛇身) 或纹理 (把驴变成木头做的) 。
  • Ours (SKDream): 生成的物体——从蝎子到玫瑰——严格遵守骨骼结构,同时保持高度的照片级真实感和文本对齐。

定量分析

为了从数学上衡量成功,作者提出了一个新的指标: SKA (骨骼对齐分数) 。 这使用对比学习方法 (类似于 CLIP) 来衡量生成图像与输入骨骼的匹配程度。

定义 SKA 分数的方程。

查看数据:

显示 SKA 对齐分数的表格。

SKDream (“Ours-SCM”) 在所有类别 (动物、人类、植物) 中都显着优于基线方法。对于四足动物和节肢动物,对齐效果尤为强劲。

泛化能力

对于任何 AI 模型来说,一个关键问题是: “它能处理未经过训练的事物吗?”作者在 ShapeNet 中排除了训练类别的类别 (如飞机、椅子和吉他) 上测试了 SKDream。

在飞机和吉他等新颖类别上的泛化结果。

图 7 显示该模型的泛化能力令人惊讶地好。尽管它主要是在生物和植物上训练的,但它能成功地为飞机骨骼或吉他骨骼蒙皮,证明骨骼相关性模块已经学会了对结构的通用理解,而不仅仅是记住了特定的动物。

消融实验

最后,作者验证了他们的设计选择。坐标颜色编码 (CCE) 真的很重要吗?SCM 架构真的有帮助吗?

表格显示消融实验结果。

表 3 证实了:

  1. SCM 优于 Conv: 使用骨骼相关性模块比标准卷积提高了对齐度。
  2. CCE-D 优于 Binary: 使用颜色和深度编码提供了最高的对齐分数。

结论与启示

SKDream 代表了可控 3D 生成向前迈出的重要一步。通过超越以人类为中心的数据集,并设计专门针对稀疏、任意结构的架构,作者创造了一种几乎可以生成并绑定任何事物的工具。

关键要点:

  • 数据为王: 创建 Objaverse-SK 是至关重要的。用于骨骼提取的稳健几何流程使得该模型的训练成为可能。
  • 表示很重要: 将 3D 坐标编码为颜色 (CCE) 解决了 2D 条件图中固有的深度歧义问题。
  • 面向结构的架构: SCM 证明,对于像骨骼这样的结构性条件,注意力机制比简单的卷积效果更好。

这项技术为独立游戏开发者、动画师和创作者开辟了令人兴奋的可能性,他们需要用多样化的、已绑定的 3D 资产即时填充虚拟世界。用户无需花费数小时对自定义怪物进行建模和绑定,只需画一个骨骼,输入提示词,然后让 SKDream 完成剩下的工作。