~ / tech / blog / rethinking-t2i-evaluation
rethinking-t2i-evaluation.mdx
📝

当生图模型学会了推理,却忘了怎么画好看的图

在某大厂做生图模型评估的经历。我设计了一套层级化的评估框架来替代扁平 VQA,没被采纳——后来模型上线翻车了,翻在了我试图监控的那个维度上。

date: 2025-12
T2IEvaluationDiffusion ModelLLM-as-JudgeAI Image Generation
content

这篇文章讲什么

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 告诉你模型「整体怎么样」,但不告诉你模型「具体哪里烂」。

后训练团队的真实需求

作为后训练团队,我们没办法直接提升模型的能力上限——那是基模组的事。我们的杠杆在数据:发现模型的短板,针对性地构造训练数据回流到下一轮训练。

这意味着评估系统需要能做两件事:

  1. 精准定位缺陷:不是「这张图不太行」,而是「这张图的排版逻辑有问题,具体是文字遮挡了人脸」。
  2. 跨维度对比:不是「模型 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 提的方案,哪怕内容一模一样,被采纳的概率是完全不同的。这不是抱怨,是一个事实。了解这个事实之后,我现在做方案会花更多时间想「怎么让别人理解和接受」,而不只是想「怎么做到技术上最优」。

cd .. · ← back to tech
~ — press / to open terminal