Henry Jia

测 12 个开源出图模型,我把自己否掉了两次

约 23 分钟显影AI

目录 · 41 节
  1. 先把这篇的边界划清楚
  2. 还有两条前提
  3. 我原来是怎么测的
  4. 四个硬伤
  5. 一、单 seed 不算数
  6. 二、不盲测
  7. 三、单张打分,而不是成对比较
  8. 四、题目太少,还没分类
  9. 业界实际怎么做
  10. 三条线
  11. 一条硬约束:你需要多少次判断
  12. 我照抄了什么,又故意偏离了什么
  13. 题库:三家里选一家
  14. 但它有三条局限,得写在结论旁边
  15. 实测:十二格的速度与显存
  16. 换个算法,排名会反转
  17. 四个会静默骗你的坑
  18. 一、显存量出来是累积值,不是模型需求
  19. 二、pgrep -f 脚本名 会匹配到你自己
  20. 三、aria2 分段下载时,文件大小不等于进度
  21. 四、日志全缓冲,出事看不见
  22. 一个意外:Ideogram 4 的安全过滤器烧在权重里
  23. 挂上转换器之后:12.5% 到 93.8%
  24. 但这里有个只看通过率会漏掉的坑
  25. 最后一件事:把能自动核的和只有我能判的分开
  26. 第一轮判完了:没有一家够到锚
  27. 这一轮暴露的三个方法问题
  28. 还有一条没解释的矛盾(记住这一条,后面它是钥匙)
  29. 还有一个技术事实值得记
  30. 原计划作废:全量 25 题没跑,GSB 决赛没做
  31. 又跑了四轮,一共 255 张
  32. 客观项查出来的东西(这些跟审美无关)
  33. 一、开源模型认得灭霸,不认得美杜莎
  34. 二、有个模型会把我写的要求当画面内容画出来
  35. 三、横向排列这条指令,有一半模型稳定地不听
  36. 四、五家能把中文招牌一字不差地写对
  37. 一次自我更正:塌的不是复合度,是断代形制
  38. 然后是这次真正的发现
  39. 所以这条改成了纪律
  40. 结论:没有一家到想发,但有一档凑活着可用
  41. 两次否定,其实是同一件事

我要在本地找一个出图模型,画质得顶得住云端的 Seedream。租了张 RTX PRO 6000(96 GB 显存),装了十二个开源模型,准备一家家跑。

跑之前我先花了半天查业界怎么做这种评测,结果发现自己原来那套测法有四个硬伤。

于是返工,做了一套很讲究的评测:盲测、多种子、题库分层抽样、客观项写脚本核、主观项自己判。

然后跑完五轮、255 张图之后,我发现那套讲究的判据,测的根本不是我要的东西。

这篇记的是两次自我否定:第一次否掉测法,第二次否掉返工出来的判据。中间夹着十二格的真实速度与显存,以及几个不报错、只是悄悄给你错数据的坑。


先把这篇的边界划清楚

下面所有涉及哪家好看的判断,都是我一个人的审美,题材集中在中国古代与文物历史这个很窄的范围。而且第一轮之后的四轮是单 seed,那几轮我不是在细挑,就是看一眼、凭第一眼的感觉。这些判断不构成任何普适排名,换个题材、换个人来判,结论完全可能不一样。

但这篇里还有另一类东西:匾额上那四个字对不对、模型认不认得某个角色、中文 prompt 会不会直接失效、显存到底吃多少。这些是可复现的事实,跟谁来判没关系。

两类我会分开写,也请分开读。 而这篇最后的结论,恰恰来自这两类之间的错位。

还有两条前提

一、全部是裸跑的基础模型。没有微调、没有 LoRA、没有 ControlNet、没有放大、没有 i2i 精修。而且不只是我没加,出厂就开着的优化我也主动关掉了:ERNIE 的 prompt-enhancer 默认是开的,有个 LLM 先把你的题重写一遍;HiDream Dev 的模板默认跑 i2i;Qwen-Image 附带 Lightning-4 步加速 LoRA;Krea 2 Turbo 附带风格 LoRA。四个开关我全拨到关。

所以下面所有数字都是开箱、不调教这个条件下的。挂上这些东西之后排名会不会变,这轮答不了。

唯一的例外是 Ideogram 那一档:它前面挂了个 LLM caption 转换器,那就是一种优化手段,所以它单列成非裸跑,不跟裸跑组混排。后面会专门讲。

二、权重精度没拉平,这是个我没控制住的变量。十二格里大多数跑的是 fp8 量化版(FLUX.1 / FLUX.2 / Ideogram / Krea 2 / Qwen-Image),HiDream 是 mxfp8,而 Z-Image 那两格跑的是未量化的 bf16。

量化会不会吃掉画质、吃多少,这轮没测。所以但凡涉及 Z-Image 与别家的画质比较,都得记着它占了个精度上的便宜。


我原来是怎么测的

第一版很朴素:六道题,每个模型每题跑一张,出图发出去看,觉得哪个好就是哪个好。

跑完三个模型之后,我拿着一堆图去查别人怎么做对比测试,然后就没法接着跑了。

四个硬伤

一、单 seed 不算数

同一个 prompt,换个随机种子,构图会整个变。

ICLR'25 有篇 Spotlight 叫 All Seeds Are Not Equal,说的就是这件事:不同的初始噪声会系统性地改变物体摆放和构图,某些种子稳定地比别的好。

这意味着单 seed 的对比里,你分不清看到的差别是模型差别还是运气差别。

这条还顺手动摇了我之前的一个结论。我早先测 FLUX.1 时记过一句,prompt 换了五版,构图全塌成对称走廊。现在看,构图塌陷本身就可能是种子效应,那个结论得打折。

二、不盲测

我之前是带着文件名把图发出去的:X_flux2_Q1_skin.png。

看的人知道这张是谁出的。业界三条线,LMArena、Artificial Analysis、厂商自评,全都专门防这个:隐藏模型名、随机左右位置、投票之后才揭示身份,有的还加最短观看时间门槛。

三、单张打分,而不是成对比较

这张好不好,比 A 和 B 哪个好噪声大得多。没有哪个正经榜单是靠单张打分排名的。

四、题目太少,还没分类

六道题排十二个模型,两两组合有 66 对。这个量级连统计上的门槛都够不着,下一节会算给你看。


业界实际怎么做

三条线

自动 benchmark 那条线正在失效。GenEval、DPG-Bench 这些跑分工具,问题不在设计,在于判分器跟不上模型进步。GenEval 2 实测原版 GenEval 与人类判断的绝对误差已经到 17.7%。

所以这条线我整条不用,它们已经漂了,而且跟想不想发没关系。

顺带一提,Stanford 的 HEIM 框架有个思路我直接拿来了:不要用单一分数排名,把评测拆成互相独立的维度分别看。它拆了 12 个维度评 26 个模型,核心结论是没有任何单一模型在所有维度领先。

Arena 那条线是事实标准。Artificial Analysis 的方法论页写得最细,我照抄了这几条:prompt 按使用场景与能力两轴打标、均匀采样;每月淘汰胜率与掷硬币无异的题;参数用各家自己发布的默认值;各家跑自己支持的最高分辨率,再统一降采样到 1024² 比较;Bradley-Terry 最大似然算分,折算成 ELO 区间。

厂商自评那条线给了我判定协议。Z-Image 的技术报告里,它跟 FLUX.2 dev 单挑用的是 222 条 prompt × 每条 3 名独立标注员 × GSB。

GSB 就是 Good / Same / Bad,允许平局,胜率算 (G + 0.5S) / (G + S + B)。

允许平局这一点是关键。强制二选一会制造虚假的区分度,两张都不行的时候逼人选一个,选出来的那个就成了更好。

一条硬约束:你需要多少次判断

How Many Human Judgments Are Enough 给了个公式,n ≈ 2.63 / δ²,δ 是两个模型真实的偏好差。

两模型真实差距 δ 需要的判断数
0.20(一眼分得出) 66
0.10 约 263
0.05 约 1051

而且 Chatbot Arena 有 17.6% 的模型对,即便攒够 200 次判断,仍然处在低信号区,就是说还是分不出来。

这张表推出来两条纪律。先做 pilot,先小规模跑一轮估出效应量,再决定要不要投大,别一上来就 1200 张。以及判不出高下不等于两个模型一样好,大多数时候只是样本不够,结论里得把确认打平和样本不足分开写,不然就是在拿沉默冒充结论。


我照抄了什么,又故意偏离了什么

项 业界做法 我的做法 为什么
盲测 隐名、位置随机 照抄 —
参数 各家官方默认 照抄 —
分辨率 各家最高,再降采样到 1024² 比 照抄 顺带解决了一个麻烦,见下
比例 统一 1:1 照抄 消掉宽高比这个混淆变量
seed 1 张 / seed 42 偏离:4 个 seed AA 靠海量 prompt 平均掉方差,我 prompt 少,只能靠多种子
蒸馏版 归为 Modified、默认从榜上隐藏 偏离:照测,但分组 我本来就要跑得快的;但 8 步的和 50 步的不混一张榜
prompt-enhancer 用各家默认 偏离:一律关掉 见下面那段

分辨率那条为什么重要:HiDream 只训了约 4 MP 的十一个档位,强行降到 1024² 会跑到分布外、画质明显退化。而各家跑自己的、比较时统一降采样这个做法,天然就照顾到了这一点,不用为它开特例。

enhancer 那条是我坚持要偏离的。我拆开各家的出厂工作流之后发现,ERNIE 和 HiDream 的官方模板默认是开着 prompt-enhancer 的,有个 LLM 子图先把你的 prompt 重写一遍再喂给模型。挂着它跑,等于让这两家用改写过的题应试,所以我一律关掉。这是有意偏离官方默认,得在文档里写明。


题库:三家里选一家

自己编题是最差的选项,编的人有倾向,而且没法让人复现。所以去找公开题库,最后比了三家:

OneIG-Bench Qwen-Image-Bench DynEval
日期 2025-06(榜 2025-09 停更) 2026-05 2026-07
题量 1120 英 / 1320 中 1000(中英各半) 1000
中文质量 机翻 原生双语专家撰写 未说明含中文
有没有 AI 感这一项 没有 有 没有
附带参考图 没有 18 个模型 × 各 1000 张 没有

选 Qwen-Image-Bench,三条硬理由。

一是中文是原生撰写不是机翻。OneIG 的中译我实测过,swept bangs 翻成扫帚刘海、middle of w 翻成 w的中间。拿机翻的题测中文能力,测出来的是模型对烂中文的容忍度。

二是每道题标注了它考哪几个细粒度维度,一共 56 个三级标签,可以按维度分层抽样,不用凭感觉挑。

三是它专门有一项叫 Quality / Detail / Naturalness,中文标的是图像质量-细节度-AI 感。全库 1000 条里只有 57 条带这个标签,而一眼假恰恰是我判死上两个模型时用的词。

还有个意外之喜:它把 18 个模型各 1000 张的出图也一起发布了,其中就有 Seedream。我的参照物白送。

但它有三条局限,得写在结论旁边

时间差。题库 2026-05 定版,我测的十二个模型里有十个是它停更之后才出的,榜上一个都没有。所以能跟论文数字对照这条好处,实际上不成立。

利益冲突。题库是阿里出的,而我要测的模型里就有阿里的 Qwen-Image。缓解办法是用人评、不使用它自带的判官模型,但这条得标出来。

参照图不是最新档。我实际在用的是 Seedream 5.0 Pro,而 Pro 的 API 是 2026-07 才上线的,题库 2026-05 定版,榜里那个 Seedream-5.0 不是 Pro。

这条我实测量过差距:同一道人像题,Pro 和非 Pro 并排看,非 Pro 明显磨皮、毛孔几乎不可见,而那道题的要求里明写着无 AI 蜡像感。两张分辨率不同(2048² 对 1024²),所以我又把 Pro 降采样到 1024² 重比了一次,差距依然明显。这就排除了唯一的混淆变量,可以确定那是模型代差,不是分辨率。

这一处没有配图:非 Pro 那半边是题库附带的参照图,题库本体是 Apache 2.0,但那 18000 张参照图是各家商业模型的产出、许可没有单独声明,所以我只在本地做对照,不往外发。

所以那 18000 张白送的参照图只能当下限线:连非 Pro 都打不过的,不用谈 Pro。


实测:十二格的速度与显存

各格用自己的出厂分辨率与出厂参数,跑 8 题 × 4 seed = 32 张,取热跑中位数,首张含模型加载、单独列。

键 步数 / 分辨率 首张 热跑中位
Z-Image-Turbo 8 步 · 1024² 19.8 s 1.9 s
Krea 2 Turbo 8 步 · 1024² 24.0 s 3.0 s
FLUX.1 dev 20 步 · 1024² 22.1 s 5.9 s
HiDream-O1 Dev 28 步 · 2048² 24.5 s 7.3 s
Ideogram 4 20 步 · 1024² 22.2 s 7.4 s
Kroma v0.2-turbo 10 步 · 1024² 32.2 s 8.1 s
Z-Image base 25 步 · 1024² 21.8 s 9.5 s
ERNIE Image 20 步 · 1024² 30.4 s 9.7 s
FLUX.2 dev 20 步 · 1024² 61.4 s 11.8 s
HiDream-O1 Full 40 步 · 2048² 45.2 s 26.2 s
Qwen-Image 2512 50 步 · 1328² 67.1 s 50.1 s

最快到最慢差 26 倍。

换个算法,排名会反转

上面那张表对 HiDream 不公平,它跑的是 4 MP,别家跑 1 MP。换成每百万像素秒数:

模型 分辨率 s / MP
HiDream-O1 Dev 2048² 1.74
Z-Image-Turbo 1024² 1.81
Krea 2 Turbo 1024² 2.86
FLUX.1 dev 1024² 5.62
HiDream-O1 Full 2048² 6.25
FLUX.2 dev 1024² 11.24
Qwen-Image 2512 1328² 28.5

HiDream-O1 Dev 的吞吐是全场第一:它 7.3 秒出的是 4 MP 图,Z-Image Turbo 1.9 秒出的只有 1 MP。


四个会静默骗你的坑

这四个的共同点是都不报错。你以为在正常跑,实际上拿到的是错数据。

一、显存量出来是累积值,不是模型需求

我第一遍量的显存长这样:

HiDream Full  13.6 GB
HiDream Dev   19.7 GB
FLUX.2        70.7 GB
FLUX.1        88.1 GB
Krea 2 Turbo  96.9 GB   ← 然后第六个模型加载时,服务崩了

看出问题了吗?它单调递增。

ComfyUI 会把跑过的模型都缓存在显存里不放。跑到第五个时已经占了 96,957 / 97,887 MiB,第六个模型 12.5 GB 一加载,直接把服务搞崩,跑图脚本跟着报 Connection refused 退出。

不是主机内存不够(还剩 948 GB),也不是权重损坏(字节数校验一致)。修法是每换一个模型前主动 POST /free。

修完再量,结论跟第一版完全相反:

模型 第一遍(累积值) 腾干净后的真值
HiDream-O1 Dev 19.7 GB 11.05 GB
HiDream-O1 Full 13.6 GB 13.51 GB
FLUX.1 dev 88.1 GB 17.85 GB
Krea 2 Turbo 96.9 GB 18.81 GB
FLUX.2 dev 70.7 GB 53.22 GB

HiDream 跑 2048² 只要 11 GB,是全场最省的;FLUX.2 跑 1024² 要 53 GB,差四倍。 而第一张表给人的印象正好反过来,因为 HiDream 排在第一个跑,锅是空的。

FLUX.2 那 53 GB 也说得通:主干 fp8 混合精度 33 GB 加文本编码器 16.8 GB,光加载就 50 GB 起步。

这里还有个二阶坑。我重测 FLUX.1 时拿到 34.7 GB,但那一格 /free 之后的基线是 36 GB 而不是 828 MB,上一个模型没释放完。峰值比基线还低,数字自相矛盾,单独重测才拿到干净的 17.85 GB。所以 /free 之后要回读基线,没回到空盘状态,那次测量就作废。

二、pgrep -f 脚本名 会匹配到你自己

我写了个哨兵等跑图结束:

while pgrep -f runner12.py >/dev/null; do sleep 60; done

它永远不会退出。因为这条命令自己的命令行里就含 runner12.py 这个字符串,pgrep -f 匹配的是完整命令行,于是它一直匹配到自己。

后果是 ComfyUI 崩了二十多分钟,哨兵还在安静地循环报告仍在跑。这个假阳性比前一个更危险,它让你以为一切正常。判进程死活要么排除自身,要么干脆锚在服务答不答话上。

三、aria2 分段下载时,文件大小不等于进度

用 aria2c -x16 --file-allocation=none 下大文件时,stat 看到的是当前最大写入偏移,不是已下载量。实测文件看着 12.0 / 12.3 GB 快满了,aria2 日志才 68%。

判完成只能看 .aria2 控制文件消失,别用文件大小。我的自动化脚本因为这个差点在权重没下完时就开跑。

四、日志全缓冲,出事看不见

Python 的输出重定向到文件时是全缓冲。跑了半小时,pilot.log 还是 0 字节。上面那次崩溃就是这么被拖了二十多分钟才发现的,我只能靠数输出目录的文件数来猜进度。

python -u,一个参数的事。


一个意外:Ideogram 4 的安全过滤器烧在权重里

跑到 Ideogram 4 那格,出来的图全是一张灰底占位图,上面写着 Image blocked by safety filter。

Ideogram 4 被自带安全过滤器拦下时输出的灰底占位图,画面中央一行英文写着 Image blocked by safety filter

32 张里有 28 张是这个。像素标准差恒在 11 左右,正常照片是 46–55,这个差距大到可以直接拿来当自动判据。

第一反应是我配错了。查下来不是:ComfyUI 源码里 grep 不到这句话,它的节点源码里没有任何 safety 相关代码,连埃菲尔铁塔晨光、故宫冬日雪景这种题都被拦。

ComfyUI 官方的发布文确认了:这个过滤器烧在模型权重里,ComfyUI 侧无法调整、关闭或覆盖。社区甚至专门做了个工具,在采样中途检测到输出坍缩成平坦灰图就提前中断,省算力。

真实的通过率是 4 / 32 = 12.5%。而且有个更有意思的现象:同一道题不同种子,结果不一样,故宫雪景 4 张过了 3 张,人像 4 张只过了 1 张。说明这个判断带随机性,不是纯由内容决定。

这里我犯了个错,值得记下来。我一开始只抽查了一张就下结论说 32 张全废,后来逐张算像素标准差才发现有 4 张是好的,而且那 4 张的质量是全场第一档,标准差 46–55,正常照片的水平,被拦的那些是 11。差点因为抽查一张就把一个好模型判死。

它的官方工作流其实是先用一个 LLM 把自然语言转成结构化 JSON caption 再喂给模型,纯文本的误报率会高很多。但那就不是裸跑了,所以这一格得单开一档,不跟裸跑组混排。

挂上转换器之后:12.5% 到 93.8%

后来照官方开源仓(不是 ComfyUI 的转述)复刻了那套 caption 工序,通过率从 4/32 涨到 30/32。裸跑时全拦的六道题全部救回 4/4,唯一没救回的是直射光下的人脸特写,单人正面近景本来就是这类分类器误报率最高的一档。

过程里纠正了我三条误读,第三条最要命。官方 schema 里根本没有 aspect_ratio 这个键;官方代码在喂给模型之前会把 aspect_ratio 和 bbox 一起删掉,那个键只是给 LLM 内部定位用的锚;而我之前那次手工包成最小 JSON 也被拦的实验,三条全踩了——带着非法键、background 是空串、elements 是空表。

所以那次的结论 JSON 也救不了是错的。不是 JSON 救不了,是那份 JSON 本来就不合规。

跑了两个对照组才定位到真正起作用的东西:加上 style_description 是 93.8%,把 aspect_ratio 加回去还是 93.8%,两个都不是变量。真正起作用的是 compositional_deconstruction 里有没有真内容,背景要有一段实打实的场景描述,元素要一件件列全。最小 JSON 把这两处留空,等于把信息量退回自然语言那一档,当然照样被拦。

但这里有个只看通过率会漏掉的坑

第一版转换器出来的 caption,把商代宗庙祭祀写成了 A digital 3D rendering of ...。

内容一件没丢,巫祝、三件青铜礼器、灯树、禁止项全在,通过率也是 4/4。

但这一格判的是照片级真实。介质被换成 3D 渲染,等于换了考题,那四张图全部作废。加了一条题目没点名介质时不许出现 3D 渲染、数字绘画、插画的校验之后重转、重跑全部 96 张,上面那些数字都出自加校验之后那一轮。

教训写成一句:通过率上去了,和题还是那道题,是两件事,必须分开验。


最后一件事:把能自动核的和只有我能判的分开

224 张图,全量会到 1200 张,我不可能一张张看过去。但想不想发这个判据,又只有我自己能给。

所以把判据拆成两类:

类型 谁判 例子
客观项 写脚本逐条核 断代穿帮、器形对不对、文字准不准、手指数量、计数与空间关系
主观项 只有我能判 想不想发

客观项我交给脚本核。某个模型的四个种子全都把商代场景画成了明清风格(紫色丝绸袍、木桌、宫灯),那就直接标断代崩、出局,这八张图我根本不用打开。

两张商代宗庙祭祀场景并排,左边人物穿紫色丝绸袍、器物摆在铺布木桌上、两侧是带罩宫灯,右边人物穿黑色麻袍跪坐、器物摆在夯土台上、两侧是青铜枝状灯树

同一道题。左边这家四个种子稳定地画成明清道观:紫色丝绸袍、木桌、带罩宫灯。右边是云端那家:黑麻袍、夯土台阶、青铜枝状灯树,连方鼎、觥、爵三件器形都对。左边这八张我不用打开就能判出局。

这一轮下来,我要亲眼看的图直接少了七分之二。

剩下的判图也有讲究,这几条是想清楚之后定的。按模型切,不按题切:一屏一个模型的八道题,回答的是这家留不留,十二屏两分钟扫完,按题切留到决赛。缩略图按题型定制裁切,人像给脸部原尺寸、器物给器身、场景给全图,因为拼图里每格 300px,毛孔和铜锈全糊了,而那正是判据。第一轮只看一个种子,四个种子留到决赛判稳定性。用排除法不用挑选法,问哪些一眼出局,不问哪个最好,人对前者的判断快好几倍,不打分,只做留与不留的二分。每屏混一格云端参照当锚,但我自己不知道是哪一格。


第一轮判完了:没有一家够到锚

挑片台做出来之后,第一轮盲测判完了:12 家本地模型加 3 家云端参照,853 张图,三遍走完约 40 分钟。

判的方式是一屏一家,九格,它自己的八道题外加一格云端参照当锚,不标名字混在里面。所以会有一道题出现两格,我自己也不知道哪格是它。

结果留下 4 家。但按每题机会归一之后,那个锚只在 5 道题上有图,直接比总数不公平:

张 / 题
Seedream 5.0 Pro(锚) 1.00,五题全被圈中
最好的开源 0.62

没有一家够到锚。我当场的判断是:中国古代那个场景,我看得上的只有 Seedream 5.0 Pro。

这一轮暴露的三个方法问题

一、判据会随疲劳漂移,一轮里漂了三次:粗筛时松、逐张圈时中、回看时严。下一轮要把粗筛和终评拆成两轮,一轮里只用一个标准。

二、消融档会偷偷制造曝光加成。Ideogram 有三个变体档,我在按模型看那屏挡住了它们,否则同一家占三屏,等于三倍抽卡机会;但按题看那屏没挡住,逐张圈图时它仍然有三倍出场机会,三档合计被圈了 31% 的图,而它主档单独算只有 0.62 张/题,跟别家一个水平。那 31% 是采样量优势,不是模型优势。这条还没修。

三、题库对具体项目不是等权的。有四道题(故宫雪景、埃菲尔铁塔、两道人像)九家都能出想发的图,根本区分不出东西;真正的分水岭全在先秦场景和青铜器那几道。所以看结论时不能让那一堆好看的人像图把判断带跑,题目的区分度得单独审,不是凑够数量就行。

还有一条没解释的矛盾(记住这一条,后面它是钥匙)

有一家模型,盲测逐张圈图时被选中 5 次、覆盖 5 道题,是全场覆盖最广的,而且它是唯一没有曝光加成的那家;但在粗筛整屏看的时候,被判了不留。

不看名字时选了它五次,看整屏时把它划掉了。

当时我把它记成一条待复核的矛盾,以为是我哪一遍看走了眼。后面四轮跑完才知道,它根本不是矛盾。


还有一个技术事实值得记

Ideogram 的 API 同一个 seed 不复现。

我拿两个内容完全相同的 prompt 跑,其中一个多带了个会被官方代码删掉的无效键,所以模型看到的输入是一样的,出来的图完全不同——平均像素差 11.6~26.6,差异像素占 77%~99%。那不是元数据差异,是两张不同的图。

而本地 ComfyUI 同 seed 重跑是逐字节相同的,实测验过。

这个差别有实际后果:云端模型的消融实验,你分不清差异是变量起作用还是纯抽卡。真要判某个参数有没有用,得同档跑两次先拿一条基线出来,那要花钱。本地模型没这个问题。


原计划作废:全量 25 题没跑,GSB 决赛没做

按原计划,下一步是把留下的 4 家拉去跑全量 25 道题,再做 GSB 对决。两件都没做,而且是有理由地没做。

全量不跑,因为第一轮已经暴露了有四道题九家都能做好、区分度为零。25 道题里这类占大半,扩题量只会把都不行测得更贵,不会测得更清楚。

GSB 不触发,因为它的前置条件是某个本地模型打平或胜出。第一轮的结果是没有一家够到锚,条件没满足,这一步按设计就不该做。

改成了另一件事:换维度,一轮一轮地问那到底是哪儿不行。


又跑了四轮,一共 255 张

每轮五道题左右,换一个能力维度,每格一张,seed 42。

轮 维度 题目举例
二 中国古代 汉代市肆匾额上的四个字、商代夜祭的单光源灯树、手托青铜爵的近景
三 AI 漫剧 三格漫画的角色一致性、九宫格每格中文、对白气泡的尾巴指向、景别递进
四 单层诊断 只留材质、只留光影、只留人物质感,其余全剥掉
五 科幻 / 魔幻 / 复杂场景 / IP 赛博城市、漂浮空岛、二十人的稷下学宫辩论、灭霸、美杜莎

为什么后面全是单 seed?因为这四轮的定位跟第一轮不一样。第一轮是三遍细挑、40 分钟走完 853 张;后面这四轮我不细挑,就是看一眼、凭第一眼的感觉。第一眼看不上的东西,多给三个种子也不会变成想发的。

这跟前面单 seed 不算数那条不冲突,但打的折得说清楚:单 seed 定不了精确名次,它只够回答这一档能不能看。


客观项查出来的东西(这些跟审美无关)

这一类是可复现的,我先单独列。

一、开源模型认得灭霸,不认得美杜莎

第五轮我出了两道 IP 题,只给角色名,不描述长相,要测的是模型脑子里有没有这个角色,把体貌特征写全了就变成测渲染了。

题 结果
漫威的灭霸 9 / 9 全部认得出。紫皮肤、方下巴的纵向沟纹、金蓝配色盔甲、无限手套,特征稳定复现
《斗破苍穹》的美杜莎女王 0 / 9。没有一家画出原作那个角色

失败的方式还分成两拨:一拨直接退回希腊神话那个蛇发女妖,蛇发、希腊石柱、蛇尾;另一拨画的是泛东方的带蛇女王,中式宫殿、眼镜蛇、繁复头饰,看着有那么点意思,但同样不是原作里的人。

九宫格,九个开源模型对同一道题的出图,有的画成蛇发女妖配希腊石柱,有的画成中式宫殿里戴繁复头饰、身旁盘着眼镜蛇的女性

同一道题,九家。左上三张退回了希腊神话,中间和下排几张换成了泛东方的蛇族女王。没有一张是原作里的那个角色,而这道题我只给了角色名和出处,没描述长相。

共同点是美杜莎这个名字盖过了斗破苍穹这个限定。中文网文和国漫的角色,不在这些模型的世界知识里。

对做内容的人来说这是条硬约束:国漫和网文 IP 靠 prompt 点名行不通,必须走参考图。

还有个次级发现:认得出角色不等于记得住道具。无限手套应该是六颗宝石一字排开,九家里没有一家数量和排布完全正确,多数是四五颗散布在拳背上。

二、有个模型会把我写的要求当画面内容画出来

我的 prompt 末尾习惯写一段约束,比如要求气泡尾巴不得指错人、不得悬空。

有一家模型把这段话当成台词画进了气泡里,画面上明明白白写着不得指错人、不得悬空。

漫画分格,一位老匠人站在陶窑前,头顶两个对话气泡里竖排写着火候不够、不得指错人、不不得悬空、与上述完全

气泡里该出现的只有火候不够四个字。不得指错人、不不得悬空、与上述完全,全是我 prompt 末尾那段约束,被它当成台词画了上去。

同一族毛病四轮都在复现。另一道题里,它在画面上写出了四格画、不得出须能认出是同子,那是我四格必须能认出是同一个人那句被渲染成了画面文字,而那道题的要求正是四格不得出现文字。还有一次,它在殿门匾额上写了下瞅楼殿、大鹏宫这类根本不存在的词,题目压根没要求任何文字。

它不区分描述和约束。对策很具体:给这家写 prompt 别写要求那一段,把约束改写成正面描述,不写不得有桌椅,写席地而坐的空旷夯土地面。

三、横向排列这条指令,有一半模型稳定地不听

有两道题我写了三格分镜、横向排列。

结果模型分成了泾渭分明的两派,一派老老实实横排,另一派一律排成竖排。两轮不同的题,落在同一边的还是同一批模型。

这就不是抽卡波动,是稳定性格。做横版分镜的话,模型选择会被这条直接卡住,跟画质好坏没关系。

四、五家能把中文招牌一字不差地写对

有道题要求匾额上横书东市酒肆、幡旗上竖书酒与浆。这个判据没有解释空间,字对就是对,错就是错。

五家两处全对。错的那几家错得很有意思:东酒酒肆、膳市酒东、东市酒糶,还有把幡旗写成酒漾的。

三块木匾竖排对比,第一块写着东市酒肆四字正确,第二块把第二字写成酒变成东酒酒肆,第三块字序全乱写成膳市酒东

同一道题的三家。上:东市酒肆,一字不差。中:第二个字写成了酒。下:四个字全乱,第一个字还是个生造的字。这一条没有解释空间,字对就是对。


一次自我更正:塌的不是复合度,是断代形制

第四轮我做了个诊断:三道题各只留一层,把其余全剥掉,只留材质、只留光影、只留人物质感。

结果材质层和人物质感层都站得住:三种材质各自可辨,锈层有厚薄、陶断口有气孔、麻布经纬可数;人像那道十家全员没有塑料感和蜡像感,毛孔、细纹、日晒肤色不均、须茬都在。

我当时下的结论是:单层站得住、复合才塌,所以拆分工序有希望。

第五轮我专门出了道题去压这个结论——战国稷下学宫的辩论,三层空间、二十人以上且姿态不能重复、殿内暖火光与门外冷暮色要在地面形成可辨过渡,复合度远高于第一轮那道崩掉的商代宗庙。

结果它没崩。多数格拿到了正确的三层遮挡、二十人的场面、冷暖过渡。

所以我上一轮的诊断下早了。回头看第一轮那道商代宗庙的失败项,丝绸还是麻、石砌还是夯土、宫灯还是灯树、有没有桌椅,全是断代项,没有一项是人太多画不下。稷下学宫那道我只写了交领右衽、无桌椅这一点点形制约束,它就没崩。

塌的不是复合度,是精确到形制的历史还原。


然后是这次真正的发现

前面那些客观判据,我做得挺得意的:全是二元的,没有解释空间。匾上四个字对不对、左眉那道疤四格在不在、三格是横排还是竖排、无限手套几颗宝石。写成脚本能核,别人能复现。

四轮判下来,它们跟我的审美判定几乎不相关。

客观判据说 我看图说
一家 版面四条全中、唯一带上特征锚点的两家之一、光影四条全中、表情演出最好 三轮都判不行
另一家 格数就错、材质做得糊、投影方向反了、画风前后不统一 两轮进前三

题材从中国古代换到漫剧、换到科幻魔幻,这个错位一次都没变过。

我量的是遵从度,模型有没有照着我说的做;我看的是别的东西。这两件事几乎正交。

这也就是前面那条没解释的矛盾的答案。那家盲测被圈中最多次、粗筛整屏却被我划掉的模型,在客观分上一直难看,却两轮被我的眼睛排进前三。它不是矛盾,是我的判据选错了对象。

所以这条改成了纪律

客观核只许用来削掉硬失败:被安全过滤器拦的、满屏噪点的、中文失效输出二次元少女的、格数完全跑偏的。这一层它准得很,一轮就帮我省掉七分之二的看图量。

客观核不许用来预排名,也不许拿它砍模型。这一轮如果按客观分砍,会正好砍掉我自己排第二的那家,留下我判不行的两家。


结论:没有一家到想发,但有一档凑活着可用

五轮、255 张、四次判定,题材换遍了中国古代、AI 漫剧、单层材质光影、科幻魔幻 IP。

没有一家本地开源到得了想发那条线。中国古代那个维度尤其明确,我看得上的只有云端那家。

我一度以为会分叉,科幻魔幻这种题材本地可能够用。追问自己之后否掉了,那一轮的判词是没到想发的程度,也是凑活着可用。

但凑活着可用不是不能用,它划出了一个真实的位置。这是五轮里唯一的正面结论:

用途 用谁
定稿 / 成片 云端那家
草稿 / 预览 / 试构图 / 铺量 本地

价值在省钱:试构图、试景别、试排版这类要反复抽卡的活占用量最大,每张都走云端是纯浪费,本地这一档正好接得住。

分界线得守住:凡是会进成片的画面,一律走云端。 把凑活着可用的东西放进成片,就等于放弃了想不想发这条判据,而那是我唯一的判据。


两次否定,其实是同一件事

第一次是测法错了:单 seed、不盲测、单张打分、题目太少。那次好修,照业界返工就行。

第二次是判据错了:我把能不能自动核当成了值不值得测。二元、可复现、能写成脚本,这些优点让我误以为它们在衡量重要的东西。它们衡量的是模型听不听话,不是图好不好。

这条对任何做评测的人可能都成立:你能测的东西,和你真正在乎的东西,中间那道缝有多宽,得自己去量一次才知道。

而量的办法只有一个笨办法,两套结论都留着,然后看它们对不对得上。我这次留了,所以看见了。

如果你也要做这类对比测试,上面那四个硬伤、四个坑、和最后这道缝,够你少走几天。