- 论文地址: arxiv.org/pdf/2310.08...
- Github 地址: github.com/snap-resear...
**
**1. 研究背景与动机
随着扩散模型的兴起,一些典型的模型例如 Stable Diffusion, DALL-E 2 等在文本生成 图像任务上展现了令人震撼的能力。但一个明显的不足是,这些模型在文本生成 人体图片的任务上表现得不尽如人意,甚至很难生成具有合理结构或自然姿态的人体(例如正确的四肢数目和符合人体物理结构的几何拓扑)。背后的主要原因在于:自然环境下的人体是铰接的,且包含刚性和非刚性的形变;生成高质量的人体图片需要文本难以描述的结构信息。
为了在文生图中引入结构控制信息,近期的代表工作如 ControlNet [1],T2I-Adapter [2] 添加了非常轻量的、即插即用的可学习分支,用以调节预训练的文生图扩散模型。然而,原本扩散模型分支和新加入的可学习分支之间的特征差距,往往会导致生成结果与控制信号的不一致。
为了解决这个问题, HumanSD [3] 使用了一种原生的控制引导方式,即直接将人体骨架图与扩散模型输入在特征维度进行拼接。尽管一定程度上解决了生成 - 条件不对齐的问题,但局限于生成艺术画风的图片,在生成质量、多样性以及写实性上仍有欠缺。此外,之前的大部分工作仅仅把控制信号作为一种输入或引导条件,却忽略了人体外观与不同结构信息之间多层级的关联。如何生成一个逼真的、结构合理的人体图片仍然是一个未解决的问题。
在本文中,Snap 研究院、香港中文大学、香港大学、南洋理工大学团队推出了最新的高写实人体生成模型 HyperHuman,通过对显式的人体外观与隐式的多层级人体结构进行联合学习,在 zero-shot 的 MS-COCO 数据集上取得了最佳的图片质量(FID, FID_CLIP, KID)与生成 - 人体姿态一致性(AP, AR)指标结果,且获得了优异的文本 - 图像对齐指标(CLIP score)结果,并在广泛的用户主观评测中取得了最优的结果。
2. 核心方法
为了引入人体骨架图以进行姿态控制,最简单的方法是通过特征残差或输入串联。然而,这种做法仍然存在几个问题:(1)稀疏关键点仅描绘了粗略的人体结构,而忽略了细粒度的人体几何结构和前景 - 背景关系。此外,原始的扩散模型训练仅由 RGB 信号进行监督,无法获得数据集图片中蕴含的结构信息。(2)图像 RGB 和结构表示在空间上对齐,但在特征空间分布上有很大的不同。如何对它们进行联合建模仍然具有挑战性。
(1)Unified Model for Simultaneous Denoising.
我们对第一个问题的解决方案是同时对深度图、表面法向图以及合成的 RGB 图像进行去噪。选择它们作为额外的学习目标有两个原因:1)深度和表面法向可以很容易地对大规模数据集进行自动标注获得,这也被广泛用于最近的可控文生图模型中 [1,2] 。2) 作为两种常用的结构指导,它们补充了空间关系和几何信息,其中深度图和表面法向图在最近的三维视觉研究中被证明是大有帮助的 [4] 。为此,一种简单的方法是训练三个独立的网络来分别对 RGB、深度图和表面法向进行去噪。但它们之间的空间对齐性很难保持。因此,我们提出在统一的模型框架中通过同时去噪来学习三者的联合分布,可以用如下损失函数进行训练:
(2)Structural Expert Branches with Shared Backbone.
为了能让一个扩散模型的 UNet 同时处理来自三个不同分布的 RGB、深度图、表面法向图,并且为三种模态分别输出去噪信号,我们提出对 UNet 骨干网络的最前几层降采样 模块和最后几层上采样 模块进行复制,用以作为三种不同学习目标的结构专家去噪分支。实验发现,模块复制的层数会权衡三种输出之间的空间对齐性以及各自的分布学习精准度:(1)一方面,更少的独立分支参数 + 更多的共享骨干网络参数 能带来更强的输出相似性,从而让扩散模型输出的 RGB、深度图、表面法向图在空间上更加对齐。(2)另一方面,一组对应的 RGB、深度图、表面法向图可以看做是同一张图片的不同形态。在经过共享骨干网络后,我们可以得到相同的中间层网络特征。根据相同的特征得到同一张图的不同形态 / 表征 / 风格,在本质上和图片 - 图片变换问题 (Image-to-Image Translation) 非常相似。所以,我们有需要有足够多的独立网络参数 来完成这个任务。可以考虑一个极端的例子:如果不同去噪分支的参数 只包含一层 conv 层,那么我们就需要仅用一层卷积网络把同样的特征映射 到 RGB、深度图和表面法向图输出,这显然是无法做到的。经过充分的实验后,我们选择拷贝原始扩散模型 UNet 的输入卷积层(conv_in)、第一层降采样 模块 (DownBlock)、最后一层上采样模块(UpBlock),以及输出卷积层(conv_out)。这样既保证了输出的 RGB、深度图和表面法向图之间的空间对齐,又能对三种不同模态的表征分布进行准确的学习,具体的网络结构示意图如下:
除了以上两个主要贡献,文中还有对联合学习中的噪声层级采样策略以及如何利用一阶段估计的结构信息得到更高分辨率、更细节、更逼真的生成结果进行了精心设计,具体内容请参考论文。
3. 实验结果
HyperHuman 在 zero-shot 的 MS-COCO 数据集上取得了最佳的图片质量(FID, FID_CLIP, KID)与生成 - 人体姿态一致性(AP, AR)指标结果,且获得了优异的文本 - 图像对齐指标(CLIP score)结果。其中,SDXL [5] 使用了两个文本编码器,并且使用了 3 倍大小的扩散模型 UNet 骨干网络,因而具有更多的文本 - 图像 cross-attention 层,在 CLIP score 上表现最佳。尽管如此,HyperHuman 在 CLIP score 上仍然取得了相似的结果,并且和其余具有相同文本编码器参数的文生图模型相比,具有更优的文本 - 图像一致性表现:
此外,我们还额外展示了 FID-CLIP 以及 FID_CLIP-CLIP 曲线,用以展示不同模型在不同 Classifier-free Guidance (CFG)下的表现。我们可以看到,HyperHuman 可以很好地对图片生成质量以及图文一致性进行权衡,尤其是在大家实际场景下会使用的 CFG 数值取得了明显的提升(即图片右下角的区域):
下面是一些 HyperHuman 生成的样本。其中在左侧的 2x2 网格中,左上角是输入的人体骨架图,其余三个分别是同时去噪生成的表面法向图、深度图以及一阶段 512x512 分辨率的 RGB 图片结果;右侧是 1024x1024 分辨率下的高清图片生成结果:
以下是更多高清的生成结果:
以下是与以往工作生成结果的对比:
更多样本请参考文章附录。
3. 总结与未来工作
本文提出 HyperHuman,一种高写实的人体生成模型 。HyperHuman 提出两点核心贡献:(1)设计了隐式结构去噪模型,通过同时去噪获得图像 RGB、深度图以及表面法向图,用统一的框架刻画了图片的外观纹理、空间关系以及几何结构信息;(2)设计了结构引导的精细化模块,能够鲁棒地根据一阶段生成的结构表征获得高清、高质量的人体生成结果。总体来说,HyperHuman 能够生成自然场景下多种外观、多种姿态的高清写实人,在图片质量、写实性、多样性、可控性等方面均超越了以往的工作。
未来工作 :
- 由于现有的人体姿态、深度图以及表面法向图估计网络在效果上有局限性,一些非常细节的纹理特征诸如眼镜、手指仍然存在生成误差。如何有效地解决这些问题,生成超精细粒度的高清人体仍然是值得探索的问题;
- 目前的框架要求用户输入一张骨架图作为引导,虽然这是一种非常易获得的控制信号,用户可以通过拖拽骨骼关键点获得,也增强了用户的主观控制性,但仍然使大规模快速使用此模型需要额外的输入。一种潜在的方式是利用 LLM 由文本生成 人体骨架,再使用 HyperHuman 生成高清的人体图。
更多研究资料见:
-
Webpage: snap-research.github.io/HyperHuman/
-
Short Demo (3min): www.youtube.com/watch?v=eRP...
-
Long Demo (10min): www.youtube.com/watch?v=CxG...
参考文献 [1] Adding conditional control to text-to-image diffusion models, ICCV'23 [2] T2i-adapter: Learning adapters to dig out more controllable ability for text-to-image diffusion models, arXiv preprint arXiv:2302.08453 [3] Humansd: A native skeleton-guided diffusion model for human image generation, ICCV'23 [4] Monosdf: Exploring monocular geometric cues for neural implicit surface reconstruction, NeurIPS'22 [5] Sdxl: Improving latent diffusion models for high-resolution image synthesis, arXiv preprint arXiv:2307.01952