模块 1 / 5

1

核心目标与架构

1.1 北极星指标与核心产出

北极星指标

本评测聚焦多模态大模型能否直接产出具备院线电影成片级别质感的静帧;建立高门槛视觉检验标准。

参评模型

四个多模态大模型双盲评估:Midjourney v8.1、GPT Image 2、Seedream 5.0 Pro、Nano Banana Pro。

核心产出

① 宏观胜率 · Arena → ELO / BT

同题双盲对战,输出综合排位与置信区间,回答「谁整体更接近院线成片静帧」。

② 基准对比 · GSB(Good / Same / Bad)

锁定主对照 Nano Banana Pro,用更好 / 相当 / 更差做相对提升判断。

③ 分维诊断 · MOS(结构化打分)

按语义对齐 / 场面调度 / 灯光动机 / 镜头光学 / 表演质感独立打分,定位物理与视听短板,支撑具体改进维度。

1.2 顶层架构:4×3 测试矩阵

完整体系是 4 Genre × 3 Workflow × 4 题/格 = 48 题 的二维评估矩阵,类型与工作流配额均等。

X 轴 · Genre 场景生态

选取四种电影类型,覆盖电影工业的四极光影环境: 科幻(大光比 / 巨构)、 悬疑(低调光 / 高宽容度)、 东方文艺(自然光 / 大留白)、 现代写实(混合色温 / 生活流)。

Y 轴 · Workflow 制片工作流

三种信息密度,压测从宏观概念到微观质感: Moodboard 气氛板Storyboard 分镜Hero Shot 英雄镜头

1.3 MVP 敏捷验证:科幻垂直切片

Phase 1 不一次跑满 48 题,而是提取 科幻 Sci-Fi 的 12 题做全链路垂直跑通:四种模型同题出图 → 标注 → 统计。

为何首选科幻

物理与光学的高压区

科幻集中了混合色温冲突、非常规空间调度(如失重气闸的倒立遮挡)、复杂材质交界(义体与皮肤)等极端条件, 更容易把模型差异压出来,适合作为首测切片。

客观标准更好对齐

冷峻、重物理逻辑的镜头,逼着标注先盯透视、景深、光影等可核对指标, 有利于统一尺子、压住 κ 崩盘,再扩到其他类型。

三维权衡

代表性

通过将 12 道题均分至 Moodboard 气氛板、Storyboard 分镜和 Hero Shot 英雄镜头, 用有限的题量贯穿影视制片从宏观氛围到微观细节的三大核心工作流,确保纵向业务链条的完整代表性。

区分度

摒弃「数手指」等低阶纠错题,直接利用极难的镜头、布光与空间物理逻辑制造高压测试, 并设定「画错即判负」的语义对齐门槛(对齐严重失败不得靠更好看翻盘)。

生态效度

将真实大片的经典名场面反推还原为工程化提示词,确保评测输入贴近真实的电影制片现场。

模块 2 / 5

2

进入评测

进入盲测实验室采集 ArenaGSBMOS,结果本地保存并可导出 JSON。

评测实验室 · 科幻切片

任务量:Arena 72 · GSB 36 · MOS 48(合计 156)。

打开评测实验室

模块 3 / 5

3

评测实验室怎么设计的

3.1 评测员进实验室会经历什么

从模块二点开评测实验室后,评测员按固定顺序走完一整轮采集;进度本地保存,可中断后续标。整轮结束后导出一份 JSON,供模块四做统计分析。

环节 评测员做什么
开标说明 先阅读实验室规则(双盲、决策顺序、禁止项等),确认后才解锁后续协议;未读完不能开标。
Arena(72 题) 同题两张盲测静帧左右对照,选 A 更好 / B 更好 / 平局。左右位置随机、模型名不可见。
GSB(36 题) Arena 全部完成后解锁。相对固定对照图(Nano Banana Pro)判候选 Good / Same / Bad。
MOS(48 题) GSB 全部完成后解锁。对每张图按五维 1–5 打分(表演维按题可为 N/A)。
导出 JSON 三种协议都完成后解锁。填写评测员姓名,下载标注文件,进入后续数据分析。

3.2 题目怎么设计

每一题都从真实院线成片里会出现的场景反推。

Prompt × 依据片对照表

ID 类型 工作流 依据片 核心考点 完整 Prompt
p01 科幻 气氛板 《沙丘2》
2024
红外去色+正午硬顶光+巨构小人尺度;弗莱瑟红外摄影 科幻气氛板:正午极其刺眼的硬顶光,画面呈现去色的红外黑白高反差质感。背景是巨大尺度的极简几何建筑,前景有微小的黑色人影剪影,极具压迫感与宗教仪式感。 Infrared black and white cinematic still, harsh midday overhead sunlight, stark contrast, brutalist architecture scale, 35mm lens, 16:9.
p02 科幻 气氛板 《银翼杀手2049》
2017
单色橙散射+广告残骸+太阳硬圆盘;迪金斯废土大气 科幻气氛板:无尽橙色沙尘暴吞没巨型广告残骸,地平线几乎消失,仅存一条细亮的太阳圆盘;色温被沙尘统一成单色橙,尺度令人物不可见。 Monochrome orange dust storm, buried megastructure silhouettes, sun as a hard disk through particulate, extreme wide, anamorphic still, 16:9.
p03 科幻 气氛板 《降临》
2016
椭圆船体负空间+雾面仪式着陆+静水/雾;底部环光为去版权动机光改写 科幻气氛板:黑湖般平静的着陆场,巨大椭圆形船体悬浮贴近水面,船体底部仅有一圈冷白环光;雾把远山抹成灰带,肃穆如仪式现场。 Low-key fog basin, hovering ovoid craft with underside ring light only, mirror-still water, 50mm, crushed blacks, 16:9.
p04 科幻 气氛板 《流浪地球2》
2023
地下工业圣堂蒸汽切光与液面反射网格纵深;冷却液绿色为动机色改写 科幻气氛板:地下反应堆大厅,绿色冷却液池反射出网格状天花板;顶光被蒸汽切成斜条,工业宗教感,拒绝霓虹赛博滤镜。 Industrial cathedral interior, green coolant reflections, steam-cut shafts of top light, low saturation, 24mm deep space, 16:9.
p05 科幻 分镜 《地心引力》
2013
失重倒置前景遮挡+道具唯一动机光;标杆并参《星际穿越》失重系统 科幻分镜:失重状态下的空间站气闸舱。镜头倒置,前景是倒立漂浮的宇航员A(背对镜头,只露肩部),正将发光红色晶体递给中景处正向悬浮的B。晶体是唯一强动机光源,照亮B的脸。 Zero-gravity floating blocking, upside-down foreground occlusion, motivated red light from prop, 35mm lens, one-point perspective, 16:9.
p06 科幻 分镜 《异形:夺命舰》
2024
竖井负空间+贴壁攀爬+格栅碎斑顶光 科幻分镜:狭长通风井内,角色贴着右侧壁板攀爬,左侧是直通多楼层的竖井负空间;上方格栅漏下碎斑顶光,下方深不见底。 Vertical shaft climb, character hugging right wall, heavy negative space left, grated top light mottling, 18mm low angle looking up, 16:9.
p07 科幻 分镜 《2001太空漫游》
1968
人工重力环弯面地平线标志构图 科幻分镜:旋转人工重力环走廊,地面在画面中呈弯曲地平线;两人在弯面上相向奔跑,远处舱门因曲率被抬高出画框中线。 Rotating habitat corridor with curved floor horizon, two runners opposing on the bend, 28mm, deep focus, practical wall strips as light, 16:9.
p08 科幻 分镜 《地心引力》
2013
碎片外涌方向统一+抓门框抗吸力 科幻分镜:气密舱破口处,碎片与线缆向画面右侧高速外涌;角色用一只手抓住门框,身体被吸向破口,另一手护住面罩。 Explosive decompression staging, debris streaking right, character gripping doorframe against suction, hard practical strobes, 35mm, 16:9.
p09 科幻 英雄镜头 《降临》
2016
厚玻璃光学分层:内侧凝露指纹 vs 外侧自发光环纹 科幻英雄镜头:透过厚层观察窗玻璃看外星语言环纹在雾气中缓慢明灭;玻璃内侧有水汽与指纹,窗外几乎无可见光源,只有环纹自发光。 Extreme close-up through thick viewport glass, fogged fingerprints, self-illuminated alien ring glyphs as sole light, macro shallow DOF, 16:9.
p10 科幻 英雄镜头 《登月第一人》
2018
面罩内壁凝水+眼合焦+座舱虚化 科幻英雄镜头:飞行员面罩半起,面罩内壁凝结水珠,眼睛合焦,背景座舱仪表严重虚化;眼神克制决断,皮肤有真实毛孔。 Medium close-up, visor half-raised with interior condensation, eyes sharp, cockpit bokeh, Rembrandt remnant key, 85mm T2.0 feel, 16:9.
p11 科幻 英雄镜头 《攻壳机动队》
2017
2017 真人版颈接口线束/冷却液与金属-皮肤交界 科幻英雄镜头:义体颈部接口被打开,露出线束与冷却液微渗;侧逆光勾出金属与皮肤交界,表情麻木。 Close-up neck interface open, cable bundles, coolant seep, cold rim light + soft side key, tactile metal/skin boundary, 100mm, 16:9.
p12 科幻 英雄镜头 《异形》
1979
单束垂直顶光打亮壳体+小人比例尺 科幻环境英雄镜头:船坞深处,一束顶光垂直打下,照亮孤零逃生舱壳体;周围结构沉入黑暗,小人作比例尺。 Extreme wide hangar, single vertical top light on escape pod, scale figures tiny, cathedral blacks, 16:9.
p13 悬疑 气氛板 《囚徒》
2013
迪金斯低调光+积水拉丝+死黑负空间轿车体量 悬疑气氛板:雨夜郊外停车场,唯一光源是远处路灯在积水中拉成长条;一辆深色轿车占画面三分之一,其余是死黑与雾。 Night parking lot, single distant streetlamp streak in puddles, dark sedan mass, crushed blacks, low-key, 35mm, 16:9.
p14 悬疑 气氛板 《七宗罪》
1995
暗廊消失点+门缝窄暖黄动机光+尘粒光束 悬疑气氛板:地下室尽头一扇微开的铁门,门缝泄出极窄暖黄;墙面潮湿反光,空气里可见漂浮尘粒,压迫来自未知。 Basement vanishing corridor, slim warm slit from steel door, damp wall sheen, floating dust in beam, 28mm, 16:9.
p15 悬疑 气氛板 《穆赫兰道》
2001
霓虹百叶条纹+空床缺席+粉绿溢光 悬疑气氛板:汽车旅馆霓虹在百叶窗上切出条纹,室内其余全黑;床空,只有枕头凹陷暗示有人刚离开。 Venetian blind neon stripes across empty motel bed, pillow depression, pure black fill, low saturation pink/green spill, 50mm, 16:9.
p16 悬疑 气氛板 《七宗罪》
1995
柱列纵深+雨雾大气透视;救护车为气氛点缀 悬疑气氛板:暴雨中的高架桥底,混凝土柱列延伸成重复节奏;远处救护车冷光一闪即灭,地面油膜极低饱和。 Underpass columns repeating into fogged rain, brief cold ambulance glow in distance, oily asphalt sheen, 24mm, 16:9.
p17 悬疑 分镜 《疾速追杀4》
2023
当代院线极端鸟瞰楼梯与建筑坠落透视;并参《闪灵》天井几何压迫 悬疑分镜:方形楼梯井的极致垂直俯拍。深焦贯穿多层台阶,高层阴影中探出持枪者半个肩膀(前景遮挡),井底微光处有人仰视。坠落透视压迫。 Bird's-eye square stairwell, extreme deep focus, foreground shoulder occlusion, vanishing-point drop, 14mm, 16:9.
p18 悬疑 分镜 《存在》
2025
索德伯格:超广角第一人称漂浮游走,非 locked-off;已改正机位描述 悬疑分镜:第一人称幽灵视点——超广角机位在室内缓慢漂浮游走,穿过门框看向客厅;中景一人背对镜头打电话,远侧玻璃掠过车灯。机位不停靠、不锁定,始终带轻微漂移。 Ultra-wide floating first-person POV drifting through doorway, back-to-camera phone call, distant headlight sweep, continuous float (not locked-off), 16:9.
p19 悬疑 分镜 《十二宫》
2007
芬奇审讯桌戏:过肩压迫、录音设备朝向、硬侧光切桌面明暗 悬疑分镜:审讯桌两端过肩。前景只露审讯者后脑与肩,中景嫌疑人双手交握;桌面录音设备朝向嫌疑人,硬侧光把桌面切成亮暗两半。 Interrogation OTS: interviewer’s head/shoulder in foreground, suspect’s clasped hands midground; recorder aimed at suspect; hard side light splits table into bright/dark halves.
p20 悬疑 分镜 《周处除三害》
2023
2023 台片新黑色夜摄与车灯压迫(替换 Nightcrawler) 悬疑分镜:夜间地下车库坡道,人物由亮部走向暗部;后方车灯突然打开拉出长影,身躯切开光束。 Night garage ramp into shadow, sudden rear beams casting long shadow, body cutting beam cone, 35mm, 16:9.
p21 悬疑 英雄镜头 《奥本海默》
2023
IMAX 微距顶光、无眼神光、冷汗毛孔纪实 悬疑英雄镜头:密闭小房间中年男人大特写。垂直生硬顶光打在头顶,眼窝沉入死黑,额头冷汗可读;背景吞没。无美颜。 Extreme close-up, harsh overhead top light, crushed eye sockets, macro sweat, pure black fill, 100mm, 16:9.
p22 悬疑 英雄镜头 《某种物质》
2024
浴室镜雾面/残缺自我监视是该片身体惊悚核心装置 悬疑英雄镜头:女人面对起雾浴室镜,指尖擦出一条窄视窗,只露出一只眼睛;荧光灯惨白,惊惧却压抑。 Mirror ECU, fogged glass cleared streak revealing one eye, fluorescent practical, restrained terror, 16:9.
p23 悬疑 英雄镜头 《长腿》
2024
当代惊悚的证物/手套插入镜头与台灯硬光 悬疑英雄镜头:戴乳胶手套的手将证物袋封口,台灯硬切光,背景只有指示灯红点虚化。 Insert close-up gloved hands sealing evidence bag, desk-lamp slash light, red LED bokeh, 100mm, 16:9.
p24 悬疑 英雄镜头 《杀手》
2023
芬奇光学:镜片反射与面部光比精确计算 悬疑英雄镜头:狙击手眼后瞄准镜特写,物镜反光折出微型倒置街景;半张脸沉在阴影。 Close-up eye behind scope, inverted miniature street in objective glass, half-face shadow, dusk rim, 16:9.
p25 东方文艺 气氛板 《刺客聂隐娘》
2015
侯孝贤水墨色阶与留白肃静(少量华语经典) 东方文艺气氛板:冬日山林近乎水墨的高反差,枯枝明暗节奏,远处水面哑光如镜;大面积留白,拒绝仙侠发光与旅游明信片艳丽。 High-contrast ink-wash winter forest, matte water, generous negative space, 35mm, 16:9.
p26 东方文艺 气氛板 《花样年华》
2000
王家卫雨夜长廊柱列与水膜灯色;人物缺席的潮湿等待 东方文艺气氛板:雨夜城市长廊/骑楼,柱列延伸,地面水膜把灯色拉成条;人物缺席,只剩潮湿等待。 Rain-night colonnade/arcade moodboard: pillar lines recede, wet pavement stretches lamp color into streaks; human absence, only damp waiting.
p27 东方文艺 气氛板 《完美的日子》
2023
维姆·文德斯(Wim Wenders)2023;标志性 4:3 复古画幅与克制日常广角留白(导演不是是枝裕和;画幅为 4:3 而非 16:9) 东方文艺气氛板:极广角郊外空地,天空占画面三分之二,地平线极低;远处一点人影如墨点,风把草或水面吹出细线。 Extreme wide low horizon, heavy sky, tiny distant figure speck, wind lines, desaturated, 28mm, 4:3 aspect ratio, vintage 35mm photography.
p28 东方文艺 气氛板 《河边的错误》
2023
2023 华语文艺悬疑的腐旧室内侧光与尘埃 东方文艺气氛板:老旧室内走廊,侧光从窄窗切入可见尘埃;墙皮斑驳,尽头门半开不给答案。 Narrow window slit light with dust in worn corridor, door ajar at vanishing point, 35mm, 16:9.
p29 东方文艺 分镜 《怪物》
2023
是枝裕和 2023:走廊窗光与人物关系三角 东方文艺分镜:学校/机关走廊中景,三人站位呈不等边三角;一侧强窗光切出轮廓,其余沉在青灰暗部,对话尚未开始的紧绷。 Corridor triangular blocking, hard window rim, cool underexposed fill, 35mm, 16:9.
p30 东方文艺 分镜 《分手的决心》
2022
朴赞郁电梯/镜面复制站位形成封闭关系三角;顶灯惨白 东方文艺分镜:都市公寓电梯或玄关镜面,两人一前一后,镜面复制站位形成封闭三角,顶灯惨白冷淡。 Apartment elevator/entry mirror two-shot: one ahead one behind, mirror duplicates stance into a closed triangle; cold flat overhead light.
p31 东方文艺 分镜 《怪物》
2023
是枝家庭伦理的餐桌空位与窗亮内暗 东方文艺分镜:餐桌只摆一人餐具,对面空椅拉远;窗外过曝白昼吞细节,室内侧脸剪影化。 Wide table single place setting, empty chair opposite, overexposed window vs silhouette, 40mm, 16:9.
p32 东方文艺 分镜 《小偷家族》
2018
是枝巷弄手持跟拍:角色右转消失,镜头晚半拍,墙角挡后再揭示空巷 东方文艺分镜:手持跟拍,角色沿巷右转消失,镜头晚半拍才跟上;墙角先挡住视线再揭示空巷。 Delayed follow: handheld trail as character turns right into alley and vanishes; camera late by half a beat; corner blocks view before revealing empty alley.
p33 东方文艺 英雄镜头 《刺客聂隐娘》
2015
侯式织物/障视线下面部克制特写(东亚文艺;不用西方两生花) 东方文艺英雄镜头:透过一层薄纱/窗纸看面部极近特写,纱上水汽或纤维造成轻微畸变;皮肤毛孔清晰,眼神隐忍。 Extreme close-up through gauze/window paper, soft optical distortion, unretouched skin, restrained eyes, 100mm macro feel, 16:9.
p34 东方文艺 英雄镜头 《海上花》
1998
侯孝贤《海上花》古典暗部:真实烛火/油灯动机光贴脸高反差(替换《满江红》日拍夜蓝调平光错配) 东方文艺英雄镜头:油灯/烛火几乎贴脸的侧写,高光只留颧骨与瞳孔一星,其余沉入暖黑;呼吸静止。 Profile ECU by single flame almost touching cheek, specular on cheekbone and iris only, warm crushed blacks, 85mm, 16:9.
p35 东方文艺 英雄镜头 《完美的日子》
2023
维姆·文德斯(Wim Wenders)2023;4:3 复古画幅下的前景遮挡与后景生活痕迹(导演不是是枝裕和;画幅为 4:3 而非 16:9) 东方文艺英雄镜头:老人后脑与肩占画面大部,焦点落在远处门口模糊人影;前景发丝清晰,叙事在焦外。 Over-shoulder, sharp grey hair foreground, soft figure in distant doorway, 50mm, 4:3 aspect ratio, vintage 35mm photography.
p36 东方文艺 英雄镜头 《河边的错误》
2023
2023 华语文艺悬疑的河流光学(替换三峡好人) 东方文艺英雄镜头:南方河面特写,水纹把天空与岸影撕成碎片;一件细小漂流物,无人,阴天漫射。 Macro southern river surface, shattered sky reflections, tiny floating object, soft overcast, 16:9.
p37 现代写实 气氛板 《海边的曼彻斯特》
2016
现代写实冬日海滨冷灰纪实(替换《我仍在此》:该片为70年代巴西军事独裁历史传记,时代错位) 写实气氛板:冬日滨海城市,铅灰天空压低,码头或桅杆成疏离剪影;冷色温,拒绝暖调治愈滤镜。 Coastal winter city, leaden low sky, mast silhouettes, cold documentary grade, 35mm, 16:9.
p38 现代写实 气氛板 《走走停停》
2024
2024 华语生活流:平光近郊与未完成城市肌理(非废土科幻) 写实气氛板:中国三四线城市近郊,冬日平光,空荡的水泥路边与远处未完工楼盘;色温偏冷灰,拒绝废土滤镜与末日夸张。 Ordinary Chinese suburban winter flat light, unfinished housing blocks in distance, cold grey documentary grade, no apocalyptic grade, 35mm, 16:9.
p39 现代写实 气氛板 《热辣滚烫》
2024
2024 华语:日照下都市招牌与人潮的生活流质感(非复古惊悚) 写实气氛板:当代都市白天商业街,招牌在日照下显得廉价疲惫,人潮拖影成色块;无复古年代滤镜、无恐怖片色偏。 Daytime contemporary commercial street, tired signage under hard sun, crowd as motion smear, no retro horror grade, 28mm, 16:9.
p40 现代写实 气氛板 《阿诺拉》
2024
2024;当代生活流廉价粉彩外墙与硬阳光(替换 Florida Project) 写实气氛板:当代海滨廉价街区白天,刺眼粉彩外墙与浑浊小泳池/庭院水迹;硬阳光,虚假欢乐的商业门面。 Daytime cheap seaside block, garish pastel facade, murky small pool or wet courtyard, hard sun, deadpan wide, 24mm, 16:9.
p41 现代写实 分镜 《寄生虫》
2019
奉俊昊家庭餐桌 Power Blocking(归现代写实,不进东方文艺) 写实分镜:长方形餐桌家庭争执。父亲站立占左高点,母亲坐右,孩子居中低头;站坐高低差形成权力三角,吊灯实用光。 Wide dining power blocking, standing vs seated height contrast, triangular staging, pendant practical, 16:9.
p42 现代写实 分镜 《好东西》
2024
2024 华语生活空间对峙前调度 写实分镜:开放式厨房中景,女人背对镜头洗碗,男人在门口进画却停住;前景碗碟架局部遮挡。 Kitchen medium, woman back washing dishes, man freezes in doorway, dish-rack occlusion, window soft key, 50mm, 16:9.
p43 现代写实 分镜 《秘密会议》
2024
2024;长桌纵深与制度空间压迫 写实分镜:会议长桌贴桌低机位,前景文件与纸杯巨大,远端人物被透视压小。 Low table-level angle, oversized papers/cups foreground, diminished distant figures, fluorescent overhead, 24mm, 16:9.
p44 现代写实 分镜 《挑战者》
2024
2024;狭小运动空间逼近(替换 Whiplash) 写实分镜:狭小运动更衣/练习空间,教练或对手逼近前景,另一人被墙角堵住;镜面或储物柜反射让空间更挤,顶灯热刺。 Cramped athletic locker/practice blocking, aggressor invading foreground, subject cornered, mirror/locker doubling, hot practical, 28mm, 16:9.
p45 现代写实 英雄镜头 《周处除三害》
2023
2023;市井夜色色温冲突(替换南方车站 2019) 写实英雄镜头:深夜路边摊/夜市摊主中近景,油汗皮肤;劣质日光灯惨绿顶光,侧脸被骑车/车灯或招牌霓虹扫过冷暖轮廓。 Night stall medium close-up, oily skin, harsh green fluorescent top, mixed neon/vehicle rim light, 85mm, 16:9.
p46 现代写实 英雄镜头 《隔壁房间》
2024
2024;车窗光影掠过面部 写实英雄镜头:母亲开车侧脸,窗外树影频闪光斑;咬唇不语,车内仅仪表微光。 Car profile MCU, tree-shadow flicker, bitten lip restraint, dashboard practical only, 50mm, 16:9.
p47 现代写实 英雄镜头 《好东西》
2024
2024 华语生活流夜窗人像(替换 Moonlight;去掉烟花) 写实英雄镜头:都市青年夜窗前近景,皮肤有真实毛孔,表情介于释然与失落;窗外城市微光作弱眼神光,无烟花噱头。 Night window close-up young adult, unretouched skin, ambiguous almost-relieved sadness, soft city catchlights, 85mm, 16:9.
p48 现代写实 英雄镜头 《坠落的审判》
2023
2023;律政走廊物理遗留与浅景深 写实英雄镜头:法院走廊律师摘下眼镜,鼻梁压痕清晰,眼底血丝;顶灯惨白,背景人流虚化。 MCU removing glasses, nose-pad marks, bloodshot eyes, harsh fluorescent, heavy bokeh, 100mm, 16:9.

3.3 开标说明与评分指引

一、共用决策规则(Arena / GSB / MOS 都遵守)

  • 判断顺序:先看有没有按提示词生成到位(对照本题提示词要点:该有的景别、元素、人物关系、互动是否出现)→ 两边都大致按提示词生成之后,再比场面调度 / 灯光动机 / 镜头光学 / 表演质感(若适用)。
  • 如果一方明显没按提示词生成(缺关键元素、关系反了、景别完全不对等),不能因为「更好看」判它赢。
  • 全程盲测,界面不显示模型名称。

二、Arena 怎么选

  • 选项只有三个:A 更好 / 平局 / B 更好;左右位置随机,不要猜哪边是哪个模型。
  • 先比「有没有按提示词生成」;都差不多时,再比场面调度、灯光动机、镜头光学、表演质感(若适用),看谁更接近院线成片质感。
  • 各有得失、难分高下时选平局,不要硬分胜负。
  • 举例:一张场面调度和灯光都对,只是清晰度略差一点;另一张更华丽,却缺了提示词要求的关键互动 → 选前者。两边都按提示词生成、只是锐度或色温口味不同 → 平局。

三、GSB 怎么选

  • 界面只显示「对照 / 候选」。你只判断候选相对对照:Good(明显更好)/ Same(差不多)/ Bad(明显更差)。
  • 判断顺序与 Arena 相同:先看有没有按提示词生成,再比场面调度、灯光动机、镜头光学、表演质感。
  • 选 Good 或 Bad 时,心里要能指到具体点(例如缺了提示词要点里的某项,或灯光动机明显不对),不要凭「感觉更高级」。
  • 举例:候选更锐但漏了关键调度 → Bad;只是颗粒或锐度口味不同 → Same。

四、MOS 怎么打(1–5)

  • 必须先打语义对齐:看有没有按提示词生成到位。得分 ≤2 记为对齐失败,后面几维再好看也不能用来翻盘。
  • 气氛板等题「表演质感」可为 N/A。
  • 五个维度:语义对齐 → 场面调度 / 灯光动机 / 镜头光学 / 表演质感。
  • 量表以 1 / 3 / 5 为锚点;2、4 表示介于相邻锚点之间的过渡档(例如 2 明显好于 1,但仍远未到 3)。
1

语义对齐

这个维度评什么

门槛维:这张图有没有按提示词(及本题提示词要点)生成到位。先于一切美学判断。

打分时问自己

对象、关系、动作、景别/机位要求是否成立?缺关键项或关系反了,不得靠「更好看」翻盘。

具体核对

  • 主体是否出现(人/道具/环境关键物)
  • 人物关系与互动是否正确(谁递给谁、谁在前景遮挡等)
  • 景别是否大致符合题意(大远景 vs 特写写反算对齐失败)
  • 对照侧栏「提示词要点」逐条核对,而不是凭整体感觉

1 / 3 / 5 锚点(2、4 为过渡档)

1

题要「晶体递给悬浮同伴」,图里只有单人漂浮、无晶体、无互动。

3

有两人与晶体,但传递方向反了或景别明显不符。

5

气闸、两人位姿、晶体传递关系与检查点一致。

2

场面调度

这个维度评什么

场面调度(mise-en-scène):导演对「画框里摆了什么」的控制——站位、遮挡、纵深、构图与空间权力关系。静帧里看的是冻结的调度意图是否可读。

打分时问自己

机位与人物/场景的空间关系是否清楚?构图是否在讲关系,而不是一堆漂亮元素堆在一起?

具体核对

  • 景别与距离:大远景 / 远景 / 全景 / 中全景 / 中景 / 中特写 / 特写 / 大特写是否服务叙事
  • 机位角度:鸟瞰、俯角、平视、仰角、荷兰角;正面 / 侧面 / 过肩(OTS)等朝向
  • 站位与遮挡:前景遮挡、负空间、人物之间的权力三角或疏离感
  • 构图语法:三分法趣味点、希氏构图(画面面积≈叙事重要性)、主次对比区、双人/多人镜头关系
  • 纵深层次:前后景分离是否可读;尺度对比(巨构 vs 小人)是否成立
  • 布景与道具位置是否支撑调度,而不是随机摆件

1 / 3 / 5 锚点(2、4 为过渡档)

1

鸟瞰楼梯井透视拧成不可能几何;人或枪位置不可读。

3

俯拍楼梯可辨,纵深偏平,遮挡意图弱。

5

方形井垂直消失点稳定;前景肩部遮挡与井底人物关系清楚。

3

灯光动机

这个维度评什么

灯光动机:画面里的光是否来自「说得通的光源」,以及光型是否匹配题意(硬/柔、高调/低调、色温)。

打分时问自己

主光从哪来?能不能在场景里指出动机(窗、灯、道具自发光、日光)?还是无源美颜平光?

具体核对

  • 动机光源:Key light 是否对应场景内可见或暗示的光源
  • 光质:硬光(清晰阴影)vs 柔光/漫射;是否符合题述(如正午硬顶光)
  • 光比与调性:高调 / 低调 / 高反差;暗部是否有层次还是死黑或全糊亮
  • 方向:顺光(易平)、侧光塑形、逆光/轮廓光、底光、顶光、伦勃朗光(面颊三角光)
  • 三点关系:主光 / 辅光 Fill / 轮廓光 Backlight 是否各司其职,而非到处乱溢
  • 色温与色光:钨丝暖 / 日光冷、有意的色温冲突是否来自题述光源
  • 衰减与反光:亮度随距离衰减、液面/金属反光是否物理可信

1 / 3 / 5 锚点(2、4 为过渡档)

1

夜戏仍满屏柔光美颜,无可见光源。

3

有侧光,但与道具/窗户动机对不上。

5

如惨绿日光灯顶光 + 红蓝轮廓光扫脸,色温冲突来自题述光源。

4

镜头光学

这个维度评什么

镜头光学:焦距、景深、焦外与透视是否像真实镜头成像,而不是全画面假锐或贴纸特效。

打分时问自己

若题面写了 24mm / 85mm / 浅景深等,光学结果是否跟这个假说一致?

具体核对

  • 焦距效应:广角夸张纵深、前景偏大;长焦压缩空间、平面感更强
  • 景深 DOF:合焦面是否稳定;该虚的地方是否虚,而不是前后一样锐
  • 焦点:兴趣中心是否在焦;rack/selective focus 的意图在静帧里是否可读
  • 焦散 bokeh:焦外是奶油般化开,还是生硬切边/塑料虚化
  • 透视与畸变:广角合理透视 vs 不可能几何;不为「电影感」乱加色差/暗角
  • 介质光学:玻璃厚度、雾气、水滴折射、散射是否像光学现象而非贴图
  • 画幅:若题面要求 16:9 / 变形宽银幕感,构图是否匹配(次要)

1 / 3 / 5 锚点(2、4 为过渡档)

1

写 85mm 浅景深,结果前后一样锐;或全画面假塑料锐化。

3

有虚化但焦平面乱跳。

5

眼合焦、背景自然焦外;或水滴/毛玻璃折射符合物理,而非贴纸特效。

5

表演质感

这个维度评什么

表演与表面质感:人脸可读时看表演是否克制可信;同时看皮肤、服装、材质是否像实拍而非磨皮 CG。

打分时问自己

眼神与微表情有没有内容?材质(毛孔、汗、布料)是否经得起近看?

具体核对

  • 表演:克制 vs 夸张假哭;眼神合焦、视线方向、情绪是否过火
  • 面部朝向与可参与感:正面更亲近,侧面/背面更疏离——是否匹配题意
  • 皮肤:毛孔、汗液、次表面散射;拒绝游戏 CG / 短剧磨皮网红脸
  • 化妆与服装:时代/功能可后置,优先看质料与褶皱是否物理
  • 道具与表面:金属、织物、潮湿表面的高光是否可信

1 / 3 / 5 锚点(2、4 为过渡档)

1

脸像游戏 CG 或短剧磨皮;表情夸张假哭。

3

人脸可接受,皮肤偏平,表情中性可用。

5

汗液/毛孔高光可信;眼神克制有内容(如顶光审讯冷汗)。

模块 4 / 5

4

样本分析与统计洞察

4.1 四份标注 · 宏观情况

加载标注聚合…

4.2 评审者一致性(IRR)

from __future__ import annotations

import json
from itertools import combinations
from pathlib import Path

点击展开全文

from __future__ import annotations

import json
from itertools import combinations
from pathlib import Path

import numpy as np
from sklearn.metrics import cohen_kappa_score
from statsmodels.stats.inter_rater import fleiss_kappa

ROOT = Path(__file__).resolve().parents[1]
ANN_DIR = ROOT / "annotations"
OUT = ANN_DIR / "_irr.json"

CAT_GSB = ["good", "same", "bad"]


def load_annotations() -> list[dict]:
    files = sorted(p for p in ANN_DIR.glob("*.json") if not p.name.startswith("_"))
    out = []
    for p in files:
        d = json.loads(p.read_text(encoding="utf-8"))
        d["_file"] = p.name
        out.append(d)
    return out


def arena_label(row: dict) -> str:
    """Canonical outcome: lex-smaller model wins / larger wins / tie."""
    a, b = sorted([row["left"], row["right"]])
    w = row.get("winner") or (
        row["left"] if row["choice"] == "left" else row["right"] if row["choice"] == "right" else "tie"
    )
    if w == "tie":
        return "tie"
    if w == a:
        return "smaller_wins"
    if w == b:
        return "larger_wins"
    raise ValueError(f"bad arena winner {w} for {a}/{b}")


def arena_item_key(row: dict) -> str:
    a, b = sorted([row["left"], row["right"]])
    return f"{row['prompt_id']}|{a}|{b}"


def gsb_item_key(row: dict) -> str:
    return f"{row['prompt_id']}|{row['candidate']}"


def build_rater_matrix(
    annos: list[dict],
    protocol: str,
    item_fn,
    label_fn,
    categories: list[str],
) -> tuple[list[str], np.ndarray, list[str]]:
    """Return (item_ids, labels[n_items, n_raters] as int codes, annotator names)."""
    raters = [d["annotator"] for d in annos]
    item_ids = sorted(
        {item_fn(row) for d in annos for row in d[protocol]},
        key=lambda x: x,
    )
    cat_index = {c: i for i, c in enumerate(categories)}
    mat = np.full((len(item_ids), len(raters)), -1, dtype=int)
    item_index = {iid: i for i, iid in enumerate(item_ids)}
    for r, d in enumerate(annos):
        for row in d[protocol]:
            iid = item_fn(row)
            lab = label_fn(row)
            if lab not in cat_index:
                raise ValueError(f"unknown label {lab} in {protocol}")
            mat[item_index[iid], r] = cat_index[lab]
    if (mat < 0).any():
        missing = int((mat < 0).sum())
        raise SystemExit(f"{protocol}: {missing} missing rater cells")
    return item_ids, mat, raters


def fleiss_from_labels(labels: np.ndarray, n_cats: int) -> float:
    """labels: n_items x n_raters of category codes 0..n_cats-1."""
    n_items, n_raters = labels.shape
    table = np.zeros((n_items, n_cats), dtype=float)
    for i in range(n_items):
        for r in range(n_raters):
            table[i, labels[i, r]] += 1.0
    return float(fleiss_kappa(table, method="fleiss"))


def mean_pairwise_cohen(labels: np.ndarray) -> float:
    n_raters = labels.shape[1]
    ks = []
    for i, j in combinations(range(n_raters), 2):
        ks.append(cohen_kappa_score(labels[:, i], labels[:, j]))
    return float(np.mean(ks))


def bootstrap_metric(
    labels: np.ndarray,
    fn,
    n_boot: int = 2000,
    seed: int = 42,
) -> tuple[float, float, float]:
    """Item-level bootstrap → point, 2.5%, 97.5%."""
    rng = np.random.default_rng(seed)
    n = labels.shape[0]
    point = fn(labels)
    boots = np.empty(n_boot, dtype=float)
    for b in range(n_boot):
        idx = rng.integers(0, n, size=n)
        boots[b] = fn(labels[idx])
    return point, float(np.percentile(boots, 2.5)), float(np.percentile(boots, 97.5))


def icc_2(Y: np.ndarray) -> dict[str, float]:
    """Shrout & Fleiss ICC(2,1) and ICC(2,k); Y is n_subjects × n_raters."""
    Y = np.asarray(Y, dtype=float)
    n, k = Y.shape
    if n < 2 or k < 2:
        raise ValueError("need ≥2 subjects and ≥2 raters for ICC")
    mean_s = Y.mean(axis=1, keepdims=True)
    mean_r = Y.mean(axis=0, keepdims=True)
    grand = Y.mean()
    ss_rows = k * ((mean_s - grand) ** 2).sum()
    ss_cols = n * ((mean_r - grand) ** 2).sum()
    ss_tot = ((Y - grand) ** 2).sum()
    ss_err = ss_tot - ss_rows - ss_cols
    ms_rows = ss_rows / (n - 1)
    ms_cols = ss_cols / (k - 1)
    ms_err = ss_err / ((n - 1) * (k - 1))
    icc21 = (ms_rows - ms_err) / (ms_rows + (k - 1) * ms_err + k * (ms_cols - ms_err) / n)
    icc2k = (ms_rows - ms_err) / (ms_rows + (ms_cols - ms_err) / n)
    return {
        "icc_2_1": float(icc21),
        "icc_2_k": float(icc2k),
        "n_subjects": n,
        "n_raters": k,
        "ms_rows": float(ms_rows),
        "ms_err": float(ms_err),
    }


def mos_matrix(annos: list[dict]) -> tuple[np.ndarray, list[str]]:
    """Subjects = (prompt, model, dim) with all raters non-null."""
    raters = [d["annotator"] for d in annos]
    # collect scores keyed by subject → rater
    buckets: dict[str, dict[str, float]] = {}
    for d in annos:
        rname = d["annotator"]
        for row in d["mos"]:
            for dim, score in row["scores"].items():
                if score is None:
                    continue
                key = f"{row['prompt_id']}|{row['model']}|{dim}"
                buckets.setdefault(key, {})[rname] = float(score)
    complete = [k for k, v in buckets.items() if len(v) == len(raters)]
    complete.sort()
    Y = np.array([[buckets[k][r] for r in raters] for k in complete], dtype=float)
    return Y, complete


def interpret_kappa(k: float) -> str:
    # Landis & Koch (1977) rough bands
    if k < 0:
        return "低于机会水平"
    if k < 0.20:
        return "轻微一致(slight)"
    if k < 0.40:
        return "一般一致(fair)"
    if k < 0.60:
        return "中等一致(moderate)"
    if k < 0.80:
        return "高度一致(substantial)"
    return "几乎完全一致(almost perfect)"


def interpret_icc(v: float) -> str:
    # Koo & Li (2016) rough bands for ICC
    if v < 0.50:
        return "信度较差(poor)"
    if v < 0.75:
        return "中等信度(moderate)"
    if v < 0.90:
        return "良好信度(good)"
    return "优秀信度(excellent)"


def main() -> None:
    annos = load_annotations()
    n_raters = len(annos)

    # —— Arena ——
    arena_cats = ["smaller_wins", "larger_wins", "tie"]
    _, arena_lab, _ = build_rater_matrix(
        annos, "arena", arena_item_key, arena_label, arena_cats
    )
    arena_fleiss, arena_lo, arena_hi = bootstrap_metric(
        arena_lab, lambda L: fleiss_from_labels(L, len(arena_cats))
    )
    arena_cohen, cohen_lo, cohen_hi = bootstrap_metric(arena_lab, mean_pairwise_cohen)

    # —— GSB ——
    _, gsb_lab, _ = build_rater_matrix(
        annos, "gsb", gsb_item_key, lambda r: r["choice"], CAT_GSB
    )
    gsb_fleiss, gsb_lo, gsb_hi = bootstrap_metric(
        gsb_lab, lambda L: fleiss_from_labels(L, len(CAT_GSB))
    )
    gsb_cohen, gsb_c_lo, gsb_c_hi = bootstrap_metric(gsb_lab, mean_pairwise_cohen)

    # —— MOS ICC ——
    Y, subjects = mos_matrix(annos)
    mos_point = icc_2(Y)

    def boot_icc(kind: str):
        rng = np.random.default_rng(42)
        n = Y.shape[0]
        boots = []
        for _ in range(2000):
            idx = rng.integers(0, n, size=n)
            boots.append(icc_2(Y[idx])[kind])
        arr = np.array(boots, dtype=float)
        return float(np.percentile(arr, 2.5)), float(np.percentile(arr, 97.5))

    icc21_lo, icc21_hi = boot_icc("icc_2_1")
    icc2k_lo, icc2k_hi = boot_icc("icc_2_k")

    result = {
        "schema": "magicframe_irr_v1",
        "n_annotators": n_raters,
        "annotators": [d["annotator"] for d in annos],
        "n_bootstrap": 2000,
        "ci": "percentile_95",
        "arena": {
            "n_items": int(arena_lab.shape[0]),
            "categories": arena_cats,
            "fleiss_kappa": round(arena_fleiss, 4),
            "fleiss_ci_low": round(arena_lo, 4),
            "fleiss_ci_high": round(arena_hi, 4),
            "mean_pairwise_cohen_kappa": round(arena_cohen, 4),
            "cohen_ci_low": round(cohen_lo, 4),
            "cohen_ci_high": round(cohen_hi, 4),
            "interpretation": interpret_kappa(arena_fleiss),
        },
        "gsb": {
            "n_items": int(gsb_lab.shape[0]),
            "categories": CAT_GSB,
            "fleiss_kappa": round(gsb_fleiss, 4),
            "fleiss_ci_low": round(gsb_lo, 4),
            "fleiss_ci_high": round(gsb_hi, 4),
            "mean_pairwise_cohen_kappa": round(gsb_cohen, 4),
            "cohen_ci_low": round(gsb_c_lo, 4),
            "cohen_ci_high": round(gsb_c_hi, 4),
            "interpretation": interpret_kappa(gsb_fleiss),
        },
        "mos": {
            "n_subjects": mos_point["n_subjects"],
            "n_raters": mos_point["n_raters"],
            "subject_def": "(prompt_id, model, dim) with all raters non-null",
            "icc_2_1": round(mos_point["icc_2_1"], 4),
            "icc_2_1_ci_low": round(icc21_lo, 4),
            "icc_2_1_ci_high": round(icc21_hi, 4),
            "icc_2_k": round(mos_point["icc_2_k"], 4),
            "icc_2_k_ci_low": round(icc2k_lo, 4),
            "icc_2_k_ci_high": round(icc2k_hi, 4),
            "k": n_raters,
            "interpretation_single": interpret_icc(mos_point["icc_2_1"]),
            "interpretation_avg": interpret_icc(mos_point["icc_2_k"]),
        },
    }

    OUT.write_text(json.dumps(result, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
    print(json.dumps(result, ensure_ascii=False, indent=2))
    print(f"\nWrote {OUT}")


if __name__ == "__main__":
    main()

Arena · Fleiss’ κ

GSB · Fleiss’ κ

MOS · ICC(2,1) / ICC(2,k)

4.3 Bradley–Terry → Elo 排名

Arena 两两对战先拟合 Bradley–Terry,每个模型一个潜在强度 π,平局按半胜半负计入,再把 π 映射成 Elo 风格分(相对差 400 ≈ 十倍胜率)便于读排名。Bootstrap 800 次得 95% CI。

① BT 强度 π(含 95% CI)

模型 π 95% CI

② Elo 风格排名(含 95% CI)

Elo 全部分值

模型 Elo 95% CI

交叉校验 · GSB(对照均为 Nano Banana Pro)

GSB 固定以 Nano Banana Pro 为对照,候选为 GPT / Seedream / Midjourney。

GSB · vs Nano Banana Pro

分档计数(四人合计)

候选 Good Same Bad n

微观诊断 · MOS

MOS 按五维 1–5 打分,解释「为什么赢 / 为什么输」:语义对齐为门槛维(≤2 记对齐失败),其余为场面调度、灯光动机、光学拟真、表演质感。下表与图均为四人跨题均值。

五维雷达

对齐失败率

语义对齐 ≤2 记一次失败。

五维均分矩阵(1–5)

模型 语义对齐 场面调度 灯光动机 光学拟真 表演质感 五维均分

分维对比(分组柱)

各维第一 / 末位

维度 最高 最低 极差

单体模型雷达图画像

模块 5 / 5

5

后续:从敏捷切片到满矩阵

当前交付是科幻垂直切片的敏捷验证:跑通出题 → 盲测 → 统计 → 诊断闭环。完整项目仍按 4 Genre × 3 Workflow × 4 = 48 题推进。

阶段性总结与下一步计划

回归本评测体系的「北极星指标」——大模型能否直接产出具备「院线电影最终成片级别」的光学与物理质感静帧?

1. 体系有效性的成功验证

本次 MVP 切片试跑的最大斩获,并非评判出了某个模型的绝对胜负,而是成功证明了「1+4 评估金字塔」与「语义对齐一票否决制」的可行性。在科幻极限高压下,这套评测标准较高精度地捕获到了各模型在物理空间理解与光学拟真上的深层能力分化。

2. 现阶段的初步洞察

仅基于这 12 道科幻题的切片数据,我们观察到了一个初步的「双峰割裂」假说:以 GPT 为代表的模型在语义与调度执行上呈现压制(适合作为分镜工具),而 MJ 在灯光与光学先验上保持断层领先(适合作为气氛板利器),但这仅代表模型在极端物理与大光比场景下的表现。

Next Steps

  • 全量横向扩测: 将这条已在科幻场景中跑通的管线,按原定的 48 题满编 4×3 矩阵,推演至「悬疑、东方文艺、现代写实」三大题材类型中。
  • 典型案例复盘: 在完成全量数据结算后,分析链路将新增极值考题复盘环节,提取高频触发「一票否决」或打分方差最大的典型名场面,将量化图表还原为直观的图文对比,解剖大模型的具体成败机制与翻车触点。

当完整的 48 道考题全部验收完毕,完整覆盖了电影工业光影的四极生态,并辅以深度的典型题定性复盘,才能以充分的统计学置信度,回答北极星指标——到底哪款大模型,能够真正独立跨越「影视工业级直出」的奇点门槛。