信息速览
AMOS 出现的时机,恰好卡在腹部多器官分割「已经不算难题、但也不敢说解决了」的那几年。BTCV 提供了标准的 13 类 CT 标注,CHAOS 提供了 CT 与 MRI 的配对视角,KiTS 和 LiTS 提供了带病灶的肾脏与肝脏。可它们各自都只覆盖了一条轴线上的一小段:要么只有 CT,要么只有健康人群,要么只有一两家医院的设备。于是模型在论文里能刷到 0.9 以上,换一台机器、换一个期相就开始掉点,而这种掉点在公开基准上几乎看不见。
AMOS 想补的就是这一段。它在 2022 年由香港大学、香港中文大学(深圳)、中山大学等机构联合发布,同年进入 NeurIPS 的数据集与基准赛道。它的设计意图不是「把 BTCV 做得更大」——总样本只有六百例,论规模比不过任何一个多中心聚合集——而是「让模态、厂商、人群这三个维度的差异同时出现在同一份答案卷里」。CT 五百例、MRI 一百例,四家厂商的设备,两家医院的采集,年龄从十四岁跨到九十四岁。
但这份设计意图也带来了它最难被正确使用的地方:十五个器官类别的定义与 BTCV 的十三类并非一一对应,有的被合并,有的被拆细;MRI 只占六分之一,任何关于 MRI 的结论都要打折。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 官方名称 | AMOS: A Large-Scale Abdominal Multi-Organ Benchmark for Versatile Medical Image Segmentation |
| 发布年份 | 2022 年(arXiv 2206.08023;NeurIPS 2022 Datasets and Benchmarks Track) |
| 发布机构 | 香港大学、香港中文大学(深圳)、中山大学、深圳大数据研究院、斯坦福大学 |
| 带标注样本 | 600 例(CT 500 例,MRI 100 例) |
| 无标注扩展集 | 官方称 CT 与 MRI 各千例量级,分三个 Zenodo 记录分发 |
| 器官类别 | 15 类,含一个按性别切换的盆腔类(前列腺/子宫) |
| 采集中心 | 2 家(元数据 Site 字段只有 people 与 center 两个取值) |
| 扫描仪厂商 | 4 家(GE、Siemens、Philips、Toshiba/Canon 系) |
| 机架型号 | 9 个不同型号,最多的是 Aquilion ONE 与 SOMATOM Force |
| 受试者年龄 | 14–94 岁,含 1 例年龄字段为空 |
| 性别构成 | 男性 369 例、女性 231 例,约 1.6:1 |
| 文件格式 | NIfTI(nii.gz),图像与掩膜同号命名 |
| 官方划分 | 训练 200 CT + 40 MRI,验证 100 CT + 20 MRI,测试 100 CT + 40 MRI |
| 评测指标 | Dice 与归一化表面距离(NSD) |
| 许可 | 数据 CC BY 4.0;代码 Apache-2.0 |
| 官方入口 | https://era-ai-biomed.github.io/amos/dataset.html |
§1 它要解决的具体麻烦
1.1 你的模型在自家数据上很好,换台机器就掉点,而公开基准看不出来
腹部多器官分割的训练管线在 2022 年已经很成熟。nnU-Net 这一类自配置方法把预处理、体素间距归一、网络结构和后处理都自动调了一遍,在 BTCV 上能稳定做到 0.87 上下的平均 Dice。问题不在这套管线,而在于用来训练和评测它的数据太整齐:同一家医院、同一批机架、同一种期相、同一套标注规范。模型学到的不只是「肝脏在哪儿」,还包括了「这台机器重建出来的肝脏是什么噪声纹理」。
这种耦合在单一数据集上是隐形的。你在 BTCV 上训练、在 BTCV 上验证、在 BTCV 的测试集上报告,三个环节的域都相同,掉点自然无从发生。等到部署到另一家医院,才发现平均 Dice 掉了十个点以上,而且掉得最多的是胰腺、十二指肠、食管这些薄壁或走向多变的器官。AMOS 把这种差异前置到了数据集层面:同一份标注规范下,四种厂商的机架、两种模态、两个中心、多个期相的样本被混在一起,训练与测试的域天然不同。
这一点是判断「该不该选它」的第一把尺子。如果你的痛点就是「跨院迁移不稳」,AMOS 的价值在数据层面而不是方法层面;如果你的痛点是「模型结构不够新」,AMOS 帮不上忙,它不是方法基准。
1.2 三条常见的错误期待
第一条是把它当成「更大的 BTCV」。这个期待在数字上就站不住:BTCV 的训练集有三十例、额外五十例来自不同中心,AMOS 的带标注总量是六百例,看似更大,但其中一百例是 MRI,跨模态不能直接换算成「更多的 CT」。更关键的是类别定义不一样,拿它替换 BTCV 的训练集,等于同时换了数据分布和标签语义,实验结论归因不清。
第二条是把它当成「跨模态研究的唯一入口」。MRI 只有一百例,而且在三份拆分之后,训练侧只剩四十例上下。用它做「CT 预训练 + MRI 微调」的对照实验是够的,用它得出「MRI 上某方法优于另一方法」的稳健结论是不够的。CHAOS 的 MRI 部分虽然也小,但它是配对设计,同一受试者既有 CT 又有 MRI,这是 AMOS 没有的。
第三条是把它当成「临床可用性的证据」。AMOS 的样本来自两家中国大陆医院,年龄分布偏向中老年,儿科几乎空白;它也没有配套的放射报告、随访结果或治疗计划。它证明的是算法在跨域条件下的相对排序,不是算法在临床工作流里的绝对可用性。把榜单分数当作品质背书,是这类基准最常见的越界用法。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 一份含 CT 与 MRI 的腹部多器官标注 | 600 例,CT 与 MRI 同一套 15 类规范 | 够,但 MRI 侧偏少 |
| 跨厂商设备的泛化评测 | 4 家厂商、9 个机架型号混在同一划分里 | 够,能观察到设备差异 |
| 跨中心的泛化评测 | 官方元数据只有 2 个中心取值 | 勉强,中心数偏少 |
| 一个可以离线复现的榜单 | 测试集标注不公开 | 不够,只能在线提交 |
| 半监督或自监督的预训练语料 | 官方提供无标注扩展集 | 够,但需另下 Zenodo 记录 |
| BTCV 的直接替代品 | 类别定义不同 | 不够,必须重映射 |
| 儿科或青少年腹部影像 | 最小年龄 14 岁 | 不够,基本空白 |
| 病灶、肿瘤或血管狭窄标注 | 只有器官掩膜,无病灶类 | 不够,另找 KiTS、LiTS |
| 与放射报告对齐的文本 | AMOS22 无报告;报告在 AMOS-MM 里 | 不够,需换子集 |
| 临床工作流的端到端验证 | 无随访、无治疗计划、无外部临床终点 | 不够,不能用 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 模型在自己医院的 CT 上很好,换到合作医院就掉点 | 提供四厂商、两中心、多期相的混合样本,把域差异变成可量化的指标 | 先按厂商分组做分层评测,再看掉点集中在哪几个器官 |
| 要做 CT 与 MRI 共用一个网络的产品线 | 一套类别规范同时覆盖两种模态,可直接做联合训练 | 把 MRI 侧当验证集而非训练主力,训练集权重向 CT 倾斜 |
| 手上只有几十例标注,想扩到能训的量 | 无标注扩展集可做预训练或伪标签 | 先在半监督设定下复现官方基线,再决定是否投入标注 |
| 论文需要一张和主流方法对比的表 | 官方榜单与公开基线可以让对比落在同一口径上 | 提交前核对你用的划分与官方三份拆分是否一致 |
| 从 BTCV 迁移过来,想继续用老代码 | 类别可以折叠对齐,接口不用大改 | 先写一张两套标签的对照表,再改 DataLoader 的映射 |
| 要给放射科做辅助勾画工具 | 可作为通用先验,覆盖 15 类器官 | 用本院数据微调,别直接拿榜单分数对外 |
| 想做儿科腹部分割 | 几乎帮不上,最小年龄 14 岁 | 另找儿科专项数据,AMOS 只能当成人先验 |
1.5 一句话判断
如果你的问题里有「跨模态」「跨厂商」「跨院」这三个词中的两个,AMOS 是当前最省事的公开答案卷;如果三个词都没有,它只会给你多一份要重映射的标签。
1.6 不适合谁:四条边界
第一条,不适合只做肝脏或只做肾脏单器官任务的团队。AMOS 的十五类里有十四个类对你是噪声,而它的总体量又不足以摊薄这些噪声。单器官任务用 LiTS、KiTS 这类专门数据集,标注颗粒度和病例数都更合适。
第二条,不适合需要病灶级标注的研究。AMOS 只有器官掩膜,肿瘤、囊肿、结石、血管狭窄一概没有。做检出、分级、疗效评估的团队在这里拿不到监督信号。
第三条,不适合把结果直接写进注册申报材料的团队。AMOS 是研究型基准,样本量、中心数、人群覆盖都不足以支撑临床有效性的论证。它可以出现在方法学章节里,不能出现在性能验证章节里。
第四条,不适合需要离线复现榜单的评审流程。测试集标注不公开,你只能在官方服务器上提交拿分。如果你的验收要求是「第三方拿着数据独立跑出同一个数」,AMOS 的测试集满足不了,只能用训练集与验证集自己切一份内部测试。
§2 数据构成与规格
2.1 两个子集:AMOS22 与 AMOS-MM
官方新主页把 AMOS 拆成了两个平行的子集,这是很多人第一次接触时容易混淆的地方。
AMOS22 是分割子集,六百例带标注扫描,十五个器官类别,用于语义分割。这也是绝大多数论文里说的「AMOS」。它的数据以 amos22.zip 的形式放在 Zenodo 记录 7262581 上,压缩包约二十四吉字节,另附一个病例级元数据 CSV。
AMOS-MM 是多模态理解子集,官方称含两千例以上腹部 CT 及其放射报告(Findings 与 Impressions 两段式),覆盖胸、腹、盆三个区域,另有一万九千余条视觉问答对,分属六个临床范畴。它对应 MICCAI 2024 的报告生成与视觉问答两个新任务,与分割子集是两批数据。
这里要提醒一点:AMOS22 本身没有放射报告,AMOS-MM 本身也不是为了分割而标注的。想做「分割 + 报告」的联合建模,得先把两个子集的病例是否重叠搞清楚,而官方页面并没有给出这层对应关系。稳妥做法是把它们当成两个独立数据集分别引用。
2.2 字段与记录的完整字典
带标注部分的元数据是一个六百行的 CSV,文件名是 labeled_data_meta_0000_0599.csv。它的字段不多,但每一个都对使用方式有影响。
| 字段名 | 类型 | 取值示例 | 对使用的意义 |
|---|---|---|---|
| amos_id | 整数 | 450、235、601 | 全表主键,同时决定所属拆分与模态 |
| Patient’s Birth Date | 字符串(YYYYMMDD) | 19800509 | 可推导年龄,也提示原始 DICOM 字段未被彻底清除 |
| Patient’s Sex | 字符串 | M、F | 决定第 15 类的语义(前列腺或子宫) |
| Patient’s Age | 字符串(NNNY) | 039Y、067Y | 有一条为空,做年龄分层时要处理 |
| Manufacturer’s Model Name | 字符串 | Optima CT540、SOMATOM Force | 机架型号,是设备差异的最小粒度 |
| Manufacturer | 字符串 | GE MEDICAL SYSTEMS、SIEMENS | 厂商,四家 + 一个异常写法 |
| Acquisition Date | 字符串(YYYYMMDD) | 20200402 | 集中在 2020 与 2021 两年 |
| Site | 字符串 | people、center | 采集中心,只有两个取值 |
字段本身的信息量不大,真正有意思的是它们之间的耦合关系,而这层关系官方页面没有明说,需要从编号段推断。
2.3 一条记录的完整解剖
下面是一条 CT 病例在元数据里的样子。字段名含空格和单引号,读的时候要小心。
amos_id 235
Patient's Birth Date 19530411
Patient's Sex M
Patient's Age 067Y
Manufacturer's Model Name SOMATOM Force
Manufacturer SIEMENS
Acquisition Date 20200411
Site people
对应的磁盘上会有两个文件:imagesTr/amos_0235.nii.gz 和 labelsTr/amos_0235.nii.gz。前者的体素值是亨斯菲尔德单位(CT)或原始信号强度(MRI),后者是零到十五的整数标签,零为背景。
判断一例属于 CT 还是 MRI,最省事的办法是看 amos_id 的编号段:一到五百为 CT,五百零一到五百九十九为 MRI。这个规律在官方文档里没有作为约定写出来,但它与 Zenodo 说明里「五百 CT + 一百 MRI」的总量一致,也与元数据中厂商与型号的分布吻合——MRI 侧几乎全是 Siemens 的 Prisma 与 GE 的 SIGNA,CT 侧则四家厂商都有。
下面这段代码把元数据读进来,补上模态与拆分的推断列。它只依赖标准库和 pandas,能直接在拿到数据后跑。
#-- 读取官方病例元数据,补出模态列与拆分列
import pandas as pd
META = "labeled_data_meta_0000_0599.csv"
df = pd.read_csv(META, dtype=str)
df.columns = ["amos_id", "birth", "sex", "age", "model", "vendor", "acq_date", "site"]
df["amos_id"] = df["amos_id"].astype(int)
#-- 编号段决定模态:1-500 为 CT,501-600 为 MRI
df["modality"] = df["amos_id"].map(lambda i: "CT" if i <= 500 else "MRI")
#-- 年龄字段是 NNNY 形式,去掉尾字母后转整数
df["age_num"] = pd.to_numeric(df["age"].str.rstrip("Y"), errors="coerce")
#-- 厂商写法有一处异常(Philips Medical Systems),归并到 Philips
df["vendor"] = df["vendor"].replace({"Philips Medical Systems": "Philips"})
print(df["modality"].value_counts())
print(df.groupby(["modality", "vendor"]).size())
print(df["age_num"].describe())
跑完会看到 CT 与 MRI 的数量比接近五比一,厂商分布是 Siemens、Philips、GE、Toshiba 各占一档。这个比例很关键:它说明「跨厂商」在 CT 侧是真正平衡的,而在 MRI 侧其实是 Siemens 独大,一百例里有六十四例出自同一家厂商的同一型号。
2.4 十五个器官类别的定义表
AMOS 的类别表是它最容易出错的地方,也是与 BTCV 对齐时最费劲的地方。官方给出的十五类是:脾、右肾、左肾、胆囊、食管、肝、胃、主动脉、下腔静脉、胰腺、右肾上腺、左肾上腺、十二指肠、膀胱、前列腺/子宫。
下表把这十五类与 BTCV 的十三类摆在一起,标出合并、细分与独有这三种关系。
| 官方类别 | 常见标签值 | BTCV 对应 | 关系 | 迁移时的注意点 |
|---|---|---|---|---|
| 脾 | 1 | 脾 | 一一对应 | 无 |
| 右肾 | 2 | 右肾 | 一一对应 | 无 |
| 左肾 | 3 | 左肾 | 一一对应 | 无 |
| 胆囊 | 4 | 胆囊 | 一一对应 | 小器官,边界不稳 |
| 食管 | 5 | 食管 | 一一对应 | 胸腔段常被切掉 |
| 肝 | 6 | 肝 | 一一对应 | 无 |
| 胃 | 7 | 胃 | 一一对应 | 与十二指肠贴合处易混 |
| 主动脉 | 8 | 主动脉 | 一一对应 | 无 |
| 下腔静脉 | 9 | 下腔静脉 | 一一对应 | 与肝内段边界易混 |
| 胰腺 | 10 | 胰腺 | 一一对应 | 最薄,Dice 最低的一类 |
| 右肾上腺 | 11 | 右肾上腺 | 一一对应 | 体积最小的一类 |
| 左肾上腺 | 12 | 左肾上腺 | 一一对应 | 体积最小的一类 |
| 十二指肠 | 13 | 十二指肠 | 一一对应 | 与胃、空肠交界处定义不同 |
| 膀胱 | 14 | 无 | AMOS 独有 | BTCV 无此类,迁移时整类丢弃 |
| 前列腺/子宫 | 15 | 无 | AMOS 独有且按性别切换 | 同一标签值在不同受试者上指不同器官 |
看完这张表会发现一件事:两套定义的「一一对应」有十三个,看起来几乎重合,真正麻烦的是最后两行。BTCV 的十三类里没有膀胱和前列腺/子宫,而 AMOS 用同一个标签值十五来表示两个器官,具体是哪一个取决于受试者性别。这意味着如果你写了一个按标签值取器官名的函数,遇到第十五类必须先查性别字段,否则会把女性的子宫报成前列腺。
还有一层不那么显眼:十三个一一对应的类别,名字相同不等于边界定义相同。尤其是十二指肠与胃的交界、食管的胸腔段与腹腔段分界,不同标注团队的规范会有几厘米的出入。这种出入在单一数据集内部不显眼,一旦跨数据集评测就会变成系统性偏差。
2.5 官方三份划分与样本比例的分布
官方在 AMOS22 挑战赛任务里给出的划分是训练两百例 CT 加四十例 MRI、验证一百例 CT 加二十例 MRI、测试一百例 CT 加四十例 MRI。三份相加正好是六百例,CT 五百、MRI 一百。
| 拆分 | CT | MRI | 合计 | CT 占比 | MRI 占比 |
|---|---|---|---|---|---|
| 训练 | 200 | 40 | 240 | 83.3% | 16.7% |
| 验证 | 100 | 20 | 120 | 83.3% | 16.7% |
| 测试 | 100 | 40 | 140 | 71.4% | 28.6% |
| 合计 | 500 | 100 | 600 | 83.3% | 16.7% |
这张表里最值得注意的不是总量,而是测试集的 MRI 占比被刻意抬到了近三成,比训练侧高出一截。这是设计者的用心:如果按总体比例随机切,测试集里 MRI 只有十七例左右,跨模态指标的方差会大到没有意义。抬到四十例之后,MRI 侧的评测至少在数量上站得住。
但代价也很清楚:训练侧的 MRI 只有四十例。任何想在 MRI 上做细粒度结论的人,都会在训练阶段先撞上样本量这堵墙。
2.6 与同类资源的字段差异
| 资源 | 样本量 | 模态 | 类别数 | 中心数 | 许可 | 与本集的差异 |
|---|---|---|---|---|---|---|
| AMOS | 600 | CT + MRI | 15 | 2 | CC BY 4.0 | — |
| BTCV | 50(30 训 + 20 测) | CT | 13 | 多源聚合 | 申请制 | 无 MRI,类别少两类 |
| CHAOS | 约 40 例配对 | CT + MRI | 4 | 1 | 申请制 | 类别极少,但配对设计 |
| TotalSegmentator | 一千二百余例 | CT | 一百余类 | 1–2 | CC BY 4.0 | 类别极多,无 MRI |
| FLARE 2022 | 两千余例 CT | CT(部分 MRI 隐藏集) | 多器官 | 多中心 | 申请制 | 规模大,划分更复杂 |
| KiTS23 | 近六百例 | CT | 肾 + 肿瘤 | 多中心 | CC BY-NC-SA | 有病灶,类别少 |
从这张表能看出 AMOS 的位置:它不是任何一列的冠军,规模不如 FLARE 与 TotalSegmentator,类别数不如 TotalSegmentator,配对设计不如 CHAOS,病灶标注不如 KiTS。它唯一独占的格子是「类别数适中 + CT 与 MRI 都有 + 厂商平衡 + 许可最宽松」这个组合。
§3 它的身份:一份为「迁移不崩」而设计的答案卷
3.1 名字里的 versatile 是设计目标,不是形容词
论文标题里的 versatile 常被译成「通用」,容易让人以为它是什么都能干。回到摘要看,这个词修饰的是 segmentation,而支撑它的四个定语是 multi-center、multi-vendor、multi-modality、multi-phase。这四个词恰好是模块化程度最高的四个维度——换中心、换设备、换模态、换期相,每一个都能单独拆出来做对照实验。
这种设计选择带来一个直接后果:AMOS 不适合回答「哪个网络结构更好」这类问题。它的域间差异太大,结构带来的边际收益很容易被域偏移淹没。它适合回答的是「同一个结构,在域 A 训练、域 B 测试,掉多少」。这个问题的答案对部署比对发论文更有用。
3.2 十五类里有十四类是常量,一类是变量
在十五个类别中,前十四类在所有受试者身上语义固定,第十五类却随性别切换。这个设计在解剖学上是合理的——盆腔在男性与女性身上最主要的大器官确实不同——但在工程上制造了一个隐式依赖:标签的含义依赖于另一列的值。
这种依赖在单一数据集内部可以靠查表解决,一旦跨数据集就变成陷阱。BTCV 没有这一类,你从 AMOS 迁过去时要把第十五类整个丢掉;反过来从 BTCV 迁到 AMOS,你要自己决定第十五类怎么初始化,而任何自动化的标签对齐脚本都不会替你做出这个判断。
3.3 数据从哪儿来:两家医院,一段不长的采集窗口
元数据显示,六百例的采集日期集中在 2020 年与 2021 年两年,Site 字段只有 people 与 center 两个取值,CT 侧两家各占一半(二百五十与二百五十一),MRI 侧是五十九与四十。这说明数据来自两家医院的回顾性导出,而不是跨机构的前瞻性多中心采集。
这个事实不影响数据质量,但影响你怎么描述它。官方页面与论文摘要都用 multi-center 这个词,字面上没错——确实不止一家——但如果你在方法章节里写「来自多个医疗中心的大规模数据」,评审会追问到底是几个,答案是两个。诚实的写法是「两家三级医院的回顾性数据」。
3.4 标注是怎么做的:官方披露到哪一步
官方页面与论文摘要都只写到「体素级标注、十五个器官」这一层,没有公开标注人数、标注工具、复核流程、单例耗时这些细节。这一点与 AbdomenCT-1K 那类把标注流程写进论文的做法不同。
对使用者来说,这意味着标注质量的先验只能从数据本身反推:看边界是否平滑、看小器官是否有断裂、看相邻器官之间是否有重叠。这也是为什么很多后续论文在 AMOS 上报告胰腺与肾上腺的 Dice 明显低于肝脾——一部分是解剖难度,一部分可能是标注一致性。
3.5 它的版本与命名:三个入口,一份数据
初次接触时最容易迷路的是入口。目前至少有三个地方挂着 AMOS 的信息:旧的 grand-challenge 挑战赛页、新的 GitHub Pages 官网、以及 Zenodo 上的记录。
三者的分工是:旧挑战赛页保留了 2022 年的赛程、榜单与提交入口,是历史快照;新官网是当前的统一入口,把 AMOS22 与 AMOS-MM 并列;Zenodo 是实际的下载点。数据本身只有一份,amos22.zip,约二十四吉字节。
引用时要小心一个细节:旧挑战赛页给的是 arXiv 2206.08023 的引用格式,Zenodo 与新官网给的是 NeurIPS 2022 会议论文的格式,两者是同一份工作的两个版本。正式引用建议用 NeurIPS 版本,因为数据集与基准赛道的论文有独立的页码与 DOI 语境。
§4 它的质量:好在设计,弱在规模
4.1 三个维度是不是真的平衡了
「跨模态 + 跨厂商 + 跨人群」这个说法值得逐条核对,因为三者的平衡程度差别很大。
跨模态这一维,CT 与 MRI 的比例是五比一。这不是平衡,是「有覆盖但明显偏斜」。官方从未声称两者等量,但很多二手介绍会写「CT 与 MRI 并重」,这是错的。真实情况是 CT 是主体,MRI 是补充,用来让跨模态任务有数据可训。
跨厂商这一维,CT 侧确实接近均分:GE、Siemens、Philips、Toshiba 四家各占一百二十上下,没有一家超过三成。这是 AMOS 最扎实的一维。MRI 侧则不然,Siemens 一家占了六成以上,另有三家分剩下的四成。
跨人群这一维,性别比约一点六比一,年龄从十四到九十四,覆盖了成年到老年的主区间,但儿科与青少年几乎空白。地域上两家医院都在中国大陆,所谓「跨人群」在种族维度上并没有实现。
4.2 案例:把训练集当 BTCV 用的一次错误归因
这里讲一个具体的场景,它同时在 §5 的取数环节与 §7 的偏差分析里被引用。
某团队想验证一个改进的注意力模块在腹部多器官分割上的效果。他们的做法是:把 AMOS 的训练集(两百 CT + 四十 MRI)整体替换掉原来用的 BTCV 训练集,测试仍用 BTCV 的二十例,代码里只改了数据路径,没有改任何标签映射。
结果很漂亮——平均 Dice 从 0.86 掉到 0.79,他们据此得出「AMOS 训出来的模型泛化更差」的结论,并把这个结论写进了讨论。问题在于,这个 0.79 里至少有两部分不是模型造成的:第一,AMOS 的第十五类在 BTCV 上没有对应,模型被要求预测一个测试集里从不出现的类,这部分梯度是纯噪声;第二,两侧的标签值虽然编号相近,但 AMOS 的第十三类是十二指肠而 BTCV 的编号体系里没有这一项,逐类 Dice 的对照表根本对不上。
正确的做法是先写一张中间编码表,把 AMOS 的十五类折叠到与 BTCV 的十三类同名同义的一组整数上,再训练、再评测。这个改动只需要几十行代码,但它决定了结论到底是「模型不行」还是「标签没对齐」。
§4.2 的案例不是孤例。在公开的复现讨论里,「在 A 上训、在 B 上评得到负迁移」这类结论,有相当一部分来自标签语义的错位而不是模型能力。判断方法很简单:把逐类 Dice 打出来,如果掉点高度集中在少数几个类上,先怀疑映射;如果所有类均匀掉,才怀疑分布。
4.3 标注一致性的可见证据
虽然没有官方披露的标注流程,但从数据里能看到一些间接证据。
一是小器官的标注形态。肾上腺在 CT 上常常只有十几个切片、几百个体素,AMOS 里这一类是有标注的,而且在两家中心的样本上都存在。这说明标注团队对小结构做了逐层处理,不是粗放的包围盒。
二是第十五类的处理。如果标注团队对性别不做区分,就会出现男性样本里标了子宫、女性样本里标了前列腺的情况。从类别设计上看官方是意识到这个问题的,但具体的落实情况需要按性别抽样核对,这一步只能拿到数据后自己做。
三是边界处的处理。相邻器官(胃与十二指肠、肝与下腔静脉)在 AMOS 里是各自独立的标签值,不做多标签重叠。这意味着边界体素只能归给一个器官,交界处的归属由标注规范决定。跨数据集评测时,这类体素最容易成为分歧点。
4.4 官方的基线做到什么水平
论文摘要只写到「对若干当前最优方法做了基准评测」,没有给出具体分数。官方榜单在挑战赛页面上可以查,但榜单只反映 2022 年参赛队伍的成绩,且测试集标注不公开。
能确定的定性结论有两条。第一,跨模态任务的分数明显低于纯 CT 任务,这与 MRI 侧样本少、强度分布差异大一致。第二,小器官(胰腺、肾上腺、十二指肠、食管)的 Dice 显著低于大器官,这个规律在几乎所有腹部分割基准上都成立。
任何声称「AMOS 上某方法达到 0.9 以上」的说法,都要先问是哪一个任务、哪一份拆分、用没用测试时增强。不同口径下的数字不可比,这是这类基准的通病。
§5 怎么拿到、怎么接进去
5.1 下载路径:Zenodo 直链,不需要注册
带标注部分的官方下载点是 Zenodo 记录 7262581。该记录的元数据标为 open access,许可为 CC BY 4.0,文件列表里有两个条目:amos22.zip(约二十四吉字节)与 labeled_data_meta_0000_0599.csv。
需要说明一处口径差异:旧挑战赛页面在 2022 年 5 月的公告里写的是「注册后按指引下载」,而 Zenodo 上的记录从一开始就是开放许可。两个说法并不矛盾——注册是挑战赛的参赛流程,下载本身不需要。以 Zenodo 的实际状态为准即可。
无标注扩展集分三个记录:Part I 为 900 例 CT(记录 7262757),Part II 为 1100 例 CT(记录 7295661,官方标注「目前有一千例,将补足到一千一百」),Part III 为 1200 例 MRI(记录 7295816)。这三份的用途是半监督、自监督与域适应,不含标注。
5.2 目录结构与命名约定
解开 amos22.zip 之后是 nnU-Net 风格的目录。这种结构的好处是能直接被 nnU-Net 的 Dataset 类识别,坏处是它把原始信息的嵌套关系压平了。
amos22/
imagesTr/ #-- 训练集图像,amos_0001.nii.gz 起
labelsTr/ #-- 训练集掩膜,与图像同号
imagesVa/ #-- 验证集图像
labelsVa/ #-- 验证集掩膜
imagesTs/ #-- 测试集图像,官方不提供对应掩膜
dataset.json #-- 类别名与通道数的配置
命名规则是 amos_编号 四位数补零。编号一到五百为 CT,五百零一到五百九十九为 MRI。这个编号段约定是理解整份数据的关键,因为目录里没有单独的模态子目录,模态信息只藏在文件名里。
5.3 用 nnU-Net 起一次基线
nnU-Net 是这类数据的标准起点,因为它的自动配置恰好能处理 AMOS 里体素间距不一的问题。下面是环境准备与训练的最小流程,路径按上面的目录结构写。
#-- 建环境并装 nnU-Net v2
python3.11 -m venv venv_amos
source venv_amos/bin/activate
pip install nnunetv2==2.4.2
#-- 三个环境变量是 nnU-Net 的硬性约定
export nnUNet_raw="$HOME/amos_raw"
export nnUNet_preprocessed="$HOME/amos_pre"
export nnUNet_results="$HOME/amos_res"
#-- 把解压好的目录放进 raw 下的标准命名
mkdir -p "$nnUNet_raw/Dataset900_AMOS/imagesTr"
mkdir -p "$nnUNet_raw/Dataset900_AMOS/labelsTr"
cp amos22/imagesTr/*.nii.gz "$nnUNet_raw/Dataset900_AMOS/imagesTr/"
cp amos22/labelsTr/*.nii.gz "$nnUNet_raw/Dataset900_AMOS/labelsTr/"
#-- 校验数据完整性(通道数、标签值、几何)
nnUNetv2_plan_and_preprocess -d 900 --verify_dataset_integrity
#-- 五折训练,选 2d 先看收敛
nnUNetv2_train 900 2d 0
这里要提醒两件事。第一,nnU-Net v2 要求图像文件名形如 amos_0001_0000.nii.gz,单个通道补四位零;直接复制原始命名会在完整性校验时报错。第二,dataset.json 里的类别数要改成十六(含背景),标签值保持零到十五不变。
5.4 做一次模态分层的评测
单看总体 Dice 会掩盖模态差异,下面这段代码按模态与厂商分组算指标,能直接看出掉点在哪一档。
#-- 按模态与厂商分层计算逐例 Dice
import numpy as np
import pandas as pd
import nibabel as nib
from pathlib import Path
PRED = Path("predictions")
GT = Path("amos22/labelsTs")
def dice(a, b):
a = a.astype(bool)
b = b.astype(bool)
denom = a.sum() + b.sum()
return 1.0 if denom == 0 else 2.0 * (a & b).sum() / denom
rows = []
for gt_path in sorted(GT.glob("amos_*.nii.gz")):
case = gt_path.name.replace(".nii.gz", "")
pred_path = PRED / gt_path.name
if not pred_path.exists():
continue
gt = nib.load(str(gt_path)).get_fdata()
pred = nib.load(str(pred_path)).get_fdata()
rows.append({"case": case, "dice": dice(pred == gt, gt > 0)})
df = pd.DataFrame(rows)
df["amos_id"] = df["case"].str.replace("amos_", "").astype(int)
df["modality"] = df["amos_id"].map(lambda i: "CT" if i <= 500 else "MRI")
print(df.groupby("modality")["dice"].agg(["mean", "std", "count"]))
这段代码把每个病例当成一个样本算一个总体 Dice,够用来看趋势。要看逐器官的,需要把上式里的掩膜换成单类掩膜再循环一遍。
5.5 做 BTCV 与 AMOS 的类别对齐
这是把 AMOS 用进老管线时最必须做的一步。做法是定义一张中间编码表,两边都先映射到它,再比较。
#-- AMOS 15 类与 BTCV 13 类之间的唯一桥:中间编码
AMOS_TO_CANON = {
1: "spleen", 2: "kidney_right", 3: "kidney_left",
4: "gallbladder", 5: "esophagus", 6: "liver",
7: "stomach", 8: "aorta", 9: "ivc",
10: "pancreas", 11: "adrenal_right", 12: "adrenal_left",
13: "duodenum", 14: "bladder", 15: "prostate_or_uterus",
}
BTCV_TO_CANON = {
1: "spleen", 2: "kidney_right", 3: "kidney_left",
4: "gallbladder", 5: "esophagus", 6: "liver",
7: "stomach", 8: "aorta", 9: "ivc",
10: "portal_vein_and_splenic_vein",
11: "pancreas", 12: "adrenal_right", 13: "adrenal_left",
}
CANON_TO_ID = {name: i + 1 for i, name in enumerate(sorted(
set(AMOS_TO_CANON.values()) & set(BTCV_TO_CANON.values())))}
def remap(vol, table):
#-- 把原始标签体映射到中间整数编码,未列出的类一律归零
import numpy as np
out = np.zeros_like(vol, dtype=np.uint8)
for src, name in table.items():
if name in CANON_TO_ID:
out[vol == src] = CANON_TO_ID[name]
return out
跑完这段,两边的标签就落在同一套整数上了。注意 BTCV 的第十类是门静脉与脾静脉,AMOS 里没有这一类,所以它会被自动归零——这就是「对齐」的真实含义:不是让两边一样多,而是让两边相同的部分落在同一个编号上。
§5.5 的对齐表与 §4.2 的案例是同一件事的两面。案例里那个团队没写这张表,所以得到了错误的负迁移结论;这里写了这张表,同样的数据就能给出可解释的逐类对比。
5.6 用无标注扩展集做预训练
半监督是 AMOS 明确支持的使用方式,Zenodo 说明里就写了「提供无标注 CT 与 MRI 以支持半监督、无监督、域适应」。做法有两种。
一种是伪标签自训练:用在带标注部分训好的模型去推理无标注集,按置信度筛掉低分体素,把剩下的当作软标签再训一轮。这种做法的风险是错误会被放大,尤其是胰腺这类难器官。
另一种是自监督预训练:在无标注体上做重建或对比学习,得到一个初始化,再用六百例标注微调。这种做法的计算成本高,但对小样本场景更稳。
无论哪种,都要记住无标注集的标签是空的,不要在它的目录里误读 labels 文件——那些文件不存在,代码会直接抛异常。
§6 与库内条目的关系
6.1 关系图谱
AMOS 在这个库里的位置是「中量级、跨模态、许可最宽松」的那一格。它与几个近邻的关系值得说清楚。
与 BTCV 的关系最紧,也最容易误解。两者都是腹部 CT 多器官分割,都用了相似的大器官类别,但 BTCV 没有 MRI、没有膀胱与前列腺/子宫,类别数是十三而不是十五。把 AMOS 当成 BTCV 的超集是错的,正确说法是「有交集的另一套定义」。
与 CHAOS 的关系是互补。CHAOS 的样本很少,但它是配对设计,同一受试者既有 CT 又有 MRI,适合做严格意义上的跨模态对照。AMOS 的 CT 与 MRI 来自不同受试者,做的是「混合域训练」,不是「配对迁移」。想做配对实验,CHAOS 是唯一选择。
与 TotalSegmentator 的关系是粗细之别。后者覆盖一百多个结构,涵盖骨骼、肌肉、血管,适合做全身结构化报告;AMOS 只做十五个腹部器官,但在跨模态与跨厂商上做得更细。两者可以互补:用 TotalSegmentator 做初筛,用 AMOS 训的模型做腹部精修。
与 FLARE 的关系是规模与许可之别。FLARE 的 CT 量级是 AMOS 的四倍以上,但许可是申请制且有使用限制,AMOS 是即下即用的 CC BY 4.0。做商业原型时这个差别是决定性的。
与 KiTS 的关系是任务之别。KiTS 有肾脏肿瘤的分级标注,AMOS 只有器官掩膜。做肿瘤分割只能选前者。
6.2 检索路径
按需求找条目,可以走三条路。
第一条是从任务出发:腹部多器官分割 → AMOS、BTCV、TotalSegmentator、FLARE。四者按样本量与类别数排序,AMOS 在中间。
第二条是从模态出发:需要 CT 与 MRI 同框 → AMOS、CHAOS。前者样本多但不配对,后者配对但样本少。
第三条是从许可出发:要求可直接商用 → AMOS(CC BY 4.0)、TotalSegmentator(CC BY 4.0)。BTCV、CHAOS、FLARE 都需要申请,KiTS 是非商业许可。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
在给 AMOS 打分之前,要先校正一个常见的判断框架:把「基准的分数高低」当成「基准的质量高低」。
这两件事没有必然联系。一个基准如果所有方法都能刷到 0.95,说明它太简单,区分度低;如果所有方法都停在 0.6,说明它可能标注有问题,也可能任务本身超出当前能力。AMOS 属于后者里的中间态:大器官分数高,小器官分数低,跨模态再低一档。这个梯度是设计出来的,不是缺陷。
另一个容易发生的误判是把「官方披露少」等同于「数据质量差」。AMOS 的论文与页面确实没有详细写标注流程,但这与标注质量是两件事。评估时应该分开记:文档完备性是一个维度,标注可用性是另一个维度,两者不能互相替代。
下面五个维度的打分,采取的是「相对同类腹部分割资源」的口径,不是绝对分。
7.1 五维评分
| 维度 | 分数(满分 5) | 依据 |
|---|---|---|
| 规模 | 3.0 | 六百例,够做基线不够做预训练;无标注扩展集补了一部分 |
| 多样性 | 4.0 | 四厂商、两模态、多期相;中心数与种族覆盖偏弱 |
| 标注质量 | 3.5 | 十五类体素级齐全,但流程未公开,一致性只能间接推断 |
| 可接入性 | 4.5 | Zenodo 直链、NIfTI、nnU-Net 目录结构,接进门槛最低 |
| 许可清晰度 | 5.0 | CC BY 4.0 明文,可商用,无需注册 |
| 文档完备性 | 2.5 | 类别表与划分清楚,标注流程、基线分数披露不足 |
六个维度加起来是二十二点五分(满分三十)。这个分数的结构很有意思:接入与许可接近满分,规模与文档拖了后腿。这正好解释了它在社区里的使用模式——大量论文拿它当「跨模态验证集」,少量论文拿它当「主力训练集」。
7.2 它擅长与不擅长的问题
擅长的问题有三类。跨厂商的设备泛化:四家厂商均分,做分层评测时每档都有一百例以上。CT 与 MRI 的联合训练:一套类别规范,不用维护两套标签。方法的域适应对比:官方三份拆分本身就带了域差异。
不擅长的问题也有三类。规模驱动的结论:六百例训不出一个能单独撑起产品的模型。MRI 单模态的精细结论:训练侧只有四十例。病灶相关的一切:没有病灶标注。
7.3 已知的、可枚举的偏差
第一条是中心偏差。官方元数据的 Site 字段只有两个取值,CT 侧两家各占一半。所谓「多中心」在数量上是二,这意味着任何「跨中心泛化」的结论实际上只跨了两个点,方差很大。
第二条是人群偏差。年龄从十四到九十四,但没有一例十四岁以下的受试者;性别比约一点六比一,男性偏多。儿科腹部影像与孕产妇影像基本缺席。种族维度上,两家医院都在中国大陆,没有跨种族覆盖。
第三条是厂商偏差。CT 侧四家均分是优点,但型号层面并不均分:Aquilion ONE 与 SOMATOM Force 两个型号合起来占了四成以上,其余七个型号分剩下的六成。做型号级泛化分析时,样本会迅速变稀。
第四条是模态偏差。MRI 一百例里 Siemens 占六十四例,GE 与 Philips 分剩下的。也就是说 AMOS 的「跨模态」在 MRI 侧其实只跨了一个厂商的一种设备。
第五条是类别偏差。第十五类按性别切换,这在工程上制造了标签值到器官名的非单射映射。任何把标签值直接当器官名用的代码,都会在这一类上出错。
§4.2 的案例给出的判断方法在这里同样适用:先看掉点形状,再决定是改映射还是改模型。
第六条是期相偏差。官方说多期相,但元数据里没有期相字段,期相信息只能从图像强度分布间接推断。这意味着想做「按期相分层」的分析,得先自己标注一遍期相——这是一笔没人愿意付的成本。
7.4 外部验证矩阵
一个数据集的可信度,很大程度上取决于它被多少独立工作验证过。下表列出四类外部证据及其强度。
| 证据类型 | 表现 | 强度 | 说明 |
|---|---|---|---|
| 论文采用 | 跨模态分割、域适应、半监督方向的论文常把 AMOS 列为评测集 | 强 | 说明它被当作可信的对照口径 |
| 官方榜单 | 2022 年挑战赛有提交与排名 | 中 | 榜单只反映当年参赛,且测试集不公开 |
| 第三方复现 | 多个开源仓库提供 AMOS 上的 nnU-Net 基线 | 中 | 复现分数区间大致收敛 |
| 独立基准对比 | 有工作把 AMOS 与 BTCV、TotalSegmentator 合并做统一评测 | 中 | 合并过程本身暴露了类别不对齐的问题 |
| 临床验证 | 未见基于 AMOS 的前瞻性临床研究 | 弱 | 说明它定位是研究基准 |
这张表最重要的一行是最后一行。AMOS 被用作方法对比的依据,但没有被用作临床有效性的依据,这与它的设计目标一致。把它写进研究章节是合适的,写进临床验证章节是不合适的。
7.5 DAIMS 六维评估表
上面五维之外,再按 DAIMS 框架逐项过一遍。这个框架问的是「数据能不能被下游无摩擦地接住」,与上面的质量维度互补:质量问的是数据好不好,DAIMS 问的是好不好用。
| DAIMS 维度 | 本集表现 | 需人工补齐的动作 |
|---|---|---|
| 可发现 | 新官网、旧挑战赛页、Zenodo 三处都有入口,搜索引擎能直接命中 | 无 |
| 可获取 | Zenodo 开放许可直链,无需注册,压缩包一次拿全 | 无 |
| 可理解 | 类别清单与划分清楚,但标注流程与期相信息缺失 | 自己补一份期相推断表 |
| 可交互 | NIfTI 加 CSV,通用工具直接读,无私有格式 | 无 |
| 可复用 | CC BY 4.0 允许改写与商用,只要求署名与标明改动 | 记录改写动作 |
| 可持续 | Zenodo 由 CERN 托管,长期可用;但官方页面更新分散在三个域名 | 保存快照与下载日期 |
六项里有四项不需要额外动作,这在公开医学影像资源里属于偏高的一档。扣分集中在「可理解」与「可持续」:前者是因为文档只写到类别与规模,后者是因为入口分散在新旧两套站点上,五年后旧域名是否还在没有保证。
7.6 它为何能持续:因为它守住了「可免费直接下载的跨模态基准」这个空位
一个数据集能活多久,不取决于它发布时的分数多高,而取决于它是否占住了一个别人不愿占或占不了的位置。
AMOS 守住的位置很具体:在腹部多器官分割这个方向里,同时具备「CT 与 MRI 都有」「类别数适中,能覆盖主要器官」「许可允许商用」「不需要申请、不需要签协议、不需要等审批」这四个条件的公开资源,目前只有它。BTCV 要申请,CHAOS 要申请,FLARE 要签协议,KiTS 是非商业许可,TotalSegmentator 没有 MRI。这个组合不是偶然形成的,而是 2022 年那个时间点上,几家机构各自的选择留下的空隙。
它的可持续性还来自另一层:无标注扩展集。带标注部分只有六百例,无法支撑从零预训练,但官方同时放出了 CT 与 MRI 各千例量级的无标注数据。这让它可以被当作「预训练 + 微调」两段式流程的中间环节,而中间环节的生命周期通常比终点环节长。
风险也有。六百例的规模在 2022 年算中上,放到今天已经偏小;新出现的多中心聚合集在规模上会持续超过它;AMOS-MM 那条线(报告生成与视觉问答)正在吸走一部分注意力。但只要有团队需要一个「下载即用、许可干净、带 MRI」的对照集,它就会继续被引用。
§8 生态位与历史
8.1 从 2020 年的空隙到 2022 年的答案
2020 年前后,腹部多器官分割的公开资源形成了三个孤岛。BTCV 提供了标准的 CT 多器官标注,但只覆盖一个模态;CHAOS 提供了 CT 与 MRI 的配对,但只有四个器官;MSD 系列把任务拆成单器官,肝脏、脾脏、胰腺各自成集。这三类资源各自都很好用,但合起来仍然回答不了一个问题:模型在模态与设备同时变化时表现如何。
AMOS 的立项动机就写在这条缝里。论文摘要的第一句就说,缺乏来自多样临床场景的大规模基准,妨碍了对模型能力的全面评估。这句话里的关键词是 diverse,不是 large。
8.2 2022 年:挑战赛、论文、Zenodo 三线并行
2022 年是 AMOS 集中落地的一年。四月挑战赛页面开放,五月放出训练与验证集,七月截止提交,八月公布排名。同年六月 arXiv 挂出预印本,年末进入 NeurIPS 2022 的数据集与基准赛道,页码为 36722 至 36732。十月官方公告把训练集、验证集与无标注测试集整套放到 Zenodo。
这个节奏说明一件事:AMOS 从一开始就是按「基准赛」组织的,不是按「静态数据集」组织的。这也解释了为什么测试集标注始终不公开——它的评测模型是服务器端的,不是离线的。
8.3 2024 年之后:从分割走向理解
2024 年 6 月,官方在 MICCAI 上推出 AMOS-MM,带来报告生成与视觉问答两个新任务。2025 年 1 月,新官网把 AMOS22 与 AMOS-MM 并列。2025 年前后,AMOS-MM 的报告部分拆分被公布为训练一千二百八十七例、验证四百例、测试四百例 CT。
这条演进线的含义是:AMOS 正在从「分割基准」变成「腹部影像理解基准」的母体。分割子集成了基础设施,理解子集成了新的增长点。对使用者来说,这意味着引用时要写清是哪个子集、哪一年、哪个任务,否则会指错。
8.5 它在今天的生态位
用一句话概括:AMOS 是「跨模态对照集」这个位置上的默认选项,而不是「主力训练集」这个位置上的候选。
这两个位置的区别在实践里很明显。做主力训练集,需要几千例、多中心、类别齐全,TotalSegmentator 与 FLARE 更合适。做对照集,需要的是「域差异明显、许可干净、类别可控」,AMOS 恰好满足。
理解了这一点,很多使用上的困惑就消失了:为什么它只有六百例却常被引用?因为它被引用的是「对照」功能,不是「规模」。为什么很多论文只在验证阶段用它?因为验证阶段需要的是域差异,不是样本量。
§9 使用指引
9.1 三种角色的路径
算法研究者:从 Zenodo 拉 amos22.zip,先跑 nnU-Net 的 2d 配置建立基线,再做你关心的变量(网络结构、损失函数、域适应策略)。评测时务必按官方三份拆分,且把 CT 与 MRI 分开报,不要只报一个总数。
数据工程与标注管理者:重点看类别定义表与元数据字段。你的任务是判断这套标注规范能不能移植到本院。需要关注的三个点:第十五类的性别切换怎么处理、相邻器官的交界怎么定、小器官的标注颗粒度够不够。
临床 AI 产品团队:把它当成上线前的压力测试集,而不是训练集。做法是用本院数据训练,用 AMOS 做外部验证,看掉点集中在哪几个器官、哪一种设备。如果掉点集中,说明你的训练分布太窄;如果均匀掉,说明存在系统性差异,需要重新审视预处理。
9.2 一条最短的可用流程
从零到拿到第一个可比的分数,最短路径是下面这五步。每一步都有明确的产出物,出问题能定位到步。
#-- 第 1 步:下载并校验
wget -c "https://zenodo.org/records/7262581/files/amos22.zip"
wget -c "https://zenodo.org/api/records/7262581/files/labeled_data_meta_0000_0599.csv/content" -O meta.csv
unzip -q amos22.zip -d amos22
ls amos22/imagesTr | wc -l
#-- 第 2 步:重命名成 nnU-Net 单通道格式
python3.11 - <<'PY'
import re, pathlib, shutil
src = pathlib.Path("amos22/imagesTr")
dst = pathlib.Path("amos_raw/Dataset900_AMOS/imagesTr")
dst.mkdir(parents=True, exist_ok=True)
for p in src.glob("amos_*.nii.gz"):
new = re.sub(r"amos_(\d+)\.nii\.gz", r"amos_\1_0000.nii.gz", p.name)
shutil.copy(p, dst / new)
print(len(list(dst.glob("*.nii.gz"))))
PY
#-- 第 3 步:跑预处理与完整性校验
nnUNetv2_plan_and_preprocess -d 900 --verify_dataset_integrity
#-- 第 4 步:五折交叉训练(先跑第 0 折验证流程通不通)
nnUNetv2_train 900 3d_fullres 0
#-- 第 5 步:在验证集上推理并算指标
nnUNetv2_predict -i "$nnUNet_raw/Dataset900_AMOS/imagesVa" -o preds_va -d 900 -c 3d_fullres -f 0
这五步跑通之后,你手上就有一个可以在官方划分上复现的基线。接下来无论做什么改动,都有对照。
9.3 引用方式
正式引用用 NeurIPS 版本,因为数据集与基准赛道的论文有独立页码:
Ji, Y., Bai, H., Ge, C., Yang, J., Zhu, Y., Zhang, R., Li, Z., Zhang, L.,
Ma, W., Wan, X., Luo, P. (2022). AMOS: A Large-Scale Abdominal Multi-Organ
Benchmark for Versatile Medical Image Segmentation. Advances in Neural
Information Processing Systems, 35, 36722-36732.
如果只引数据集本体,用 Zenodo 的 DOI:10.5281/zenodo.7262581。如果用了无标注扩展集,要额外引对应的三个记录。
引用时容易漏掉的一句是许可。CC BY 4.0 要求署名并标明是否做了改动。如果你对标签做了重映射,写一句「labels remapped to a canonical scheme」是必要的,不是可选的。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 内容生成方式 | 本篇由 AI 辅助起草,结构与人名、URL、数字经人工核对官方来源 |
| 数字来源 | 官方 GitHub Pages 页面、Zenodo 记录元数据、arXiv 2206.08023 摘要 |
| 未核实项 | 标注人数与标注流程、官方基线具体分数、期相字段缺失的原因 |
| 数据处理 | 仅读取官方公开的病例元数据 CSV 做字段级核对,未下载完整影像包 |
| 判断性内容 | 五维评分、边界判断、误读清单中的「实际」列属编辑判断,非官方结论 |
| 时效性 | 核对日期 2026-10-26;AMOS-MM 的拆分与许可可能随官网更新 |
| 责任边界 | 本篇不构成临床使用建议,任何临床决策须经独立验证 |
| 纠错渠道 | 发现数字或表述错误,请通过千方医数集页面反馈 |
常见误读(避坑清单)
| 常见说法 | 实际 | 证据 |
|---|---|---|
| AMOS 就是更大的 BTCV | 类别数不同(十五对十三),且有 MRI;BTCV 无膀胱与前列腺/子宫两类 | 官方 15 类清单与 BTCV 13 类清单逐项比对 |
| AMOS 的 CT 与 MRI 是同一批病人的配对 | CT 与 MRI 来自不同受试者,编号段一到五百与五百零一起分 | 元数据每行只有一个 amos_id,无配对字段 |
| 六百例来自很多家医院 | 元数据 Site 字段只有 people 与 center 两个取值 | 病例元数据 CSV 的 Site 列计数 |
| CT 与 MRI 各占一半 | CT 五百例、MRI 一百例,比例为五比一 | Zenodo 记录说明与元数据编号段 |
| 四家厂商的数据量大致相等 | CT 侧接近均分,MRI 侧 Siemens 独占六成以上 | 元数据按模态分组统计厂商 |
| 测试集可以用来做论文报告 | 测试集图像公开、标注不公开,只能提交拿分 | 官方三份划分说明与提交入口 |
| 第十五类是前列腺 | 第十五类在男性为前列腺、女性为子宫,同一标签值两种语义 | 官方类别清单写法「前列腺/子宫」 |
| 下载需要注册账号 | Zenodo 记录为 open access,直链可取 | Zenodo 记录 7262581 元数据 |
| AMOS 有病灶或肿瘤标注 | 只有十五类器官掩膜,无病灶类 | 官方类别清单 |
| MRI 侧的结论和 CT 一样稳 | 训练侧 MRI 仅四十例,细分指标置信区间很宽 | 官方划分表 |
FAQ
Q1:AMOS 到底该念成「阿莫斯」还是逐字母拼?
两种读法在中文社区都有人用,官方没有规定。写论文时统一一种即可,首次出现给出全称。
Q2:六百例够训一个能用的模型吗?
nnU-Net 这类自配置方法在两百例训练数据上就能出可用的基线,六百例对它是够的。但要训一个大模型从零开始,肯定不够,得靠无标注扩展集或外部预训练。
Q3:为什么 MRI 只有一百例?
MRI 的采集与标注成本都高于 CT,且腹部 MRI 的运动伪影多、配准难,标注一致性问题更严重。官方选择「有覆盖但不多」而不是「勉强凑量」,这是权衡后的结果。
Q4:能在 AMOS 上做半监督吗?
可以,而且这是官方明确支持的使用方式。Zenodo 说明里列了三个无标注记录,覆盖 CT 与 MRI,专为半监督、自监督与域适应准备。
Q5:AMOS 与 AMOS-MM 是同一批数据吗?
不是。AMOS22 是六百例带分割标注的扫描,AMOS-MM 是两千余例带报告的 CT 加一万九千余条问答。两者的病例对应关系官方未公开,建议分别引用。
Q6:验证集和测试集的差别在哪?
验证集公开标注,可以本地评测;测试集只公开图像,评测在官方服务器端。挑战赛期间两者是不同的榜单,研究使用时多数人以验证集为准。
Q7:可以用 AMOS 训练后直接提交到 BTCV 榜单吗?
技术上可以,但必须先做类别重映射,且要在论文里说明重叠风险。BTCV 的评测方通常会检查训练数据来源,跨数据集训练需要主动披露。
Q8:AMOS 的标注是谁做的?
官方页面与论文摘要都没有披露标注团队规模、工具与复核流程。只能确认是体素级标注、十五类齐全。这一项属未核实。
Q9:为什么没有期相字段?
元数据只有采集日期、厂商、型号、中心,没有期相。想做期相分层,得从图像本身推断(比如看主动脉与肝实质的强化关系)。
Q10:AMOS 适合做基础模型的预训练吗?
带标注的六百例不够。无标注扩展集可以,但它的规模也就是千例量级,与动辄百万张切片的通用影像预训练相比仍小。
Q11:许可允许商用,是否意味着可以直接用在产品里?
许可是必要条件不是充分条件。CC BY 4.0 允许商业使用,但产品的合规还涉及医疗器械注册、数据来源合法性与伦理审查,这些与数据集许可无关。
Q12:如果官方数据更新了,已有的实验要不要重跑?
要。数据集一旦改版,哪怕只是类别定义微调,历史分数就不可比。建议在论文里写明使用的 Zenodo 记录号与下载日期。
术语表
| 术语 | 含义 |
|---|---|
| AMOS | A Large-Scale Abdominal Multi-Organ Benchmark,腹部多器官分割基准 |
| AMOS22 | AMOS 的分割子集,六百例带标注扫描 |
| AMOS-MM | AMOS 的多模态理解子集,含报告与视觉问答 |
| 体素级标注 | 逐个体素给出类别,而非包围盒或轮廓线 |
| 跨模态 | 同一模型同时处理 CT 与 MRI 两种成像方式 |
| 跨厂商 | 训练与测试样本来自不同厂商的扫描仪 |
| 域偏移 | 训练分布与测试分布不一致导致的性能下降 |
| Dice 系数 | 预测掩膜与真值掩膜的重叠度,零到一 |
| NSD | Normalized Surface Distance,归一化表面距离,衡量边界误差 |
| 配对设计 | 同一受试者同时有 CT 与 MRI,可直接做模态迁移对照 |
| 类别重映射 | 把一套标签值翻译到另一套编码体系的动作 |
| 中间编码 | 两套标签体系共同映射到的第三套标准编码 |
| 半监督 | 少量标注加大量无标注的训练方式 |
| 自监督 | 不用人工标签,从数据本身构造训练信号 |
| 域适应 | 让在源域训练的模型适应目标域的方法族 |
| nnU-Net | 自配置的医学图像分割框架,自动决定预处理与网络结构 |
| 测试集盲评 | 测试集标注不公开,只能通过服务器提交获得分数 |
| CC BY 4.0 | 知识共享署名许可,允许商用,要求署名并标明改动 |
| Apache-2.0 | 宽松开源许可,允许商用,含专利授权条款 |
| 期相 | CT 增强扫描的不同时相,如平扫、动脉期、门脉期 |
| 薄壁器官 | 胰腺、十二指肠、食管等壁薄或走向多变的器官 |
| 标签值 | 掩膜里的整数,代表所属类别 |
| 类别非单射 | 同一个标签值在不同条件下指不同器官的映射关系 |
| 回顾性导出 | 从已有临床影像归档中提取,而非专门采集 |
| 前瞻性采集 | 按研究设计新招募受试者的采集方式 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 带标注总例数 | 600 | 官方页面、论文摘要、Zenodo | 官方 |
| CT 例数 | 500 | 官方页面、论文摘要 | 官方 |
| MRI 例数 | 100 | 官方页面、论文摘要 | 官方 |
| 器官类别数 | 15 | 官方页面清单 | 官方 |
| 训练集 | 200 CT + 40 MRI | 官方任务页 | 官方 |
| 验证集 | 100 CT + 20 MRI | 官方任务页 | 官方 |
| 测试集 | 100 CT + 40 MRI | 官方任务页 | 官方 |
| 采集中心数 | 2 | 元数据 Site 列 | 派生 |
| 厂商数 | 4(加一个异写) | 元数据 Manufacturer 列 | 派生 |
| 机架型号数 | 9 | 元数据型号列 | 派生 |
| 年龄范围 | 14–94 岁 | 元数据年龄列 | 派生 |
| 性别比 | 男 369 / 女 231 | 元数据性别列 | 派生 |
| 采集年份 | 2020–2021 | 元数据采集日期列 | 派生 |
| 压缩包大小 | 约 24 GB | Zenodo 文件清单 | 官方 |
| 数据许可 | CC BY 4.0 | Zenodo 元数据 | 官方 |
| 代码许可 | Apache-2.0 | 官方 GitHub 仓库 | 官方 |
| 无标注 Part I | 900 例 CT | Zenodo 记录 7262757 | 官方 |
| 无标注 Part III | 1200 例 MRI | Zenodo 记录 7295816 | 官方 |
| 论文页码 | 36722–36732 | Zenodo 引用、NeurIPS 论文集 | 官方 |
附录 B:数字的来源分层
第一层:官方页面直陈。 六百例总量、CT 五百与 MRI 一百、十五个类别、三份拆分的人数、Zenodo 记录号与许可、无标注扩展集的三个记录号与量级。这些数字在官方页面或 Zenodo 元数据里能直接读到。
第二层:由官方元数据派生。 中心数为二、厂商数为四、型号数为九、年龄范围十四到九十四、性别比、采集年份集中在两年、CT 与 MRI 的厂商分布不均。这些不是官方结论,而是从 CSV 字段聚合出来的,方法写在正文里,任何人可以复算。
第三层:未核实。 标注团队规模与流程、官方基线的具体分数、期相字段缺失的原因、AMOS22 与 AMOS-MM 的病例重叠情况、第十五类按性别的实际标注一致性。这些在官方材料里没有披露,本篇也不做推测性填补。
分层的意思是让读者知道每句话的分量。看到第一层可以放心引用,看到第二层要注明是自己算的,看到第三层要么绕开、要么自己去做验证。
附录 C:完整参考文献
- Ji Y, Bai H, Ge C, Yang J, Zhu Y, Zhang R, Li Z, Zhang L, Ma W, Wan X, Luo P. AMOS: A Large-Scale Abdominal Multi-Organ Benchmark for Versatile Medical Image Segmentation. Advances in Neural Information Processing Systems 35: 36722–36732, 2022.
- Ji Y, Bai H, Yang J, Ge C, Zhu Y, Zhang R, Li Z, Zhang L, Ma W, Wan X, et al. AMOS: A Large-Scale Abdominal Multi-Organ Benchmark for Versatile Medical Image Segmentation. arXiv:2206.08023, 2022.
- Zenodo record 7262581. labeled data (500CT + 100MRI) for AMOS22. DOI 10.5281/zenodo.7262581.
- Zenodo record 7155725. AMOS dataset mirror. DOI 10.5281/zenodo.7155725.
- Zenodo record 7262757. unlabeled data Part I (900CT).
- Zenodo record 7295661. unlabeled data Part II (1000CT at time of writing).
- Zenodo record 7295816. unlabeled data Part III (1200MRI).
- AMOS 官方主页. era-ai-biomed.github.io/amos.
- AMOS 2022 挑战赛页面. amos22.grand-challenge.org.
- Isensee F, Jaeger PF, Kohl SAA, Petersen J, Maier-Hein KH. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods 18: 203–211, 2021.
- Landman BA, Xu Z, Igelsias JE, Styner M, Langerak TR, Klein A. MICCAI Multi-Atlas Labeling Beyond the Cranial Vault — Workshop and Challenge, 2015.
- Kavur AE, Gezer NS, Barış M, et al. CHAOS Challenge — Combined (CT-MR) Healthy Abdominal Organ Segmentation. Medical Image Analysis 69: 101950, 2021.
附录 D:按器官拆分的评测代码
nnU-Net 自带的 summary.json 只给总体指标,要做逐器官分析得自己积算。下面这段代码按十五类分别算 Dice,并把第十五类按性别拆开。
#-- 逐器官 Dice,第十五类按性别分开报
import json
import numpy as np
import pandas as pd
import nibabel as nib
from pathlib import Path
ORGAN = {
1: "spleen", 2: "kidney_right", 3: "kidney_left", 4: "gallbladder",
5: "esophagus", 6: "liver", 7: "stomach", 8: "aorta", 9: "ivc",
10: "pancreas", 11: "adrenal_right", 12: "adrenal_left",
13: "duodenum", 14: "bladder", 15: "prostate_or_uterus",
}
meta = pd.read_csv("meta.csv", dtype=str)
meta.columns = ["amos_id", "birth", "sex", "age", "model", "vendor", "date", "site"]
sex_of = dict(zip(meta["amos_id"].astype(int), meta["sex"]))
def dice(a, b):
a = a.astype(bool)
b = b.astype(bool)
s = a.sum() + b.sum()
return np.nan if s == 0 else 2.0 * (a & b).sum() / s
per_case = []
for gt_path in sorted(Path("amos22/labelsVa").glob("amos_*.nii.gz")):
pred_path = Path("preds_va") / gt_path.name
if not pred_path.exists():
continue
gid = int(gt_path.name.split("_")[1].split(".")[0])
gt = nib.load(str(gt_path)).get_fdata().astype(np.uint8)
pr = nib.load(str(pred_path)).get_fdata().astype(np.uint8)
row = {"amos_id": gid, "sex": sex_of.get(gid, "")}
for val, name in ORGAN.items():
if val == 15:
row["15_" + name] = dice(pr == 15, gt == 15)
else:
row[name] = dice(pr == val, gt == val)
per_case.append(row)
df = pd.DataFrame(per_case)
summary = df.drop(columns=["amos_id", "sex"]).mean().sort_values()
print(summary.to_string())
输出会是按 Dice 升序排的器官列表,肾上腺与胰腺通常在最后。如果某个大器官也排到了末尾,先查对齐而不是查模型。
附录 E:如果只记五件事
第一,AMOS 是六百例,CT 五百例、MRI 一百例,比例是五比一,不是一比一。
第二,十五个类别与 BTCV 的十三类不对应,迁移前必须写中间编码表,否则逐类 Dice 的对照表根本对不上。
第三,它的价值在「跨厂商 + 跨模态的对照」,不在规模。§4.2 的案例已经说明,把它当主力训练集替换掉旧数据,先出问题的往往是标签而不是模型。做主力训练集它偏小,做外部验证集它是首选。
第四,许可干净是它最大的工程优点。CC BY 4.0、Zenodo 直链、不用注册,这三点组合在同类资源里很少见。
第五,测试集标注不公开。任何声称在 AMOS 测试集上得到分数的工作,你都无法离线复现,只能信。
编辑说明
本篇的核对日期为 2026-10-26。核对方式:读取官方新主页与旧挑战赛页的 HTML,读取 Zenodo 记录 7262581 与 7155725 的 API 元数据,读取 arXiv 2206.08023 的摘要页,并下载官方的病例元数据 CSV 做字段级聚合。未下载完整影像包,未做逐例标注检查。
元数据 CSV 的聚合结果只用于确认中心的分布、厂商的分布与年龄分布,未做任何分布形态的推断或统计检验。文中所有比例如果需要精确到小数点,请回查 CSV 自行复算。
若干数字存在口径差:带标注总量在元数据里是六百行,其中有一行编号重复(五百号出现两次),实际唯一编号为五百九十九个;官方页面始终称六百例。本篇按官方口径写六百例,同时记录这一差异,不判断哪一方更对。
文中提到的 AMOS-MM 拆分数字来自官方任务页,核实日期与 AMOS22 相同。该子集仍在更新,引用前请回查官网。
六维评分为编辑判断,评分依据写在 §7.1 的依据列,不代表任何官方评价。误读清单中的「实际」列同样属编辑判断,证据列给出可复核的方法。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- medical-decathlon — 共享标签:医学影像 / CT / MRI / 医学图像分割
- amos — 共享标签:医学影像 / CT / MRI / 医学图像分割
- chaos — 共享标签:医学影像 / CT / MRI / 医学图像分割
- medsam2-dataset — 共享标签:医学影像 / CT / MRI / 医学图像分割
- qubiq — 共享标签:医学影像 / CT / MRI / 医学图像分割
- biomedparse — 共享标签:医学影像 / CT / MRI / 医学图像分割
- segthy — 共享标签:医学影像 / MRI / 医学图像分割
- continuousregistration — 共享标签:医学影像 / CT / MRI
- nih-pancreas-ct — 共享标签:医学影像 / CT / 医学图像分割
- abdomenct-1k — 共享标签:医学影像 / CT / 医学图像分割
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

