文生图模型越来越强,但空间关系依然是硬伤。
我最近试了几个主流模型,让它们生成“一个红色的杯子在蓝色盘子的左边”,结果总会出现杯子跑到盘子右边、甚至悬浮在盘子上方的情况。这让我想到一个更底层的问题:当我们用自然语言描述空间关系时,模型是真的在“理解”,还是在“猜”?
在直观感受里,扩散模型似乎已经“懂得”空间位置。它能画出一只猫坐在沙发上,也能画出飞机在云层之上。但一旦关系复杂一点,比如“A 在 B 的左边,同时 C 在 B 的右边”,输出结果就会变得相当随机。原因在于,生成模型的注意力机制擅长捕捉“哪些物体应该出现”,却很难精确判断“物体之间的相对位置必须满足什么约束”。
最近看到一个研究方向叫 SpatialGuard,直译过来是“空间守卫”,核心思路是基于 Harness-Guided(约束引导)做可验证的空间推理,专门用于文生图生成过程中的空间关系纠偏。这个方向很有代表性,因为它没有继续走“加大模型、堆数据”的路子,而是换了一个思路:既然生成模型自身无法稳定地保证空间逻辑,那就让外部一个可验证的模块来检查它、纠正它。
这篇文章我想拆解一下 SpatialGuard 这类方案背后的设计逻辑,以及它对文生图工作流到底意味着什么。它本质上不是把生成模型换掉,而是给生成过程加了一条“验证—反馈—修正”的闭环,让空间一致性从“期望”变成“可检查”。
1. 先搞清楚生成模型为什么会“搞错”空间关系
如果你频繁使用文生图工具,一定遇到过这几类空间错误:左右颠倒、前后遮挡关系混乱、多个物体的位置约束只满足了一半、物体数量正确但分布完全不对。这些问题不是偶发,而是生成模型的结构性短板。
1.1 空间关系不是“画出来”的,是“推理出来”的
扩散模型和自回归模型在做图像生成时,其实是在一个高维分布里逐步采样。它从随机噪声出发,每一轮去噪都会让图像更接近训练数据分布。这个过程擅长捕捉“猫和沙发在同一个场景里很常见”,但不擅长判断“猫必须在沙发的左边”。因为“常见性”是统计规律,而“空间关系”是逻辑约束,两者并不等价。
如果提示词里说“A 在 B 左边”,模型的理解更多是:这两个物体应该出现在同一个画面里,它们之间有一种“接近”关系。至于谁在左谁在右,取决于初始噪声、注意力分布、采样步数和随机种子。这也是为什么同一个提示词多次生成,结果经常不一样——它不是每一次都按你的空间指令执行,而是在概率上“偶尔猜对”。
1.2 关键词越多,空间约束越容易被稀释
另一个常见现象是:提示词越长、物体越多,空间关系越容易崩坏。因为扩散模型的注意力机制需要在多个令牌之间分配权重。当描述“一只狗在桌子下面,桌上有花瓶,花瓶里有向日葵,向日葵旁边有一个苹果”时,模型要在图像各区域同时满足多层空间约束,这对当前大多数模型来说几乎是不可能的。
从工程角度看,这不是一个 AI 能力问题,更像是一个“约束求解”问题。生成模型擅长从自然语言映射到视觉概念,但不擅长做多约束联合求解。SpatialGuard 这类方案的核心价值,恰恰是把“约束求解”这件事从生成模型里剥离出来,交给一个可验证、可反馈的外部模块。
1.3 为什么“再加层模型”解决不了根本问题
一个很自然的想法是:让更大的多模态模型来做空间推理,比如给模型更多参考图、更长指令、更详细的负提示。这套路在不少场景下有效,但天花板也很明显。
因为模型依然是概率生成,它没有对外部约束做硬性保证。你可以让生成过程更倾向于满足某个空间约束,但无法保证百分之百满足。而 SpatialGuard 的出发点正是:不要干预生成器的采样过程,而是在生成结果出来后做一个可验证的判断,如果不满足约束,就触发修正。换句话说,它把“可能出错的生成过程”和“可靠的空间验证模块”分成两层。
2. SpatialGuard 的架构思路:不是替换生成器,而是加一个验证层
SpatialGuard 从名字上就能看出它的角色,不是生成器,而是“守卫”。它站在生成模型旁边,监督空间关系是否正确。
2.1 Harness-Guided 的含义:约束不是写死在模型里的,而是外部引入的
“Harness-Guided”是这篇工作里最值得注意的一点。“Harness”在软件工程里常指“测试夹具”或“外部控制装置”。放在文生图场景里,可以理解为一套外部引导机制,它在生成流程的外围设定规则,指导生成模型往满足空间约束的方向走。
这个设计的好处是:你不必为了一个空间关系重新训练模型。你只需要在调用生成模型时,多接入一个“引导判断模块”,它负责:
- 接收用户输入的空间关系描述
- 在生成前或生成后对布局进行约束检查
- 如果发现约束未满足,返回修正信号或触发再次生成
这种架构对现有系统的兼容性更强。它不需要你放弃当前使用的生成模型,而是在它外面套一层能够“验证”的空间推理能力。
2.2 可验证的空间推理:从“看起来对”到“可以被检查”
空间推理如果停留在“让模型画得更好”这种模糊目标上,就很难评估效果。SpatialGuard 强调的核心是“Verifiable”,也就是可验证。这意味着空间关系不再只是模型内部的一种隐式能力,而是一个可以被外部工具量化检查的显式指标。
比如,当提示词明确说“蓝色盘子左侧有一个红色杯子”时,验证器可以:
- 通过目标检测器识别出图像中的“杯子”和“盘子”
- 拿到它们在像素坐标系中的边界框(bounding box)
- 比较两个边界框的中心点水平坐标
- 判断“杯子”是否确实位于“盘子”左侧
听起来并不复杂,但这恰恰是很多生成模型无法稳定做到的。正因为这个检查过程是确定的、可重复的,它才叫“可验证”。一旦空间关系可以被量化,就能做更系统性的优化,而不是靠运气。
2.3 组合性与复杂度:为什么多物体场景更依赖这类方案
单个物体对空间关系还比较好处理,两个物体的左右关系也相对容易。真正复杂的是多物体、多约束场景。比如“左侧有桌子,桌上有笔记本,笔记本前方有咖啡杯,咖啡杯右侧有手机”,这里涉及多个物体之间的水平、前后、上下关系。
这类约束如果全部交给生成模型,几乎必然出错。因为模型不是按“画布坐标系”去理解自然语言的。但 SpatialGuard 类的架构可以把这些约束视为一组空间命题,在生成前构建一个“期望布局”,生成后通过目标检测和空间逻辑判断来验证,并据此返回修正信号。这种方式把组合性问题拆解成了两个子问题:布局理解(自然语言到空间关系)和布局验证(图像到空间关系),每一层都可以单独优化。
3. 从单次生成到可复用流程:SpatialGuard 工作流拆解
真正的价值不在于它能修正一次错误,而在于它把原来不可控的生成过程,变成了一条可复用、可验证的流程。下面是我认为比较合理的工作流拆解方式。
3.1 第一步:解析提示词中的空间关系
在生成图像之前,SpatialGuard 会先对用户的文本输入做一次结构化解析。它会提取出两个关键信息:
- 实体列表:提示词中出现了哪些物体
- 关系集合:这些物体之间存在哪些空间关系
这一过程可以用大型语言模型(LLM)辅助完成。LLM 本身不擅长精确的空间计算,但擅长把一句话里的实体和关系抽取成结构化格式。比如输入“一只猫坐在桌子下面,桌上有一本书”会被解析成:
{ "entities": { "cat": "猫", "table": "桌子", "book": "书" }, "relations": [ { "subject": "cat", "relation": "below", "object": "table" }, { "subject": "book", "relation": "on", "object": "table" } ] }这种结构化格式的价值在于,它把模糊的自然语言变成了可计算的约束。后续验证阶段可以直接读取这些关系,逐一比对。
3.2 第二步:生成候选图像
得到结构化约束之后,下一步就是交给生成模型出图。这一步可以有多种策略:
- 直接把原始提示词交给模型生成
- 在提示词中加入布局约束描述,增强模型对空间关系的感知
- 多次采样,生成多张候选图,后续再做选择
从这个角度看,SpatialGuard 与常见的“ControlNet”有本质区别。ControlNet 用线稿、深度图、关键点等额外条件引导生成过程;SpatialGuard 则是在结果上做验证和修正。两者可以组合使用,但并不互相替代。
如果只是单次生成,验证环节的价值还不够大。更合理的做法是先生成一批候选图,再从中选出空间关系满足约束的那张。这本质上是把“单次生成”升级为“生成—筛选”流程。
3.3 第三步:用空间验证器做逐层检查
生成完成后,SpatialGuard 会执行可验证的空间检查,这一步是整套方案的核心。
典型流程是:
- 用目标检测模型识别图像中的实体位置
- 提取每个物体的边界框(bounding box)或分割掩码(segmentation mask)
- 根据边界框计算物体之间的相对位置关系
- 将计算出的关系与用户输入的空间约束逐一比对
- 输出一个结构化验证结果,标出哪些关系满足、哪些不满足
比如验证结果可能是:
{ "validation_results": [ { "relation": "cat below table", "status": "PASS" }, { "relation": "book on table", "status": "FAIL", "reason": "book bounding box center is outside table top region" } ] }这种方式的价值非常明显:它让“生成了什么”和“用户要求了什么”之间有了可比较的衡量标准。如果你的项目里需要大量生成满足特定布局的图像,这个环节可以替代人工目检,大幅提升筛选效率。
3.4 第四步:修正或反馈
拿到验证结果后,有两种处理路径:
- 如果验证全部通过,直接返回当前图像。
- 如果某些关系失败,触发修正流程,比如调整提示词、更换随机种子、重新采样,或者对失败关系做针对性修复。
SpatialGuard 的修正闭环,让失败不再是一个终点,而是一个反馈信号。它告诉生成系统:这次哪里不对,下次应该朝哪个方向调整。从长期角度看,这也为生成模型的后训练提供了数据基础——所有验证失败样本都可以成为训练数据的一部分,用来强化模型的空间推理能力。
4. 可验证空间推理,改变的不只是文生图
如果只把 SpatialGuard 看作是一个“修图工具”,那就低估了这个方向的价值。空间推理与可验证机制的组合,影响的会是更完整的 AIGC 生产链路。
4.1 让文生图从“创意工具”变成“生产工具”
当前很多文生图产品更适合“灵感探索”,因为输出结果不稳定,很难直接放进生产流程。比如电商场景里的商品图、广告场景里的版面布局、影视分镜里的角色位置,都需要满足明确的空间规范。如果空间关系无法验证,你就得人工检查每一张图,效率极低。
当引入可验证空间推理后,文生图可以在一定程度上进入半自动生产流程。你只需要设定空间约束,让系统自动生成并筛选,最后人工只确认那些通过验证的结果。对生产型团队来说,这比“无脑生成、人工挑选”要高效得多。
4.2 对多模态模型评估也有启发
现在很多多模态评估都还停留在“主观好看”或“CLIP 分数”这类粗粒度指标上。但空间关系一致性是可以被客观量化的。你可以用目标检测结果和输入约束的匹配率,来评估一个生成模型在空间建模上的能力。这种评估方式会比人工打分更可复现。
如果未来文生图模型都附带一个“空间验证分数”,用户在选择工具时的判断依据就更清晰了。那时候比的不只是“哪个模型画得更漂亮”,还包括“哪个模型更听话”。
4.3 从单次任务到工程化复用
要把这类方案真正落地,我的建议是分三步走:
- 第一步:先跑通最小可用流程,用少量样本验证“解析—生成—检测—比对”这条链路是否顺畅
- 第二步:把验证结果落到日志或结构化文件里,积累一批空间约束样本和失败样本
- 第三步:再做批量化和接口化,为不同提示词、不同模型、不同检测器建立测试基线
这里最需要提醒的是:不要急着在整个生产环境里全面铺开。因为可验证机制本身依赖目标检测器的准确度,如果在你的场景里检测器经常漏检或误检,验证结果就会失真。先在小规模样本上确认“验证器本身可靠”,再谈覆盖率,这才是稳妥路径。
5. 适用边界和落地时最容易踩的坑
任何方案都有边界,SpatialGuard 也一样。它解决的是“空间关系是否一致”的可验证问题,并不是万能的图像质量保证。
5.1 适合什么场景
最适合的场景是:
- 提示词里包含多个物体、多个空间关系
- 物体类别比较明确,容易被目标检测器识别
- 你需要批量生成满足特定布局的图像
- 你对生成结果的空间一致性有硬性要求,而不是“差不多就行”
典型应用包括:电商产品场景图、插画分镜、布局设计初稿、室内设计概念图、游戏概念设计等。这些场景里,空间关系的正确性直接决定了图像是否可用。
5.2 不适合什么场景
不太适合的场景包括:
- 抽象风格或超现实风格,物体形状过于变形,检测器无法正确识别
- 物体之间存在遮挡,边界框重叠度过高,空间关系难以清晰判断
- 空间描述本身非常模糊,比如“那个东西在远处”,没有明确参照物
- 生成速度有极高要求,验证环节会增加额外耗时的场景
如果你的生成结果里物体经常粘连在一起,或者背景复杂到检测器无法提取清晰边界框,那验证结果就可能“看似失败,实际只是识别不出来”。这种情况下,先优化检测器或改用分割模型,再接入验证层会更合理。
5.3 三个容易踩的坑
第一个坑是过度依赖边界框坐标。边界框只能给出物体的矩形范围,无法反映物体的真实形状和面积。当两个物体在视觉上呈现“A 在 B 左上方一部分”时,边界框的判定会和人类直觉不一致。解决办法是,根据实际需要选择更细粒度的空间关系判断方式,必要时引入分割掩码。
第二个坑是忽视语序和参照系。自然语言里的“左边”有时候是当前说话者的左边,有时候是图像观察者的左边,有时候是另一个物体的左边。解析阶段如果没有把参照系说清楚,验证阶段就会得到错误结果。落地时,最好在结构化约束里显式写清楚参照对象。
第三个坑是把检测器的结果当成绝对真值。目标检测器并不是完美无缺的。它可能漏检、误检、或者边界框偏大半格。如果你强行用这种带噪声的检测结果去要求生成模型满足严格约束,反馈信号也会失真。建议在验证层加入一个置信度阈值,检测分数过低时标记为“MISS”,而不是直接判定为关系失败。
6. 对文生图工作流的长期影响:从“生成好看”到“生成可控”
过去几年,文生图行业的核心竞争点是“画质”和“美感”。现在画质已经拉不开明显差距,平台之间比的更多是“可控性”。而空间关系是可控性里面最难的一块。
6.1 空间一致性会成为文生图评估的基本指标
如果以后评测一个文生图模型,只看“审美”已经不够了。空间一致性会成为一个无需争辩的硬指标。你描述“台灯在书桌左侧”,生成的图就应该是台灯在左侧,而不是“台灯被放在书桌附近”这种模糊结果。
这会给生成模型提出更高要求:它不仅要懂语义,还要懂空间坐标。而像 SpatialGuard 这类可验证机制,会把“空间正确率”变成一个可见的、可对比的数字。哪个模型空间更稳,一测便知。
6.2 生成再也不会是“一次定生死”
传统文生图是“一次采样定结果”,不满意就重新生成。而验证反馈机制的加入,会让生成过程变成“多轮修正”,第一次失败并不代表最终失败。这让文生图的工作方式更接近软件工程里的迭代开发:先出一个版本,测试验证,发现问题,修复,再出新版本。
这种工作流之所以重要,是因为它让“失败”变成了可管理的事件。在一个生产流程里,失败不可怕,不可预测才可怕。可验证机制降低了不可预测性,也让最终输出质量有了一个兜底保障。
6.3 最终判断:方案的核心不是省时,而是可控
回到开头提到的那个问题,文生图模型的空间关系到底是“理解”还是“猜”?我的判断是:在大多数情况下,它是概率上的“猜”。SpatialGuard 要做的不是把“猜”变成“百分之百确定”,而是让“猜”的错误可以被监测、被修正、被反馈。它更像是给生成模型装上了一个测量仪表,让“空间感”从不可言说变成可量化。
所以,如果你正在搭建文生图应用,特别是需要稳定控制空间关系的产品,不要只盯着“换一个更大的生成模型”。那只是提升了上限,没有兜住下限。更值得投入的,是在生成流程外面加一层可验证的空间守卫——它能告诉你生成结果是否真的满足需求,也能在出错时给你一条明确的修正路径。
真正的高手,不是每一步都走得完美,而是走错了还能及时发现、及时修正。SpatialGuard 这个方法论,本质上就是在做这件事。