admin管理员组

文章数量:1589959

InteractDiffusion:文本到图像扩散模型中的交互控制,CVPR2024

paper:CVPR 2024 Open Access Repository (thecvf)

code:jiuntian/interactdiffusion: [CVPR 2024] Official repo for "InteractDiffusion: Interaction-Control for Text-to-Image Diffusion Model". (github)

阅读

介绍

这项工作研究了利用人与物体交互(HOI)信息调节 T2I 扩散模型的问题,首次将交互控制引入扩散模型。该信息由三元组标签(人、动作、物体)和相应的边界框组成。提出了一种可插拔的交互控制模型 InteractDiffusion,扩展了现有的预训练的 T2I 扩散模型,能够控制现有 T2I 扩散模型生成的交互和位置。具体来说,对 HOI 信息进行标记,并通过交互嵌入来了解它们的关系。训练调节自注意力层将 HOI 标记映射到视觉标记,从而在现有 T2I 扩散模型中更好地调节视觉标记。

 

  • 为了向扩散模型提供调节信息,将每个交互对视为 HOI 三元组,转换为标记表示,包含位置、大小和类别标签的信息。为每个 HOI 三元组生成三个不同的标记,即主题、动作和对象标记。虽然主体和客体标记都包含有关位置、大小和对象类别的信息,但动作标记包括交互的位置及其类别标签。
  • 关键在于对多个交互的令牌之间的关系进行编码,token来自不同的交互实例,并且在交互实例中具有不同的角色。因此本文提出实例嵌入和角色嵌入(instance embedding and role embedding)来对相同交互的令牌进行分组,并在语义上嵌入它们的角色(embed their role semantically)。
  • Transformer 模块由自注意力层和交叉注意力层组成,作者在这两者之间添加了一个新的交互自注意力层,以将交互令牌合并到现有的 T2I 模型中。这有助于在训练期间保留原始模型,同时纳入额外的交互调节信息。

有关概念:

  • 人与物体交互 (HOI) :通过边界框定位交互的人类和物体对,并以三元组形式对这些物体及其交互进行分类(例如,人、喂食、猫)
  • 控制图像生成 T2I :扩散模型通常利用 CLIP 等预训练语言模型来指导图像扩散过程,生成的内容由提供的文本标题控制。然而,单独的文本标题通常不足以控制生成的内容,比如创建特定内容(例如对象位置和布局、场景深度图、人体姿势、边界线和交互)时。虽然通过对象布局和图像控制图像生成通常可以产生更好的结果,但忽略了对象之间的交互。

方法

先验知识

目标:训练一个扩散模型 fθ(z,c,d) 来生成基于交互条件 d 和文本描述条件 c 的图像,其中 z 是初始噪声。LDM 分为两个阶段以降低计算复杂度。它首先通过双向投影将图像 x 从像素空间投影到潜在空间,作为潜在表示 z,然后在潜在空间中,用潜在表示 z 训练扩散模型 fθ(z,c)。本文重点在第二阶段,仅关注用交互(interaction)来对扩散模型进行条件控制。

LDM 学习了一个固定的长度为 T 的马尔可夫链的反向过程,可解释为等权重的去噪自动编码器序列 ϵθ(zt,t),被训练用于预测输入 zt​ 的去噪版本,其中 zt​ 是输入 z 的带噪版本。无条件目标可以表示为:

在 LDM 中进行条件控制时,为了用多种模态(如文本描述)来对扩散模型进行条件控制,在UNet主干上添加了一个交叉注意力机制。条件输入表示为 y,编码器 τθ(⋅) 将 y 投影为中间的标记表示 τθ(y)。 Stable Diffusion 使用一个 CLIP 编码器 τθ​(⋅) 将文本描述 y 投影为77个文本嵌入,即 τθ(y)。Stable Diffusion 的条件目标:

图 2.InteractDiffusion总体框架。可插拔交互模块 I 无缝地将交互信息整合到现有的文本到图像扩散模型中(左图)。所提出的模块 I(右图)包括交互分词器(Interaction Tokenizer),其将交互信息转换为有意义的标记;交互嵌入(Interaction Embedding),结合复杂的交互关系;以及交互自注意力(Interaction Self-Attention),将交互控制信息整合到现有T2I模型的视觉Tokens中。
 

Interaction Tokenizer (InToken)

将交互条件 d 定义为三元组标签〈主体 s,动作 a 和客体 o〉(〈subject s, action a, and object o 〉),以及对应的边界框〈bs​,ba​ 和 bo​〉。用主体和客体的边界框来描述它们的位置和大小,并引入一个动作边界框来指定动作的空间位置。例如,一个主体(如女性、男孩)对某个特定客体(如手提包、球)执行特定动作(如携带、踢)。为了获得动作边界框,定义“between”操作,应用于主体和客体的边界框。假设 bs​ 和 bo​ 由角点坐标 [αi,βi] 指定,则对 bs 和 bo​ 进行“between”操作以获得 ba​ 的公式为:

 Rk​(⋅) 是其参数的第 k 个升序排名。图3为“between”操作的结果示例:

对图像的交互条件输入为:

主体和客体标记

首先将文本标签和边界框预处理为中间表示。用预训练的CLIP文本编码器对主体、动作和客体的文本进行编码,得到代表性的文本嵌入,并使用傅里叶嵌入(Fourier embedding)对它们各自的边界框进行编码。为了生成主体和客体标记 hs,ho​,用一个ObjectMLP(·) 来融合这些信息:

动作标记:训练了一个单独的多层感知器 ActionMLP(·),因为动作在语义上与主体和客体有所不同:

将交互条件输入 d 转换为一个标记三元组 h,标记 hs​、ha​、ho​ 分别被嵌入(如图2所示):

其中 InToken(·) 是方程 (5) 至 (7) 的组合,如图4所示。

Interaction Embedding (InBedding)

对于多个交互实例,所有标记 ​ 也分别嵌入。因此,有必要根据交互实例对这些标记进行分组,并在每个交互实例中指定标记的不同角色。

Segment Embedding通过为标记添加可学习的嵌入,来将文本序列中的单词分段,并捕获段间关系。本文进行了扩展,将标记分组成三元组。为交互实例添加了一个新的实例嵌入 q∈{q1,…,qN},对应于交互实例 h∈{h1,…,hN},其公式为:ei=hi+qi

其中,所有相同实例中的标记共享相同的实例嵌入。这将所有标记分组到交互实例或三元组中。此外,三元组中的每个标记都有不同的角色。因此通过三个角色嵌入 r∈{rs,ra,ro} 来嵌入它们的角色,从而形成最终的实体标记 ei​:

 

rs​、ra​ 和 ro​ 分别代表主体、动作和客体的角色嵌入。所有实例中相同角色的标记共享相同的角色嵌入。通过将实例嵌入和角色嵌入添加到交互实体标记 hi​ 中(如图5所示),能够编码复杂的交互关系,即指定标记的角色和交互实例。

图 5.交互嵌入。可学习的实例嵌入 q 和角色嵌入 r 被添加到 token 中,以表示主体 s、动作 a 和对象 o 之间复杂的交互关系。

Interaction Transformer (InFormer)

目标:以最小的成本将交互控制加入 T2I 模型中。,关键是保存训练好的知识。v =[v1,…,vM ] 表示为图像的视觉特征标记,将 c 表示为标题标记,其中 。在 LDM 模型中,Transformer 块由两个注意力层组成: (i) 视觉标记的自注意力层和 (ii) 对视觉标记和标题标记之间的注意力进行建模的交叉注意力层:

Interaction Self-Attention:

遵循 GLIGEN,冻结原有的两个注意力层,并在它们之间引入了一个新的门控自注意力层,称为 Interaction Self-Attention(图6)。目的是将交互条件添加到现有的 Transformer 模块中。不同于GLIGEN,本文对视觉和交互标记的拼接向量  计算自注意力,重点关注交互关系:

TS(⋅)是一个标记切片操作,用于仅保留视觉标记的输出并切掉其他部分(如图6所示),η 是超参数,用于控制门控交互自注意力的激活,并且是一个零初始化的可学习比例因子。方程 (12) 是在方程 (11) 的两个部分之间执行的。

总结来说,交互自注意力将交互信息(包括交互、主体和客体的边界框)转化为视觉标记。

图 6. 在视觉标记自注意力和视觉标题交叉注意力之间添加交互自注意力,以合并交互条件。

Scheduled Sampling

训练和推理中,在方程 (12) 中设 η=1,。但有时新增的交互自注意力可能会对现有的 T2I 模型产生次优效果(如非自然概念的渲染较差)。因此在交互自注意力层上添加了对采样间隔的控制,可以平衡文本描述和交互控制的程度。

Scheduled Sampling方案在推理时,由一个超参数 ω∈[0,1] 控制。它定义了扩散步骤中受交互控制影响的比例,公式如下:

Interaction-conditional Diffusion Model

将 InToken、InBedding 和 InFormer 结合成可插拔的交互模块。采用LDM训练目标(方程(2))。将新添加的参数表示为,扩散模型定义为 ,其中额外的交互信息由interaction tokenizer处理。总体训练目标:

实验

以 512x512 分辨率训练和评估模型。用基于 StableDiffusion v1.4 的预训练 GLIGEN 模型来初始化模型。训练用 5e-5 的恒定学习率以及 Adam 优化和初始 10k 迭代的线性预热。在 2 个 NVIDIA GeForce RTX 4090 GPU 上运行了 50 万次迭代,bs为 8(≈ 106 epoch),大约 160 小时。用 2 的梯度累积步骤,批大小为 16。

数据集: HICODET 。包含 47,776 张图像:38,118 张用于训练,9,658 张用于测试。包含 151,276 个 HOI 注释:117,871 个用于训练,33,405 个用于测试。 HICO-DET 包括由 80 个对象类别和 117 个动词类别构成的 600 种 HOI 三元组。

提取测试集中的注释作为输入来生成交互图像,然后用 FGAHOI 对生成的图像进行 HOI 检测。

图 7. 视觉比较。用“a person {action} a {object}”的文本标题格式。输入行和标题行代表交互条件,每个交互对都用一条线将它们连接起来,并且颜色不同。 GT 代表真实图像。

图 8 显示了与 StableDiffusion 和 GLIGEN* 相比,InteractDiffusion 如何对同一对象呈现不同的动作。InteractDiffusion 可以生成各种交互组合,保持人与物体之间交互的连贯性和自然性。

复现

官方提供的environment.yml里有一些库没注明使用的版本,安装时会自动下载最新版本,导致torch版本混乱,需要手动指定较低版本,标注如图:

以及numpy要降版本到1.24.4

下载:openai/clip-vit-large-patch14 at main (huggingface.co)

如果能直接连到huggingface可忽略

运行inference.py,需要修改的信息在mete_list中:

        dict(
            # ckpt="ckpt.pth",  # 下载的权重文件路径
            prompt="a person is feeding a cat",  # 提示词
            subject_phrases=['person'],          # subject
            object_phrases=['cat'],              # action
            action_phrases=['feeding'],          # object
            subject_boxes=[[0.0332, 0.1660, 0.3359, 0.7305]],  # subject边界框
            object_boxes=[[0.2891, 0.4766, 0.6680, 0.7930]],   # object边界框
            alpha_type=[0.9, 0.0, 0.1],
            save_folder_name="/data/interactdiffusion/output"  # 结果保存路径
        ),

生成结果:

 

(说实话感觉视觉效果不算很好)

本文标签: 论文InteractionInteractDiffusioncontrolModels