# SLAKE ## 概述 SLAKE 是一个双语(英语 / 中文)放射学视觉问答基准数据集,由医生基于 CT、MRI 和 X 光图像构建而成。问题既涵盖影像的纯视觉属性,也包含需要结合医学知识才能回答的内容。 ## 任务描述 - **任务类型**:医学视觉问答(自由形式的简短答案) - **输入**:一张放射学图像以及一条英文或中文问题 - **输出**:单个单词或短语,语言需与问题一致 - **领域**:放射学(胸部、腹部、脑部、盆腔、颈部) ## 主要特点 - 包含 180 张图像上的 2,094 个测试问题,英语(1,061)和中文(1,033)大致均衡 - 每个问题均标注为 `OPEN`(自由作答)或 `CLOSED`(答案来自小型封闭集合,多为是/否类问题),此分类方式与原始论文一致 - 问题涵盖十种语义类型:器官、位置、异常、知识图谱、模态、大小、层面、数量、颜色和形状 - 知识图谱类问题(`base_type=kvqa`)涉及病因、症状、治疗和功能等无法直接从图像中读取的信息 ## 评估说明 - **主要指标**:通过归一化精确匹配(normalized exact match)计算**准确率**,并与唯一参考答案对比 - 结果按四个子集报告:`_`,分为英语和中文两类;总体得分为样本加权平均值 - 归一化遵循官方答案预处理规则(转小写、去除标点和冠词、将文字数字转换为阿拉伯数字、统一 `x ray` 为 `xray`),并额外加入生成式问答所需处理: - 英语中 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),直接从压缩包中读取 - [论文](https://arxiv.org/abs/2102.09542) | [项目主页](https://www.med-vqa.com/slake/) ## 属性 | 属性 | 值 | |----------|-------| | **基准测试名称** | `slake` | | **数据集ID** | [evalscope/SLAKE](https://modelscope.cn/datasets/evalscope/SLAKE/summary) | | **论文** | [Paper](https://arxiv.org/abs/2102.09542) | | **标签** | `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` ```json { "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: \" (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 ```bash evalscope eval \ --model YOUR_MODEL \ --api-url OPENAI_API_COMPAT_URL \ --api-key EMPTY_TOKEN \ --datasets slake \ --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=['slake'], dataset_args={ 'slake': { # subset_list: ['en_open', 'en_closed', 'zh_open'] # 可选,用于评估特定子集 } }, limit=10, # 正式评估时请删除此行 ) run_task(task_cfg=task_cfg) ```