SLAKE#
概述#
SLAKE 是一个双语(英语 / 中文)放射学视觉问答基准数据集,由医生基于 CT、MRI 和 X 光图像构建而成。问题既涵盖影像的纯视觉属性,也包含需要结合医学知识才能回答的内容。
任务描述#
任务类型:医学视觉问答(自由形式的简短答案)
输入:一张放射学图像以及一条英文或中文问题
输出:单个单词或短语,语言需与问题一致
领域:放射学(胸部、腹部、脑部、盆腔、颈部)
主要特点#
包含 180 张图像上的 2,094 个测试问题,英语(1,061)和中文(1,033)大致均衡
每个问题均标注为
OPEN(自由作答)或CLOSED(答案来自小型封闭集合,多为是/否类问题),此分类方式与原始论文一致问题涵盖十种语义类型:器官、位置、异常、知识图谱、模态、大小、层面、数量、颜色和形状
知识图谱类问题(
base_type=kvqa)涉及病因、症状、治疗和功能等无法直接从图像中读取的信息
评估说明#
主要指标:通过归一化精确匹配(normalized exact match)计算准确率,并与唯一参考答案对比
结果按四个子集报告:
<language>_<open|closed>,分为英语和中文两类;总体得分为样本加权平均值归一化遵循官方答案预处理规则(转小写、去除标点和冠词、将文字数字转换为阿拉伯数字、统一
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),直接从压缩包中读取
属性#
属性 |
值 |
|---|---|
基准测试名称 |
|
数据集ID |
|
论文 |
|
标签 |
|
指标 |
|
默认示例数 |
0-shot |
评估分割 |
|
数据统计#
指标 |
值 |
|---|---|
总样本数 |
2,094 |
提示词长度(平均) |
130.2 字符 |
提示词长度(最小/最大) |
60 / 257 字符 |
各子集统计信息:
子集 |
样本数 |
提示平均长度 |
提示最小长度 |
提示最大长度 |
|---|---|---|---|---|
|
645 |
195.09 |
168 |
257 |
|
416 |
187.99 |
162 |
253 |
|
613 |
67.07 |
61 |
79 |
|
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)