信息速览
乳腺超声是致密型乳腺里最常用的一线检查手段。它的短板不在成像本身,而在形态:手持探头贴着皮肤滑动,操作者每换一个角度就得到一张独立的二维图,检查结束时手里是一组切面,而不是一个可以按坐标检索的三维体。这种数据形态直接把「在整侧乳腺里找病灶」变成了「先由人手把乳腺扫一遍、再由人眼挑出可疑切面」,算法很难接进去。
自动乳腺超声(automated breast ultrasound,ABUS)换掉了这个约束。探头被固定在一条机械臂上,沿预设轨迹自动扫过整侧乳腺,一次采集重建出一个层间规则的三维体。扫查参数、体位、切面朝向都由机器决定,因此同一个人的两次扫查可以逐层比对,不同医院之间也有可能是同一套几何。代价是数据变成三维的,标注从「圈一个区域」变成「在几百层里勾一个体」,公开可用的成品因此长期稀缺。
TDSC-ABUS 2023 就是在这个缺口上建起来的第一个公开基准。它由哈尔滨工业大学与哈尔滨医科大学附属肿瘤医院联合组织,收录二百个由 GE Invenia ABUS 采集的三维体,每例带一份体素级肿瘤掩膜与一个良性或恶性的类别标签,按一百、三十、七十切分为训练、公开验证与封闭测试三部分。它在库内填补的是「乳腺超声三维」这一格,与钼靶、断层摄影、MRI 三条线并列而不是替代。一屏速览见下表。
| 项目 | 内容 |
|---|---|
| 官方名称 | Tumor Detection, Segmentation and Classification Challenge on Automated 3D Breast Ultrasound 2023 |
| 简称与 slug | TDSC-ABUS 2023 / tdsc-abus-2023 |
| 组织方 | 哈尔滨工业大学计算学部 与 哈尔滨医科大学附属肿瘤医院 |
| 赛事平台 | Grand Challenge(MICCAI 2023 卫星赛事) |
| 采集设备 | GE Invenia ABUS(自动乳腺超声) |
| 采集地 | 中国黑龙江省哈尔滨市 |
| 三维体总数 | 200 个 |
| 切分 | 训练 100 / 公开验证 30 / 封闭测试 70 |
| 类别 | 恶性 115、良性 85(全量) |
| 体尺寸 | 843×546×270 至 865×682×354 体素 |
| 体素间距 | 面内 0.200 mm 与 0.073 mm,层间约 0.475674 mm |
| 文件格式 | NRRD(gzip 压缩),掩膜取值 0 背景 / 1 肿瘤 |
| 空间标注 | 体素级掩膜为主,包围框由掩膜派生 |
| 主键 | 病例号,写在 labels.csv 中 |
| 获取方式 | 官方公告的百度网盘链接,提取码 TDSC,无需签署协议 |
| 赛事结局 | 2023-10 收官,共 7 队完成三项任务并有总榜 |
| 总榜首位 | 队伍 Deadluck(总榜第一);单项第一为 Shiontao 与 POA |
| 概况论文 | arXiv:2501.15588(2025) |
| 库内近邻 | emory-embed(1726)、breast-cancer-screening-dbt(1739)、ddsm(1444) |
§1 它是什么:一个把整侧乳腺装进一个文件的三维超声基准
§1.1 一句话定义
TDSC-ABUS 2023 是一份以「一次 ABUS 扫查重建出的三维体」为样本单位、以体素级肿瘤掩膜为空间标注、以良恶性二分类为标签的挑战赛数据集。它要回答的问题是:在几百层的三维超声体里,算法能不能同时做到把肿瘤的位置框出来、把边界勾准、把良恶性判对。
三件事名实相符才叫「三维数据集」:样本单位是体而不是图,空间标注占据一个体积而不是一张图上的轮廓,评测指标按三维体计算而不是逐层平均。这一份三条都满足。它的 Dice 与 HD 是在体素空间上算的,FROC 是在体级上按每例误报数计的,分类 ACC 与 AUC 是在病例级上算的。三套指标三种分母,读结果时必须分清。
它最容易被说错的地方是计数。二百是个真实的数字,但它计的是三维体。一个体里有二百七十到三百五十四层切片,一例就是几百张二维图;而患者数官方从未单列。把二百说成「二百人二百次检查」,或者反过来把它说成「二百张图」,都是错的,错的方向还不一样。
§1.2 为什么它不是一个普通的三维数据集
三维医学影像数据集并不少,CT 与 MRI 的公开集合动辄上千例。ABUS 的特殊性在于成像几何:它的层间距离约 0.475674 毫米,面内两个方向的像素间距却分别是 0.200 毫米与 0.073 毫米,三者相差最大近三倍。这不是一个「近似各向同性」的体,而是一个在一个方向上被拉长、在另一个方向上被压扁的体。
| 对照项 | CT / MRI 公开集合 | 本集合 |
|---|---|---|
| 体素几何 | 多为近各向同性(层厚 0.5–2 mm 对 0.5–1 mm) | 三轴间距 0.200 / 0.073 / 0.476 mm,严重不等 |
| 灰度含义 | 物理量(HU)或相对强度 | 回声强度,随增益、深度补偿、组织衰减漂移 |
| 噪声形态 | 相对平稳 | 斑点噪声,与结构同尺度,去噪会连带抹掉边界 |
| 器官形态 | 固定解剖结构包住病灶 | 腺体形态因人差异极大,无固定配准模板 |
| 标注难点 | 边界相对清晰 | 边界模糊,专家间一致性本身有限 |
这张表解释了为什么把 nnU-Net 这类在 CT 上开箱即用的框架直接搬到 ABUS 上,第一件事往往不是改网络而是重写预处理:重采样到各向同性会让体素数量暴涨,不重采样则卷积核在各方向上的物理感受野完全不同。
§1.3 三十秒决策卡
| 你的处境 | 这份数据能帮你什么 |
|---|---|
| 手上只有二维手持超声的流程,想验证它在三维上是否还成立 | 提供一个体素间距不均、边界模糊的真实三维体,用于迁移压力测试 |
| 想做三维小目标检测,需要体级 FROC 口径 | 官方已定义 FROC 与派生包围框,可直接对接 |
| 要研究良恶性分类在三维上的收益 | 有病例级标签与掩膜,可做「先定位再分类」或「掩膜引导分类」 |
| 想找乳腺筛查的患病率样本 | 给不了,这是诊断流程里的病例集,恶性占多数 |
| 要做跨设备泛化研究 | 给不了,只有单一厂商的单一型号 |
| 需要一个能在本地完全复现的排行榜 | 部分给不了,封闭测试集标注不公开 |
左列写的是处境,不是特性。比如「想做三维小目标检测」的处境,对应的是这份数据里肿瘤在整整一个体里占比很小这一事实——一个肿瘤即使直径两厘米,在 843×546×270 的网格里也只占几千个体素,正负样本比接近千分之一,检测头的正样本分配策略必须重做。
§1.4 不适合谁
如果需求是「找一批阴性的乳腺影像训练筛查排除模型」,这份数据给不了。它的二百例全部是已确诊病灶并完成 ABUS 扫查的病例,没有健康对照,也没有其它类型的异常。论文自己把「缺少其它异常与健康组织的代表性」写进了局限,这不是可以靠抽样补救的缺口,而是入选方式决定的。
如果需求是「确认自己的模型能否通过一次独立的外部验证」,这份数据也只给一半。它的公开验证集三十例没有标注,封闭测试集七十例的标注被主办方保留。能拿来做外部验证的只有训练集一百例,而训练集正是别人训练过的部分。
如果需求是「拿一份许可干净的数据进商业产品」,需要自己先解决授权问题。官方从未发布独立的数据使用许可文本,只有参赛协议与引用要求。公开可下载不等于可自由商用。
§1.5 它在乳腺影像数据谱系里的位置
乳腺影像的公开数据按模态分成几条几乎互不重叠的线。钼靶线最老、最大,代表是 DDSM 及其衍生集合,测的是钙化与肿块在投影图上的形态;断层摄影线把投影拆成薄层,代表是 BCS-DBT,样本单位从一张图变成一个重建体;MRI 线测的是增强动力学,代表是 QIN 乳腺 DCE-MRI 与 ACRIN 对侧乳腺 MRI;超声线长期只有手持二维集合,三维这一格基本空白。
| 模态 | 测的是什么 | 典型形态 | 样本单位 | 筛查链条中的位置 |
|---|---|---|---|---|
| 钼靶(DDSM) | X 线衰减的二维投影 | 一张或两张图 | 一次摆位 | 一线筛查,致密腺体易漏 |
| 断层摄影(BCS-DBT) | 有限角度重建的薄层 | 一个重建体 | 一次检查一个视角 | 一线筛查的升级,降低重叠 |
| MRI(QIN、ACRIN) | 造影剂强化动力学 | 一个四维序列 | 一次检查 | 高危人群补充筛查 |
| 手持超声 | 回声的二维切面 | 若干张图 | 一次检查若干切面 | 钼靶阳性或致密腺体的补充 |
| ABUS(本集合) | 回声的三维体 | 一个三维体 | 一次扫查一侧 | 致密腺体补充筛查的三维化 |
四行与第五行的差别不在器官,而在几何。前三行测的是衰减或强化,第四行测的是回声,第五行测的还是回声,但把「切面由人手选」换成了「体积由机器扫」。这一换,数据从一组无序的图变成了一个有坐标的三维体,才有了三维检测与分割的空间。
§1.6 一句话记住它
要三维乳腺超声找公开数据,先看它;要乳腺影像的规模,去别处;要筛查阴性样本,也去别处。
§2 数据构成与规格
§2.1 两级计数:三维体与切片
二百这个数字在官方页面上反复出现,但它的计量单位是三维体。要把规模说准,得同时给出两级:体级二百,切片级约六万。
| 计数层级 | 数值 | 来源 | 常见误用 |
|---|---|---|---|
| 三维体 | 200 | 官网 About 段与 Dataset 页 | 被当成患者数 |
| 切分:训练 | 100 | Dataset 页 | 被当成「训练病人数」 |
| 切分:公开验证 | 30 | Dataset 页 | 被当成可评估的验证集 |
| 切分:封闭测试 | 70 | Dataset 页 | 被当成赛后仍可拿到标注 |
| 单个体切片数 | 270–354 | 由体尺寸第三维推出 | 被当成固定层数 |
| 切片总量(估算) | 约 6 万 | 200 × 中位约 300 | 官方未给出,只能粗估 |
切片总量这个数字本页用「约六万」的写法而不是精确值,原因很简单:官方只给了体尺寸区间,没有给每例的层数清单,做精确求和必须下载全部文件逐个读头。规则不允许为此下载全量,所以给区间与量级,不给伪精确值。
§2.2 一个文件就是一个三维体
数据的组织形态极简。官方 Dataset 页写明,分享的文件夹里只有两样东西:一个 DATA 目录放全部图像文件,一个 MASK 目录放全部标注文件,外加一个 labels.csv。
#-- 官方分享包的顶层结构(Dataset 页原文描述)
<分享根目录>/
├── DATA/ # 全部 IMAGE 文件,每例一个 .nrrd
│ ├── <case_id>.nrrd
│ └── ...
├── MASK/ # 全部 ANNOTATION 文件,与 DATA 同名
│ ├── <case_id>.nrrd
│ └── ...
└── labels.csv # 每行一例:类别(B/M)与 DATA、MASK 路径
这个结构意味着三件事。其一,图像与掩膜按文件名同名配对,不需要额外的连接表,只要 labels.csv 里的路径对得上就能找到。其二,掩膜和图像一样是三维体,不是逐层图像集,读进来就是一个与图像同形状的整数数组。其三,类别只存在于 CSV 里,NRRD 文件本身不携带良恶性信息,脱离 CSV 单独拿文件会丢失标签。
§2.3 三张东西各管什么
官方描述里只有三样东西,每样承担一种信息。
| 组成 | 承载的信息 | 粒度 | 缺失会怎样 |
|---|---|---|---|
DATA/*.nrrd |
回声强度体 | 体素 | 无图像,任务无从谈起 |
MASK/*.nrrd |
肿瘤体素,0 背景 1 肿瘤 | 体素 | 分割与检测的真值全部失效 |
labels.csv |
良性 B / 恶性 M,以及两类文件路径 | 病例 | 分类任务失效,且检测无法按类别分层评估 |
第三样常被忽略,却是唯一的类别来源。一个常见的工作流错误是把文件名当作标签线索——官方用的是病例编号,编号与良恶性之间没有编码规律。
§2.4 一条记录逐行解剖
labels.csv 的每一行就是一份完整的数据说明。官方没有公布该文件的确切列名,但从挑战赛的通用写法与第三方加载器的实际读法可以还原出四层信息。
| 字段(语义) | 示例形态 | 作用 | 读错会怎样 |
|---|---|---|---|
| 病例号 | 与文件名主干一致的编号 | 主键 | 与文件脱钩后无法回溯 |
| 类别 | B 或 M |
分类真值 | 把 B 当 benign、M 当 malignant 读反,整张混淆矩阵翻转 |
| 图像路径 | 指向 DATA/ 下的文件 |
取图 | 相对路径基准弄错会批量 404 |
| 掩膜路径 | 指向 MASK/ 下的文件 |
取真值 | 同上,且失败是静默的(空掩膜) |
| 读法 | 结果 |
|---|---|
| 取类别字母 | B = benign(良性),M = malignant(恶性) |
| 类别计数(全量) | 恶性 115、良性 85 |
| 类别计数(训练) | 恶性 58、良性 42 |
| 类别计数(公开验证) | 恶性 17、良性 13 |
| 类别计数(封闭测试) | 恶性 40、良性 30 |
三段的良性恶性比例几乎一致,这正是官方所说的「分层抽样,以贴近真实患病比例」的含义。它的机制是把切分做成在三类子集上都保持同一个类别比例,而不是随机切。
§2.5 目录形态与命名
赛后公开的分享包与赛期的分发形态不完全一样。赛期是按申请制把训练集与验证集分别发给参赛者,测试集则通过 Docker 挂载只读目录进入容器——最终结果页给出的运行命令里,输入挂载点是 Test/DATA。赛后公开包把三段合在一起,用同一套 DATA / MASK 结构给出。
#-- 校验分享包完整性的最小检查:每例都应有一图一掩膜
for f in DATA/*.nrrd; do
b=$(basename "$f" .nrrd)
[ -f "MASK/$b.nrrd" ] || echo "MISSING MASK: $b"
done
#-- 行数与三维体数应一致(208 是不存在的,200 才对)
python3 -c "import csv;print(sum(1 for _ in csv.DictReader(open('labels.csv'))))"
第一段检查的是配对完整性,第二段检查的是行数。两段都不需要读像素,几十秒就能跑完,是拿到数据后应该做的第一件事。
§2.6 与同类库的规格差异
把本集合放进三维医学影像的坐标系里,它的规模属于「小而深」那一类:体数不多,但每一例的标注深度是体素级。
| 库 | 模态 | 样本单位 | 规模 | 空间标注 | 类别 |
|---|---|---|---|---|---|
| 本集合 | ABUS | 三维体 | 200 体 | 体素掩膜 | 良性 / 恶性 |
| BCS-DBT | DBT | 重建体 | 22,032 体 | 单层矩形框 | 四级分组 |
| DDSM 系 | 钼靶 | 图 | 万级图 | 掩膜或轮廓 | BI-RADS 相关 |
| QIN 乳腺 DCE-MRI | MRI | 四维序列 | 十例级 | 病灶 ROI | 治疗反应 |
| AMOS 腹部 | CT/MRI | 三维体 | 千级 | 体素掩膜 | 多器官 |
一个粗略但有用的判断规则:要体素级真值做分割,本集合与 AMOS 是同一类;要数量做筛查建模,BCS-DBT 与 DDSM 系是另一类;要纵向与治疗结局,MRI 系才是。
§2.7 切分口径:一百、三十、七十
三个子集的规模不是随意定的,官方在 Dataset 页给了解释:训练集取较大数量以保证模型稳健;公开验证集取较小数量,既让参赛者验证评测代码、保证公平,又避免过多暴露测试集的分布;封闭测试集取较大数量,用于公平的最终排名。
| 子集 | 体数 | 标注可得性 | 赛期用途 | 赛后用途 |
|---|---|---|---|---|
| 训练 | 100 | 图像加掩膜加标签 | 训练 | 训练与本地验证 |
| 公开验证 | 30 | 图像(标签在 CSV 中可见,掩膜赛期是否给出未在 Dataset 页明示) | 调试评测代码 | 小样本调参 |
| 封闭测试 | 70 | 仅主办方持有 | Docker 提交排名 | 无标注,仅能跑推理 |
这张表最关键的一行是第三行。赛后公开包是否把测试集的掩膜一并放出,官方公告只说「数据已公开可用」,Dataset 页则明确「封闭测试」,两者在此处存在措辞张力。稳妥的读法是:按封闭处理,能用的是训练与验证两段;若实际拿到了测试掩膜,也只应把它当额外数据,不要用它反推榜单意义。
§2.8 一次扫查怎么变成一个文件
理解 ABUS 的几何,要先理解扫查动作。探头被压在一侧乳腺上,沿一个方向线性扫过,扫完得到一个长方体状的成像区,但乳腺本身是半个球。于是每个体里必然有一大块是无效区域:贴皮肤的表面回波、探头与皮肤之间的耦合层、以及成像区边缘超出乳腺轮廓的部分。
| 体内部位 | 影像特征 | 对标注的影响 |
|---|---|---|
| 皮肤与近场 | 强回声带,约数毫米 | 无病灶,不应计入真值 |
| 腺体区 | 强弱相间的层状或片状结构 | 病灶的主要发生区 |
| 脂肪区 | 低回声、均匀 | 对比度低,小病灶易漏 |
| 胸大肌与深部 | 强回声条带 | 深部边界参照 |
| 成像区外 | 黑或噪声 | 应被掩膜裁掉 |
这个结构解释了一个常见现象:在体级指标上表现不错的模型,逐层可视化时会在近场强回声带里画出大量假阳性。原因不在模型,而在近场区域根本没有肿瘤可标,却被当成普通体素喂了进去。
§3 样本层:体、患者与切片是三个口径
§3.1 为什么这一层要单独拎出来
做三维医学影像的人拿到一份数据,第一个动作是数规模。数错的地方几乎总在这里:体、患者、检查、切片四个口径混着用。本集合的官方文本只给了一个口径——三维体。这一节把四个口径的边界摆清楚,让后面的所有数字都有落点。
§3.2 患者数为什么不能推
二百个三维体中,有多少来自同一名患者的左乳与右乳,官方没有说明。ABUS 通常一侧乳腺一次扫查,双侧检查会产生两个体;同一个人也可能在不同时间被扫查多次。这两种情况都会让患者数小于体数。反过来,一个体对应多个患者是不可能的,所以患者数至多是二百。
| 口径 | 可确证的数值 | 可说的话 | 不可说的话 |
|---|---|---|---|
| 三维体 | 200 | 「二百个三维体」 | — |
| 患者 | 未知,≤ 200 | 「官方未单列」 | 「二百名患者」 |
| 检查 | 未知 | — | 「二百次检查」 |
| 切片 | 约 6 万(估算) | 「每个体约三百层」 | 「六万张图」当独立样本 |
四行里只有第一行能写成确定陈述。这是一个刻意的克制:宁可少说,不让一个没有来源的数字在后续文献里被反复引用成既定事实。
§3.3 一例在三维里有多小
肿瘤在整侧乳腺里是小目标。用官方给的体尺寸与公开报道的肿瘤体积区间可以估出比例:一个体积约一百多立方厘米的肿瘤,在 843×546×270 的网格里折算下来只占很小的一个角。多数报道的肿瘤体积在四立方厘米到数千立方厘米之间,跨越三个数量级。
| 量级 | 含义 | 对算法的影响 |
|---|---|---|
| 数立方厘米 | 小结节,可能只跨几十层中的十几层 | 极易被下采样抹掉 |
| 数十到数百立方厘米 | 中等肿块 | 常规 3D U-Net 可覆盖 |
| 数千立方厘米 | 大肿块,可能占据整个象限 | 需要大感受野或全局注意力 |
这种数量级的跨度意味着一件事:单一尺度的检测头很难同时覆盖两端。挑战赛的检测指标用 FROC 而不是 mAP,部分原因就在这里——在极不平衡的正负样本比下,按每例误报数计的敏感度曲线比单一的 IoU 阈值更能反映临床可用的程度。
§3.4 良性与恶性的比例说明了什么
全量恶性一百一十五例、良性八十五例,恶性约占五成八。这个比例在诊断病例集里是正常的:进了 ABUS 扫查流程的人,多数已因钼靶或体检发现异常,属于「可疑」人群,恶性富集是流程的自然结果。
它不能被反过来读成患病率。筛查人群里癌症的检出率通常在千分之几的量级,与这里的五成八相差两个数量级。任何用这份数据训练出的分类器,其输出概率的绝对值都不能直接用于筛查场景——它学到的是「在有病灶的人里区分良恶性」,不是「在所有人里找出病人」。
§3.5 分层切分保住了什么,保不住什么
分层抽样保住了三个子集之间的类别比例一致,这对比较不同方法的 ACC 是必要的:如果训练集里恶性占六成、测试集里占四成,一个总是预测恶性的基线在测试集上的表现会跳变。官方把比例拉平,至少消除了这个干扰。
它保不住的是难度分布。良恶性容易区分的那部分,与边界模糊、体积微小、贴近胸壁的那部分,在三个子集里的占比是否一致,官方没有分层控制。所以测试集上的绝对分数高低,仍然有相当一部分来自抽样运气。
§4 标注层:掩膜为主,框是派生的
§4.1 标注的三种形态与它们的优先级
这份数据被三个任务共用:检测、分割、分类。三个任务需要三种形态的真值,但官方只独立标注了一种。
| 任务 | 需要的真值形态 | 本集合的实际来源 | 是否独立标注 |
|---|---|---|---|
| 分割 | 体素级掩膜 | 医师标注的掩膜本身 | 是 |
| 分类 | 病例级类别 | labels.csv 中的 B / M |
是 |
| 检测 | 三维包围框 | 从掩膜取外接长方体 | 否,派生 |
表的第三行是本集合最需要说清的一处。论文原话是「从这些分割边界派生出肿瘤包围框」。这意味着框的精度上限就是掩膜的精度:掩膜若在某层少勾了一块,框在那个方向上就短一截;掩膜若勾进了一点周围组织,框就大一圈。把误报归因于「框标得不准」时,实际追责对象应当回到掩膜。
§4.2 掩膜的取值与几何
掩膜是单通道整数体,取值只有 0 与 1。0 是背景,1 是肿瘤,没有「可疑区」或「多类肿瘤」的中间态。这意味着任何「不确定区」的标注需求都无法在这份数据里满足:良性、恶性在空间上是同一种标记,类别只在病例层面区分。
| 属性 | 取值 | 说明 |
|---|---|---|
| 数据类型 | 整数 | 多为 uint8,足够表示 0/1 |
| 类别数 | 2 | 背景与肿瘤 |
| 是否多病灶 | 官方未说明 | 若一例多个病灶,掩膜中会同时为 1 |
| 与图像对齐 | 同尺寸、同方向 | 由同一套重建流程产生 |
| 边界精度 | 医师手工勾画 | 三维超声边界本身模糊 |
第四行需要单独强调:掩膜与图像同形状同方向,但 NRRD 头里的方向约定必须以文件头为准,不能假定。三维体在不同厂商的约定下可能出现轴序互换,一旦互换,掩膜与图像仍「同形状」,却已经错位。
§4.3 包围框是从掩膜取的,不是二次勾的
检测任务的框由外接长方体派生,做法是找掩膜中值为 1 的体素的三个轴上的最小与最大索引,构成一个 (x0, y0, z0)–(x1, y1, z1) 的区间。这个做法有两条直接后果。
| 后果 | 表现 | 使用时的处理 |
|---|---|---|
| 框紧贴掩膜 | 比人工画的检测框更紧 | 评估自己的框时,IoU 阈值需按此校准 |
| 对边界噪声敏感 | 掩膜边缘一个小突起就撑大框 | 派生前可做形态学开运算 |
| 多病灶时合成一个框 | 两个分离病灶的外接框会合并 | 若做多目标检测,须按连通域拆分 |
第二行在官方代码里没有做处理,第三行也没有。这两条是使用者要自己补的工程动作,不是数据的缺陷,但不知道就会踩。
§4.4 标注是怎么来的
官方 Dataset 页的说法是:一名有经验的放射科医师标注并检查数据。概况论文给了更完整的流程:十名五年以上临床经验的专家分成两组,每组五人,用 Seg3D 软件标注,并做交叉复核。
| 来源 | 表述 | 差异 |
|---|---|---|
| Dataset 页 | 一名有经验的放射科医师标注并检查 | 单人负责 |
| 概况论文 | 十名专家分两组、Seg3D、交叉复核 | 多人多轮 |
两处说法可以并存:Dataset 页描述的是每例的标注责任人,论文描述的是整体质控流程。但它们不构成「两名医师独立双标并给出一致性统计」那种严格意义上的标注一致性证据。任何关于「这份掩膜有多可信」的问题,官方材料里没有可引用的数字。
§4.5 类别标签的语义边界
B 与 M 是两个字母,背后的语义边界比字母复杂。
| 字母 | 中文 | 病理依据 | 是否等价于 BI-RADS |
|---|---|---|---|
| B | 良性 | 病例最终判定为良性 | 否,BI-RADS 是影像印象,不是病理结论 |
| M | 恶性 | 病例最终判定为恶性 | 否,同上 |
两者都是二值判断,没有「交界性」「可疑」这类中间态。这意味着这份数据无法训练一个输出 BI-RADS 分级的模型,也无法直接对标以 BI-RADS 3/4 为切点的临床工作流。把 B/M 当成 BI-RADS 两端的近似,是常见的越界。
§4.6 案例:二百这个数字在三种口径下的三种错法
这是一个被反复误用的数字,值得拆开看。官方文本里它只出现为「200 3D volumes」。
| 说法 | 错在哪 | 正确表述 | 后果 |
|---|---|---|---|
| 二百名患者 | 患者数官方未单列,且可能少于体数 | 二百个三维体 | 论文方法学部分被审稿人质疑 |
| 二百次检查 | 双侧扫查会一对二 | 二百个三维体 | 数据来源描述失真 |
| 六万张超声图 | 切片不是独立样本,相邻层高度相关 | 二百个约三百层的体 | 样本量被夸大两个数量级 |
| 六万例 | 把切片当病例 | 二百个三维体 | 最严重,等于错报三百倍 |
第四行不是假想的。三维数据集在二手引用里被「层数相乘」的情况相当常见,尤其当一个体被导出成 PNG 序列后,文件数会从二百变成几万,数文件的人很容易顺口说出几万例。这个错误的传播路径很典型:先有导出,再有数文件,最后有位论文作者照着写了分母。
§4.7 掩膜的可视化核验
拿到一例之后,最省时的核验是把它渲染成三个正交切面并叠加掩膜。
#-- 读一例 NRRD,打印几何并以肿瘤质心所在层做三视图检查
import nrrd
import numpy as np
img, hdr_i = nrrd.read("DATA/<case_id>.nrrd")
msk, hdr_m = nrrd.read("MASK/<case_id>.nrrd")
print("image shape:", img.shape, "spacing:", hdr_i.get("spacings"))
print("mask shape:", msk.shape, "labels:", np.unique(msk))
assert img.shape == msk.shape, "图像与掩膜形状不一致,先查方向约定"
zs, ys, xs = np.nonzero(msk)
cz, cy, cx = int(zs.mean()), int(ys.mean()), int(xs.mean())
print("tumor voxels:", zs.size, "centroid:", (cz, cy, cx))
第三行打印的是 spacings,这是本数据集最容易被忽略的一行输出:三个数不相等,后面所有几何计算都要带上它。第五行的断言能在批量处理前拦下形状错配,第七行给的质心可直接用于三视图中定位病灶所在的层。
§5 获取层:从网盘到可训练张量
§5.1 三条获取路径
这份数据没有 DOI,没有 TCIA 式集合页,也没有对象存储的直链。可用的路径只有一条主线加两条旁路。
| 路径 | 形态 | 是否需要申请 | 适合谁 |
|---|---|---|---|
| 百度网盘分享 | 官方公告给出的链接加提取码 | 否 | 所有人,首选 |
| 赛期邮件分发 | 训练集与验证集分批发给参赛队 | 是(已结束) | 已参赛团队,有历史副本 |
| 第三方镜像封装 | 若干 Python 包或研究仓库的自动下载 | 视实现 | 想省去解压与目录整理的工程使用者 |
第二条路径在赛事结束后不再开放,但赛期拿到数据的团队手里有副本,这部分在过去两年里向外扩散,构成了事实上的一批二手分发源。使用二手副本时无法确认是否与官方公开包逐字节一致,涉及需要复现的结论时应回到第一条路径。
§5.2 许可:没有文本,不等于没有边界
这是本集合最需要谨慎的一处。官方在 Dataset 页与首页公告里都只写了三件事:数据已公开可用、给出网盘链接、使用须引用概况论文。没有任何一处写出许可名称(如 CC BY 4.0),也没有数据使用协议正文可在线查阅。
| 问题 | 官方材料中的答案 | 可推断的边界 |
|---|---|---|
| 许可类型 | 未命名 | 不能声称是 CC 某版本 |
| 是否可商用 | 未说明 | 不能默认可商用 |
| 是否需署名 | 是,须引用 | 引用格式已给出 |
| 是否需签署协议 | 赛后公开包未要求 | 赛期曾要求签署参赛协议 |
| 是否允许再分发 | 未说明 | 二手分发存在但无授权依据 |
前两行是最关键的。资料页上若出现「CC BY 4.0」这类标注,多是把概况论文的 arXiv 许可误当成了数据许可——arXiv 预印本的 CC BY 4.0 覆盖的是那篇论文,不覆盖它描述的数据集。这两件事必须分开说。
§5.3 下载与解压
百度网盘在本环境不可达,无法给出带校验的直链。可行的是把操作写成对本地已下载文件的处理脚本,读者自行完成下载那一步。
#-- 解压后的第一轮体检:文件数、体积、命名规整性
ls DATA/*.nrrd | wc -l
ls MASK/*.nrrd | wc -l
du -sh DATA MASK
#-- 检查是否存在非 .nrrd 的杂项(如 macOS 资源文件)
find DATA MASK -type f ! -name "*.nrrd"
第二行的两个数字应当相等。第三行给出的体积在官方材料里没有对照值,只能作为磁盘规划依据。第四行在 macOS 上尤其实用,._xxx.nrrd 这类文件会让配对脚本误判。
§5.4 读取与几何换算
NRRD 的读取只需要一个库。真正要小心的是间距与方向。
#-- 从 NRRD 头取出物理几何,并把掩膜体积换算成立方厘米
import nrrd
import numpy as np
img, hdr = nrrd.read("DATA/<case_id>.nrrd")
msk, _ = nrrd.read("MASK/<case_id>.nrrd")
sp = np.array(hdr["spacings"], dtype=float) # 三个方向不等
voxel_mm3 = float(np.prod(sp)) # 单个体素的物理体积
tumor_mm3 = float(msk.sum()) * voxel_mm3
print("spacings(mm):", sp, "voxel_mm3:", round(voxel_mm3, 6))
print("tumor volume (cm3):", round(tumor_mm3 / 1000.0, 3))
#-- 若头里给出了空间方向矩阵,一并打印,避免轴序互换
print("space directions:", hdr.get("space directions"))
第三行是本段的核心。三个间距相乘得到单个体素的物理体积,这个数在 mm³ 量级,非常小,乘以肿瘤体素计数才得到临床可比的大小。第五行打印的方向矩阵是防止轴序互换的最后一道保险,缺失时应以图像内容(近场强回声带的位置)反推方向。
§5.5 把标签并进来
类别在 CSV 里,图像与掩膜在目录里,三者要合并成一张样本表。
#-- 构建样本表:病例号、类别、两条路径,并核对三类计数
import csv
from pathlib import Path
root = Path(".")
rows, miss = [], 0
with open("labels.csv", newline="") as f:
for r in csv.DictReader(f):
img_p = root / r["image_path"]
msk_p = root / r["mask_path"]
if not (img_p.exists() and msk_p.exists()):
miss += 1
rows.append((r["case_id"], r["label"], str(img_p), str(msk_p)))
print("rows:", len(rows), "missing pairs:", miss)
mal = sum(1 for _, lab, *_ in rows if lab.strip().upper() == "M")
print("malignant:", mal, "benign:", len(rows) - mal)
最后两行是本段的校验点:全量应是恶性一百一十五、良性八十五。若数字对不上,多半是 CSV 有多段表头或存在重复行,而不是数据本身有问题。
§5.6 存储与显存预算
一个体是 843×546×270 到 865×682×354 的整数数组。以 uint8 计,单个体约 124 MB 到 209 MB;掩膜同为 uint8,大小相同。一百个训练体在不压缩的情况下约 12 GB 到 21 GB,这还不含标注与中间缓存。
| 操作 | 是否推荐 | 理由 |
|---|---|---|
| 全量读入内存 | 否 | 一百个体轻松超过 16 GB |
| 按需读取单个体 | 是 | 训练时按样本流式加载 |
| 预转 npy 并内存映射 | 是 | 跳过 gzip 解压,随机访问快 |
| 全局重采样到 1 mm 各向同性 | 视任务 | 体素数会涨数倍,需先算显存 |
| 中心裁剪到 256³ | 视任务 | 会截掉大肿块,须按掩膜存在性判断 |
第四行是三维超声绕不开的取舍。三轴间距差近三倍,重采样到各向同性是几何上正确的做法,但 0.073 毫米方向上的信息在重采样后大量冗余,体素数会显著增加。折中的做法是把体素间距先统一到一个中间值(如 0.3–0.5 毫米),再按任务裁剪。
§5.7 批量预处理的最小管线
把上面几段串起来,一个可用的预处理管线长这样:读头取间距、按掩膜存在性裁 ROI、可选重采样、保存为 npy 并内存映射。管线的每一步都应记录参数,因为本集合的体尺寸不一致,任何「固定尺寸」的假设都会在某几例上失效。
#-- 单例预处理:按掩膜外扩边距裁 ROI,并记录几何参数
import json
import nrrd
import numpy as np
def crop_by_mask(img, msk, margin=16):
idx = np.nonzero(msk)
lo = np.maximum([a.min() for a in idx] - margin, 0)
hi = np.minimum([a.max() for a in idx] + margin + 1, msk.shape)
sl = tuple(slice(l, h) for l, h in zip(lo, hi))
return img[sl], msk[sl], lo
img, hdr = nrrd.read("DATA/<case_id>.nrrd")
msk, _ = nrrd.read("MASK/<case_id>.nrrd")
ci, cm, off = crop_by_mask(img, msk)
meta = {"orig_shape": img.shape, "crop_shape": ci.shape, "offset": off.tolist(),
"spacings": hdr["spacings"]}
print(json.dumps(meta))
最后一行输出的偏移量必须存下来。检测任务的预测框是裁剪坐标系下的,评估时若忘了加回偏移,与小目标相关的所有指标都会崩掉——而这类错误的特征是「指标很低但代码不报错」。
§6 与库内条目的关系
§6.1 关系图谱
库内乳腺方向已有四条线:钼靶(DDSM)、断层摄影(BCS-DBT)、MRI(QIN 乳腺 DCE-MRI 与 ACRIN 对侧乳腺 MRI)、以及人口学与大样本钼靶(EMORY-EMBED)。超声方向只有一份肝脏的 B 型与造影集合。此时补上 TDSC-ABUS 2023,乳腺方向在模态上才第一次齐了四类。
| 库内条目 | 模态 | 与本集合的关系 | 迁移的可能 |
|---|---|---|---|
| emory-embed | 钼靶 | 同一器官、不同物理量 | 低,衰减与回声不可迁移 |
| breast-cancer-screening-dbt | 断层摄影 | 同为三维体、同做病灶检测 | 中,检测头可借,预处理不可 |
| ddsm | 钼靶 | 老归档,标注形态相近 | 低,二维与三维 |
| b-mode-and-ceus-liver | 超声 | 同为超声,不同器官 | 中高,斑点噪声与回声语义可迁移 |
| qin-breast-dce-mri | MRI | 同器官,测强化 | 低,纵向与治疗反应不同 |
| acrin-contralateral-breast-mr | MRI | 同器官,测对侧风险 | 低 |
| amos-abdominal | CT/MRI 分割 | 同为体素级多器官分割范式 | 中,分割框架与评测代码可借 |
排序的依据是「可复用的到底是什么」。与最接近的 BCS-DBT 相比,能借的是三维检测与体级 FROC 的评估口径,不能借的是层厚、方向、灰度含义。与肝脏超声相比,能借的是斑点噪声抑制与回声强度归一化的经验,不能借的是解剖先验。
§6.2 检索路径
从任务出发找数据,比从模态出发更容易命中。
| 你的任务 | 先看哪条 | 备选 |
|---|---|---|
| 三维乳腺病灶分割 | TDSC-ABUS 2023 | AMOS 练框架,再迁过来 |
| 三维乳腺病灶检测与 FROC | TDSC-ABUS 2023 | BCS-DBT 看体级检测的另一种口径 |
| 乳腺筛查的大样本统计 | BCS-DBT、DDSM 系 | 本集合不适合 |
| 乳腺 MRI 的纵向变化 | QIN 乳腺 DCE-MRI | ACRIN 对侧乳腺 |
| 超声斑点噪声与强度归一化 | 肝脏 B 型与造影集合 | TDSC-ABUS 2023 做跨器官验证 |
第二行的顺序有讲究:先在 AMOS 这类边界相对清晰的分割集上把框架跑通,再换到 ABUS 上去处理几何与噪声问题。反过来做,会把框架问题与数据问题混在一起排查。
§6.3 三条互链的判断规则
要三维超声的体素真值,用本集合;要筛查人群的患病率结构,用断层摄影或钼靶的大样本集合;要跨器官验证超声预处理,用肝脏超声集。三条各自不可替代,混用会同时损失两边的优势。
§7 质量评估与局限性
§7.0 前置认知校正:它不是筛查数据集,是诊断病例集
在打分之前要拆掉一个框架错位。用筛查数据的标准来看它,会得出「只有二百例、没有阴性、恶性占多数、无法估计患病率」的结论——这些描述都对,但评价的对象错了。
ABUS 在临床上的位置是「致密型乳腺的补充检查」,进这个流程的人已经因为钼靶或其他检查被判定为需要进一步评估。所以它的自然构成就是「几乎人人有病灶,其中一部分是恶性」。官方的分层抽样保住了这个构成,而不是去造一个平衡的教学集。
由此推出两条纪律。其一,不要用它的类别比例做任何流行病学推断。其二,不要要求它提供健康对照——补上对照组会把它从「诊断病例集」改成别的东西,而那件事应当由筛查数据集来做。
§7.1 DAIMS 评分
下表按八个维度打分,每项满分五分,依据全部来自官方公开材料。
| 维度 | 得分 | 依据 |
|---|---|---|
| 描述层身份与边界 | 3 | 有挑战赛名称、组织方、设备型号、采集地;无 DOI、无独立许可文本、患者数未单列 |
| 描述层文档完备度 | 3 | 体尺寸、间距、掩膜取值、切分方式写明;文件命名字段、每例层数、是否多病灶未成表 |
| 结构层标识体系 | 4 | 病例号作主键,图与掩膜同名配对,CSV 连接;缺少显式的患者标识层 |
| 结构层层级一致性 | 4 | 三段之和等于全量,类别三段比例一致;患者层缺失使层级不闭合 |
| 结构层模态配对 | 5 | 一例一图一掩膜,无多模态对齐问题 |
| 访问层开放程度 | 4 | 无需申请即可下载,但载体是网盘、无直链、无校验值 |
| 访问层可复现性 | 3 | 有官方切分与官方评估代码,但封闭测试集标注不可得,榜单成绩只能部分复现 |
| 访问层许可清晰度 | 1 | 无许可文本,只有引用要求;商用与再分发均无依据 |
八项平均三点四。扣分最重的是许可清晰度,只有一分,这不是文档疏漏,而是「公开可下载」与「有明确授权」之间的实质差距。其次是身份与文档两项的三分:三维数据集的文档成本远高于二维,体尺寸与层数的清单本应随数据一起发,官方选择了只给区间。
§7.2 已知局限逐条
封闭测试集不可得。 七十例的标注归主办方所有。这意味着任何声称「在 TDSC-ABUS 测试集上达到某分数」的工作,第三方都无法逐例复核,只能相信提交记录。做基准比较时,应当明确区分「在公开验证三十例上」与「在官方测试七十例上」两种口径。
单中心单设备。 全部数据来自一家医院的一台设备型号。超声的灰度是相对的,同一台机器在不同增益设置下的表现都会变,不同厂商的回声处理差异更大。跨设备泛化是这份数据最大的未知,而它恰恰无法从数据内部估计。
患者层缺失。 官方未给出患者标识,因此无法保证训练集与验证集之间没有同一名患者的两个体。若存在双侧扫查者被分到不同子集,会引入患者级泄漏。这是三维医学数据集的老问题,本集合没有明确记录来排除它。
类别只有两级。 没有正常、没有交界性、没有 BI-RADS 分级。这让它无法支撑分级任务,也让分类任务退化为一个二分类问题,指标天花板受标注粒度限制。
掩膜一致性无公开统计。 论文描述了十人分两组交叉复核的流程,但没有报告 Dice 类的一致性指标。任何关于掩膜噪声的定量评估,只能自己在数据上做,没有可引用的官方基准。
几何信息不完整。 官方给出了间距,但没有说明 NRRD 头中是否记录了空间方向矩阵。若缺失,方向只能从图像内容反推,这是一项不出错则已、出错就静默的隐患。
体尺寸不统一。 从 843×546×270 到 865×682×354,三个方向的变化幅度不同。批处理时按固定尺寸裁剪或填充,会同时引入截断与变形两种偏差。
榜单口径分主榜与惩罚榜。 最终结果页对 HD 出现无穷大的情况做了两套排名:主榜剔除该队,惩罚榜按最差 HD 的百分之一百零五替代。引用分数时必须说明用的是哪个榜,否则同一支队伍会有两个名次。
§7.3 外部可比性:三条容易误比的地方
跨库比较时,最常出错的是分母。
| 误比 | 为什么错 | 正确处理 |
|---|---|---|
| 与二维手持超声集合比 Dice | 二维 Dice 逐层平均,三维 Dice 全体素一次算 | 明确写出是三维全体素 |
| 与 CT 分割比 HD | 体素尺寸不同,HD 的绝对值不可直接比 | 换算到毫米再比,或只比相对排序 |
| 与其它挑战赛比「第一名分数」 | 各赛的归一化方式与惩罚规则不同 | 只比同一赛内的相对差距 |
第二行的细节值得记:HD 的单位是体素还是毫米,取决于实现。官方评估代码里的 HD 按体素计算,而体素三轴不等,因此同一对掩膜在不同轴上误差一毫米对应的体素距离差了三倍多。跨库比较 HD 时,单位不统一,数值就没有可比性。
§7.4 与官方文字的口径差异
研究过程中遇到三处需要并列说明的地方,都属于「不同页面用词不同」而非矛盾。
| 位置 | 说法 | 另一处 | 处理 |
|---|---|---|---|
| README | 称赛事为 MICCAI 2023 卫星赛事 | 首页未标 MICCAI | 两者并列写,不单称 MICCAI 官方赛 |
| README | 检测指标写 mAP@0.75 | 首页与论文写 FROC | 以首页与论文为准,README 疑似笔误 |
| 首页公告 | 「数据已公开可用」 | Dataset 页称测试集为封闭 | 按封闭处理,测试掩膜不可得 |
第一行是命名上的松散:组织方是中国两所高校,赛事的学术归属有 MICCAI 关联,但不是官方主赛。第二行是最实用的一处:README 的 mAP 与正文的 FROC 不一致,评估指标应以论文与首页为准。第三行决定了赛后能复现到哪一步。
§7.5 三条可以先做的自查
拿到数据后,按顺序做三件事,能拦掉大部分后续问题。
#-- 自查一:配对完整性(图与掩膜一对一)
#-- 自查二:类别计数是否与官方一致(115 / 85)
#-- 自查三:随机抽三例,打印 spacing,确认三轴不等
python3 - <<'PY'
import glob, random, nrrd
files = sorted(glob.glob("DATA/*.nrrd"))
for p in random.sample(files, 3):
_, h = nrrd.read(p, index_order="F")
print(p, h.get("spacings"))
PY
第三段的输出应显示三个不等的数。若某一例显示三数相等,说明该文件在导出时被重采样过,与其他例不同源,需要单独标记。
§8 版本与生态
§8.1 一条从赛事到数据的一条时间线
这份数据的形态被赛事进程决定了两次:赛期是申请制分发,赛后改成公开网盘。两段的差别不在内容,在可得性。
| 时间 | 事件 | 对数据形态的影响 |
|---|---|---|
| 2023-03-28 | 开放注册 | 需签署协议后邮件获取 |
| 2023-04-06 | 训练集发布 | 一百例带掩膜与标签 |
| 2023-07-15 | 公开验证集发布 | 三十例,供调评测代码 |
| 2023-08-20 | 验证榜截止、测试阶段开启 | Docker 提交,测试集只读挂载 |
| 2023-08-30 | 测试提交截止 | 收到二十一支队伍的容器 |
| 2023-10-18 | 线上颁奖 | 最终榜单公布 |
| 2025-01-26 | 概况论文上 arXiv | 完整方法学与结果可引用 |
| 赛后某时 | 转公开网盘 | 无需申请,但无直链与校验 |
最后一行的日期官方没有写明,只能标为「赛后」。这类公开的时点漂移在挑战赛数据集里很常见,引用时应写「以官方公告为准」而不是给一个具体日期。
§8.2 那届赛事的结果长什么样
二十一支队伍提交了 Docker 容器,其中三支无法运行、一支无输出,最终十七支获得有效成绩,十六支提交了短文。完成分割、分类、检测三项全部任务的只有七支,总榜按三项归一化分数相加排序。
| 任务 | 指标 | 首位成绩 | 队伍 |
|---|---|---|---|
| 分割 | Dice | 0.6147 | T2(POSTECH) |
| 分类 | ACC / AUC | 0.7571 / 0.8892 | T1 |
| 检测 | FROC | 0.8468 | T1 |
| 总榜 | 三项归一化之和 | 2.6932 | T1 |
分割首位 Dice 只有零点六出头,这个数字本身就是这份数据难度的证词。三维超声的肿瘤边界在切片之间是渐变的,专家之间都难以逐体素对齐,更不用说自动方法。这个分数不是方法差,而是任务定义决定了上限。
§8.3 它为何能持续
一个只有二百例的挑战赛数据集,凭什么在赛后两年还被引用?答案不在规模,在三件事同时成立。
第一,它是这个细分方向的第一个公开基准。三维乳腺超声此前没有公认的公开数据集,先行者自动获得「第一个可比对象」的位置。后续如果出现更大的集合,也需要拿它作参照来证明方法进步。
第二,它的标注深度足够支撑三类任务。体素掩膜是成本最高的标注形态,一份掩膜同时服务分割、派生检测框、支撑分类的掩膜引导方法。这种复用让二百例的边际价值远高于二百例的图像加类别。
第三,它有官方评估代码与公开榜单。评估代码留在仓库里,任何人可以拿来复算;榜单留下了十七支队伍的成绩分布,构成了一个可引用的历史基线。这两样东西的存在,让「用这份数据」不只是拿一批图,而是接入一套口径。
§8.4 生态位
在乳腺影像的开源地图上,它占据的是一个窄而关键的格子:三维、超声、体素标注、诊断病例。四个限定词去掉任何一个,都能找到更早或更大的选手;四个同时满足的,目前只有它。
| 维度 | 谁在这一格 |
|---|---|
| 乳腺 × 超声 × 二维 | 多个手持超声集合,规模不一 |
| 乳腺 × 三维 × X 线 | BCS-DBT 等 |
| 乳腺 × 三维 × MRI | QIN、ACRIN 等 |
| 乳腺 × 三维 × 超声 × 体素标注 | 本集合 |
§8.5 三维超声这条线接下来会怎么走
从赛后的公开材料看,这条线的瓶颈不在算法,而在数据供给。ABUS 设备的装机量远低于手持超声,一次扫查的存储量是手持的几十倍,标注成本又是三维勾画。三件事叠加,导致「有设备的地方没标注人力,有标注人力的地方没设备」。
一个可预期的方向是跨设备与跨厂商的联合集合。单中心单设备的局限,只有靠多中心拼起来才能解决;而拼起来的第一步,是各家的 NRRD 头里要有统一的空间信息。本集合在这件事上留下的教训很直接:间距写了,方向矩阵没写,后人就得从图像里猜。
§9 使用指引
§9.1 三种使用者的路径
| 角色 | 第一步 | 第二步 | 不要做 |
|---|---|---|---|
| 算法研究者 | 跑通官方评估代码 | 在训练集划出内部验证 | 直接追总榜分数 |
| 临床研究方向 | 先读懂 B/M 与 BI-RADS 的差别 | 明确任务边界与用途 | 用类别比例做患病率推断 |
| 工程落地 | 确认许可与商用边界 | 做跨设备可行性评估 | 把公开可下载当授权 |
第一行与第三行的顺序不能颠倒。算法研究的产出是方法证据,工程落地的产出是产品能力,后者的前提是授权清晰,而本集合恰恰在这一项上最弱。
§9.2 最小实现:一次端到端的样本加载
下面这段把读图、读掩膜、取类别、算包围框串成一次调用,输入是病例号。
#-- 端到端取一例:图像、掩膜、类别、派生三维框
import csv
import nrrd
import numpy as np
def load_case(case_id, csv_path="labels.csv", root="."):
with open(csv_path, newline="") as f:
rec = next(r for r in csv.DictReader(f) if r["case_id"] == case_id)
img, hdr = nrrd.read(f"{root}/{rec['image_path']}")
msk, _ = nrrd.read(f"{root}/{rec['mask_path']}")
label = 1 if rec["label"].strip().upper() == "M" else 0 # 1 = 恶性
idx = np.nonzero(msk)
box = tuple((int(a.min()), int(a.max())) for a in idx)
return img, msk, label, box, hdr.get("spacings")
img, msk, y, box, sp = load_case("<case_id>")
print("shape:", img.shape, "label:", y, "box:", box, "spacing:", sp)
第四行的 next(...) 会在病例号不存在时抛 StopIteration,这比返回空值更好——批量跑时能立刻定位是哪一例的名称对不上。第七行把类别转成 1/0,约定是恶性为正类,与医学评估里「敏感度优先」的习惯一致。
§9.3 在 AI 流程中的位置
这份数据在一条完整的乳腺 AI 流程里有三个位置。
| 位置 | 作用 | 替代或补充 |
|---|---|---|
| 预训练后的微调 | 把三维骨干从 CT/MRI 迁到超声 | 肝脏超声可做中间站 |
| 方法验证 | 证明三维流程在超声上仍成立 | 需要外部集做最终证明 |
| 评测口径参照 | 借用官方 FROC 与 Dice 的实现 | 可直接复用评估代码 |
第一行的迁移路线值得展开:先在体量与标注都更充裕的 CT 分割集上把三维骨干训到收敛,再换到超声上做微调,最后在本集合上评估。跳过中间站直接迁移,会遇到两个问题同时出现——几何不等与噪声形态不同,很难判断是哪一项导致掉点。
§9.4 使用前的五个问题
| 问题 | 若答「是」 | 若答「否」 |
|---|---|---|
| 任务是否需要阴性对照 | 换用筛查数据集 | 本集合可用 |
| 结论是否需要第三方逐例复核 | 只用训练与验证两段 | 可引用官方榜单 |
| 是否需要商用 | 先解决授权 | 学术用途无额外障碍 |
| 是否要评估跨设备泛化 | 需另找多中心数据 | 本集合够用 |
| 是否要训练 BI-RADS 分级 | 本集合不支持 | 本集合可用 |
§10 使用声明
| 项目 | 声明 |
|---|---|
| 性质 | 挑战赛赛后公开的研究数据集,非临床产品或诊断依据 |
| 推荐用途 | 三维肿瘤分割与检测的方法研究、体素间距处理的方法学、迁移学习的压力测试 |
| 不建议用途 | 筛查患病率推断、健康对照建模、商业产品训练、临床决策支持 |
| 伦理 | 影像来自患者,已去标识;禁止任何再识别尝试;涉及人体的研究应经所在机构伦理审查 |
| 引用 | 使用须引用 Luo G, et al. arXiv:2501.15588(2025) |
| 许可 | 官方未发布数据许可文本;商用与再分发须自行确认,不能以本页为依据 |
| 版本 | 赛后公开版;引用时注明下载时间 |
| 状态 | 可获取,载体为官方公告的百度网盘链接 |
常见误读
| 常见说法 | 实际情况 | 证据 |
|---|---|---|
| 「二百名患者」 | 二百个三维体,患者数未单列 | Dataset 页原文只写 200 3D volumes |
| 「六万张超声图,六万例」 | 约六万是切片总量,切片间高度相关,不是独立样本 | 体尺寸 270–354 层 × 200 体 |
| 「标注是三维包围框」 | 主标注是体素掩膜,框由掩膜派生 | 论文:derive bounding boxes from segmentation |
| 「有正常、良性、恶性三类」 | 只有良性 B 与恶性 M 两类,无正常 | labels.csv 用 B/M 两字母 |
| 「测试集赛后也开放」 | 封闭测试集七十例标注归主办方 | Dataset 页称 closed test |
| 「许可是 CC BY 4.0」 | 那是概况论文的 arXiv 许可,不是数据许可 | 官方无数据许可文本 |
| 「这是 MICCAI 官方主赛」 | 与 MICCAI 2023 有卫星赛事关联,非主赛 | 仓库 README 表述 |
| 「检测指标是 mAP@0.75」 | 首页与论文写 FROC | 仓库 README 与正文不一致 |
| 「ABUS 就是手持超声换个名字」 | 探头固定自动扫、整乳三维、可重复,与手持二维不同 | Dataset 页与论文对设备的描述 |
| 「体素是立方体」 | 三轴间距 0.200 / 0.073 / 0.476 mm | Dataset 页给出的间距 |
FAQ
Q1:TDSC-ABUS 2023 到底有多少病例?
官方口径是二百个三维体,按一百、三十、七十切分为训练、公开验证、封闭测试。患者数官方未单列,只能说至多二百。
Q2:一个体有多少层?
从体尺寸区间可推出二百七十到三百五十四层,官方未给每例的层数清单。层间距离约 0.475674 毫米。
Q3:标注形式是什么?
体素级掩膜为主,取值 0 为背景、1 为肿瘤;检测用的三维包围框由掩膜派生,不是独立标注。
Q4:有正常病例吗?
没有。只有良性 B 与恶性 M 两类,论文把缺少健康组织与其它异常列为已知局限。
Q5:数据从哪来?
哈尔滨医科大学附属肿瘤医院,GE Invenia ABUS 采集,位于中国黑龙江省哈尔滨市。
Q6:赛事结束了吗?数据还能下吗?
赛事 2023 年 10 月收官;数据在官方公告中标注为公开可用,给出百度网盘链接与提取码 TDSC。
Q7:能商用吗?
官方没有发布数据许可文本。没有许可不等于可以自由使用,商用前须自行确认。
Q8:为什么分割分数只有零点六?
三维超声的肿瘤边界在切片间渐变,专家之间也难以逐体素对齐,任务定义本身就限制了上限。
Q9:ABUS 与手持超声的核心差别?
ABUS 探头固定、机械自动扫查、一次得到整侧乳腺的三维体,参数可复现;手持超声依赖操作者手法,输出若干二维切面。
Q10:能和 BCS-DBT 混用训练吗?
技术上可以,但两者灰度含义、体素几何、标注形态都不同,混合会引入域差异;更稳妥的做法是分开训练、交叉评估。
Q11:训练集和验证集会泄漏患者吗?
无法排除。官方未给患者标识,若存在同人双侧扫查被分到不同子集,就会有泄漏。
Q12:评估代码在哪?
在官方 GitHub 仓库的 Final_Evaluation 目录下,含分割、分类、检测三个评分脚本,可复算榜单。
术语表
| 术语 | 含义 |
|---|---|
| ABUS | 自动乳腺超声,探头固定、机械自动扫查,一次得到整侧乳腺的三维体 |
| 手持超声 | 操作者徒手移动探头的二维超声,输出若干切面,依赖手法 |
| 三维体(volume) | 一次 ABUS 扫查重建出的三维图像,本集合的样本单位 |
| 体素间距(spacing) | 相邻体素在三个物理方向上的距离,本集合三轴不等 |
| 各向同性 | 三个方向的体素间距相等,三维卷积的常见前提 |
| 体素掩膜 | 与图像同形状的整数数组,逐体素标记是否属于肿瘤 |
| 派生包围框 | 由掩膜中外接长方体得到的检测框,非独立标注 |
| FROC | 自由响应受试者工作特征曲线,按每例误报数计的敏感度 |
| Dice | 分割重合度,本集合按全体素一次计算而非逐层平均 |
| HD | 豪斯多夫距离,衡量两个表面的最远偏差 |
| 封闭测试集 | 标注由主办方保留、仅用于榜单排名、赛后不公开的子集 |
| 分层抽样 | 按类别比例在各子集间分配样本,本集合三段比例一致 |
| BI-RADS | 乳腺影像报告与数据系统的分级,属影像印象,与 B/M 不等价 |
| 致密型乳腺 | 腺体组织占比高、钼靶上呈高密度的乳腺类型,是超声补充检查的主要对象 |
| 斑点噪声 | 超声成像中与结构同尺度的乘性噪声 |
| 空间方向矩阵 | 描述体素轴与患者坐标系对应关系的矩阵,缺失时方向需反推 |
| NRRD | 一种带头信息的医学影像格式,可记录间距与方向 |
| 微调 | 在预训练模型上用目标任务数据继续训练 |
附录 A 数据组织与目录
| 路径 | 内容 | 关键说明 |
|---|---|---|
<根>/DATA/ |
全部图像,每例一个 .nrrd |
文件名主干即病例号 |
<根>/MASK/ |
全部掩膜,与 DATA 同名 | 取值 0 背景 / 1 肿瘤 |
<根>/labels.csv |
每行一例 | 类别 B/M 与两类文件路径 |
| 赛期容器输入 | /input 只读挂载 |
对应 Test/DATA |
| 赛期容器输出 | /predict |
提交格式由赛页给定 |
#-- 一条 labels.csv 行的语义等价形态(官方未公布确切列名,此处为语义示意)
case_id, label, image_path, mask_path
<病例号>, B, DATA/<病例号>.nrrd, MASK/<病例号>.nrrd
附录 B 标注格式与坐标
| 项目 | 内容 |
|---|---|
| 掩膜类型 | 三维整数体,单通道 |
| 取值 | 0 背景、1 肿瘤 |
| 与图像关系 | 同形状、同方向、由同一重建流程产生 |
| 包围框来源 | 掩膜在三个轴上的最小与最大索引 |
| 包围框形态 | 六元组 (x0, y0, z0)–(x1, y1, z1) |
| 坐标单位 | 体素索引;物理换算需乘 spacings |
| 类别位置 | 只在 labels.csv,不在影像头中 |
| 方向约定 | 以 NRRD 头为准;头中若无方向矩阵需按内容反推 |
坐标上的三条纪律:其一,框与掩膜都在体素坐标系里,涉及物理尺寸时必须乘间距;其二,间距三轴不等,任何按体素等距做的形状描述都会失真;其三,裁剪后必须记录偏移量,否则预测框无法还原。
附录 C 术语表补充与缩写
| 缩写 | 全称 | 中文 |
|---|---|---|
| TDSC | Tumor Detection, Segmentation and Classification | 肿瘤检测、分割与分类 |
| ABUS | Automated Breast Ultrasound | 自动乳腺超声 |
| NRRD | Nearly Raw Raster Data | 一种医学影像栅格格式 |
| FROC | Free-Response Receiver Operating Characteristic | 自由响应工作特征曲线 |
| HD | Hausdorff Distance | 豪斯多夫距离 |
| ACC | Accuracy | 准确率 |
| AUC | Area Under the Curve | 曲线下面积 |
| DBT | Digital Breast Tomosynthesis | 数字乳腺断层摄影 |
| DCE-MRI | Dynamic Contrast-Enhanced MRI | 动态增强磁共振 |
附录 D 常见误读 FAQ
误读一:二百例太少,不值得用。 二百例在图像数量上确实少,但每例是体素级标注、约三百层的三维体,且同时服务三个任务。判断一个三维分割集的价值,看的是标注深度与任务覆盖,不是体数。
误读二:有掩膜就说明检测框很准。 框是从掩膜派生的外接长方体,多病灶时会被合并,边界的小突起会撑大框。要用框做检测真值,先做连通域拆分与形态学清理。
误读三:良性病例就是阴性。 良性也是有病灶的病例,只是性质非恶性。它不等于健康,也不等于筛查阴性。
误读四:公开可下载就能直接进产品。 无许可文本时,商用授权没有依据。这一条与技术水平无关,是合规问题。
误读五:三维 Dice 零点六说明方法很差。 这个任务的边界模糊程度决定了上限。与同赛道的其它方法比相对差距,比与 CT 分割的绝对值比更合理。
附录 E 许可与引用
| 项目 | 内容 |
|---|---|
| 数据许可 | 官方未发布独立许可文本 |
| 论文许可 | 概况论文标注 CC BY 4.0,仅覆盖论文本身 |
| 赛事协议 | 赛期需签署参赛协议,赛后公开包未要求 |
| 引用要求 | 使用数据须引用概况论文 |
| 引用格式 | Luo G, Xu M, Chen H, Liang X, Tao X, Ni D, et al. Tumor Detection, Segmentation and Classification Challenge on Automated 3D Breast Ultrasound: The TDSC-ABUS Challenge. arXiv:2501.15588, 2025. |
| 代码引用 | 官方仓库 PerceptionComputingLab/TDSC-ABUS2023 |
| 联系方式 | 官方页面给出邮箱与 QQ 群,用于数据问题咨询 |
编辑说明
核验时间:2026-10-29。核验方式:读取挑战赛官网首页、Dataset 页、最终结果页、官方 GitHub 仓库 README,以及概况论文 arXiv:2501.15588 全文。规模、切分、体尺寸、间距、掩膜取值、类别计数均取自 Dataset 页与论文表一;赛事结果取自最终结果页与论文表三至表六。切片总量为按体尺寸区间推算的量级,官方未给出;患者数与每例层数清单官方未提供,正文按「未单列」处理。许可部分按官方材料中「无许可文本」的事实陈述,未做任何授权推断。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- breast-cancer-screening-dbt — 共享标签:医学影像 / 乳腺影像 / 肿瘤学
- tn-mammo-breast-density — 共享标签:医学影像 / 乳腺影像 / 肿瘤学
- leopard — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
- dmr-ir — 共享标签:医学影像 / 乳腺影像 / 肿瘤学
- breast-diagnosis — 共享标签:医学影像 / 乳腺影像 / 肿瘤学
- panda — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
- paip — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
- atlas-liver-tumor — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
- promise12 — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
- prostatex — 共享标签:医学影像 / 肿瘤学 / 挑战赛数据集
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

