vinhome_copilot / task.md
elfsong
Add smoke test for GEdit-Bench EN editing pipeline and fix input protocol in OpenAIAPIEdit
74ef409
|
Raw
History Blame Contribute Delete
7.86 kB

A newer version of the Gradio SDK is available: 6.22.0

Upgrade

Evaluation Codebase — Task List (v2)

已定方案(2026-07-07):

  1. 接入方式:所有候选模型统一走 API。
  2. 评测底座:fork GenEditEvalKit(OpenCompass),复用其 registry 式模型 adapter、多环境管理和已内置的 benchmark。
  3. 补齐 benchmark:按 GenEditEvalKit 的插件模式补 T2I-CompBenchMagicBrush 两个官方评估器。
  4. 通用指标层:独立 metrics 模块(t2v_metrics + clean-fid + image-reward),对任意 run 输出目录事后计算,不依赖具体 benchmark。
  5. 实验 UI 接口:Gradio 应用新增 Evaluation lab Tab(已完成,见 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.pyeval.shconfig.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,已确认。
  • 补工程细节:API 重试/退避(当前 adapter 无重试)、限流并发、run manifest(模型版本、参数、成本、时间戳)。

Phase 2 — 候选模型 Adapter

  • 定义我们自己的 adapter 约定(在 GenEditEvalKit 接口之上):T2I generate(prompt, seed)、编辑 generate(input_list, seed) 双能力声明。
  • gpt-image-2 adapter(生成 + 编辑)。
  • 其余候选模型 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 并列输出。

执行顺序

  1. Phase 1(fork + GenEval 小样跑通 gpt-image-2)——第一个里程碑,验证底座可用。
  2. Phase 3 的 GenEval/DPG + Phase 5 的 CLIP/ImageReward/HPS ——最快产出第一批可比数字。
  3. Phase 3 编辑侧(GEdit/ImgEdit,需 judge 预算确认)。
  4. Phase 4 两个插件 + Phase 5 FID
  5. Phase 6 对齐验证与报告;Phase 7 视需要。