AI 图片模型怎么公平测试
保存成功,也保存失败
只拿两张“最好看”的图比较,很容易得出错误结论。模型可能碰巧抽到好 Seed,也可能因为尺寸、提示词和参考图不同而占便宜。我们为本地图片引擎建立了一套测试记录,让以后换模型时不必从零猜。
一、先锁定变量,再谈哪个模型更好
- 同一任务使用同一提示词目标。允许为不同模型调整语法,但不能给一个模型详细镜头词,另一个只写一句话。
- 保持尺寸和宽高比一致。方图、竖图和横图对人物比例与场景构图的难度不同。
- 参考图必须相同。图生图强度也要记录,否则无法判断是模型差异还是重绘幅度差异。
- 每项至少三个 Seed。单图可以反映一个结果,不能代表稳定性。
- 记录失败而不是删除失败。网站默认模型需要的是可预测,不是偶尔惊艳。
二、我们使用的能力矩阵
| 能力 | 测试题 | 主要检查点 |
|---|---|---|
| 中文文生图 | 古代渡口、人物、纸灯、薄雾 | 中文语义、主体关系、时代元素是否准确。 |
| 写实人物 | 标准正脸、头肩像、全身像 | 眼睛、鼻翼、手部、皮肤与服装材质。 |
| 色彩与光线 | 冷蓝、暖金、红黑、低饱和 | 主色是否服从、肤色是否被环境光污染。 |
| 参考图编辑 | 多视角模特设定图 | 版式、服装、人物身份与局部细节漂移。 |
| 一致性 | 同一角色跨姿势和场景 | 不能只看固定 Seed,需身份适配器参与。 |
| 文字生成 | 中文招牌、短标题 | 笔画、拼写与布局,不用“像字”代替正确。 |
矩阵的作用是防止模型凭一个强项赢得全部结论。FLUX.2 klein 4B 在场景概念和中文提示上表现好,但人物写实没有通过;Juggernaut XL v9 的皮肤与摄影感更好,却不能靠普通图生图实现严格身份一致。
三、每张图应该保存哪些参数
图片文件本身不能告诉你当时用了什么模型。我们让程序在每张 PNG 旁边保存一个同名 JSON,至少记录以下字段:
对外发布时应删除私人电脑的绝对路径、用户名和敏感文件名,但保留模型、尺寸、步数、Seed、强度、耗时和显存等可复现信息。
四、失败样本比精选图更能决定产品
FLUX.2 的首张古代建筑图很完整,如果测试到这里就停止,很容易把它选为全站默认模型。继续做人像后,我们发现真人化编辑会夸张毛孔和面颊纹理,于是把它定位为场景概念与快速构图工具,而不是写实人像主模型。
Juggernaut 的第一张人像表现不错,但超近景又暴露出大小眼、视线和鼻翼问题。随后改成标准头肩正脸才明显改善。这个过程说明失败图并不等于“无用废片”,它能指出模型应该放在哪一层、哪些任务必须加人脸修复器。

五、结论应该包含适用范围
不要只写“A 比 B 好”。一份可用于产品决策的结论至少应回答:
- 它在哪些任务上通过,哪些任务上失败?
- 最低硬件与磁盘成本是多少?
- 正常参数下要等多久?
- 失败能否靠提示词修复,还是必须增加专用控制模块?
- 模型许可证是否允许计划中的网站用途?
| 当前候选 | 通过的用途 | 尚未通过 |
|---|---|---|
| FLUX.2 klein 4B | 中文场景、概念构图、快速草案 | 高质量写实人像、严格身份一致 |
| Juggernaut XL v9 | 本地写实人像基础图、较高分辨率竖图 | 单靠文生图或普通图生图维持同一身份 |
六、一份可以直接抄的记录表字段
记录这件事最容易失败的原因是字段太多,记两天就放弃了。下面这套是我们砍到最后还留着的,一张图记完不超过二十秒。
- 批次号 同一次对比里的所有图共用一个号。没有它,两周后你分不清哪些图是可比的。
- 模型 + 版本 版本号必须写。同一个模型不同版本的表现差异,有时候比换模型还大。
- Seed 对比测试里唯一必须固定的东西。不固定 seed 的模型对比,结论没有意义。
- 分辨率 + 步数 + 采样器 三个一起记,因为它们经常一起改。
- 与上一张的差异 自然语言一句话,比如“只把光位从顺光改成侧逆光”。这是整张表里最有价值的一栏。
- 结果判定 只用三档:可用 / 需修 / 废。别用五星制,你会在三分和四分之间纠结十分钟,而这个区别对后续决策毫无影响。
- 耗时 + 峰值显存 这两个决定这套参数能不能进日常工作流。画质再好,一张四分钟的配置在项目里排不进去。
为什么“与上一张的差异”比“完整参数”更重要?因为你真正要回答的问题从来不是“这张图是怎么来的”,而是“改了这一下,好了还是坏了”。前者是存档,后者才是结论。
七、怎么避免自己骗自己
模型测试里最大的误差源不是参数,是人。下面三种偏差我们全都犯过。
- 挑图偏差 给 A 模型跑了三十张挑一张,给 B 模型跑了五张挑一张,然后说 A 更好。要么两边都固定跑同样张数,要么明确写清楚“这是 30 选 1 的结果”。
- 先入为主 你已经期待新模型更好,于是它的失败被解释成“参数没调好”,旧模型的失败被解释成“它就是不行”。对治办法是盲测:把两组结果混在一起、去掉文件名,隔天再判定。这一招听起来夸张,但我们真的靠它推翻过一次结论。
- 用一个题材代表全部 用五张古风人像测出来的结论,不适用于现代产品图。所以测试结论必须带适用范围,这也是我们把它单列一节的原因。
还有一个细节:提示词要为两个模型分别调优,还是完全用同一条?两种都合理,但你必须选一种并写明白。用同一条测的是“开箱即用的表现”,各自调优测的是“上限”。把这两件事混着说,就会得出互相矛盾的结论。
八、结论的保质期
模型测试结论会过期,而且过期得比你想的快。底模更新、推理框架升级、驱动版本变化,都可能让上个月的结论失效。
我们的做法是给每份测试结论写上日期和环境版本,并设一个复测触发条件——不是定期复测(那太累),而是遇到下面任一情况就复测:
- 底模或工具链有大版本更新;
- 换了显卡驱动或推理后端;
- 实际项目里连续遇到和结论不符的表现;
- 距离上次测试超过三个月,且你正准备基于它做一个重要决定。
最后一条最关键。日常干活可以将就用旧结论,但当你要基于它决定“接下来三个月主力用哪个模型”时,花一小时重测一遍是划算的。我们吃过一次亏:拿着两个月前的结论选型,实际跑起来发现新版本的表现已经反过来了。