
作者: Boxu Li
文本到图像扩散模型可以生成惊艳的视觉效果,但它们有一个臭名昭著的盲点:空间推理。当今最好的模型在场景中经常会错放物体,或者在要求特定布局时奇怪地将它们合并。例如,像“狗在泰迪熊的右边”这样的提示可能会让模型感到困惑——它可能会把狗放在左边,甚至将狗和泰迪熊融合在一起。这些任务对于小孩子来说很简单,但扩散模型经常在这些任务上失败[1]。当遇到不寻常的组合时(比如长颈鹿站在飞机上方),问题变得更加明显[1]。传统的解决方法包括使用特殊数据微调模型或在生成时添加手工制作的空间损失,但这两种方法都有缺点[1]。微调需要昂贵的再训练,并有改变模型创造力或风格的风险。而手工制作的损失则编码了我们对空间关系的不完美假设,常常导致次优结果。
进入 Learn-to-Steer,这是英伟达的一种新颖方法(将在 WACV 2026 上展示),通过直接从模型本身学习来解决空间推理问题。与其对物体的位置进行硬编码,不如教会模型如何在图像生成过程中自我引导,使用数据驱动的损失函数。在这篇博文中,我们将探讨扩散模型中空间推理的挑战,以及英伟达的 Learn-to-Steer 方法如何在幕后发挥作用。我们将深入研究其架构——包括它如何在推理时利用交叉注意力图和学习分类器——并评审在基准测试中的定量收益。我们还将批判性地审视在推理时优化的权衡(如计算成本和通用性),并考虑对提示保真度、多模态对齐以及生成模型设计未来的更广泛影响。
现代扩散模型,如 Stable Diffusion,可以绘制出细节惊人的照片级真实或幻想场景。然而,当要求简单的空间布局时,可能会让你失望。空间推理——理解和生成正确的相对位置(左/右、上/下、内/外)——仍然是一个难题。指定对象关系的提示往往会生成与请求不符的图像。例如,提示*“书架上的猫”*可能会生成一只在书架旁边的猫或一个超现实的猫-书架混合体。这是为什么呢?
一个原因是扩散模型从庞大的图像-文本数据集中学习,这些数据集中明确的空间关系很少或不明确。它们在风格和物体保真度上表现出色,但训练数据可能并未强烈强调每个物体应相对其他物体出现的位置。因此,模型对空间术语(“在上面”、“在右边”)的内部表示较弱。最近的基准测试证实,即使是最先进的文本到图像模型在涉及简单几何关系的空间任务上也很难表现出色。这些失败主要表现为三个问题:物体放置不当、提示中提到的物体缺失,或当模型试图将两件事物拼凑在一起时形成的融合物。在简而言之,模型往往知道你要的是什么,但不知道放在哪里。
现有的方法已经尝试解决这一差距。一些研究人员对具有已知布局或关系的图像进行扩散模型微调,有效地重新训练模型以具备空间感知能力。其他人则使用测试时干预:例如,通过额外的损失项来引导生成过程,这些损失项会对重叠进行惩罚或奖励正确的对象排序。然而,手动设计这种损失函数很棘手——这需要猜测如何利用模型的内部数据来衡量“左边”或“上方”。这些手工设计的损失可能适用于简单情况,但可能会编码次优的启发式方法,从而在更复杂的场景中失效[4]。同时,微调可以实现良好的空间精度(例如,COMPASS 方法使用空间对齐的数据重新训练模型[5]),但这非常耗费资源,并可能无意中降低其他图像质量(在某些情况下,微调空间关系后颜色准确性和对象计数能力变差[6])。因此,需要一种在不重新训练整个模型或依赖脆弱启发式方法的情况下,改善空间保真度的解决方案。

NVIDIA 的 Learn-to-Steer 框架提供了一种新颖的视角:与其强加规则,不如从模型自身的信号中学习规则[7]。关键的洞察在于扩散模型在生成过程中已经产生了丰富的内部数据——尤其是交叉注意力图——可以用来理解空间关系。在扩散去噪过程的每一步都会生成交叉注意力图,基本上告诉我们哪些图像区域在关注提示中的特定词语[8]。换句话说,它们在文本标记(如“狗”、“泰迪熊”、“右边”)和图像位置之间架起了一座桥梁[8]。先前的工作注意到这些注意力图可以用来定位对象,因此自然会使用它们作为指导。由于这种可解释性和直接的文本-图像对齐,测试时优化方法通常选择交叉注意力图作为其空间损失的目标[9]。
Learn-to-Steer (L2S) 基于这一理念,通过从数据中学习目标函数,而不是手工构建。它引入了一个轻量级的关系分类器,该分类器在离线状态下训练,以识别扩散模型的交叉注意模式中的空间关系[7]。在推理过程中,这个分类器作为学习的损失函数:它评估生成的图像(到目前为止)是否正确反映了提示中的关系,如果没有,则引导生成朝正确的方向发展[7]。本质上,NVIDIA 团队教会了扩散模型批判它自己的注意力图并相应地进行调整,所有这些都在不改变模型权重的情况下即时进行。
训练这个关系分类器比听起来要微妙得多。一个简单的方法可能是:获取一堆已知关系的图像(例如,标注为“狗在猫的左边”的图像),运行扩散模型的反演过程以获取“狗”和“猫”的注意力图,然后训练分类器在这些图上输出“左边”。这确实提供了监督。然而,出现了一个意想不到的陷阱——作者称之为**“关系泄漏”问题**。分类器开始通过注意力图中的语言痕迹来作弊,而不是真正理解空间布局。这怎么可能呢?事实证明,当你使用正确的描述性提示(比如“狗在猫的左边”)反转图像时,关于“左边”这个词的细微线索可能会被编码在模型的内部激活中。然后,分类器就抓住了这些线索(实际上是从注意力图中读回提示),而不是学习“左边”这个视觉概念。结果是:在训练数据上表现良好,但在生成时失败,因为在生成中,提示的关系词总是与图像匹配(如果分类器只是重复提示,就无法区分空间安排是否正确)。
为了解决这个问题,Learn-to-Steer 使用了一种巧妙的双重反转训练策略[13][14]。对于每张训练图像,他们生成注意力图的两个版本:一个是从正确描述空间关系的正向提示中生成的(例如,“一只狗在一只猫的左边”),另一个是故意使用错误关系的负向提示中生成的(例如,“一只狗在一只猫的上方”)[15][16]。这两组注意力图都根据实际图像布局标注了真实关系(在这个例子中为“左边”)。通过让分类器同时看到相同图像关系的矛盾文本描述,强迫其忽略不可靠的语言提示,专注于注意力图中的真实几何模式[14]。这确保了它学习到不变性:无论提示是“左边”还是“上方”,分类器都必须仅凭空间证据检测到狗实际上在猫的左边。此双重反转方法消除了泄露问题,产生了一个真正理解空间关系的分类器,依据模型的视觉而不仅仅是文本提示[17]。
另一个重要方面是该分类器的训练数据。团队使用了真实图像和合成图像,以涵盖广泛的场景[18]。真实图像(来自一个名为 GQA 的数据集)提供了自然的复杂性和多样的物体排列,尽管当场景拥挤时,其注意力图可能较为杂乱[18]。合成图像以一种控制方式生成(使用 Image-Generation-CoT 方法),提供了更简单的场景和更清晰的注意力模式,更类似于扩散生成过程中遇到的情况[18]。通过混合真实和合成数据,分类器同时受益于真实感和清晰度。消融研究证实,使用这两种数据源比单独使用任何一种数据源的准确性更高[19]。
一旦关系分类器经过训练,Learn-to-Steer 会将其插入扩散过程中,以在生成图像时进行引导。这在推理(生成时)发生,并且不需要对扩散模型的权重进行任何更改。以下是其工作原理:
当给定一个包含空间关系的文本提示(例如,“狗在泰迪熊的右边”)时,系统首先解析提示以识别主体、客体和关系(在这种情况下,主体:狗,关系:在右边,客体:泰迪熊)[20]。随着扩散模型开始将随机潜在噪声去噪成图像,Learn-to-Steer 在某些时间步进行干预。在选定的频率(例如,在扩散过程的前半部分每一步或每几步)下,它提取与所讨论的两个对象相对应的交叉注意力图[20]。这些基本上是模型当前关于每个对象在生成图像中的可能位置的“信念”。提取的注意力图被输入训练好的关系分类器,该分类器生成可能关系(左边、右边、上方、下方等)的概率分布[20][21]。由于我们知道提示中的期望关系,系统可以计算损失——例如,交叉熵损失,如果分类器对正确关系没有信心,则会对其进行惩罚[20][22]。
现在进入引导部分:此损失的梯度被反向传播到扩散模型的潜在表示(即该时间步的噪声图像中)[23]。实际上,这意味着推动潜在变量朝着应增加正确关系概率的方向发展。直观地说,如果分类器认为当前部分图像中的狗没有充分位于泰迪熊的右侧,梯度会以一种将狗的特征向右(或将泰迪熊向左)移动的方式调整潜在变量。然后,扩散过程继续进行这个稍微调整过的潜在变量和噪声。通过反复应用这些引导更新,生成的图像被“引导”成符合空间指令的样子,而不必明确告诉模型每个对象该画在哪里。这就像模型在绘画时有一个教练在耳边低语:“把狗再往右边移一点。”

Learn-to-Steer 的一个令人兴奋的方面是它能够在不同的扩散架构上工作。作者在 Stable Diffusion(一种流行的基于 UNet 的模型)和 Flux(一种基于 MMDiT 的扩散模型)上进行了演示,只需进行最小的更改[24]。该方法与架构无关,因为它依赖于通用信号(注意力图)和一个独立的分类器。这意味着未来或替代的文本到图像模型可以通过在该模型的注意力输出上训练一个新的分类器来“插入”相同的引导机制。此外,尽管系统是在单对象对关系上进行训练的,它也能处理包含多个关系的提示。例如,考虑一个提示:“一个青蛙在一只运动鞋上方,一只茶壶在下方。”这涉及三个对象的两种关系(“青蛙在运动鞋上方”和“运动鞋在茶壶下方”)。Learn-to-Steer 通过在不同时间步之间交替优化焦点来处理这种情况[25][26]。它将在一个步骤中优化青蛙-运动鞋关系的潜在变量,然后在下一个步骤中优化运动鞋-茶壶关系,依此类推,以循环方式进行。通过这种策略,该方法能够在单个图像中强制执行多个空间约束,而静态损失函数或简单提示通常无法实现这一点。(在实践中,作者发现以简单的链式方式来措辞多关系提示,例如“一个青蛙在一只运动鞋上方,一只茶壶在下方”,比使用连词的冗长句子效果更好[27]。)
Learn-to-Steer 在生成图像的空间理解方面提高了多少?论文报告称,在空间关系的标准文本到图像评估基准上准确性有显著提升。使用了两个基准:GenEval(检查生成的图像是否满足给定的关系提示)和 T2I-CompBench(文本到图像组合基准,另一个用于测试空间排列的基准)。团队评估了四种不同的扩散模型——两个 Flux 变体和 Stable Diffusion 2.1 和 1.4,比较了原始生成与各种方法。结果清楚地表明:学习的引导目标远远优于未引导模型和先前方法[28]。一些亮点:
同样显著的是定性结果。论文中的例子显示,使用 Learn-to-Steer 时,生成的图像忠实地反映了提示中的空间指令,同时保持了高图像质量[40]。在传统扩散或其他方法可能错误放置对象或遗漏一些实体的情况下,L2S 生成的图像中对象排列正确且全部呈现。它还能优雅地处理不寻常的请求——例如,它可以呈现“牙刷下方的公交车”或“冲浪板下方的大象”,并保持正确的空间顺序,而不会出现其他方法生成的奇异融合现象[41]。NVIDIA 团队指出,他们的方法克服了三种常见的失败模式:修正了对象的错误放置,防止了实体遗漏(提示中的每个对象都出现在图像中),并避免了对象融合(不再有模型混淆两个物品而产生的超现实混合体)[3]。在并列比较中,其他基准可能会遗漏场景中的花瓶或斑马,或将它们缠绕在一起,而 Learn-to-Steer 的输出包含了所有正确的部件,并以正确的配置呈现[3]。这种对提示忠实度的提升——准确地得到所要求的内容并在所要求的位置呈现——对生成式 AI 输出的可靠性来说是向前迈出的一大步。
Learn-to-Steer 在推理期间进行优化的方法带来了优势和考量。优点是,测试时优化意味着我们不需要修改模型的权重或为空间任务进行昂贵的微调[42]。同一个预训练模型可以灵活地仅在需要时“操控”——当不需要空间控制时,保留其原有的多功能性[34]。这避免了微调模型可能在牺牲其他技能(如颜色准确性或计数)的情况下过拟合于空间关系的权衡[34]。在 NVIDIA 的方法中,如果提示没有指定空间关系,可以简单地正常运行扩散模型,无需额外的开销,保持原有的速度和输出特性。只有在提示明确需要时才会启动操控[43]。
然而,另一方面,当我们确实调用这种推理时间损失时,会带来计算成本。这个过程需要在生成过程中多次运行分类器并反向传播梯度,这可能会显著减慢图像合成速度。作者测量了速度下降的程度:对于较小的 Flux 1.0-schnell 模型,生成时间从每张图像约 0.5 秒增加到 约 16.5 秒,使用 Learn-to-Steer 使速度降低了大约 33 倍[44]。对于较大的 Flux 1.0-dev,11 秒变为 6 分钟(约慢 33 倍)。在他们的硬件上,Stable Diffusion 2.1 通常每张图像需要约 4.5 秒,但使用引导后上升到约 90 秒(约慢 20 倍)[44]。SD1.4 也有类似的跳升(4.5 秒到约 80 秒)[44]。这些都是不可忽视的开销。在速度和可扩展性至关重要的场景中(例如高吞吐量图像生成或实时应用),对每张图像应用测试时优化可能是不切实际的。
有一些方法可以缓解这种情况。一个方法是限制优化的时间和方式。在他们的实现中,Learn-to-Steer 仅在扩散步骤的前半部分进行优化[23],他们发现这已经足够为图像设定方向。此外,如前所述,它可以选择性地使用:一个 AI 图像服务可以正常生成图像,只有当结果看起来空间布局不对(或用户明确要求严格的空间布局)时,才会在启用 L2S 的情况下进行第二次处理。另一个角度是提高效率:由于关系分类器相当小,只涉及少量注意力图,开销主要来自于通过大型扩散模型进行多步骤的反向传播。未来的研究可能会探索通过更好的优化器或部分更新来加速这一过程。不过,目前这方法最适合在精度比速度更重要的情况下使用——例如,为设计生成精确的图表或场景,或处理相对较小的图像批次,在这些情况下质量胜过数量。
通用性和鲁棒性是权衡的另一个方面。Learn-to-Steer 框架在模型架构(UNet 与 MMDiT)上的表现出乎意料的通用[24],这表明它可能适用于其他扩散模型或未来系统,只需进行最小的适应。要求是可以从模型中提取交叉注意力或类似的对齐信号。它还显示出在处理多重关系和从未见过的对象组合方面的鲁棒性,这得益于其训练方式(专注于通用注意力模式)。然而,值得注意的是一些限制。论文的分析指出,“上”或“下”在2D中是通过图像像素和注意力来判断的,这可能并不总是与真实的三维空间理解相符[45]。例如,如果一个物体在三维空间中位于另一个物体的前面,从某个相机角度来看,它可能在二维图像中看起来在另一个物体的下面,从而混淆空间关系。Learn-to-Steer 并未明确建模深度或现实世界的大小关系;它纯粹通过视觉注意力叠加来学习。因此,在具有透视的复杂场景中,它可能会在二维投影中强制执行一个在真实物理意义上不成立的关系[45]。此外,虽然该方法可以处理最多三种关系,但随着场景变得非常拥挤,其准确性会下降[46]。生成一个完美的场景,比如五个物体彼此相对,仍然是一个开放的挑战——有时该方法成功,有时则不然[37]。这些限制表明,还有改进的空间,可能需要通过引入更复杂的推理或多步骤计划来应对复杂的提示。
通过显著提高空间保真度,NVIDIA 的 Learn-to-Steer 标志着朝着更值得信赖的多模态系统迈出了重要一步。对于用户来说——无论是艺术家、设计师,还是企业开发者——拥有一个真正尊重空间指令的文本到图像模型意味着更少的挫败感和手动修正。这让我们更接近于*“所见即所得”*的理想。这种保真度不仅仅是关于漂亮的图片;它是关于以可控的方式将 AI 的输出与用户的意图对齐。从某种意义上说,它增强了多模态对齐:文本模态(语言中描述的关系)更忠实地在视觉模态(生成的图像)中得到反映。提高的空间推理对齐可能也会影响提示的其他方面,因为这种方法表明可以在不破坏其他方面(如颜色、数量或整体一致性)的情况下,针对特定的失败模式(如对象放置)进行调整。这是一个展示:我们可以在大型生成模型后期注入领域特定的“常识”,而不是寄希望于单一的巨型模型在一开始就能做到万无一失。
使用交叉注意力图作为教学信号的成功可能会影响未来模型设计和训练方案。其中一个影响是,未来的扩散模型可能会集成模块,以在内部监控或强制执行某些约束。例如,下一代模型可能会在其训练中包含一个学习损失(如这个分类器),而不仅仅是在推理过程中。这样的模型将有效地在训练中配备一个导师,当它错误地排列对象时给予惩罚,可能实现端到端的空间推理内化。这可以在长期内减少测试时优化的需求。同时,像Learn-to-Steer这样的方法提供了一种多功能工具包:它们可以作为一种后训练专门化的形式叠加在现有模型之上。这对于企业用例来说很有吸引力,在这些情况下,可以安全地将一个通用的预训练模型适配到一个特定需求(比如始终遵循布局指令)而不危及模型在其他任务上的完整性。
这也传达了一个更广泛的关于数据驱动损失设计的信息。手工制作损失函数本质上是在猜测模型应该如何表现,而学习损失函数则让模型告诉我们什么有效。在这里,通过探查模型自身的注意力,研究人员让数据(如反转图像和注意力图)揭示正确的目标。这个原则可以应用于其他生成对齐问题。我们可能会看到类似的“学习引导”用于确保属性一致性(例如确保“红色立方体”确实是红色的)、计数(确保五个苹果的提示产生五个不同的苹果),甚至跨多张图像的风格一致性。每种情况都涉及在模型内部训练一个小网络,以引导生成的特定方面。
最终,由于这些技术,提示工程可能会从一种艺术变成一门科学。我们不再需要扭曲文本提示以引导模型理解我们的意图(“如果我说‘在泰迪熊最右边的一只狗’,它可能会听懂……”),而是可以依赖学习控制器来强制解释。这让用户能够用简单明了的方式指定他们想要什么,并信任系统来处理其余部分。在多部分提示或复杂场景中,能够保持对每个关系或细节的控制意味着生成模型可以用于更多组合任务 —— 如起草故事板、设计用户界面布局或生成科学图表 —— 在这些任务中,空间准确性至关重要。
总之,NVIDIA 的《学习驾驶》论文展示了机器学习与实际问题解决之间的深刻平衡。通过利用模型自身的知识(通过交叉注意力)并在推理时注入学习到的目标,它在空间请求的提示保真度上达到了新的水平。这个方法确实在计算成本上存在权衡,但它为生成模型的高度定向改进打开了大门,而无需从头重新训练它们。随着扩散模型在 AI 内容创作中变得越来越核心,这样的解决方案确保了像图像中事物位置这样的“小细节”不会被轻易忽视。这是一个有力的例子,说明一点额外的智能——以学习损失函数的形式——如何能引导大型生成模型达到更高的人类意图对齐水平。未来的道路可能涉及将此类机制直接整合到模型训练中,或将其扩展到新的约束类型,但有一点是明确的:让模型学习如何自我引导是一个强大的理念,我们很可能在未来看到更多这样的例子。
[1] [4] [7] 文本到图像生成中的推理时间优化的数据驱动损失函数
https://learn-to-steer-paper.github.io/
[2] [3] [5] [6] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] 基于数据驱动的损失函数用于文本到图像生成的推理时间优化