论文: https://arxiv.org/abs/2305.10973
合成满足用户需求的视觉内容通常需要对生成对象的姿态、形状、表情和布局进行灵活和精确的可控性。现有的方法通过手动注释的训练数据或先验的3D模型来获得生成对抗网络(GANs)的可控性,但这些方法通常缺乏灵活性、精确性和通用性。在本文中,我们研究了一种强大但很少被探索的控制GANs的方式,即以用户交互的方式“拖动”图像中的任何点,精确地达到目标点,如图1所示。为了实现这一目标,我们提出了DragGAN,它由两个主要组件组成:1)基于特征的运动监督,驱动控制点向目标位置移动;2)一种新的点跟踪方法,利用判别性生成器特征来定位控制点的位置。通过DragGAN,任何人都可以通过精确控制像素的位置来变形图像,从而操纵各种类别(如动物、汽车、人物、风景等)的姿态、形状、表情和布局。由于这些操作是在GAN的学习生成图像流形上执行的,它们往往能够产生逼真的输出,即使对于具有挑战性的情况,如产生被遮挡内容和变形的形状,仍能保持物体的刚性。定性和定量比较结果表明,在图像操作和点跟踪任务中,DragGAN相对于先前的方法具有优势。我们还展示了通过GAN反演对真实图像的操作示例。
深度生成模型,例如生成对抗网络(GANs)[Goodfellow et al. 2014],在合成随机逼真图像方面取得了前所未有的成功。在现实世界的应用中,这类基于学习的图像合成方法的一个关键功能要求是对合成的视觉内容具有可控性。例如,社交媒体用户可能希望调整随意拍摄照片中人物或动物的位置、形状、表情和身体姿势;专业电影预览和媒体编辑可能需要高效地创建具有特定布局的场景草图;汽车设计师可能希望交互地修改他们的作品的形状。为了满足这些多样化的用户需求,理想的可控图像合成方法应具备以下特性:1)灵活性:能够控制生成对象或动物的不同空间属性,包括位置、姿势、形状、表情和布局;2)精度:能够高精度地控制空间属性;3)通用性:适用于不同的对象类别,而不仅限于某个特定类别。尽管先前的工作只满足了这些特性中的一个或两个,但我们的目标是在本文中实现全部特性。
大多数先前的方法通过先验的3D模型[Deng et al. 2020;Ghosh et al. 2020;Tewari et al. 2020]或依赖于手动注释数据的监督学习[Abdal et al. 2021;Isola et al. 2017;Ling et al. 2021;Park et al. 2019;Shen et al. 2020]来获得GAN的可控性。因此,这些方法无法推广到新的对象类别,通常只能控制有限范围的空间属性,或者在编辑过程中提供很少的控制。最近,文本引导的图像合成引起了关注[Ramesh et al. 2022;Rombach et al. 2021;Saharia et al. 2022]。然而,文本引导在编辑空间属性方面缺乏精度和灵活性。例如,它不能用于将对象移动指定数量的像素。
为了实现GAN的灵活、精确和通用的可控性,在本文中,我们探索了一种强大但较少探索的交互式基于点的操作。具体而言,我们允许用户在图像上单击任意数量的控制点和目标点,目标是驱动控制点达到其对应的目标点。如图1所示,这种基于点的操作允许用户控制多
样化的空间属性,并且与对象类别无关。与我们最接近的设置是UserControllableLT[Endo 2022],它也研究了基于拖动的操作。与它相比,本文研究的问题具有两个更大的挑战:1)我们考虑多个点的控制,而他们的方法处理不好;2)我们要求控制点精确地达到目标点,而他们的方法则不要求。正如我们将在实验证明的,处理多个具有精确定位控制的点可以实现更多样化和准确的图像操作。
为了实现这种交互式基于点的操作,我们提出了DragGAN,它解决了两个子问题,包括1)监督控制点向目标移动和2)跟踪控制点,使得在每个编辑步骤中都知道它们的位置。我们的技术建立在这样一个关键观点上,即运动监督和精确点跟踪都是可以通过优化潜在代码来实现的。具体而言,运动监督是通过一个偏移特征补丁损失来实现的,该损失优化了潜在代码。每一次优化步骤都会使控制点更接近目标点;因此,点跟踪则通过在特征空间中进行最近邻搜索来执行。此优化过程重复进行,直到控制点达到目标点。DragGAN还允许用户可选择地绘制感兴趣区域以执行区域特定的编辑。由于DragGAN不依赖于像RAFT[Teed and Deng 2020]这样的额外网络,它实现了高效的操作,在大多数情况下在单个RTX 3090 GPU上只需几秒钟。这使得用户可以进行实时的交互式编辑会话,可以快速迭代不同的布局,直到达到所需的输出。
我们在包括动物(狮子、狗、猫和马)、人类(面部和整个身体)、汽车和风景等各种数据集上对DragGAN进行了广泛的评估。如图1所示,我们的方法有效地将用户定义的控制点移动到目标点,实现了许多对象类别上的多样化操作效果。与传统的形状变形方法只应用变形[Igarashi et al. 2005]相比,我们的变形是在GAN的学习图像流形上进行的,它倾向于遵循底层的对象结构。例如,我们的方法可以虚拟出被遮挡的内容,如狮子口中的牙齿,并且可以根据对象的刚性进行变形,如马腿的弯曲。我们还为用户开发了一个图形用户界面,使其可以通过简单地在图像上点击来交互地进行操作。定性和定量的比较验证了我们的方法相对于UserControllableLT的优势。此外,我们基于GAN的点跟踪算法也优于现有的点跟踪方法,如RAFT[Teed and Deng 2020]和PIPs[Harley et al. 2022],适用于GAN生成的帧。此外,通过与GAN反演技术相结合,我们的方法还成为实际图像编辑的强大工具。
大多数当前方法使用生成对抗网络(GAN)或扩散模型进行可控图像合成。
无条件的GAN 。GAN是一种生成模型,它将低维随机采样的潜在向量转化为照片般逼真的图像。它们使用对抗性学习进行训练,可以生成高分辨率的照片般逼真的图像[Goodfellow et al. 2014; Creswell et al. 2018; Karras et al. 2021, 2019]。大多数GAN模型,如StyleGAN[Karras et al. 2019],不能直接实现对生成图像的可控编辑。
有条件的GAN 。一些方法提出了有条件的GAN来解决这个限制。在这种情况下,网络除了接收随机采样的潜在向量之外,还接收到一个条件输入,例如分割图[Isola et al. 2017; Park et al. 2019]或3D变量[Deng et al. 2020; Ghosh et al. 2020],以生成照片般逼真的图像。EditGAN[Ling et al. 2021]不同于对条件分布建模,它首先对图像和分割图的联合分布建模,然后计算与编辑后的分割图相对应的新图像。
使用无条件的GAN进行可控性编辑。 有几种方法被提出用于通过操作输入的潜在向量来编辑无条件的GAN。一些方法通过从手动注释或先前的3D模型进行监督学习来找到有意义的潜在方向[Abdal et al. 2021; Leimkühler and Drettakis 2021; Patashnik et al. 2021; Shen et al. 2020; Tewari et al. 2020]。其他方法以无监督的方式计算潜在空间中重要的语义方向[Härkönen et al. 2020; Shen and Zhou 2020; Zhu et al. 2023]。最近,通过引入中间的“斑点”[Epstein et al. 2022]或热图[Wang et al. 2022b],实现了对粗糙对象位置的可控性。所有这些方法要么实现对齐的图像语义属性(如外观)的编辑,要么实现粗略的几何属性(如对象位置和姿态)的编辑。虽然Editing-in-Style[Collins et al. 2020]展示了一些空间属性编辑的能力,但它只能通过在不同样本之间传递局部语义来实现。与这些方法不同,我们的方法允许用户使用基于点的编辑对空间属性进行精细控制。
GANWarping[Wang et al. 2022a]也使用了基于点的编辑,然而,它们只能实现超出分布的图像编辑。可以使用几个经过变形的图像来更新生成模型,以使所有生成的图像展示类似的变形。然而,该方法不能确保变形产生逼真的图像。此外,它不能实现诸如改变对象的3D姿势等控制。与我们类似,UserControllableLT[Endo 2022]通过转换GAN的潜在向量实现基于点的编辑。然而,该方法仅支持使用在图像上拖动的单个点进行编辑,并且不能很好地处理多点约束。此外,控制不是很精确,即在编辑后,目标点通常无法到达。
具有3D感知的GAN。 一些方法修改GAN的架构以实现3D控制[Chan et al. 2022, 2021; Chen et al. 2022; Gu et al. 2022; Pan et al. 2021; Schwarz et al. 2020; Tewari et al. 2022; Xu et al. 2022]。在这种情况下,模型生成可以使用基于物理的分析渲染器进行渲染的3D表示。然而,与我们的方法不同,控制仅限于全局姿势或光照。
扩散模型。 最近,扩散模型[Sohl-Dickstein et al. 2015]实现了高质量的图像合成[Ho et al. 2020; Song et al. 2020, 2021]。这些模型通过迭代去噪随机采样的噪声来创建逼真的图像。最近的模型展示了在文本输入条件下的表达性图像合成[Ramesh et al. 2022; Rombach et al. 2021; Saharia et al. 2022]。然而,自然语言无法对图像的空间属性进行精细控制,因此,所有基于文本的方法仅限于高级语义编辑。此外,当前的扩散模型速度较慢,因为它们需要多次去噪步骤。虽然在高效采样方面取得了一些进展,但GAN仍然显著更高效。
在视频中追踪点的一种常见方法是通过估计相邻帧之间的光流。光流估计是一个经典问题,用于估计两个图像之间的运动场。传统方法通过手工设计的准则解决优化问题[Brox and Malik 2010; Sundaram et al. 2010],而基于深度学习的方法由于性能更好而在最近几年开始主导领域[Dosovitskiy et al. 2015; Ilg et al. 2017; Teed and Deng 2020]。这些基于深度学习的方法通常使用具有光流真值的合成数据来训练深度神经网络。其中,现在最广泛使用的方法是RAFT[Teed and Deng 2020],它通过迭代算法估计光流。最近,Harley等人[2022]将这种迭代算法与传统的“粒子视频”方法相结合,形成了一种名为PIPs的新的点追踪方法。PIPs考虑了多个帧之间的信息,因此在处理长程追踪方面比以前的方法更好。
在这项工作中,我们展示了可以在不使用上述任何方法或额外的神经网络的情况下对GAN生成的图像进行点追踪。我们揭示了GAN的特征空间具有足够的区分性,可以通过特征匹配简单地实现追踪。虽然一些先前的工作也利用了语义分割中的区分性特征[Tritrong et al. 2021; Zhang et al. 2021],但我们是首次将基于点的编辑问题与区分性GAN特征的直觉联系起来并设计了一种具体的方法。摒弃额外的追踪模型使我们的方法能够更高效地运行,以支持交互式编辑。尽管我们的方法简单,但在实验证明它在点追踪方面优于包括RAFT和PIPs在内的最先进方法。
本工作旨在开发一种交互式图像操作方法,用户只需点击图像即可定义一些(控制点,目标点)对,并使控制点达到其对应的目标点。我们的研究基于StyleGAN2架构[Karras et al. 2020]。下面我们简要介绍这个架构的基础知识。
StyleGAN术语。 在StyleGAN2架构中,将一个512维的潜在向量 ∈ N ( 0 , ) ∈ N (0, ) z∈N(0,I) 通过映射网络映射为一个中间潜在向量 ∈ R 512 ∈ R^{512} w∈R512。所在的空间通常被称为 W W W。然后, w被送入生成器以生成输出图像 I = ( ) I = () I=G(w)。在这个过程中,被多次复制并送入生成器 G的不同层,以控制不同级别的属性。或者,也可以为不同的层使用不同的,这样输入将为 ∈ R × 512 = W + ∈ R^{×512} = W^+ w∈Rl×512=W+,其中 l是层数。这个较不受限制的W+空间被证明更具表达能力[Abdal et al. 2019]。由于生成器 G学习了从低维潜在空间到高维图像空间的映射,因此可以看作是对图像流形的建模[Zhu et al. 2016]。
我们的图像操作流程概述如图2所示。对于由具有潜在向量的GAN生成的任何图像 I ∈ R 3 × × I ∈ R^{3× ×} I∈R3×H×W,我们允许用户输入一些控制点 ( = ( , , , ) ∣ = 1 , 2 , . . . , ) (_ =(_{,}, _{,})| = 1, 2, ..., ) (pi=(xp,i,yp,i)∣i=1,2,...,n)及其对应的目标点 ( = ( , , , ) ∣ = 1 , 2 , . . . , ) (_ =(_{,}, _{,})| = 1, 2, ..., ) (ti=(xt,i,yt,i)∣i=1,2,...,n)(即 _ pi的对应目标点是 _ ti)。目标是移动图像中的物体,使得控制点的语义位置(例如图2中的鼻子和下巴)达到其对应的目标点。我们还允许用户可选择性地绘制二值掩码 M,表示图像中可移动的区域。
根据这些用户输入,我们以优化的方式进行图像操作。如图2所示,每个优化步骤包含两个子步骤,包括1)运动监督和2)点追踪。在运动监督中,使用使控制点向目标点移动的损失函数来优化潜在向量。经过一次优化步骤,我们得到一个新的潜在向量 ′ ' w′和一个新的图像 I ′ I' I′。这次更新会导致图像中物体的轻微移动。需要注意的是,运动监督步骤仅使每个控制点向目标点移动了一小步,但步长的确切大小不明确,因为它受复杂的优化动态影响,对于不同的物体和部分可能会有所不同。因此,我们更新控制点的位置 {_ } pi以追踪物体上的相应点。这个追踪过程是必要的,因为如果不能准确追踪控制点(例如狮子的鼻子),那么在下一次运动监督步骤中,将会监督错误的点(例如狮子的脸),导致不希望的结果。追踪完成后,我们基于新的控制点和潜在向量再次进行上述优化步骤。这个优化过程持续进行,直到控制点 {_ } pi达到目标点 t t_ ti的位置,这在我们的实验中通常需要30-200次迭代。用户也可以在任何中间步骤停止优化。编辑完成后,用户可以输入新的控制点和目标点,并继续编辑,直到对结果满意为止。
对于GAN生成的图像如何监督点的运动,在之前并没有进行过多的探索。在本工作中,我们提出了一种运动监督损失,它不依赖于任何额外的神经网络。关键思想是生成器的中间特征非常有辨别力,因此简单的损失函数足以监督运动。具体而言,我们考虑StyleGAN2第6个块之后的特征图 F,由于在分辨率和辨别力之间取得了良好的平衡,因此它在所有特征中表现最好。我们通过双线性插值将 F 调整为与最终图像具有相同的分辨率。如图3所示,为了将控制点移动到目标点 _ ti,我们的思想是监督围绕 p p_ pi的一个小区域(红色圆圈)向 _ ti移动一小步(蓝色圆圈)。我们用 Ω 1 ( p , 1 ) Ω_1(p_, _1) Ω1(pi,r1)表示距离小于 1 _1 r1的像素,那么我们的运动监督损失为:
其中,F()表示像素处的特征值, = − / ∥ − ∥ 2 _ = _ − _ /∥_ − _ ∥_2 di=ti−pi/∥ti−pi∥2是从指向的归一化向量(如果 = ,则 = 0),而F0是对应于初始图像的特征图。注意,第一项是对所有控制点{}求和。由于 + 的分量不是整数,我们通过双线性插值获得F( + )。重要的是,在使用此损失进行反向传播时,梯度不会通过F()进行反向传播。这将促使移动到 + ,但不会反过来。如果给定二进制掩码M,则通过重建损失将未掩码的区域固定,作为第二项显示。在每个运动监督步骤中,此损失用于优化一个步骤的潜在代码。可以在W空间或W+空间中进行优化,具体取决于用户是否希望获得更受限制的图像流形。由于W+空间更容易实现超出分布的操作(例如,图16中的猫),我们在这项工作中使用W+以获得更好的可编辑性。在实践中,我们观察到图像的空间属性主要受到前6层的的影响,而剩余的层只影响外观。因此,受到样式混合技术的启发[Karras et al. 2019],我们只更新前6层的,同时固定其他层以保留外观。这种选择性优化导致图像内容的微小移动,达到了预期的效果。
前面的运动监督得到了一个新的潜在代码 w、新的特征图 F F F以及新的图像 I I I。由于运动监督步骤并不能直接提供控制点的精确新位置,我们的目标是更新每个控制点,使其跟踪对象上的相应点。通常,点追踪可以通过光流估计模型或粒子视频方法进行[Harley et al. 2022]。然而,这些额外模型会显著影响效率,并且在存在GAN中的伪影等问题时可能会积累误差。因此,我们为GAN提出了一种新的点追踪方法。关键是GAN的辨别特征很好地捕捉了密集的对应关系,因此可以通过特征块中的最近邻搜索有效地进行追踪。具体而言,我们将初始控制点的特征表示为 = F 0 ( ) _ = F_0() fi=F0(pi)。我们将周围的区域表示为 Ω 2 ( , 2 ) = ( , ) ∣ ∣ − , ∣ < 2 , ∣ − , ∣ < 2 Ω_2(_,_2) = {(, ) | | − _{,} | < _2, | − _{,} | < _2} Ω2(pi,r2)=(x,y)∣∣x−xp,i∣<r2,∣y−yp,i∣<r2。然后,通过在特征块的区域 Ω 2 ( , 2 ) Ω_2(_,_2) Ω2(pi,r2)中搜索的最近邻,获得追踪点:
L ι i : = arg min ∥ F ′ ( q i ) − f i ∥ 1 , q i ∈ Ω 2 ( p i , r 2 ) \ \begin{aligned} \boldsymbol{\mathcal{L}} \iota_{i}:=\operatorname{arg}\operatorname*{min}\|\mathbf{F}^{\prime}(\boldsymbol{q}_{i})-f_{i}\|_{1}, \\ \boldsymbol{q_{i}\in\Omega_{2}(p_{i},r_{2})} \end{aligned} \ Lιi:=argmin∥F′(qi)−fi∥1,qi∈Ω2(pi,r2)
通过这种方式,将更新为跟踪对象。对于多个控制点,我们对每个点应用相同的过程。注意,这里我们也考虑了StyleGAN2的第6个块之后的特征图 F ′ F′ F′。特征图的分辨率为256×256,如果需要,将进行双线性插值以与图像具有相同的大小,这在我们的实验中足以进行准确的跟踪。我们将在第4.2节对此选择进行分析。
我们基于PyTorch [Paszke et al. 2017] 实现了我们的方法。我们使用Adam优化器 [Kingma and Ba 2014] 来优化潜在代码,对于FFHQ [Karras et al. 2019]、AFHQCat [Choi et al. 2020] 和 LSUN Car [Yu et al. 2015] 数据集,步长为2e-3;对于其他数据集,步长为1e-3。超参数设置为 = 20,1 = 3,2 = 12。在我们的实现中,当所有控制点与其相应目标点的距离不超过像素时,我们停止优化过程,其中对于不超过5个控制点设置为1,否则设置为2。我们还开发了一个图形用户界面(GUI)来支持交互式图像操作。由于我们方法的计算效率,用户只需等待几秒钟即可进行每个编辑操作,并且可以持续编辑直到满意。我们强烈建议读者参考补充视频,观看交互会话的实时记录。
数据集。 我们基于StyleGAN2 [Karras et al. 2020] 在以下数据集上进行评估(预训练的StyleGAN2的分辨率显示在括号中):FFHQ (512) [Karras et al. 2019],AFHQCat (512) [Choi et al. 2020],SHHQ (512) [Fu et al. 2022],LSUN Car (512) [Yu et al. 2015],LSUN Cat (256) [Yu et al. 2015],Landscapes HQ (256) [Skorokhodov et al. 2021],microscope (512) [Pinkney 2020],以及从[Mokady et al. 2022]中自我提取的数据集,包括Lion (512),Dog (1024)和Elephant (512)。
基准方法。 我们的主要基准方法是UserControllableLT [Endo 2022],其设置与我们的方法最接近。UserControllableLT不支持输入掩码,但允许用户定义一些固定点。因此,对于带有掩码输入的测试案例,我们在图像上采样一个16×16的规则网格,并将掩码外的点作为固定点传递给UserControllableLT。此外,我们还将与RAFT [Teed and Deng 2020] 和 PIPs [Harley et al. 2022] 进行对比以进行点追踪。为此,我们创建了两个基于我们的方法的变体,其中点追踪部分(第3.3节)被这两种跟踪方法替换。
掩码的效果。 我们的方法允许用户输入一个二进制掩码,表示可移动区域。我们在图8中展示了掩码的效果。当给定狗头的掩码时,其他区域几乎固定,只有头部移动。如果没有掩码,操作将使整个狗的身体移动。这也表明基于点的操作通常有多个可能的解,而GAN将倾向于在从训练数据学习到的图像流形中找到最接近的解决方案。掩码功能可以帮助减少歧义并保持某些区域固定。
超越分布的操作。 到目前为止,我们展示的基于点的操作都是“分布内”的操作,即在训练数据集的图像分布内可以满足操作要求。在图9中,我们展示了一些超越分布的操作。可以看出,我们的方法具有一定的外推能力,可以创建超出训练图像分布的图像,例如极度张开的嘴巴和大型轮子。在某些情况下,用户可能希望始终保持图像处于训练分布中,并防止达到这样的超越分布的操作。实现这一目标的一种潜在方法是对潜在代码添加额外的正则化项,但这并不是本文的重点。
局限性。 尽管具有一定的外推能力,我们的编辑质量仍受到训练数据的多样性的影响。如图14(a)所示,创建偏离训练分布的人体姿势可能会导致伪影。此外,纹理较少区域的控制点有时会在跟踪中出现更多漂移,如图14(b)©所示。因此,我们建议在可能的情况下选择纹理丰富的控制点。
社会影响。 由于我们的方法可以改变图像的空间属性,可能会被滥用来创建具有虚假姿势、表情或形状的真实人物图像。因此,任何使用我们方法的应用或研究都必须严格遵守人格权利和隐私规定。