在深度学习领域,扩散模型(diffusion models)因其能够根据文本描述生成高质量图像而备受关注。然而,这些模型在精确编辑图像中对象的布局、位置、姿态和形状方面仍存在挑战。本文提出了一种名为“运动引导”(motion guidance)的零样本技术,允许用户指定密集的复杂运动场,以指示图像中每个像素的移动方向。通过结合现成的光流网络,运动引导通过梯度引导扩散采样过程,实现对图像的精确编辑。
方法
在扩散模型中引入引导技术是为了在图像生成过程中实现更精确的控制。该技术的原理为通过向去噪估计中添加来自损失函数的梯度信息,来微调生成的样本。分类器引导是这种方法的一个实例,它利用分类器的梯度来指导样本生成,使其更符合特定的分类目标。
为了增强引导信号,研究者们在损失函数中加入了额外的项,这允许在去噪过程中考虑更多的条件信息。损失函数中不同项的权重可以动态调整,以优化生成样本的质量。这种方法的一个关键优势是它的通用性,可以适用于多种类型的扩散模型,从而实现对图像的精细控制。
递归去噪是提高引导效率的策略之一,通过在去噪的每一步重复应用引导,有助于提高样本的质量和引导的稳定性。然而,引导技术也带来了一些挑战,包括优化过程中可能的不稳定性,以及对损失函数设计和权重选择的敏感性。尽管存在这些挑战,引导技术为图像编辑和生成提供了强大的工具,尤其是在需要精确控制图像内容时。
研究者们提出了一种新颖的方法,允许用户通过指定复杂的运动场来精确编辑图像中对象的布局、位置、姿态和形状。这种方法利用了现成的光流网络来引导扩散模型的采样过程,实现了对图像的精细控制。
研究者们设计了一个指导损失函数,该函数基于用户指定的运动场来衡量生成图像与期望运动的一致性。通过最小化这个损失函数,可以引导图像编辑过程,使得生成的图像在视觉上与源图像相似,同时满足特定的运动要求。损失函数包括两部分:一部分是流损失,用于确保图像中的像素按照指定的运动场移动;另一部分是颜色损失,用于保持图像编辑过程中的颜色一致性。
为了实现运动引导,研究者们采用了一个可微分的光流估计器来计算源图像和生成图像之间的运动。在每个扩散采样步骤中,他们估计了生成图像与源图像之间的运动,并测量了实际运动与用户指定运动场之间的偏差。然后,通过在损失函数中加入这些偏差的梯度,实现了对生成过程的引导。
研究者们还引入了一个掩码来处理遮挡问题,确保在对象移动并遮挡背景像素时,颜色损失不会对这些区域产生负面影响。通过这种方式,运动引导技术能够在保持源图像视觉质量的同时,实现对图像中对象的精确操控。
在实现运动引导方面,研究者们采取了一系列技术手段来确保高质量和高效率的图像编辑过程。这些技术手段主要包括以下几个方面:
处理遮挡问题:在对象移动时可能会遮挡背景像素,这些像素在生成图像中没有直接对应的点。为了解决这个问题,研究者们引入了遮罩技术,通过分析目标流来确定哪些区域会被遮挡,并在这些区域中忽略颜色损失,以避免不自然的图像效果。
编辑掩码的构建:为了精确控制图像编辑的范围,研究者们开发了一种自动构建编辑掩码的方法。这个掩码标识了需要根据运动场进行编辑的像素区域,允许模型在这些区域内应用运动引导,而在其他区域则保留源图像的内容。
噪声图像的处理:由于光流网络通常只在干净图像上训练,研究者们采用了一种技术来适应噪声图像。通过计算对干净图像的一步近似的引导函数的梯度,使得即使在噪声存在的情况下也能有效地进行引导。
递归去噪:为了提高优化的稳定性和图像质量,研究者们采用了递归去噪技术。这种方法通过重复去噪步骤多次,使得模型能够更细致地调整图像,从而提高最终结果的质量和一致性。
引导梯度裁剪:为了防止在优化过程中出现不稳定现象,研究者们实施了梯度裁剪策略。通过限制梯度的大小,可以减少引导过程中可能发生的剧烈变化,从而提高生成过程的稳定性。
运动引导的实现:研究者们将运动引导函数集成到了扩散模型的去噪步骤中。在每个去噪步骤中,模型不仅考虑如何去除噪声,还要考虑如何根据用户指定的运动场调整像素,以实现运动引导。
用户界面的开发:为了提高运动引导技术的可用性,研究者们开发了一个图形用户界面,允许用户通过直观的操作来指定运动场。这个界面支持平移、旋转、缩放和复杂变形等操作,极大地简化了运动场的创建过程。
通过这些技术手段的结合,研究者们成功实现了一种灵活且强大的图像编辑方法,它不仅能够处理复杂的运动编辑任务,还能够保持图像的高质量和自然性。
结果
研究者选用了RAFT作为光流模型,该模型能够精确估计两幅图像之间的像素运动。为了构建目标流场,他们采用了基础流的组合,并利用分割模型生成掩码,确保流场仅作用于图像的特定区域。在超参数的选择上,研究者确定了颜色损失和流损失的权重,并应用了全局权重和梯度裁剪阈值来优化引导过程。
实验设置中,研究者采用了Stable Diffusion v1.4模型,并在单个NVIDIA A40 GPU上进行操作,生成512×512分辨率的图像。他们还开发了一个图形用户界面,使用户能够通过直观的点击和拖动来创建复杂的流场。在去噪过程中,研究者采用了递归去噪技术,并发现在去噪的最后阶段关闭引导可以提高图像质量。
为了适应Stable Diffusion模型的潜在空间,研究者对编辑掩码进行了下采样处理。他们还制定了一个指导计划,在去噪的前期阶段应用引导,而在后期阶段则关闭引导,以便模型能够集中于生成高质量的细节。
为了理解各个组件对最终结果的贡献,研究者进行了消融实验,移除了关键组件并展示了它们对结果的影响。例如,他们展示了在没有递归去噪、颜色损失或流损失时的编辑结果,以及没有遮挡掩码时的影响。
研究者将他们的运动引导技术与其他几种基线方法进行了比较,包括InstructPix2Pix、SDEdit和RePaint等。通过直观的示例,展示了不同方法在处理相同任务时的效果差异,并强调了运动引导技术相对于这些方法的优势。
研究者使用了两个指标来评估方法的性能:流损失(Flow Loss)和CLIP相似度(CLIP Similarity)。他们在两个不同的数据集上进行了评估,结果显示运动引导技术在满足目标流和保持源图像忠实度之间提供了一个有吸引力的权衡。
研究者探讨了在难以手动指定流时,如何将视频中提取的运动应用到图像上。通过几个示例,展示了即使提取的流与目标图像不完全重叠,也能实现所需的运动。这表明了运动引导技术在运动转移方面的潜力。
尽管运动引导技术在多个方面表现出色,但它仍然面临着采样速度慢、优化过程中的不稳定性以及对特定目标流的局限性等问题。未来的研究需要在提高算法效率、增强模型鲁棒性以及拓展技术适用性方面进行更深入的探索。
论文链接:https://arxiv.org/abs/2401.18085