当生图模型学会了推理,却忘了怎么画好看的图
在某大厂做生图模型评估的经历。我设计了一套层级化的评估框架来替代扁平 VQA,没被采纳——后来模型上线翻车了,翻在了我试图监控的那个维度上。
这篇文章讲什么
2025 年底我在一个大厂的生图模型团队实习,做后训练方向。我的工作之一是设计模型输出质量的评估体系。
我提了一套方案:把评估指标组织成四层树状结构,把「推理能力」和「生成质量」拆成两条独立的评估线,用调和平均数来做算分聚合——让一个硬伤就能拉低整体评分,而不是被其他高分淹没。
这套方案没被采纳。团队觉得太复杂了,继续用原来的扁平 VQA checklist。
几个月后,团队的第一个 reasoning DiT 模型上线。推理能力确实上去了,但美学质量严重下滑,用户骂声一片。而美学质量,恰好是扁平 VQA 最容易丢失的维度。
这篇文章不是来说「我早就说过」的。我想讲的是:评估一个生图模型,远比大多数人以为的要难——学界和业界之间存在一个真实的 gap,而这个 gap 正在产生后果。
学界在怎么做评估
如果你去看近几年 T2I 领域的 benchmark 综述,大致能分出几个时代:
基础时代用 FID 和 Inception Score,本质上是在比较「生成图像的分布」和「真实图像的分布」之间的距离。这个指标的问题是它完全不管语义——一张精美但跑题的图,FID 可能很低。
语义时代引入了 CLIP Score,测量图像和文本 embedding 之间的余弦相似度。比 FID 好了一步,但 CLIP 本质是个 bag-of-words 指标——它知道画面里该有什么东西,但不太在乎东西之间的空间关系对不对、逻辑通不通。
认知时代开始用 VQA(Visual Question Answering)做评估。T2I-CompBench 测属性绑定(「红色的立方体和蓝色的球体」有没有画对),ReasonBench 测高阶推理(成语、科学常识),FLUX-Reason-6M 甚至引入了生成思维链(GCoT)。评估方法也从自动指标转向 VLM-as-a-judge——让大模型来判大模型。
这些工作都很有价值。但当你真的在工业界需要用评估结果来驱动模型迭代的时候,会发现一个问题:
这些 benchmark 告诉你模型「整体怎么样」,但不告诉你模型「具体哪里烂」。
后训练团队的真实需求
作为后训练团队,我们没办法直接提升模型的能力上限——那是基模组的事。我们的杠杆在数据:发现模型的短板,针对性地构造训练数据回流到下一轮训练。
这意味着评估系统需要能做两件事:
- 精准定位缺陷:不是「这张图不太行」,而是「这张图的排版逻辑有问题,具体是文字遮挡了人脸」。
- 跨维度对比:不是「模型 A 比模型 B 好」,而是「模型 A 在推理层优于 B,但生成层的美学质量不如 B」。
扁平 VQA 做不到这两件事。一个典型的 VQA checklist 可能是这样的:
- 画面上有 3 个球吗?
- Logo 在左上角吗?
- 人物是女性吗?
- 背景是室外吗?
这些问题是「碎」的——它们之间没有层级关系,你没办法从一堆 Yes/No 的回答里聚合出「模型的排版逻辑能力是 6.3 分」这样的结论。更要命的是,出 VQA 题的也是 LLM。LLM 天然觉得逻辑性的问题更好出、更好判——「画面上有 3 个球吗」比「这张图的色彩和谐吗」好回答得多。结果就是 VQA checklist 天然偏向推理能力的测试,美学质量的监控在不知不觉中被丢掉了。
我设计了什么
我的方案是把评估指标组织成一棵四层的树:
Scenario (业务场景,如「海报」「叙事」)
└── Task (具体任务,如「T2I-海报生成」「I2I-图片修改」)
├── L1: 推理层
│ ├── L2: 意图与风格
│ │ ├── L3: 显性元素召回
│ │ │ ├── L4: 文案完整性
│ │ │ ├── L4: 主体准确性
│ │ │ └── L4: Logo 植入
│ │ └── L3: 隐性风格对齐
│ │ └── ...
│ └── L2: 排版逻辑
│ └── ...
└── L1: 生成层
├── L2: 画面表现
│ ├── L3: 美学质量
│ │ ├── L4: 商业级质感
│ │ ├── L4: 色彩对比度
│ │ └── L4: 清晰度
│ └── L3: 结构完整性
│ └── ...
└── L2: 文本渲染
└── ...
核心设计决策有三个:
第一,从业务场景出发往下钻,而不是从能力维度往上堆。 海报生成和叙事生成需要的评估维度是不一样的——海报关心排版逻辑和 Logo 保真,叙事关心跨镜头一致性和叙事节奏。从场景出发,每个 L4 指标都有明确的业务含义,不是为了凑数。
第二,推理层和生成层独立评分。 这是整个方案里我觉得最重要的一个决定。推理层评估的是模型「有没有理解用户意图」——元素召回了吗、风格对了吗、排版合理吗。生成层评估的是模型「画得好不好看」——色彩和谐吗、光影自然吗、清晰度够吗。这两个维度的分数独立聚合,谁也不能掩盖谁。
第三,用 Shifted Harmonic Mean 做算分聚合。 公式是:
Score = ( n / Σ(1/(xᵢ+1)) ) - 1
为什么不用加权平均?因为加权平均会被高分淹没。一张海报 19 项都是 10 分,Logo 变形了只有 2 分——加权平均可能给你 9.2,看起来还不错。但用户看到变形的 Logo 会直接觉得这张图不能用。
为什么不直接取 min?因为 min 太极端了,它只保留一个数字,丢掉了所有其他信息。你没法区分「一个硬伤其他都好」和「一个硬伤加三个软伤」。
调和平均刚好在中间:它对低分极其敏感(短板效应),但同时保留了整体的信息。上面那个例子里,Logo 植入 2 分会把「显性元素召回」这个 L3 维度从均值 7.3 拉到 4.8 左右。这个数字一出来,你立刻知道问题在哪。
整套系统还包括自动生成评估 Prompt 给 LLM 打分、校验 LLM 返回结果的 schema 和数值范围、把扁平分数重新组装成树状报告。一个完整的评估流程是:生成 checklist prompt → LLM 对着图片打分 → 校验返回格式 → 调和平均聚合 → 输出各层级分数。
为什么没被采纳
说实话,我理解。
我的直系 +1 是设计师背景,不是工程或算法出身,而且我们还异地——理解和信任都需要时间来建立。这套方案在其看来确实复杂:四层树结构、调和平均算分、criteria.json 的维护成本、给团队其他人解释「为什么 7.3 的平均分到你这变成 4.8 了」的沟通成本。
团队不放心让一个实习生推一套会改变现有评估 pipeline 的方案,这个决定本身是合理的。我能做,但推不动。后来我被调去做用户反馈的数据分析和看板建设——也有价值,但不是我最想做的事。
后来发生了什么
团队后来上线了第一个 reasoning DiT 模型。这个模型在推理能力上确实有显著提升——理解复杂指令、处理多步骤逻辑、元素召回率都上去了。
但美学质量严重下滑。用户反馈铺天盖地。
问题出在哪?Reasoning DiT 的训练过程中,大量的数据和优化目标都倾向于推理能力。而扁平 VQA 的评估指标也在强化这个偏向——因为 VQA 能测出「推理对了没有」,但很难测出「画面变丑了没有」。评估指标绿了,模型上线了,用户骂了。
如果当时采纳了层级化方案,推理层和生成层的分数是独立的。推理层分数上升的同时,生成层分数的下滑会被清晰地暴露出来——尤其是在调和平均的短板效应下,美学质量的退化根本藏不住。这不是事后诸葛亮,这是结构性的保护机制。
一个更深的问题
这件事让我意识到一个更深层的问题:评估系统的偏见会系统性地塑造模型的演化方向。
如果你的 eval 偏向推理(因为 VQA 容易测),那优化压力就会集中在推理上。如果你的 eval 对美学质量不敏感(因为 LLM 不擅长出美学相关的判断题),那美学质量就会在迭代中被悄悄牺牲。
这不是个别团队的问题。学界的 benchmark 也有这个倾向——从 T2I-CompBench 到 ReasonBench 到 FLUX-Reason-6M,近两年最热的 benchmark 几乎都聚焦在推理和组合性上。美学评估要么用 Aesthetic Score(一个 1-10 的标量,太粗),要么靠人工评估(太贵太慢),要么干脆被忽略。
当整个评估生态都在往推理偏移的时候,模型变得「更聪明但更丑」几乎是一个必然的结果。刚出的 GPT-Image-2 也一样——最聪明,新 SOTA,但用户吐槽一些图片上面有淡淡的噪点,「看起来像 Diffusion 没 diff 完」。
Q&A
Q: 你觉得用 LLM 给生图模型打分靠谱吗?VLM-as-a-judge 这个范式有什么问题?
比 FID 和 CLIP Score 靠谱多了,但有自己的坑。最大的问题是 judge model 自己的偏见——比如说,如果你用一个推理能力很强但美学感知一般的 VLM 来做 judge,它在打美学质量分的时候就会比人类评估偏高。另一个问题是一致性:同一张图、同一个 prompt,跑两次可能得到不同的分数。我的做法是用结构化的 checklist 来约束 judge 的输出——不是让它自由发挥说「这张图怎么样」,而是给它一个明确的评分维度列表和 JSON schema,逐项打分。这样至少能把评估的方差控制在可接受的范围内。
Q: 调和平均对低分这么敏感,会不会导致一个噪声性的低分(比如 judge 打错了)就毁了整体评估?
会。这是一个 tradeoff。我当时的想法是:在质量评估的语境下,宁可误报也不要漏报。如果一个 L4 指标被打了 2 分,就算是 judge 的误判,我也希望它被标记出来,然后人工看一下——这比把它平均掉、让真正的缺陷被掩盖要好。当然,如果未来要在更大规模上使用,可能需要加一层「异常值检测」:如果某个 L4 分数和同组其他 L4 分数偏差超过阈值,flag 出来让人复核。
Q: 如果给你无限资源重做这套系统,你会改什么?
两个方向。第一,L4 指标应该是半自动生成的,而不是纯人工编写。现在 criteria.json 里的每一条 L4 都是我根据业务场景手写的,这个维护成本确实高,团队说「太复杂」有一部分原因在这里。理想情况下,应该有一个 pipeline:从用户反馈和标注数据中自动提取高频缺陷类型,生成候选 L4 指标,人工审核后入库。第二,美学质量的评估不应该只靠 VLM 打分。我在想能不能结合一些信号级的指标——比如 NIQE(无参考图像质量评估)、色彩直方图分析、构图规则检测——作为 VLM 打分的补充。VLM 对美学的判断太主观了,加一些「硬指标」可能会更稳定。
Q: 这段实习经历对你最大的影响是什么?
让我对「正确的方案不等于能落地的方案」这件事有了切身的体会。技术上我现在依然觉得这套方案是对的,但一个方案能不能推动,取决于很多技术之外的因素——你和决策者之间的信任关系、团队的认知带宽、方案的解释成本、甚至你在组织里的位置。实习生提的方案和 TL 提的方案,哪怕内容一模一样,被采纳的概率是完全不同的。这不是抱怨,是一个事实。了解这个事实之后,我现在做方案会花更多时间想「怎么让别人理解和接受」,而不只是想「怎么做到技术上最优」。