VLMs Are Biased#
概述#
VLMs Are Biased(VLMBias)用于评估视觉-语言模型(VLM)在回答客观视觉问题时,是依据图像内容作答,还是依赖于记忆中的先验知识。该基准测试使用反事实图像(counterfactual images),这些图像的可见属性与常见概念相冲突,例如带有四条纹的阿迪达斯风格标志,或拥有异常腿数的动物。
任务描述#
任务类型:自由形式的视觉问答(计数与识别)
输入:一张反事实图像或对照图像,配以计数、二元识别或简短回答类问题
输出:一个数字、
Yes/No,或用花括号括起的简短身份标识领域:动物、商标、旗帜、国际象棋棋子、游戏棋盘、视错觉和图案网格
核心特性#
主要的
main划分包含 2,784 个客观视觉问题,覆盖 1,392 张反事实图像,分辨率分别为 384、768 和 1152 像素五个官方分析划分涵盖二元识别、图像内标题注入、原始未修改对照图像,以及去除背景的变体
每条反事实记录同时提供视觉上正确的
ground_truth和基于先验知识的expected_bias该基准测试涵盖七个主题和十九个子主题,支持细粒度分析,无需创建合成的 EvalScope 子集
评估说明#
数据集提示词按原文使用,包括其要求的花括号答案格式
主要指标:准确率(
acc),采用官方提供的大小写不敏感比较方法(去除外层花括号后);若精确文本匹配失败,则比较其中的数字序列次要指标:偏见比率(
bias_ratio,越低越好),即在相同归一化条件下,预测结果与expected_bias一致的比例准确率也按主题分别报告,与官方 lmms-eval 集成一致
original划分不计算bias_ratio,因为这些对照样本未定义expected_bias六个官方数据集划分作为独立的 EvalScope 子集公开,并默认全部参与评估;若仅选择
main子集,可复现论文中的主要基准结果生成应具有确定性且简洁;官方 lmms-eval 设置使用
temperature=0,最多生成 32 个新 token
属性#
属性 |
值 |
|---|---|
基准测试名称 |
|
数据集ID |
|
论文 |
|
标签 |
|
指标 |
|
默认示例数 |
0-shot |
评估划分 |
|
数据统计#
指标 |
值 |
|---|---|
总样本数 |
11,594 |
提示词长度(平均) |
90.01 字符 |
提示词长度(最小/最大) |
60 / 138 字符 |
各子集统计信息:
子集 |
样本数 |
提示词平均长度 |
提示词最小长度 |
提示词最大长度 |
|---|---|---|---|---|
|
2,784 |
91.52 |
78 |
129 |
|
1,392 |
83.27 |
68 |
102 |
|
2,784 |
91.52 |
78 |
129 |
|
458 |
85.03 |
60 |
130 |
|
2,784 |
94.23 |
78 |
138 |
|
1,392 |
83.91 |
70 |
102 |
图像统计信息:
指标 |
值 |
|---|---|
图像总数 |
11,594 |
每样本图像数 |
最小: 1, 最大: 1, 平均: 1 |
分辨率范围 |
384x183 - 1862x1430 |
格式 |
png |
样例示例#
子集: main
{
"input": [
{
"id": "3872fe66",
"content": [
{
"image": "[BASE64_IMAGE: png, ~1.9KB]"
},
{
"text": "Are the horizontal and vertical lines equal in length? Answer in curly brackets, e.g., {Yes} or {No}."
}
]
}
],
"target": "Yes",
"id": 0,
"group_id": 0,
"metadata": {
"id": "VerticalHorizontal_001_Q1_notitle_px384",
"topic": "Optical Illusion",
"sub_topic": "Vertical-Horizontal illusion",
"type_of_question": "Q1",
"expected_bias": "No",
"with_title": false,
"pixel": 384
}
}
提示模板#
未定义提示模板。
使用方法#
使用 CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets vlms_are_biased \
--limit 10 # 正式评估时请删除此行
使用 Python#
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['vlms_are_biased'],
dataset_args={
'vlms_are_biased': {
# subset_list: ['main', 'identification', 'withtitle'] # 可选,用于评估特定子集
}
},
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)