OneIG-Benchmark
OneIG-Benchmark 是一个面向文生图模型的综合评测基准,围绕对齐性、文本渲染、推理能力、风格表现、多样性五个维度组织评测,覆盖图像生成模型的核心能力评估。官方 Standard 套件包含 5 个子任务,支持 EN(英文) 和 ZH(中文) 两种语言模式。
AISBench 已适配 OneIG-Benchmark。仓库目录 ais_bench/configs/oneig_examples/ 下放的是 独立配置文件 示例,在 GPU 上对生成图片做多维度质量测评。OneIG 采用 eval-only 模式,不包含图片生成步骤,请先使用待评测模型生成图片后再进行测评。
数据集概述
背景简介
OneIG-Benchmark 由官方团队开发,旨在从多个细粒度维度全面评估文生图模型的生成质量。官方 GitHub 仓库:https://github.com/OneIG-Bench/OneIG-Benchmark,数据集地址:https://huggingface.co/datasets/OneIG-Bench/OneIG-Benchmark。
核心特性
特性 |
说明 |
|---|---|
5 维评测 |
覆盖对齐、文本、推理、风格、多样性五个维度 |
双语言支持 |
EN(英文)/ ZH(中文)两种模式 |
LLM-as-Judge |
Alignment 和 Text 任务使用多模态大模型作为裁判 |
ML 模型评测 |
Reasoning、Style、Diversity 使用专业小模型评测 |
Eval-Only 模式 |
仅评测生成图片,不包含图片生成步骤 |
网格切分 |
支持将多图拼接的网格图片自动切分为子图 |
精度对齐 |
与官方评测方法精度差异 < 1% |
评测架构总览
端到端评测流程分为数据准备和评估两个阶段:
数据准备阶段 评估阶段
┌──────────────────────┐ ┌───────────────────────────────────────────┐
│ OneIG-Bench.csv │ │ 评估阶段 │
│ (原始数据集) │ │ │
│ ↓ │ │ images/ 目录 (待评测图片) │
│ prompt 提取 │ │ ↓ │
│ ↓ │ │ ┌─────────────┐ ┌─────────────┐ │
│ 文生图模型生成图片 │ │ │ Alignment │ │ Text │ │
│ ↓ │ │ │ (LLM-Judge) │ │ (LLM-Judge) │ │
│ images/ 目录 │───▶│ └─────────────┘ └─────────────┘ │
│ (待评测对象) │ │ ┌─────────────┐ ┌─────────────┐ │
└──────────────────────┘ │ │ Reasoning │ │ Style │ │
│ │ (LLM2CLIP) │ │ (CSD+SE) │ │
│ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Diversity │ → results/ 目录 │
│ │ (DreamSim) │ (评测结果) │
│ └─────────────┘ │
└───────────────────────────────────────────┘
AISBench 适配架构(四层分离):
ais_bench/
├── benchmark/ # 框架层
│ ├── datasets/oneig.py # 数据集加载器
│ ├── tasks/oneig/ # 评测任务包
│ │ ├── __init__.py # 模块入口
│ │ ├── oneig_eval.py # 评测任务(OneIGEvalTask)
│ │ ├── oneig_eval_utils.py # 公共工具函数
│ │ ├── oneig_alignment_eval.py # 对齐评估器
│ │ ├── oneig_text_eval.py # 文本评估器
│ │ ├── oneig_reasoning_eval.py # 推理评估器
│ │ ├── oneig_style_eval.py # 风格评估器
│ │ └── oneig_diversity_eval.py # 多样性评估器
│ └── summarizers/oneig.py # 评分汇总器
├── configs/oneig_examples/ # 用户示例配置
│ └── oneig_full_eval.py # 全量评测配置文件
└── docs/
├── source_zh_cn/extended_benchmark/lmm_generate/oneig.md # 中文文档
└── source_en/extended_benchmark/lmm_generate/oneig.md # 英文文档
依赖与环境
基础环境
OneIG 评测仅支持 GPU 平台。在开始前,请确保已安装 AISBench:
# 克隆 AISBench 代码
git clone https://github.com/AISBench/benchmark.git
cd benchmark/
# 安装运行依赖
pip install -e ./ --use-pep517
OneIG 官方仓库
OneIG 评测依赖官方仓库的辅助数据和参考嵌入,需提前克隆:
# 克隆 AISBench 组织下的 OneIG 代码(已修复已知 Bug)
git clone https://github.com/AISBench/OneIG-Benchmark.git
cd OneIG-Benchmark/
# 安装依赖
pip install -r requirements.txt
模型权重与资源下载
OneIG 评测涉及多种模型权重,分为以下三类:
一、HuggingFace 自动下载(首次运行时自动完成,无需手动操作)
模型 |
用途 |
HuggingFace 路径 |
|---|---|---|
Judge 模型 |
Alignment / Text |
|
LLM2CLIP Clip |
Reasoning |
|
LLM2CLIP Vision |
Reasoning |
|
LLM2CLIP LLM |
Reasoning |
|
SE Encoder |
Style |
|
二、DreamSim 权重(Diversity)
首次运行时 dreamsim 库会自动从 GitHub Releases 下载权重到 {ONEIG_ROOT}/models/ 目录。如果网络无法访问 GitHub,需手动下载:
下载地址:
https://github.com/ssundaram21/dreamsim/releases/download/v0.2.0-checkpoints/dreamsim_ensemble_checkpoint.zip解压到
{ONEIG_ROOT}/models/目录解压后应包含:
dino_vitb16_pretrain.pth、open_clip_vitb16_pretrain.pth.tar、clip_vitb16_pretrain.pth.tar、ensemble_lora/
三、必须手动下载的文件(Style 任务)
文件 |
归档路径 |
下载地址 |
|---|---|---|
CSD 编码器 |
|
|
CLIP ViT-L-14 |
|
四、随 OneIG 仓库分发的数据文件(git clone 后自动获取)
文件 |
路径 |
用途 |
|---|---|---|
问题依赖数据 |
|
Alignment 任务的问答依赖关系 |
文本内容数据 |
|
Text 任务的参考文本 |
参考答案 |
|
Reasoning 任务的参考答案 |
风格标签 |
|
Style 任务的风格标签 |
CSD 参考嵌入 |
|
Style 任务的 CSD 参考向量 |
SE 参考嵌入 |
|
Style 任务的 SE 参考向量 |
快速开始
配置修改
编辑配置文件 ais_bench/configs/oneig_examples/oneig_full_eval.py,修改以下关键参数:
# OneIG 官方项目绝对路径(需提前克隆)
ONEIG_ROOT = "/path/to/OneIG-Benchmark"
# 语言模式:EN(英文)或 ZH(中文)
MODE = "EN"
# 图片根目录(生成图片存放位置)
IMAGE_DIR = "/path/to/oneig/images"
# 模型名称列表(生成图片的模型名称)
MODEL_NAMES = ["Qwen-Image"]
# 网格配置列表(与 MODEL_NAMES 一一对应,格式:'rows,cols')
IMAGE_GRIDS = ["2,2"]
# 要执行的任务列表(可自由组合)
TASKS = ['alignment', 'text', 'reasoning', 'style', 'diversity']
执行评测
# 全量评测(5 个子任务)
ais_bench ais_bench/configs/oneig_examples/oneig_full_eval.py -m eval
结果查看
评测完成后,结果输出在 outputs/default/{timestamp}/ 目录下:
outputs/default/{timestamp}/
├── configs/
│ └── {timestamp}.py # 评测配置快照
├── logs/
│ └── eval/
│ └── oneig_eval/
│ ├── oneig_alignment.out # 各任务日志
│ ├── oneig_text.out
│ ├── oneig_reasoning.out
│ ├── oneig_style.out
│ └── oneig_diversity.out
├── results/
│ └── oneig_eval/
│ ├── oneig_alignment.json # 各任务评测结果(含逐样本详情)
│ ├── oneig_text.json
│ ├── oneig_reasoning.json
│ ├── oneig_style.json
│ └── oneig_diversity.json
└── summary/
├── summary_{timestamp}.csv # 评测总览
├── summary_{timestamp}.md
└── summary_{timestamp}.txt
配置与输出
常用配置项
配置项 |
作用 |
必填 |
|---|---|---|
|
OneIG 官方项目绝对路径 |
是 |
|
语言模式: |
是 |
|
待评测图片根目录 |
是 |
|
生成图片的模型名称列表 |
是 |
|
网格配置列表,格式 |
是 |
|
要执行的任务列表,可选值: |
是 |
|
Judge 模型路径(Alignment/Text),默认 |
否 |
|
Judge 模型随机种子,默认 |
否 |
|
DreamSim 权重缓存目录,默认 |
否 |
预设配置一览
配置名 |
说明 |
配置文件 |
|---|---|---|
oneig_full_eval |
全量评测配置,包含 5 个子任务,支持自由组合 |
|
测评结果路径
按子任务写入:
{work_dir}/results/oneig_eval/oneig_{task}.json
其中 {task} 为 alignment、text、reasoning、style、diversity 之一。
输出格式说明
每个子任务的 JSON 结果文件结构如下(以 Alignment 为例):
{
"accuracy": 88.44,
"details": [
{
"id": "000",
"class_item": "anime",
"score": 0.85,
"image_path": "/path/to/image.png",
"grid": "2x2",
"num_splits": 4,
"judge_details": [
{
"question_id": "Q1",
"question": "...",
"judge_prompt": "...",
"judge_outputs": [
{"grid_idx": 0, "raw_output": "Yes", "parsed_answer": "Yes", "score": 1.0}
],
"dependency": [0],
"filtered_scores": null
}
]
}
],
"style_scores": null
}
各子任务的 details 字段包含不同的中间数据:
子任务 |
中间数据字段 |
说明 |
|---|---|---|
Alignment |
|
逐切分图的 Judge 问答详情 |
Text |
|
逐切分图的 OCR 结果与文本指标(ED/CR/WAC) |
Reasoning |
|
逐切分图的相似度得分 |
Style |
|
逐切分图的 CSD/SE 相似度与风格得分 |
Diversity |
|
逐对切分图的 DreamSim 距离 |
评测指标体系
指标总览
子任务 |
主指标 |
辅助指标 |
评测方式 |
评测模型 |
|---|---|---|---|---|
Alignment |
|
- |
LLM-as-Judge |
Qwen3-VL-8B-Instruct |
Text |
|
|
LLM-as-Judge + OCR |
Qwen3-VL-8B-Instruct |
Reasoning |
|
- |
特征相似度 |
LLM2CLIP |
Style |
|
- |
特征相似度 |
CSD + SE Encoder |
Diversity |
|
|
感知距离 |
DreamSim |
Total |
|
- |
5 任务平均 |
- |
各子任务评测逻辑
Alignment(对齐评估 — LLM-as-Judge)
目标:评估生成图片与提示词的对齐程度。
流程:
将网格图片切分为子图
对每个子图,使用 Judge 模型(Qwen3-VL-8B-Instruct)回答 Yes/No 问题
答案为 “Yes” 记 1 分,“No” 记 0 分
取所有子图的平均分作为该样本的得分
全部样本得分取平均 × 100 作为 accuracy
关键参数:
judge_model_path:Judge 模型路径judge_seed:随机种子(默认 42,确保可复现)num_gpus:支持多 GPU 并行(推荐 4)
Text(文本评估 — LLM-as-Judge + OCR)
目标:评估生成图片中文本渲染的准确性。
流程:
将网格图片切分为子图
使用 Judge 模型对每个子图进行 OCR,提取文本
将提取文本与参考文本对比,计算三个指标:
ED(Edit Distance):编辑距离
CR(Character Ratio):字符比率
WAC(Word Accuracy Coincidence):词准确率
综合 OCR 指标与 Judge 评分得到 accuracy
Reasoning(推理评估 — LLM2CLIP)
目标:评估生成图片对推理类提示词的理解程度。
流程:
将网格图片切分为子图
使用 LLM2CLIP 提取图片特征和参考答案文本特征
计算图片特征与文本特征的余弦相似度
取所有子图的平均相似度作为该样本得分
全部样本得分取平均 × 100 作为 accuracy
模型组成:
CLIP Processor:
openai/clip-vit-large-patch14-336CLIP Model:
microsoft/LLM2CLIP-Openai-L-14-336LLM Model:
microsoft/LLM2CLIP-Llama-3-8B-Instruct-CC-Finetuned
Style(风格评估 — CSD + SE Encoder)
目标:评估生成图片的风格表现。
流程:
将网格图片切分为子图
使用 CSD(CLIP-Style-Diffusion)编码器提取风格特征
使用 SE(Style Encoder)编码器提取风格特征
分别计算 CSD 特征和 SE 特征与参考风格嵌入的余弦相似度
取两个相似度的平均值作为该子图的风格得分
所有子图取平均,全部样本取平均 × 100 作为 accuracy
风格类别(29 种):abstract_expressionism、art_nouveau、baroque、chinese_ink_painting、cubism、fauvism、impressionism、line_art、minimalism、pointillism、pop_art、rococo、ukiyo-e、clay、crayon、graffiti、lego、comic、pencil_sketch、stone_sculpture、watercolor、celluloid、chibi、cyberpunk、ghibli、impasto、pixar、pixel_art、3d_rendering
Diversity(多样性评估 — DreamSim)
目标:评估同一模型生成的多张图片之间的多样性。
流程:
将网格图片切分为子图
使用 DreamSim 模型计算所有子图两两之间的感知距离
取所有距离对的平均值作为该样本的多样性得分
按 class_item(anime、human、object、text、reasoning)分组统计细粒度指标
全部样本得分取平均 × 100 作为 accuracy
评分汇总(oneig_total)
oneig_total 为 5 个子任务 accuracy 的简单平均:
oneig_total = (alignment + text + reasoning + style + diversity) / 5
此外,Diversity 任务额外输出按 class_item 分组的细粒度指标:
指标 |
说明 |
|---|---|
|
Anime 类别的多样性得分 |
|
Portrait 类别的多样性得分 |
|
General Object 类别的多样性得分 |
|
Text Rendering 类别的多样性得分 |
|
Knowledge Reasoning 类别的多样性得分 |
评测结果示例
dataset version metric mode oneig_eval
oneig_alignment a39421 accuracy gen 88.44
oneig_text a39421 accuracy gen 80.79
oneig_text a39421 ED gen 43.32
oneig_text a39421 CR gen 0.08
oneig_text a39421 WAC gen 0.52
oneig_reasoning a39421 accuracy gen 29.84
oneig_style a39421 accuracy gen 35.85
oneig_diversity a39421 accuracy gen 18.28
oneig_total - accuracy gen 50.64
oneig_diversity_anime - accuracy gen 9.00
oneig_diversity_human - accuracy gen 11.21
oneig_diversity_object - accuracy gen 13.27
oneig_diversity_text - accuracy gen 21.14
oneig_diversity_reasoning - accuracy gen 36.80
数据格式说明
原始数据集格式
OneIG 原始数据集为 CSV 文件(OneIG-Bench.csv),每条数据包含以下字段:
{
"category": "Anime_Stylization",
"id": "000",
"prompt_en": "4boys, 5girls, multiple boys, multiple girls, ...",
"type": "T, P",
"prompt_length": "long",
"class": "None"
}
字段 |
说明 |
|---|---|
|
提示词类别:Anime_Stylization、Portrait、General Object、Text Rendering、Knowledge Reasoning、Multilingualism |
|
唯一 ID,每个类别独立维护 |
|
文生图提示词 |
|
类型标记:T(Text)、P(Portrait)、NP(Non-Portrait) |
|
提示词长度:short、middle、long |
|
风格类别(可选):fauvism、watercolor、None |
图片目录结构
待评测图片需按以下目录结构组织:
IMAGE_DIR/
├── anime/ # class_item 目录
│ └── {model_name}/ # 模型名称目录
│ ├── 000.png # 图片文件(文件名前3位为 sample_id)
│ ├── 001.png
│ └── ...
├── human/
│ └── {model_name}/
│ ├── 000.png
│ └── ...
├── object/
│ └── {model_name}/
│ └── ...
├── text/
│ └── {model_name}/
│ └── ...
└── reasoning/
└── {model_name}/
└── ...
各子任务对应的 class_item 目录:
子任务 |
EN 模式 |
ZH 模式(额外) |
|---|---|---|
Alignment |
anime、human、object |
multilingualism |
Text |
text |
- |
Reasoning |
reasoning |
- |
Style |
anime |
- |
Diversity |
anime、human、object、text、reasoning |
multilingualism |
网格切分说明
OneIG 支持将多张生成图片拼接为网格图进行批量评测。IMAGE_GRIDS 配置指定了网格的行列数:
网格配置 |
含义 |
切分子图数 |
|---|---|---|
|
1 行 2 列 |
2 |
|
2 行 2 列 |
4 |
|
1 行 4 列 |
4 |
|
3 行 3 列 |
9 |
评测时,网格图片会被自动切分为子图,每个子图独立评测后取平均分。
示例代码
单任务评测
修改配置文件中的 TASKS 列表,仅包含需要评测的任务:
# 仅评测 Alignment
TASKS = ['alignment']
执行:
ais_bench ais_bench/configs/oneig_examples/oneig_full_eval.py -m eval
全量评测
# 评测全部 5 个子任务
TASKS = ['alignment', 'text', 'reasoning', 'style', 'diversity']
执行:
ais_bench ais_bench/configs/oneig_examples/oneig_full_eval.py -m eval
中文模式评测
ONEIG_ROOT = "/path/to/OneIG-Benchmark"
MODE = "ZH" # 切换为中文模式
IMAGE_DIR = "/path/to/oneig/images_zh" # 中文提示词生成的图片目录
MODEL_NAMES = ["Qwen-Image"]
IMAGE_GRIDS = ["2,2"]
TASKS = ['alignment', 'text', 'reasoning', 'style', 'diversity']
多模型对比评测
MODEL_NAMES = ["model_a", "model_b"]
IMAGE_GRIDS = ["2,2", "2,2"] # 与 MODEL_NAMES 长度一致