SLAKE#

概述#

SLAKE 是一个双语(英语 / 中文)放射学视觉问答基准数据集,由医生基于 CT、MRI 和 X 光图像构建而成。问题既涵盖影像的纯视觉属性,也包含需要结合医学知识才能回答的内容。

任务描述#

  • 任务类型:医学视觉问答(自由形式的简短答案)

  • 输入:一张放射学图像以及一条英文或中文问题

  • 输出:单个单词或短语,语言需与问题一致

  • 领域:放射学(胸部、腹部、脑部、盆腔、颈部)

主要特点#

  • 包含 180 张图像上的 2,094 个测试问题,英语(1,061)和中文(1,033)大致均衡

  • 每个问题均标注为 OPEN(自由作答)或 CLOSED(答案来自小型封闭集合,多为是/否类问题),此分类方式与原始论文一致

  • 问题涵盖十种语义类型:器官、位置、异常、知识图谱、模态、大小、层面、数量、颜色和形状

  • 知识图谱类问题(base_type=kvqa)涉及病因、症状、治疗和功能等无法直接从图像中读取的信息

评估说明#

  • 主要指标:通过归一化精确匹配(normalized exact match)计算准确率,并与唯一参考答案对比

  • 结果按四个子集报告:<language>_<open|closed>,分为英语和中文两类;总体得分为样本加权平均值

  • 归一化遵循官方答案预处理规则(转小写、去除标点和冠词、将文字数字转换为阿拉伯数字、统一 x rayxray),并额外加入生成式问答所需处理:

    • 英语中 yes/no 的同义词统一归为一个标签

    • 中文中表达相同极性的 是的 / 有 / 包含 / 可以 或 不是 / 没有 / 不包含 / 不可以 也统一归为一个标签

    • 中文中的 X光 / X射线 和 两个 / 二 统一映射为英文的 X-Ray 和对应数字形式

  • 答案从提示中要求的 ANSWER: 行读取;若模型未输出该行,则对整个回复进行归一化处理,因此仅复述问题的回复得分为 0

  • 精确匹配设计上较为严格,与原始分类式评估一致:例如参考答案为 Lung, Spinal Cord、知识图谱中的治疗列表,或 T2 被回答为 T2-weighted 时,仅当模型完全复现参考措辞才算正确,因此知识图谱类开放问题的准确率预期较低

  • 严格性也会导致仅在措辞或粒度上与参考答案不同的回答被判错(如 Right 回答为 Right Side,胸腔 回答为 胸部,或多答案参考中只答对其中一项)。设置 judge.strategy='llm_recall' 可让大语言模型(LLM)重新审核仅因规则判断失败的情况;该分数比已发表结果更宽松,不可直接比较

  • 图像以单个 imgs.zip 文件形式提供(约 200 MB),直接从压缩包中读取

  • 论文 | 项目主页

属性#

属性

基准测试名称

slake

数据集ID

evalscope/SLAKE

论文

Paper

标签

Medical, MultiModal, QA

指标

accuracy

默认示例数

0-shot

评估分割

test

数据统计#

指标

总样本数

2,094

提示词长度(平均)

130.2 字符

提示词长度(最小/最大)

60 / 257 字符

各子集统计信息:

子集

样本数

提示平均长度

提示最小长度

提示最大长度

en_open

645

195.09

168

257

en_closed

416

187.99

162

253

zh_open

613

67.07

61

79

zh_closed

420

65.44

60

82

图像统计信息:

指标

总图像数

2,094

每样本图像数

最小: 1, 最大: 1, 平均: 1

分辨率范围

240x240 - 1024x1024

格式

jpeg

样例示例#

子集: en_open

{
  "input": [
    {
      "id": "4366e0b3",
      "content": [
        {
          "image": "[BASE64_IMAGE: jpeg, ~63.2KB]"
        },
        {
          "text": "What modality is used to take this image?\nAnswer the question with a single word or phrase in English.\nThe last line of your response must be of the form \"ANSWER: <answer>\" (without quotes)."
        }
      ]
    }
  ],
  "target": "CT",
  "id": 0,
  "group_id": 0,
  "subset_key": "en_open",
  "metadata": {
    "qid": 11934,
    "img_name": "xmlab102/source.jpg",
    "answer_type": "OPEN",
    "content_type": "Modality",
    "modality": "CT"
  }
}

提示模板#

未定义提示模板。

使用方法#

使用 CLI#

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets slake \
    --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=['slake'],
    dataset_args={
        'slake': {
            # subset_list: ['en_open', 'en_closed', 'zh_open']  # 可选,用于评估特定子集
        }
    },
    limit=10,  # 正式评估时请删除此行
)

run_task(task_cfg=task_cfg)