ERNIE-Image发布至今已经有一段时间了,一直收到非常多正向反馈,非常感谢大家对模型的喜爱与支持

今天想讲讲我是如何设计一套以LLM-as-a-Judge为核心的全自动评估系统,突破单一指标benchmark的局限全面捕捉现代文生图模型的真实能力边界,通过评估分析模型短板,使Ernie-Image模型向正确的方向不断迭代优化,做到短小精悍。

1. 先讲为什么自建评估集

自从Gemini 3 pro发布后,图片生成领域经历了一次代际跃迁。先进的模型已经能够处理精准文本渲染基于世界知识的推理生成以及高复杂度指令遵循——而GenEval、T2I-CompBench、DrawBench等主流benchmark在设计之初并未考虑评估这些能力。

我对业界主流T2I评估benchmark进行了系统梳理,发现它们各有侧重但均存在显著盲区:

评估能力GenEvalT2I-CompBench++DrawBenchPartiPromptsDPG-BenchTIFAHPS v2ImageRewardFID本框架
对象组合
属性绑定
空间关系
数量/计数
文本渲染准确性部分部分部分
世界知识正确性部分
多视图一致性
图像质量/美学部分
人类偏好对齐
复杂/长prompt
跨模块协同校准
动态评分权重
全自动化

各Benchmark的核心特征与局限:

  • GenEval — 基于目标检测模型验证组合生成,自动化程度高,但仅覆盖结构性属性,不涉及美学或风格;
  • T2I-CompBench++ — 细粒度组合忠实度评估(属性绑定、空间关系、数量),使用BLIP-VQA等专用指标,但无图像质量维度;
  • DrawBench — Google提出的200条挑战性prompt,覆盖面广但依赖人工打分,难以复现且成本高;
  • PartiPrompts — 1600+条prompt按难度分级,涵盖世界知识和创意组合,但同样依赖人工评估;
  • DPG-Bench — 专攻长文本/密集描述的忠实度,使用VQA分解prompt为原子问题逐一验证;
  • TIFA — 将prompt转化为原子级VQA问题再逐条检查,思路与本框架的VQA模块相近,但无质量/美学维度;
  • HPS v2 / ImageReward — 人类偏好预测模型,输出单一标量分数,无法诊断具体失败原因;
  • FID — 衡量生成图像集的分布级质量,完全不考虑图文对齐,且需要大规模采样;

当用户的prompt要求模型生成一张“关于小豆蔻茶制作步骤的中文信息图”时,上述benchmark均无法完整衡量:渲染出的文字是否正确、事实内容是否准确、版面设计是否达标、整体有浓重的AI感、以及综合来看这张图是否“可用”,这些恰恰是用户在实际使用中最容易感知到的问题

而我的目标是构建一个能回答以下问题的评估框架:“这个模型,到底行不行?”

2. 评估集怎么建的

评估集是整套系统的地基,prompt设计直接决定了能测出什么、测不出什么。

我按T2I的实际使用场景做了一套全面的层级分类

分类示例:
L1(对象类型)            L2(类别)            L3(子类别)
───────────────          ──────────           ─────────────
文本丰富图像............ 信息图               科普画、手帐、流程图
                         数据可视化            图表、知识图谱
                         UI/幻灯片            界面、演示文稿

图形设计............... Logo/图标             贴纸、拼贴、表情包

物品................... 日用品/电子产品       食品、服饰、家具

产品设计............... 包装/工业设计         刀版图、三视图、建筑

场景................... 室内/城市/自然        剖面图、等轴视图

人像................... 职业/时尚/动作        团体、年龄/种族多样性

风格多样性............. 传统媒介              水彩/水墨/油画/素描...
                         摄影效果              胶片/微距/虚焦...
                         3D/特效               粘土/低模/粒子...
                         艺术流派              日漫/像素/赛博朋克...

分类只是骨架,更重要的是prompt怎么写。这里分享几个评估集设计上的小巧思:

(a)每条prompt都带“核心考察点”标注

不是随便写一条prompt丢进去就算数。每条prompt在入库时都明确标注了它到底在考什么——是测文字渲染精度、还是测空间关系理解、还是测世界知识。这样一旦模型在某条上翻车,可以立刻定位到具体能力短板,而不是笼统地说“这条没过”。

(b)刻意设计“混合需求”prompt

真实用户的prompt往往同时涉及多个维度——“画一个穿壮族服饰的女孩的正面和背面三视图,旁边标注服饰名称”。这一条同时考了:世界知识(壮族服饰长啥样)、多视图(正面背面)、文字渲染(标注文字)、指令遵循(整体构图)。这类交叉prompt是抓模型“偏科”最狠的利器。

(c)“反面prompt”不能少

除了测模型能做什么,还得测它能否正确处理否定指令——“画一个没有文字的极简Logo”、“生成一个不带眼镜的人像”。很多模型对“不要xxx”的理解依然很差,这类prompt能有效暴露指令遵循的深层缺陷。

(d)文本渲染单独加码

英文渲染现在很多模型已经做得不错了,但中文等语言由于笔画复杂、字形相似字多,渲染出错概率显著更高。所以评估集里中文文本prompt的占比刻意高于英文,而且专门设计了包含易混淆字、生僻字、竖排排版的考察项。

3. 评估体系与系统架构

五维评估分类

提出一套五维评估分类体系,每个维度对应一类典型失败模式:

  • OCR(文本渲染) — 模型能否准确渲染指定文本?字符级精度校验
  • VQA(指令遵循) — 生成图像是否满足prompt中的每一项要求?细粒度逐条检查
  • CLIP(语义一致性) — 图像整体语义是否与prompt对齐?对象/属性/关系三层级匹配
  • IQA(图像质量) — 图像在技术层面是否精良?清晰度、构图、色彩、细节精致度
  • HP(人类偏好) — 人类是否会偏好这张图?空间结构、物理合理性、美学、风格、创意等多子维度打分

整体流程

系统遵循解析→评估→校准→融合四阶段范式:

评估系统整体流程

关键设计思想:各模块不是孤立打分后简单加权,而是通过阶段3的跨模块校准实现协同——某一核心维度的严重失败会传播到其他模块防止“单项挂科但总分及格”的不合理现象

4. 几个关键的技术设计决策

做评估系统的过程中,踩了不少坑,也沉淀了一些有效的设计。这里挑几个我觉得比较有价值的讲讲。

(1)文字评估不能只看一遍——OCR二次验证

做了一段时间评估后我发现一个现象:LLM-as-a-Judge在整体评估时,对文字错误特别手软。画面整体好看的时候,评估模型会倾向于对文字错误睁一只眼闭一只眼——我称之为宽容偏差

所以又加了一道独立的二次验证:主评估跑完之后,单独再做一次严格的逐字逐句比对。两次评估取更严格(更低)的那个分数。

更关键的是跨模块联动——文字内容严重不对的时候,不光OCR分要低,VQA指令遵循分也得跟着压下来。因为文字写错了,本质上就是没遵循指令,不能让其他维度的高分把这个核心问题盖过去

(2)多视图:不是“有就行”,得看对不对、一致不一致

现在用户越来越多地拿文生图做角色设计——“给我画个角色的正面、侧面、背面三视图”。这类需求现有benchmark完全没覆盖。

我拆了三个轴来评估:

评估轴看什么
视图完整性要求的视角是否都有?是不是空间分离的独立区域?
视角正确性标注“背面”的那个,真的是背面吗?
跨视图一致性正面和背面的服装、配色、比例对得上吗?

同样,多视图严重缺失时触发联动惩罚——不能让一个只画了正面的图靠其他维度拿高分。

(3)世界知识:画得再好看,画错了就是错的

这是我觉得最有意思的一个维度。现有benchmark评的都是“通用常识”——人不能有六根手指、物体不能悬浮。但特定领域的事实性知识完全没人管。

举个例子:prompt要求画壮族服饰,模型画出来的是苗族纹样——画面精美、构图完美、CLIP得分0.9——但它就是错的

我单独加了一个“世界知识正确性”维度,覆盖历史文化、地理地标、品牌IP、生物形态、科学常识、文化身份六大领域。而且设计为一票否决:这个维度判错,不管其他维度打多高分,整体直接判不合格。

世界知识都不正确,用户怎么使用

(4)动态权重:不同类型的prompt,关注点完全不同

这个角度很容易理解:

  • “生成一张写有新年快乐的贺卡” → 文字对不对是命门
  • “生成一幅山水画” → 压根没有文字,OCR不该参与评分
  • “生成角色三视图” → 多视图一致性是核心

所以我做了动态权重切换:指令解析阶段自动提取Query特征,有文字需求时OCR权重大幅提升,无文字需求时OCR直接退出、剩余模块权重归一化。权重之和永远等于1,保证不同类型query之间分数可比。

(5)对抗分数膨胀

LLM-as-a-Judge还有一个公认的毛病:给分太大方。大多数图它都想给个七八十分。

我的应对策略:

  • 分布锚定:评估prompt里显式告诉它“大多数图应该在中等区间,0.9以上的应该极少”
  • 扣分思维:强制从满分开始逐项扣分,而不是从零分逐步加分
  • 交叉验证:同一个能力点被多个模块从不同角度检验,单模块虚高会被其他模块拉回来

(6)每个模块内部都不止打一个分——拆到能诊断问题为止

评估系统不光要告诉你“这张图60分”,更要告诉你“它到底哪里差”。所以每个模块内部都做了细粒度拆分:

VQA是逐条过checklist。 把“这张图好不好”转化成一系列可以回答“是/否”的原子问题——比如“红色跑车停在海边悬崖上,远处有灯塔”这条prompt,会被拆成:跑车存在吗?红色吗?有悬崖吗?有灯塔吗?跑车是停着还是悬浮?逐条判定后按满足率给分,报告里能精确看到“漏了灯塔、跑车颜色偏橙”。

CLIP拆成三层对齐。 传统CLIP只算一个粗粒度相似度,我把它细化为对象级(东西都出现了吗)、属性级(颜色材质对吗)、关系级(位置和交互对吗)。同一张图可能对象全对但颜色全错——这种定位对模型改进方向的指引价值很大。

IQA加了“放大镜”维度。 传统评图看整体观感,但AI生成图的典型问题是缩略图看着行、一放大全糊了。所以我额外加了细节精致度——专门评估毛发纹理、材质质感、边缘锐利度,帮我们抓出大量“远看A级、细看C级”的图。

HP拆成六个独立子维度。 人觉得“这图不行”的原因可能完全不同:构图乱(空间结构)、物理不合理(人悬浮了)、配色丑(美学)、风格跑偏。拆开独立打分才能精确定位是哪个环节拖后腿,而不是笼统一句“人类不喜欢”。

5. 踩坑与心得

做了几轮迭代之后,总结几条比较深刻的:

  1. 跨模块惩罚是必须的。 不加的话,文字完全错误的图照样能靠其他维度拿到及格分。但用户看到这种图的反应一定是“这不行”。评估系统要和用户的直觉对齐。
  2. 分数膨胀是持久战。 LLM评判者天然倾向于给高分,而且会随时间漂移。分布锚定和定期用人工标注做一致性校验不能省
  3. 动态权重效果立竿见影。 固定权重会系统性地高估文本密集prompt的得分,也会低估纯视觉prompt的得分。应让评估系统自己判断“这道题该重点看什么”,比人拍脑袋定权重靠谱得多。
  4. 世界知识维度兜底。 CLIP得分0.9,但图里壮族服饰画成了苗族——用户看一眼就知道是错的,若不加这个维度评估系统根本发现不了图片问题。有些错误不是“不够好”,而是“根本就是错的”,必须有一个维度敢一票否决。

写在最后

T2I模型已经从“能不能画只猫”进化到了“能不能画一张准确、美观、知识正确的多语言信息图”。评估方法必须跟上。

这套框架的核心价值:全面覆盖、鲁棒校准、自适应评分、可解释诊断。它帮助我们持续发现模型的短板,也在驱动ERNIE-Image一个版本一个版本地变得更好。

希望这些思路对做类似工作的同学有参考价值。


杨晓文

写于 2026.5.21。