ERNIE-Image发布至今已经有一段时间了,一直收到非常多正向反馈,非常感谢大家对模型的喜爱与支持。
今天想讲讲我是如何设计一套以LLM-as-a-Judge为核心的全自动评估系统,突破单一指标benchmark的局限,全面捕捉现代文生图模型的真实能力边界,通过评估分析模型短板,使Ernie-Image模型向正确的方向不断迭代优化,做到短小精悍。
1. 先讲为什么自建评估集
自从Gemini 3 pro发布后,图片生成领域经历了一次代际跃迁。先进的模型已经能够处理精准文本渲染、基于世界知识的推理生成以及高复杂度指令遵循——而GenEval、T2I-CompBench、DrawBench等主流benchmark在设计之初并未考虑评估这些能力。
我对业界主流T2I评估benchmark进行了系统梳理,发现它们各有侧重但均存在显著盲区:
| 评估能力 | GenEval | T2I-CompBench++ | DrawBench | PartiPrompts | DPG-Bench | TIFA | HPS v2 | ImageReward | FID | 本框架 |
|---|---|---|---|---|---|---|---|---|---|---|
| 对象组合 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
| 属性绑定 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
| 空间关系 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
| 数量/计数 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
| 文本渲染准确性 | ✗ | ✗ | 部分 | 部分 | ✗ | 部分 | ✗ | ✗ | ✗ | ✓ |
| 世界知识正确性 | ✗ | ✗ | ✗ | 部分 | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
| 多视图一致性 | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
| 图像质量/美学 | ✗ | ✗ | ✓ | 部分 | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ |
| 人类偏好对齐 | ✗ | ✗ | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ |
| 复杂/长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. 踩坑与心得
做了几轮迭代之后,总结几条比较深刻的:
- 跨模块惩罚是必须的。 不加的话,文字完全错误的图照样能靠其他维度拿到及格分。但用户看到这种图的反应一定是“这不行”。评估系统要和用户的直觉对齐。
- 分数膨胀是持久战。 LLM评判者天然倾向于给高分,而且会随时间漂移。分布锚定和定期用人工标注做一致性校验不能省。
- 动态权重效果立竿见影。 固定权重会系统性地高估文本密集prompt的得分,也会低估纯视觉prompt的得分。应让评估系统自己判断“这道题该重点看什么”,比人拍脑袋定权重靠谱得多。
- 世界知识维度兜底。 CLIP得分0.9,但图里壮族服饰画成了苗族——用户看一眼就知道是错的,若不加这个维度评估系统根本发现不了图片问题。有些错误不是“不够好”,而是“根本就是错的”,必须有一个维度敢一票否决。
写在最后
T2I模型已经从“能不能画只猫”进化到了“能不能画一张准确、美观、知识正确的多语言信息图”。评估方法必须跟上。
这套框架的核心价值:全面覆盖、鲁棒校准、自适应评分、可解释诊断。它帮助我们持续发现模型的短板,也在驱动ERNIE-Image一个版本一个版本地变得更好。
希望这些思路对做类似工作的同学有参考价值。
杨晓文
写于 2026.5.21。
