Spaces:
Runtime error
Runtime error
elfsong
Add smoke test for GEdit-Bench EN editing pipeline and fix input protocol in OpenAIAPIEdit
74ef409 A newer version of the Gradio SDK is available: 6.22.0
Evaluation Codebase — Task List (v2)
已定方案(2026-07-07):
- 接入方式:所有候选模型统一走 API。
- 评测底座:fork GenEditEvalKit(OpenCompass),复用其 registry 式模型 adapter、多环境管理和已内置的 benchmark。
- 补齐 benchmark:按 GenEditEvalKit 的插件模式补 T2I-CompBench 和 MagicBrush 两个官方评估器。
- 通用指标层:独立
metrics模块(t2v_metrics + clean-fid + image-reward),对任意 run 输出目录事后计算,不依赖具体 benchmark。 - 实验 UI 接口:Gradio 应用新增
Evaluation labTab(已完成,见app.py)——同一 prompt(可带源图/参考图)跨多个候选模型并排生成对比,输出存output/eval/;后续再接 benchmark runner 的结果展示。
benchmark 矩阵:
| 侧 | Benchmark | 来源 |
|---|---|---|
| 生成 | GenEval、DPG-Bench(+ 可选 OneIG / UniGenBench / WISE 等) | GenEditEvalKit 内置 |
| 生成 | T2I-CompBench(++) | 自行补插件 |
| 编辑 | GEdit-Bench (EN/CN)、ImgEdit | GenEditEvalKit 内置 |
| 编辑 | MagicBrush | 自行补插件 |
| 指标 | FID、CLIP Score、ImageReward、HPS、PickScore、VQAScore | 独立 metrics 模块 |
Phase 0 — 剩余决策与准备
- 定候选模型清单及各自的 API 端点/鉴权(
gpt-image-2必有;其余如 Gemini 图像、Seedream/SeedEdit、FLUX API 等待定)。 - 定 judge 模型:GEdit-Bench / ImgEdit 的 LLM judge 用哪个模型、走哪个 key(官方协议用 GPT-4.1 系,换 judge 会导致数字与文献不可比,需固定并记录)。
- 定统一生成参数:分辨率、每 prompt 采样张数(GenEval 惯例 4 张)、seed 策略、是否允许 prompt rewriting(写进报告)。
- 确认 GPU 评测机:GenEval(mmdet)、DPG(mPLUG)、T2I-CompBench(BLIP-VQA/UniDet)、FID/HPS 都需要 GPU。
- 收集对齐锚点:每个 benchmark 记 2–3 个已发表模型的公开分数(验 pipeline 用)。
Phase 1 — Fork GenEditEvalKit 并跑通
- Clone GenEditEvalKit(→
eval/GenEditEvalKit/,已 gitignore,后续转正式 fork),通读load_model.py、eval.sh、config.sh、benchmark 目录结构,摸清 registry 与环境映射机制。结论:API 推理走infer/infer_mp_api.py,模型名直接作为 OpenAI model id 传入OpenAIAPIT2I/Edit,凭API_KEY/BASE_URL环境变量;断点续跑靠输出文件存在性;eval.sh假设 conda + Linux GPU,评分侧需 GPU 机器。 - 推理侧小样跑通:
eval/smoke_geneval.py(复用 kit 的 adapter 与输出布局)用gpt-image-2跑 GenEval 前 5 条 prompt,5/5 成功(约 60s/张,medium 质量),kit 自带check_empty_image校验通过。输出在eval/GenEditEvalKit/output/gpt-image-2/geneval/,全量运行可无缝续跑。 - 评分侧:在 GPU 机器上配 geneval 评估环境(mmdet),对小样图片跑通
eval/geneval.sh评分。 - 配置
config.sh+ conda 环境映射(GPU 机器上),验证eval.sh --infer true --eval true官方全链路。 - 编辑侧全链路小样跑通(
eval/smoke_gedit.py):GEdit-Bench EN 取 5 个编辑类型各 1 条 →gpt-image-2经 kit 的OpenAIAPIEdit编辑(5/5 成功,60–133s/张)→ kit 自带 VIEScore + gpt-4.1 judge 出分(协议与官方 step2 一致)。小样结果:SC=9.80 / PQ=7.40 / O=8.44,明细在output/gpt-image-2/gedit/smoke_scores.json。- 修复了 kit 的 bug:
openai_api_edit.py传裸 bytes 导致 OpenAI 400(octet-stream 被拒),改为(filename, bytes, mimetype)元组——待回馈 fork 的第一个补丁。 - 官方
step2_gedit_bench.py全量跑时需要pip install megfile datasets并下载 HF 数据集stepfun-ai/GEdit-Bench(仅用元数据);judge 评分不需要 GPU,已确认。
- 修复了 kit 的 bug:
- 补工程细节:API 重试/退避(当前 adapter 无重试)、限流并发、run manifest(模型版本、参数、成本、时间戳)。
Phase 2 — 候选模型 Adapter
- 定义我们自己的 adapter 约定(在 GenEditEvalKit 接口之上):T2I
generate(prompt, seed)、编辑generate(input_list, seed)双能力声明。 -
gpt-image-2adapter(生成 + 编辑)。 - 其余候选模型 adapter,逐个接入并各跑一次小样冒烟。
- 每个 adapter 记录:模型版本号、计费口径、限流参数、支持的分辨率。
Phase 3 — 内置 Benchmark 全量运行
- GenEval:全部 553 prompt × 4 张,全部候选模型;输出六子类 + Overall。
- DPG-Bench:1065 条 dense prompt;输出 Overall + 分项。
- GEdit-Bench EN/CN:配好 judge key;输出 SC / PQ / O + 按编辑类型细分。
- ImgEdit:basic + challenging 套件;输出各任务类型分数。
- (可选加测)OneIG / UniGenBench / WISE 中挑 1–2 个新 benchmark 增强说服力。
- 每个 benchmark 首跑后与文献锚点比对,误差异常则先查协议再扩量。
Phase 4 — 补齐两个 Benchmark 插件
4.1 T2I-CompBench(++)
- 拉官方 repo 与 prompt 集,确定用原版还是 ++ 版(报告注明)。
- 按 GenEditEvalKit 的 benchmark 目录/registry 模式包一层:prompt 加载 → 推理 → 官方评估器(BLIP-VQA / UniDet / CLIP / 3-in-1)。
- 独立 requirements + 环境映射登记。
- 用锚点模型验证分数量级后全量跑。
4.2 MagicBrush
- 下载测试集(先 single-turn),转成 GenEditEvalKit 编辑任务的输入格式。
- 接官方指标脚本:L1、L2、CLIP-I、DINO、CLIP-T。
- 同样以插件形式登记环境与评估入口。
Phase 5 — 独立 metrics 模块
- 模块骨架:统一输入接口 = run 输出目录 + prompt/元数据清单(与 Phase 1 的存储规范对齐),任何一次 run 均可事后计算。
- 接 t2v_metrics:CLIP Score、HPSv2、PickScore、VQAScore(统一打分接口)。
- 接官方
image-reward包:ImageReward。 - 接
clean-fid:FID,参考集 MS-COCO 2014 val 30K(含 COCO 下载/抽样脚本)。 - 固定并记录各指标的 backbone/权重版本(CLIP ViT-B/32 vs L/14 等),写进输出。
- 每个指标最小单测:已知图文对断言分数区间。
- CLI:
python -m metrics score --run <dir> --metrics fid,clip,ir,hps,输出 JSON/CSV。
Phase 6 — 报告与对齐验证
- 汇总脚本:模型 × benchmark 总矩阵(含 metrics 模块结果),附文献公开数字对照列。
- 对齐验证关卡:选一个有公开分数的模型完整复现 GenEval + FID,确认误差合理后才对外报数。
- HTML/Markdown 报告:总表 + 每任务好/坏 case 并排样例图。
-
README:记录 fork 基线 commit、各 benchmark/评估器版本、judge 模型版本、与文献设定的差异清单。
Phase 7 —(可选)Vinhome 领域内评测
- 从九个 workflow 收集真实输入构建内部测试集。
- 领域指标:结构保持度(DINO/depth 一致性)、相机角度一致性、编辑局部性(mask 外 L1)、LLM-judge preservation 评分。
- 复用同一套 runner 与报告格式,与标准 benchmark 并列输出。
执行顺序
- Phase 1(fork + GenEval 小样跑通 gpt-image-2)——第一个里程碑,验证底座可用。
- Phase 3 的 GenEval/DPG + Phase 5 的 CLIP/ImageReward/HPS ——最快产出第一批可比数字。
- Phase 3 编辑侧(GEdit/ImgEdit,需 judge 预算确认)。
- Phase 4 两个插件 + Phase 5 FID。
- Phase 6 对齐验证与报告;Phase 7 视需要。