sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

135 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VisFactor
## 概述
VisFactor 使用从 Factor-Referenced Cognitive Test (FRCT) 改编而来的 20 个以视觉为中心的子测试,评估多模态大语言模型的基础视觉认知能力。它聚焦于支撑高层视觉推理的基本能力,而非衡量单一下游任务的表现。
## 任务描述
- **任务类型**:包含二元判断和简短自由回答的视觉认知评估
- **输入**1 至 4 张图像,与任务特定指令交错排列
- **输出**:一个 JSON 对象,包含布尔值、单词、数字、坐标对或字母形式的答案
- **领域**:可视化与空间处理、知觉闭合、视觉记忆及推理
## 主要特性
- 包含 3,046 行数据,对应 20 个 FRCT 子测试中的 808 个测试项
- 采用基于规则的变体和分组一致性检查,将平均随机猜测准确率降至约 2.9%
- 保留 VLMEvalKit 实现中的官方零样本提示及其图像顺序
- 覆盖隐藏图形识别、格式塔完形、视觉记忆、心理旋转、路径查找、折纸推理等相关能力
## 评估说明
- 使用官方 `VisFactor.tsv` 在 ModelScope 镜像中的 **test** 划分
- 提取最后一个 `{"answer": ...}` 对象,并应用官方针对不同类别的标准化规则
- 单个逻辑测试项可能包含多行数据,仅当所有行均正确时才计为正确
- 报告每个子测试在测试项级别的准确率;主得分是所涵盖子测试的未加权宏平均值
- 评分过程完全确定,无需依赖 LLM 评判器
## 属性
| 属性 | 值 |
|----------|-------|
| **基准测试名称** | `visfactor` |
| **数据集ID** | [lmms-lab-encoder/visfactor](https://modelscope.cn/datasets/lmms-lab-encoder/visfactor/summary) |
| **论文** | [Paper](https://arxiv.org/abs/2502.16435) |
| **标签** | `MultiModal`, `QA`, `Reasoning` |
| **指标** | `accuracy` |
| **默认示例数** | 0-shot |
| **评估划分** | `test` |
## 数据统计
| 指标 | 值 |
|--------|-------|
| 总样本数 | 3,046 |
| 提示词长度(平均) | 463.45 字符 |
| 提示词长度(最小/最大) | 188 / 932 字符 |
**图像统计信息:**
| 指标 | 值 |
|--------|-------|
| 图像总数 | 6,048 |
| 每样本图像数 | 最小: 1, 最大: 4, 平均: 1.99 |
| 分辨率范围 | 100x100 - 668x911 |
| 格式 | jpeg |
## 样例示例
**子集**: `default`
```json
{
"input": [
{
"id": "1a4f53fe",
"content": [
{
"text": "Look at the two images:\n\nBelow is the first image, one simple shape:"
},
{
"image": "[BASE64_IMAGE: jpeg, ~2.6KB]"
},
{
"text": "Below is the second image, a larger, complex pattern:"
},
{
"image": "[BASE64_IMAGE: jpeg, ~8.5KB]"
},
{
"text": "Task: Decide whether the shape in the first image is hidden anywhere inside the second image. The shape will never be rotated, flipped, or resized. The shape will always be right-side-up and exactly the same size as in the first image.\n\nOutput: Respond with only one word: “TRUE” if it is present, “FALSE” if it is not, in JSON format as follows: {\"answer\": YOUR_ANSWER_HERE}."
}
]
}
],
"target": "T",
"id": 0,
"group_id": 0,
"metadata": {
"index": 0,
"category_id": "CF1",
"category_name": "Hidden Figures Test",
"eval_index": 0,
"additional": ""
}
}
```
## 提示模板
*未定义提示模板。*
## 使用方法
### 使用 CLI
```bash
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets visfactor \
--limit 10 # 正式评估时请删除此行
```
### 使用 Python
```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=['visfactor'],
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)
```