CATARACTS — 白内障手术视频基准 AI-Ready Wikipedia | 千方病案医数集

50 台白内障手术、9 小时 Full HD 显微镜视频、21 类器械与 18 类手术阶段逐帧标注

来源 布雷斯特大学医院(CHU de Brest)× LaTIM / Inserm UMR 1101 url: https://ieee-dataport.org/open-access/cataracts发布时间: 2026-09-09最后更新: 2026-09-09 阅读 2

信息速览

数据集名称CATARACTS — 白内障手术视频基准 AI-Ready Wikipedia | 千方病案医数集
数据类型50 台白内障手术,117.8 GB Full HD 视频,21 类器械逐帧标注,18+1 类手术阶段标注,免费开放获取
规模50 名白内障患者(38 女 / 12 男,平均 61 岁)
接入方式布雷斯特大学医院(CHU de Brest)× LaTIM / Inserm UMR 1101 url: https://ieee-dataport.org/open-access/cataracts
AI 就绪度

数据集封面

CATARACTS — 白内障手术视频基准 AI-Ready Wikipedia

INFOBOX

数据集名称 CATARACTS 白内障手术视频基准
英文全称 CATARACTS: Challenge on Automatic Tool Annotation for cataRACT Surgery
别名/简称 CATARACTS2017 / CATARACTS2018 / CATARACTS2020
疾病分类 白内障(ICD-11:9B10 白内障 / 9B10.0 年龄相关性白内障 / 9B10.Z 白内障,未特指)
SNOMED CT 193570009 Cataract (disorder) / 39450006 Old-age related cataract
数据模态 手术显微镜视频 + 器械托盘视频 + 逐帧器械使用标注 + 手术阶段标注
AI 任务类型 器械存在检测、手术阶段/步骤识别、手术场景语义分割、手术工作流分析
样本总数 50 台白内障手术(每种视频类型 > 9 小时)
数据大小 视频 117.8 GB(MP4)/ CATARACTS2018 图像版 691.2 GB / 标注 18.55 MB
数据格式 MP4 / CSV / JPG 图像序列 / ZIP
许可证 开放获取(IEEE DataPort),禁止商业用途
访问级别 开放(IEEE DataPort 注册获取;CATARACTS2018 另提供 torrent 直下)
DUO 标签 NCU, PUB
语言 英文(标注与文档)
首发日期 2017-04-01(CATARACTS2017 挑战发布)
最后更新 2021-04-22(IEEE DataPort 归档页更新)
发布机构 布雷斯特大学医院(CHU de Brest)× LaTIM / Inserm UMR 1101
官方主页 https://cataracts.grand-challenge.org/
下载地址 https://ieee-dataport.org/open-access/cataracts
DOI 10.1016/j.media.2018.11.008(论文)/ 10.21227/ac97-8m18(数据)
引用次数 147+(Semantic Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方划分 + 公开评测脚本 + 测试集参考标准已发布;扣分项:无官方预处理/DataLoader 脚本、视频体量大需自行抽帧、2017 与 2020 两套划分并存易混用
页面状态 published

§0 E-E-A-T 信任声明与免责声明

  • 医学审核:本条目医学背景(§2)、偏倚与局限性分析(§7)由 [千方病案医学编辑部] 交叉审核:§2 医学背景(白内障定义、ICD-11/SNOMED CT 映射、流行病学数字均引自 Medical Image Analysis 2019 原始论文及 ICD-11/SNOMED CT 官方编码库)、§7 偏倚分析(单中心、术者集中、性别失衡等)。
  • 数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05
  • 信源等级说明:本条目全部关键数字追溯至一级来源(官方挑战页、IEEE DataPort 归档页、MedIA 2019 论文、官方评测脚本);二级来源(arXiv 论文、Zenodo 衍生数据集)仅用于佐证划分口径与衍生生态,均在 §10.3 逐条列出,便于读者复核。

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CATARACTS 通过 IEEE DataPort 以开放获取方式发布,明确禁止商业用途,基于数据的学术发表必须引用其 Medical Image Analysis 2019 论文。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

这是什么? CATARACTS(Challenge on Automatic Tool Annotation for cataRACT Surgery)是全球第一个面向白内障手术的公开视频基准数据集。它收录了法国布雷斯特大学医院在 2015 年 1-9 月间完成的 50 台白内障手术,每台手术配有显微镜视野与器械托盘两路 1920×1080 视频,合计每种视频超过 9 小时。

为什么重要? 白内障是全球最常见的手术,每年约 1,900 万例。在 CATARACTS 出现之前,手术工作流分析研究几乎全部集中在腹腔镜手术上,眼科显微手术没有公开基准。该数据集的 21 类器械逐帧标注由两名专家独立完成并仲裁,2020 年又补充了手术阶段标注,先后支撑 MICCAI 2017、2018、2020 三届国际挑战赛,14 支队伍在 2017 年基准上展开竞争。

我能用它做什么? 训练器械存在检测器(判断每一帧外科医生正在使用哪些器械)、手术阶段识别器(把手术视频切分为撕囊、超声乳化、人工晶体植入等语义阶段)、手术场景分割模型,以及在线手术监测与报告生成原型。注意:该数据集禁止商业用途。

§1.1 技术摘要

CATARACTS 由 LaTIM / Inserm UMR 1101(布雷斯特)团队组织,数据于 2017 年 4 月 1 日发布,配套 Medical Image Analysis 2019 挑战论文。每台手术以 Zeiss OPMI Lumera T 显微镜 + Toshiba 180I 相机 + MediCap USB200 录像机记录,显微镜视频约 30 fps、托盘视频约 50 fps,平均时长 10 分 56 秒(范围 6 分 23 秒至 40 分 34 秒)。器械标注覆盖 21 类器械,采用"器械是否接触眼球"的操作性定义,由两名非医学专家逐帧独立标注,分歧帧经共同观看仲裁后形成 0/0.5/1 概率化参考标准。任务划分有两套:器械存在检测为训练集 25 台 / 测试集 25 台;CATARACTS2020 活动识别为训练 25 台 / 验证 5 台 / 测试 20 台,后者提供由一名医生与一名眼科护士逐帧标注的 18+1 类手术阶段。2017 挑战冠军(DResSys,D-Wave Systems)取得 0.9971 的平均 ROC AUC,论文结论是自动标注的准确度已接近人工水平。

工程上,官方以 IEEE DataPort 为中心维护归档:Videos 目录(117.8 GB)存放双路 MP4,ground_truth.zip(18.55 MB)存放挑战标注,evaluation_scripts.zip(7.84 KB)存放官方评测实现;2018 年另发布 691.2 GB 的抽帧图像包,为无视频解码条件的团队提供图像级入口。视频以"每台手术一个 MP4"与"图像序列"两种形态并存,时间标签统一以帧号为轴(frame_id),与视频 fps 换算即可得到秒级时间戳。

§1.2 战略价值

稀缺性维度:手术视频数据因隐私、伦理与标注成本长期难以公开。在眼科显微手术领域,CATARACTS 至今仍是少数提供全量逐帧器械标注与阶段标注的公开视频基准——同领域后续数据集(如 Couplet 数据集、OSAKA 等单中心白内障视频集)要么规模更小,要么标注粒度更粗。对需要"视频 + 时间维度标签"组合的算法研究(时间卷积、LSTM、Transformer 时序建模),它提供了几乎不可替代的训练与评测土壤。

基准生态维度:CATARACTS 的三届挑战赛构建了完整的评测协议——固定划分、公开评估脚本、排行榜与技术报告制度,测试集参考标准现已随 IEEE DataPort 归档公开。这使其成为手术工作流分析方法横向比较的事实标准之一:后续大量阶段识别论文(TeCNO、TransSVNet、时间卷网络与弱监督方法等)都在 CATARACTS 或其同源划分上验证。对工程团队而言,直接使用其官方划分与脚本可避免"自建评测、各自为政"的不可比问题。

开放科学维度:从挑战赛组织到数据归档,CATARACTS 全程践行了后来成为社区标准的透明化实践——规则与评测脚本赛前公开、参赛方案强制附技术报告、重提交设一周冷却期防止测试集过拟合、测试参考标准在赛后随归档发布。对今天想组织医学 AI 挑战赛或构建院内基准的团队,这套流程本身就是可复用的方法论模板;对算法研究者,它意味着评测结果的长期可复现性。

§1.3 同类数据集横向对比

数据集 手术类型 规模 模态 标注 与 CATARACTS 的差异
CATARACTS 白内障(显微镜) 50 台手术,> 9 小时×2 路 Full HD 显微镜 + 托盘视频 21 类器械逐帧 + 18+1 类阶段 唯一的双路视频 + 概率化器械参考标准
Cholec80 胆囊切除(腹腔镜) 80 台手术 内镜视频 7 类器械 + 7 类阶段 规模更大但器械类别更少、无双路
M2CAI16 多种腔镜手术 27 台(工作流子任务) 内镜视频 8 类阶段 + 9 类器械 混合术式,单路视频
AutoLaparo 子宫肌瘤切除(腹腔镜) 21 台手术 内镜视频 7 类阶段 仅阶段标注,无器械标注
MISAW 显微微血管吻合 10 台训练会话 立体视频 + 机械臂运动学 阶段/步骤/活动三层 提供运动学模态,规模很小

读表要点:CATARACTS 的差异化在三处——双路视频(唯一)、概率化器械参考标准(唯一)、8 个月的连续采集窗口(队列构成最接近真实临床比例);其规模(50 台)在同类中偏小,这是"逐帧双专家标注成本"换来的取舍,也决定了它更适合做方法验证与协议基准,而非大数据预训练。

§1.4 版本时间轴

时间 版本/事件 关键内容
2015-01 至 2015-09 数据采集 布雷斯特大学医院 50 台手术,双路 Full HD 视频
2017-04-01 CATARACTS2017 挑战发布 21 类器械存在检测;train 25 / test 25;提交窗口 8 个月
2017-11-30 2017 挑战收官 14 支队伍参赛,冠军 DResSys(D-Wave)平均 ROC AUC 0.9971
2018 CATARACTS2018 视频与图像双赛道器械检测,新增 691.2 GB 图像包
2018-11-16 / 2019-02 MedIA 论文在线/刊出 挑战论文发表于 Medical Image Analysis 52:24-41
2020 CATARACTS2020(MICCAI EndoVis 子挑战) 20 类手术活动在线识别(train 25 / dev 5 / test 20)+ 语义分割子挑战
2021-04-22 IEEE DataPort 归档 全部视频、标注与评估脚本开放下载,测试集参考标准公开
2025-03-06 OpenMIBOOD 衍生子集 前 5 台测试视频的清洗版(去开头黑帧,29.6 GB)发布于 Zenodo,用于分布外评估

§1.5 典型应用场景

  1. 手术阶段识别(Phase/Step Recognition):用 2020 版 18+1 类阶段标注训练视频级时序模型,实现在线(不可见未来帧)阶段预测,是报告生成与手术进度监测的核心组件。
  2. 器械存在检测(Tool Presence Detection):以 21 类器械逐帧标注训练多标签分类器,可离线复现 2017 挑战协议并与官方排行榜直接对比。
  3. 手术场景语义分割:结合 2020 EndoVis 衍生像素级标注(4,670 训练 + 531 测试图像、36 类),训练解剖结构与器械分割网络。
  4. 弱监督与半监督算法研究:利用"步骤标注多、阶段标注可由本体映射生成"的特性,研究弱监督时序卷积与依赖损失(已有公开工作路线)。
  5. 手术教学与技能评估原型:阶段时长分布与器械使用序列可作为手术规范化程度的量化特征,用于教学反馈系统的前期研究。

五个场景的共同前提是"非商业":官方条款明文禁止商业用途,凡涉及产品化(无论免费与否)的落地路径都需另行获得数据方授权,这一点在立项文档中应作为红线写明。


§2 医学背景

§2.1 ICD-11 编码映射

数据集全部手术针对白内障及其相关屈光问题。下表给出标签体系对应的 ICD-11 编码(ICD-11 MMS,视觉系统疾患章,晶状体疾患 9B10-9B1Z 区段):

标签/概念 ICD-11 编码 ICD-11 中文名 说明
Cataract(白内障,总类) 9B10 白内障 晶状体疾患区段根码,涵盖数据集全部手术对象
Age-related cataract(年龄相关性白内障) 9B10.0 年龄相关性白内障 数据集主要适应证(患者平均 61 岁)
Cataract, unspecified(未特指白内障) 9B10.Z 白内障(未特指) 官方未披露逐台诊断时的兜底编码

ICD-11 中 9B10 区段支持侧别(左/右/双眼)与视力损害表现的后组配编码;数据集不提供逐台侧别与视力字段,如需侧别分析只能依赖视频内容自行判读,判读结果应标注为"模型/人工推断"而非数据集字段。

§2.1b SNOMED CT 映射

标签/概念 SNOMED CT 码 术语 说明
Cataract(白内障) 193570009 Cataract (disorder) 数据集疾病层的核心概念
Old-age related cataract(老年性白内障) 39450006 Old-age related cataract 与 ICD-11 9B10.0 对应的常用临床概念
手术操作层 不适用 Phacoemulsification(超声乳化白内障吸除术)等 数据集未提供逐台术式编码,阶段标注即操作层的语义表达

临床术语到数据字段的映射路径:ICD-11/SNOMED 概念描述"为什么做手术"(疾病层),器械标注描述"用什么做"(工具层),阶段标注描述"做到哪一步"(流程层)。三层语义在 CATARACTS 中只有后两层有显式字段,疾病层为全队列同质(白内障手术),因此该数据集不适合疾病鉴别类任务——这一点在立项评审时应主动声明。

§2.2 疾病简介与流行病学

白内障是晶状体(虹膜后方的双凸透明结构)的混浊。正常情况下晶状体将光线聚焦于视网膜并承担调节功能;随衰老、全身疾病、先天异常或外伤,晶状体逐渐混浊,导致视物模糊、色彩变淡、眩光、夜视困难与复视等症状。它是全球最主要的视力丧失与致盲原因:据 Medical Image Analysis 2019 挑战论文引用的 WHO 估计,到 2025 年全球白内障致盲人数将达到 4,000 万。

从术式演进看,白内障手术经历了囊内摘除(ICCE,20 世纪 60 年代前)、囊外摘除(ECCE)到超声乳化吸除(Phacoemulsification,Kelman 于 1967 年提出)的转变——超声技术使术式从 180° 大切口缩小到数毫米切口,安全性与可重复性质变,也使手术流程得以高度标准化。CATARACTS 队列(2015 年采集)全部采用现代超声乳化路径,其中散光矫正型人工晶体植入(对应 Toric Marking 阶段)、术中玻璃体切除(并发症处理)等变体也自然出现在阶段本体中,这使阶段序列兼具"标准流程主干 + 术式变体分支"的结构,是时序建模的理想试验场。

白内障超声乳化吸除术是现代主流术式:通过超声手柄将混浊晶状体粉碎吸出,再植入人工晶体(IOL)。论文指出,全球每年约进行 1,900 万例白内障手术,使其成为世界上最常见的外科手术。手术流程高度标准化(切口→黏弹剂注入→环形撕囊→水分离→超声乳化→抽吸/灌注→人工晶体植入→切口水化封闭),这正是 CATARACTS 2020 版能定义出固定阶段本体(18+1 类)的临床基础。

下表汇总本条目引用的关键流行病学数字及其出处:

数字 含义 出处
约 1,900 万例/年 全球白内障手术量,世界最常见外科手术 MedIA 2019 论文引言
4,000 万(2025 年预测) 全球白内障致盲人数 MedIA 2019 论文转引 WHO(Wang et al., 2016)
61 ± 10 岁 数据集患者平均年龄(23-83 岁) 官方 Data 页
50 台 数据集手术规模 官方 Data 页

§2.3 临床任务定义

CATARACTS 面向的不是"筛查/诊断"任务,而是手术过程理解(Surgical Workflow Analysis),其临床定位包括:

  • 术中器械使用监测:判断每一时刻术者正在使用哪些器械(器械是否接触眼球的操作性定义),是理解手术进程的关键指标。
  • 手术阶段识别:把连续视频流切分为语义阶段(如撕囊、超声乳化、人工晶体植入),支撑自动手术报告生成、手术训练评估与实时决策支持。
  • 在线(Online)工作流分析:CATARACTS2020 明确要求算法在时刻 t 仅使用当前与历史帧估计当前阶段,对应手术室内的实时应用约束。
  • 下游价值:术式规范化审计、教学反馈、机器人辅助手术的状态感知模块,均以可靠的阶段/器械识别为前置能力。

三类任务与数据支撑的对应关系:

临床任务 数据支撑 对应章节
器械使用监测 21 类器械逐帧标注(0/0.5/1) §4.1、§6.4、§6.9
阶段识别(在线) 18+1 类阶段标注 + 20 类活动协议 §4.1、§6.7、§8.3
场景理解(空间) 2020 衍生 36 类像素掩码 §2.6、§6.7

§2.4 患者人群

维度 内容
来源 法国布雷斯特大学医院(CHRU Brest)眼科,单中心
采集时间 2015-01-22 至 2015-09-10
样本量 50 台手术(对应 50 名患者)
年龄 平均 61 岁(最小 23、最大 83、标准差 10)
性别 女性 38 名(76%)、男性 12 名(24%)
手术原因 年龄相关性白内障、外伤性白内障、屈光不正
术者构成 知名专家 48 台、1 年经验医生 1 台、实习生 1 台
伦理 全部患者签署知情同意

人群画像的两点提示:其一,最小年龄 23 岁与"外伤性白内障、屈光不正"的手术原因相呼应,说明队列并非纯老年白内障,阶段时长分布可能比典型老年队列更多样;其二,76% 的女性占比与白内障就诊人群的一般结构大体一致,但用于性别敏感分析时样本量(12 名男性)偏小,统计功效有限。

§2.5 临床价值

对临床而言,手术工作流自动分析的价值链条清晰:其一,自动报告生成——器械与阶段序列可直接翻译为操作记录,减轻眼科医生文书负担;其二,手术培训与技能评估——阶段时长、器械切换频率等量化指标可客观刻画实习医生与专家的差异(数据集中恰好包含 1 台实习生与 1 台低年资医生手术,可用于探索性分析);其三,实时决策支持与不良事件预警(如后囊膜破裂相关的玻璃体切除阶段突然出现),前提是阶段识别达到在线、低延迟的工程要求。CATARACTS 论文特别强调:自动标注的准确度已接近人工标注水平,这为上述临床转化提供了可行性证据。

值得注意的是价值链条的依赖方向:报告生成是离线任务,工程门槛最低,适合作为团队接触该数据集的第一个落地目标;实时预警则同时受在线协议(坑点 8)、推理延迟与误报成本三重约束,应在阶段识别基线成熟之后再启动。

§2.6 参考标准与标注性质

标注是 CATARACTS 的核心资产。三套标注(器械、阶段、像素掩码)的协议、标注者与性质各不相同,汇总如下:

划分 标注内容 标注方式 标注者 性质
2017/2018 器械检测(train 25 / test 25) 21 类器械逐帧使用(0/0.5/1) 人工逐帧,Web 界面 + SQL 数据库 两名非医学专家独立标注 + 分歧仲裁 概率化参考标准;器械接触眼球的精确时刻未仲裁
2020 活动识别(train 25 / dev 5 / test 20) 18+1 类手术阶段逐帧标注 人工逐帧 一名医生 + 一名眼科护士 离散单标签;另有 5 phases + 19 steps 本体可映射
2020 语义分割(衍生集) 36 类像素级掩码(4 解剖 + 29 器械 + 3 其他) 一人标注 + 一人复核 + 临床裁定 内部标注团队 + 临床专家 4,670 训练 + 531 测试图像(源自 25+10 台手术)

使用参考标准时的三条注意:器械标注的 0.5 值不是噪声而是"不可仲裁"的显式表达,必须走 §6.5 坑点 1 的处理路径;阶段标注为单标签体系,与器械多标签体系不可互相推导(仅可经 5 phases + 19 steps 本体部分桥接);像素掩码只在衍生子集上存在,不能覆盖全部 50 台手术。


§3 数据集规格

§3.0 版本抉择矩阵

CATARACTS 存在三个挑战版本与多种发布形态,动手前先选对版本:

你的需求 推荐版本 大小 理由
复现 2017 器械存在检测基准 CATARACTS2017(Videos + ground_truth.zip) 视频 117.8 GB + 标注 18.55 MB 官方划分 train 25 / test 25,评测脚本与排行榜齐全
训练阶段/步骤识别模型 CATARACTS2020(同视频 + 2020 阶段标注) 同上 + 阶段 CSV 官方划分 train 25 / dev 5 / test 20,18+1 类阶段标注
快速迭代、无大存储条件 OpenMIBOOD 清洗子集(Zenodo 衍生) 29.6 GB(前 5 台测试视频,已去除开头黑帧) 体积小、已清洗,仅用于 OOD 评估等探索场景
图像分类/分割研究 CATARACTS2018_images 691.2 GB 官方抽帧图像包,省去自行解码视频
像素级手术场景分割 2020 EndoVis 语义分割标注 数 GB 量级(4670+531 图) 36 类像素掩码,直接对接分割网络

§3.1 模态详情

  • 显微镜视频(Microscope / tool-tissue interaction video):1920×1080(Full HD),约 30 fps,记录手术视野。平均时长 10 分 56 秒(最小 6 分 23 秒、最大 40 分 34 秒、标准差 6 分 05 秒)。这是全部标注任务的主模态。
  • 器械托盘视频(Surgical tray video):与显微镜视频同步记录的器械托盘画面,1920×1080,约 50 fps。平均时长 11 分 03 秒(最小 6 分 30 秒、最大 40 分 48 秒、标准差 6 分 03 秒)。2018 挑战将其列为独立赛道,用于从托盘侧观察器械取用行为。
  • 标注流:器械使用 CSV(逐帧 × 21 列)与手术阶段 CSV(逐帧阶段 ID),均为时间维度标签而非空间标注;像素级掩码仅存在于 2020 衍生分割集。

两路视频的分工值得强调:显微镜流承载全部监督信号(器械与阶段标注都定义在显微镜视频上),托盘流则是"器械从何而来"的行为侧信息——器械被从托盘拿起、放回的时刻先于其在术区出现。2018 挑战把托盘视频设为独立赛道,正是为了考察模型能否仅凭托盘画面预判器械取用,这对手术室物料管理与器械清点自动化有直接工程价值。

§3.2 子集与样本数

子集划分 用途 手术数 说明
训练集(2017/2018 器械检测) 训练 + 提交开发 25 台 附 21 类器械逐帧标注
测试集(2017/2018 器械检测) 挑战评测 25 台 参考标准现已公开,可自评
训练集(2020 活动识别) 训练 25 台 附 18+1 类阶段标注
验证集(2020 活动识别,dev) 模型选择 5 台 阶段标注可用
测试集(2020 活动识别) 挑战评测 20 台 参考标准现已公开
2020 分割衍生集 语义分割 训练 25 台抽 4,670 帧 / 测试 10 台抽 531 帧 36 类像素掩码

选版本时的一个隐藏成本是"标注-划分耦合":器械标注只在 2017 划分语境下发布过完整挑战协议,阶段标注与 25/5/20 划分绑定,像素掩码又只覆盖部分视频的抽样帧——没有哪个版本能同时覆盖三种任务的全量标注。混合使用时(例如用阶段模型给器械任务提供时间先验),务必在论文中说明每种标注的实际覆盖范围。

§3.3 数据格式

内容 格式 说明
显微镜/托盘视频 MP4(IEEE DataPort 发布) 1920×1080;约 30 fps(显微镜)/ 约 50 fps(托盘)
图像版(2018) JPG 图像序列(ZIP) 691.2 GB,按视频组织的抽帧图像
器械标注 CSV(ZIP 打包) 每视频一文件,逐帧 21 列,值域 0/0.5/1,首行为工具名表头
阶段标注 CSV(2020 版) 每视频一文件,逐帧阶段 ID
评测脚本 Python(evaluate_cataracts2017.py 等) 官方 ROC AUC 评测实现,7.84 KB 压缩包

文件命名约定:测试视频以 test01.mp4 … test25.mp4、训练视频以 train01.mp4 … train25.mp4 命名,标注 CSV 与视频同名(仅扩展名不同);提交文件则要求每行以 frame_id 开头、后接 21 列置信度且不带表头。命名规则简单稳定,适合直接写成路径生成函数。

§3.4 存储大小

组件 大小
Videos(双路 MP4,50 台手术) 117.8 GB
CATARACTS2018_images(抽帧图像包) 691.2 GB
ground_truth.zip(挑战标注) 18.55 MB
evaluation_scripts.zip 7.84 KB
全量落地建议磁盘 ≥ 1.5 TB(含解压副本与抽帧缓存)

§3.5 标注方式

  • 器械使用标注(人工,双人独立 + 仲裁):先由外科医生列出并命名显微镜视频中的全部可见器械(21 类);再由两名非医学专家逐帧独立标注器械是否"使用中"(操作性定义:器械与眼球接触)。Web 界面连接 SQL 数据库逐帧记录时间戳。
  • 仲裁与概率化参考标准:当两人对同一帧"是否使用某器械"判断不一致时,共同回看视频裁定实际使用的器械;但器械接触眼球的精确起止时刻未做仲裁,故参考标准概率化为:0(两人一致未用)、1(两人一致使用)、0.5(分歧)。
  • 阶段标注(人工,医护双人):2020 版由一名医生与一名眼科护士逐帧标注 18 个命名阶段(另有 idle/空闲类),阶段序列遵循白内障手术的标准流程本体。
  • 像素级标注(人工,标注+复核+裁定):2020 分割集按"一人标注、一人复核、分歧提交临床团队裁定、像素级边界检查"流程生成。

§3.6 标注者资质与一致性

标注任务 标注者 资质 一致性机制
器械使用 2 名非医学专家 经培训的专职标注员 全量双人独立标注 + 集中仲裁;未仲裁的时间边界以 0.5 显式表达不确定性
手术阶段 1 名医生 + 1 名眼科护士 临床执业者 双人协同逐帧标注
像素掩码 内部标注团队 受临床指南培训 100% 二人复核 + 临床团队分歧裁定 + 像素级边界检查

数据集官方未发布量化标注者间一致性系数(如 Cohen’s κ);2017 挑战论文转而将"算法标注 vs 人工标注"与"人工 vs 人工"进行了对比分析,结论为自动标注几乎与人工标注同等准确。这一替代论证有其说服力,但也意味着两点残余不确定性无法量化:双人标注在"器械身份"上的一致率,以及双人标注在"接触时刻"上的一致区间。对于以标注质量为论文核心主张的研究,建议在自用子集(如 3-5 台手术)上做一次双人复标实验,自行报告 κ 值。

§3.7 采集周期

全部 50 台手术在 2015 年 1 月 22 日至 2015 年 9 月 10 日之间连续采集,时间跨度约 8 个月,设备与流程稳定,属单中心连续病例序列。数据 2017 年 4 月 1 日随挑战赛发布,IEEE DataPort 归档页最后更新于 2021 年 4 月 22 日。

连续采集(而非按难度或术式抽样)是这个窗口期的重要属性:队列的术式构成反映真实临床比例,长尾变体(缝合、玻切介入)的出现频率即是其在真实实践中的频率,建模时应保留这种自然分布而非人为平衡。

§3.8 地域覆盖

单中心:法国布列塔尼大区布雷斯特市,布雷斯特大学医院(CHRU Brest)眼科。数据集代表法国西部区域三级医院的白内障手术实践,无多中心、多国家覆盖。

对泛化叙事的含义:任何"在欧洲社区医院条件下"的表述都应收敛为"在一家法国大学医院条件下";把单中心结果泛化为国家或区域水平缺乏证据支撑。

§3.9 设备规格

组件 设备 关键参数
手术显微镜 Carl Zeiss Meditec OPMI Lumera T(德国耶拿) 眼科显微手术专用主镜
采集相机 Toshiba 180I(日本东京) 显微镜分光口输出
录像机 MediCap USB200(MediCapture,美国) 1920×1080 录制
帧率 显微镜约 30 fps / 托盘约 50 fps 论文措辞为 approximately

注意官方对帧率的措辞是"约":录制链路存在丢帧或可变帧率的可能,依赖精确时间戳的应用(如与外部传感器对齐)应以实际文件的元数据为准,不要直接假设 30.00 fps。

§3.10 深度溯源链

层级 溯源
采集 CHRU Brest 眼科手术室,2015-01-22 至 2015-09-10,知情同意齐备
组织/发布 LaTIM / Inserm UMR 1101(Gwenolé Quellec 团队)组织 CATARACTS2017 挑战,2017-04-01 发布
学术确认 Medical Image Analysis 2019;52:24-41(DOI 10.1016/j.media.2018.11.008,PMID 30468970)
归档 IEEE DataPort 开放获取(DOI 10.21227/ac97-8m18,2021-04-22 更新)
衍生 2020 EndoVis 语义分割集(arXiv:2110.10965);OpenMIBOOD 清洗子集(Zenodo DOI 10.5281/zenodo.14924735)

§4 数据结构

§4.0 目录树

IEEE DataPort 发布包解压后的典型结构如下(文件名以官方发布页清单为准):

cataracts/
├── Videos/                          # 117.8 GB,双路视频
│   ├── microscope/                  # 显微镜视频(tool-tissue interaction)
│   │   ├── test01.mp4               # 测试集视频(test01...test25)
│   │   ├── ...
│   │   └── train25.mp4              # 训练集视频(train01...train25)
│   └── tray/                        # 器械托盘视频(同步录制,约 50 fps)
│       ├── test01.mp4
│       └── ...
├── CATARACTS2018_images/            # 691.2 GB,2018 挑战抽帧图像包
│   ├── train/                       # 训练集图像序列(每视频一目录)
│   └── test/
├── ground_truth.zip                 # 18.55 MB,挑战标注
│   ├── tool_presence/               # 21 类器械逐帧标注(CSV)
│   │   ├── test01.csv               # 首行工具名表头;逐帧 21 列,值 0/0.5/1
│   │   └── ...
│   └── phase/                       # 2020 版 18+1 类手术阶段逐帧标注(CSV)
├── evaluation_scripts.zip           # 7.84 KB
│   ├── evaluate_cataracts2017.py    # 2017 官方评测(21 类平均 ROC AUC)
│   ├── evaluate_cataracts2018_images.py
│   ├── evaluate_cataracts2018_videos.py
│   └── evaluation_cataracts2020.py

器械标注 CSV 的内容形态(示意,表头顺序与官方图 1 一致):

frame_id,biomarker,charleux_cannula,hydrodissection_cannula,...,vannas_scissors
1,0,0,0,...,0
2,0,0,0,...,0
3,0,1,0,...,0        # 1 = 两人一致:该帧 Charleux 套管在使用中
...

§4.1 DAIMS 字段字典

核心标注表(器械标注 CSV,每视频一文件):

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
frame_id 整数 帧序号(1 起,与视频帧对齐) 127 时间对齐主键 不适用 ≥ 1
biomarker 浮点/标签 器械 1 使用置信度 1 多标签目标 时间边界未仲裁 0.5 = 专家分歧
phacoemulsifier_handpiece 浮点/标签 器械 13 使用置信度 0.5 多标签目标(高频类) 同上 0.5 = 专家分歧
micromanipulator 浮点/标签 器械 18 使用置信度 1 多标签目标(与超声手柄强共现) 同上 0.5 = 专家分歧
(共 21 列工具列) 浮点/标签 表头给出与官方图 1 一致的工具顺序 多标签输出层 同上 0.5 = 专家分歧
video_id 字符串 视频文件名标识 test01 分组/划分键 不适用 train01-25 / test01-25

阶段标注表(2020 版):

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
frame_id 整数 帧序号 5,240 时间对齐主键 不适用 ≥ 1
phase_id 整数/标签 手术阶段编号 8(Phacoemulsification) 时序分类目标 人工主观边界 无显式编码
phase_name 字符串 阶段英文名 Capsulorhexis 可读化/调试 不适用 18 个枚举值 + idle

§4.2 标签分布与共现

  • 共现结构:官方论文的弦图(chord diagram)显示,超声乳化手柄(phacoemulsifier handpiece)出现于约 74,000 帧,且其中 78.5% 的帧与微操作器(micromanipulator)同时使用——两者共同构成超声乳化阶段的核心器械组合。
  • 并发上限:任一帧最多 3 件器械同时使用(术者双手各 1 件 + 助手 1 件),这决定了多标签 sigmoid 输出设计(而非互斥 softmax)。
  • 阶段分布:白内障手术高度标准化,Irrigation/Aspiration、Phacoemulsification、Capsulorhexis 等核心阶段在每台手术中几乎必然出现且时长占比高;Toric Marking、Implant Ejection、Vitrectomy、Suturing 等阶段仅出现于特定术式变体(散光矫正型人工晶体、玻璃体切除、缝合等),属天然长尾类。官方未公布逐阶段帧数统计,使用前建议在自己的副本上先做分布盘点。

21 类器械官方清单(表头顺序即官方图 1 顺序,提交结果时列序必须一致):

# 英文名 中文对照 典型出现阶段
1 biomarker 角膜标记器 Toric Marking(散光标记)
2 Charleux cannula Charleux 套管 切口水化/封闭
3 hydrodissection cannula 水分离套管 Hydrodissection
4 Rycroft cannula Rycroft 套管 灌注/冲洗辅助
5 viscoelastic cannula 黏弹剂套管 Viscodilatation / Preparing Implant
6 cotton 棉签 术区清理
7 capsulorhexis cystotome 撕囊针 Capsulorhexis 起瓣
8 Bonn forceps Bonn 镊 Capsulorhexis
9 capsulorhexis forceps 撕囊镊 Capsulorhexis
10 Troutman forceps Troutman 镊 切口/组织操作
11 needle holder 持针器 Suturing
12 irrigation/aspiration handpiece 灌注/抽吸手柄 Irrigation/Aspiration、Manual Aspiration
13 phacoemulsifier handpiece 超声乳化手柄 Phacoemulsification、Nucleus Breaking
14 vitrectomy handpiece 玻璃体切除手柄 Vitrectomy
15 implant injector 人工晶体推注器 Implant Ejection、Implantation
16 primary incision knife 主切口刀 Incision
17 secondary incision knife 侧切口刀 Incision
18 micromanipulator 微操作器(第二器械) Phacoemulsification 等(与超声手柄强共现)
19 suture needle 缝针 Suturing
20 Mendez ring Mendez 环(角膜标记环) Toric Marking
21 Vannas scissors Vannas 剪 精细剪除操作

§4.3 关键统计

| 统计项 | 数值 |
|—|—|| 手术总数 | 50 台 |
| 显微镜视频总时长 | > 9 小时(平均 10 分 56 秒/台) |
| 托盘视频总时长 | > 9 小时(平均 11 分 03 秒/台) |
| 视频时长范围 | 6 分 23 秒 至 40 分 34 秒 |
| 器械类别数 | 21 |
| 阶段类别数 | 18 + idle(2020 版另定义 20 类活动) |
| 单帧最大并发器械数 | 3 |
| 参与挑战队伍数(2017) | 14 |

§4.4 数据层级

患者(Patient,50 名,每人 1 台手术)
└── 手术(Surgery,50 台)
    └── 视频流(Video Stream,显微镜 + 托盘两路)
        └── 帧(Frame,约 30 fps,逐帧标注)
            ├── 器械使用向量(21 维,值域 0/0.5/1)
            └── 手术阶段标签(2020 版,18+1 类)

患者层与手术层一一对应(每台手术一名患者),不存在跨手术的患者复用,这是构造患者级交叉验证时的重要事实。层级设计的两个推论:第一,任何按帧聚合的特征(如阶段时长)在统计上都只有 50 个独立样本,切忌把帧当独立样本做显著性检验;第二,两路视频流属于同一手术层,双流模型的验证切分必须以手术为单位,避免"显微镜流进训练集、托盘流进测试集"的伪泛化。

§4.5 缺失值与信息性编码

现象 编码/表现 处理建议
专家标注分歧 器械列取 0.5 训练时视作软标签(0.5 直接作目标)或过滤;评测必须按官方脚本忽略
时间边界不确定 器械切换帧附近 ± 数帧的标签漂移 训练引入标签平滑;评估关注 AUC 而非逐帧二值准确率
非适用器械 器械整段为 0(如无缝合则 suture needle 恒 0) 属真实阴性而非缺失,勿做插补
阶段未披露分布 官方未发布逐阶段帧数统计 使用前自查分布,长尾类考虑分组报告

理解这张表的钥匙是把"缺失"分成两类:机制性缺失(官方设计如此,如像素掩码只覆盖衍生子集)与信息性编码(0.5 分歧帧,是"知道两人不一致"这一信息的载体)。前者需要在使用说明中显式声明适用范围,后者则是可以进入损失函数与评测协议的有效信号——把它们混淆(比如把 0.5 插补成 0 或 1)是该数据集最常见的错误用法。


§5 划分与使用建议

§5.1 官方划分

  • 器械存在检测(2017/2018):train 25 台 / test 25 台,训练集附 21 类器械标注,测试集标注挑战结束后随归档公开。提交格式为每个测试视频一个 CSV(frame_id + 21 列置信度)。
  • 活动识别(2020):train 25 台 / dev 5 台 / test 20 台(Synapse syn21680292)。dev 集用于模型选择,测试集评测在线识别性能。

两套划分的关系是"同一批 50 台手术、两种切法",官方文档未提供手术 ID 到两套划分的交叉对照表——这本身就是需要使用者自行建立的第一张内部映射表(见坑点 2)。

§5.2 社区惯例划分

  • 复现阶段识别研究普遍沿用 2020 的 25/5/20 划分;1 fps 抽帧后三个子集分别约 66k / 3.5k / 11.8k 帧(公开工作采用的口径)。
  • 也有工作在 2017 的 25/25 器械划分上做 5 折患者级交叉验证(仅用训练 25 台),以在无验证集的官方结构下做模型选择。
  • 弱监督研究常将步骤标注经"5 phases + 19 steps"本体映射自动展开为帧级阶段弱标签,仅保留少量全监督视频,形成混合监督训练集。

§5.3 划分策略与泄漏风险

  • 两套划分不可混用:2017 的测试 25 台与 2020 的测试 20 台是不同集合(2020 从 50 台中划出 5 台做 dev)。若用 2017 划分预训练、再在 2020 划分上微调评测,必须检查同一台手术是否同时出现在某次运行的训练与测试侧,否则测试指标虚高。
  • 患者级切分即手术级切分:患者与手术一一对应,按视频划分即满足患者无重叠,无须额外去重。
  • 术者分布极不均衡:48/50 台手术出自同一位专家,任何"按术者分集"的泛化实验事实上退化为单术者内插;跨术者泛化只能用仅有的 2 台非专家手术做定性案例分析,无法做统计检验。
  • 时间序列切分不可行:单台手术内部帧高度自相关,禁止按帧随机划分训练/测试;必须整台手术为单位切分。

§5.4 交叉验证建议

在 25 台训练集上做 5 折(每折 5 台)患者级交叉验证进行超参选择,最终按官方划分训练一次提交评测;阶段识别可在 dev 5 台上做早停与模型选择,避免触碰测试集。

§5.5 外部验证建议

  • 用 2020 语义分割衍生集或 OpenMIBOOD 清洗子集(前 5 台测试视频、已去黑帧)做分布偏移下的二次评估。
  • 跨中心验证需引入外部白内障视频(如其他中心的私有数据或后续公开数据集),重点报告阶段边界的 Jaccard 与器械 AUC 的相对衰减,作为部署风险评估依据。

§5.6 划分决策速查

你要做的事 用哪套划分 注意
复现 2017 排行榜成绩 器械检测 25/25 + 官方评测脚本 忽略 0.5 帧(坑点 1)
训练阶段识别模型 2020 的 25/5/20 dev 5 台只做模型选择(坑点 2)
预训练(自监督/弱监督) 可用全部 50 台 微调评测时剔除测试视频
跨术式泛化实验 外部数据集(Cholec80 等) 以手术为单位切分

§6 AI 就绪指南

§6.0 云端快速启动

CATARACTS 没有官方 Kaggle/HuggingFace 镜像,117.8 GB 的体量也不适合 Colab 免费实例(磁盘与下载时长均不现实)。推荐路径:在工作站/服务器上从 IEEE DataPort 注册下载,或用 CATARACTS2018 页面提供的 torrent 链接(推荐 BitTorrent、rtorrent、Transmission 客户端)在多机之间分发。小规模试验可先用 Zenodo 上的 OpenMIBOOD 清洗子集(29.6 GB,前 5 台测试视频)。

带宽规划参考:全量 Videos(117.8 GB)在 100 Mbps 内网下约需 3 小时;若团队多人共用副本,torrent 方式可显著节省外网带宽。下载完成后先核对 MP4 数量与 ground_truth.zip 大小,再做任何预处理投入。

§6.1 快速上手

预期目录结构:data_root 指向下述根目录;视频在 data_root/Videos/microscope/,器械标注在 data_root/ground_truth/tool_presence/,阶段标注在 data_root/ground_truth/phase/。最小可用子集 = 任意 1 台训练视频 + 其对应器械 CSV(约 20,000 帧,1-2 GB 解码缓存),可在单卡上完成管道验证后再扩展到全量。

# 目录结构预期(data_root = /data/cataracts):
# /data/cataracts/Videos/microscope/train01.mp4      ← 显微镜视频(约 30 fps, 1920x1080)
# /data/cataracts/ground_truth/tool_presence/train01.csv  ← 首行工具名表头,逐帧 21 列,值 0/0.5/1
# data_root 拼接关系:f"{data_root}/Videos/microscope/{video_id}.mp4"
#                    f"{data_root}/ground_truth/tool_presence/{video_id}.csv"
# 最小可用子集:先跑通 train01 单视频,再扩展到官方 25/25 或 25/5/20 划分。

import pandas as pd

DATA_ROOT = "/data/cataracts"

def load_tool_labels(video_id: str) -> pd.DataFrame:
    """读取一台手术的器械标注。首行为工具名表头,无索引列。"""
    csv_path = f"{DATA_ROOT}/ground_truth/tool_presence/{video_id}.csv"
    df = pd.read_csv(csv_path)
    df.columns = [c.strip() for c in df.columns]          # 表头含工具名
    df = df.rename(columns={df.columns[0]: "frame_id"})   # 首列 frame_id
    return df

labels = load_tool_labels("train01")
print(labels.shape)        # (帧数, 22):frame_id + 21 列工具
print(labels.iloc[:, 1:].apply(pd.Series.value_counts).loc[[0.5]])
# 0.5 的数量 = 每件工具被专家分歧标注的帧数,先盘点再决定过滤或软标签策略

阶段标注(2020 版)的读取方式相同,只是目标列为单个阶段 ID:

# 阶段标注读取:逐帧单标签(18 个命名阶段 + idle),映射到 1 fps 抽帧序列
def load_phase_labels(video_id: str) -> pd.DataFrame:
    csv_path = f"{DATA_ROOT}/ground_truth/phase/{video_id}.csv"
    df = pd.read_csv(csv_path)
    first_col = df.columns[0]                  # 首列为 frame_id
    return df.rename(columns={first_col: "frame_id"})

# 与 §6.3 的 extract_frames 对齐后,直接得到 (帧, phase_id) 时序,
# 即可套用 TeCNO/TCN 类模型的监督训练;注意在线协议要求因果输入(坑点 8)。

§6.2 数据获取

步骤 操作 说明
1 注册 IEEE DataPort 账号 免费注册;企业邮箱更易通过
2 访问 https://ieee-dataport.org/open-access/cataracts 开放获取数据集页(DOI 10.21227/ac97-8m18)
3 按需下载 Videos(117.8 GB)/ ground_truth.zip(18.55 MB)/ evaluation_scripts.zip(7.84 KB) 2018 图像包 691.2 GB 视存储情况选装
4 备选:CATARACTS2018 官网 torrent 下载 支持 BitTorrent / rtorrent / Transmission,下载后请持续做种
5 校验与引用 基于数据的发表必须引用 MedIA 2019 论文;禁止商业用途

合规自查清单(下载后、开跑前逐项确认):

  • 确认使用场景为非商业研究与教学(官方条款明文禁止商业用途);
  • 论文/报告草稿中已列入 MedIA 2019 引用;
  • 数据存储位置访问受控,不再分发原始视频(对外分享请引导对方自行从官方渠道下载);
  • 衍生数据集(如抽帧缓存、清洗子集)继承原始条款并注明来源 DOI。
# 示例:下载后解压与校验
unzip ground_truth.zip -d /data/cataracts/ground_truth
unzip evaluation_scripts.zip -d /data/cataracts/eval
find /data/cataracts/Videos -name "*.mp4" | wc -l   # 应为 100(50 台 × 2 路)

§6.3 预处理全流程

关键决策:视频约 30 fps、平均 11 分钟,直接全帧训练不可行。社区标准做法是 1 fps(或 0.5 fps)均匀抽帧,再缩放到骨干网络输入分辨率。以下脚本实现"抽帧 → 缩放 → 标签对齐 → 缓存"全流程:

# 预处理:30 fps 视频 → 1 fps 抽帧 → 224x224 → 与逐帧标签对齐
import cv2
import numpy as np

def extract_frames(video_path: str, fps_target: float = 1.0,
                   size: int = 224) -> tuple[np.ndarray, np.ndarray]:
    """返回 (frames[N,H,W,3] uint8, src_frame_ids[N])。
    src_frame_ids 保留原视频帧号,用于与 CSV 的 frame_id 对齐。"""
    cap = cv2.VideoCapture(video_path)
    fps_src = cap.get(cv2.CAP_PROP_FPS)               # 约 30(托盘视频约 50)
    step = max(1, int(round(fps_src / fps_target)))
    frames, ids = [], []
    i = 0
    while True:
        ok, frame = cap.read()
        if not ok:
            break
        if i % step == 0:
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            frame = cv2.resize(frame, (size, size), interpolation=cv2.INTER_AREA)
            frames.append(frame)
            ids.append(i + 1)                          # CSV frame_id 从 1 起
        i += 1
    cap.release()
    return np.stack(frames), np.array(ids)

frames, ids = extract_frames(f"{DATA_ROOT}/Videos/microscope/train01.mp4")
lab = load_tool_labels("train01")
sub = lab[lab["frame_id"].isin(set(ids.tolist()))]     # 对齐后丢失的 CSV 行 = 未抽到的帧
print(frames.shape, sub.shape)

黑帧检测与清除(对应坑点 5):

def is_black(frame: np.ndarray, thresh: float = 5.0) -> bool:
    """帧亮度均值低于阈值判定为黑帧(视频开头/收尾常见)。"""
    return float(frame.mean()) < thresh

def trim_black_edges(frames: np.ndarray) -> np.ndarray:
    """去除序列首尾的连续黑帧,保留中间内容。"""
    start = 0
    while start < len(frames) and is_black(frames[start]):
        start += 1
    end = len(frames)
    while end > start and is_black(frames[end - 1]):
        end -= 1
    return frames[start:end]

清洗规则(与 §6.5 坑点 5 呼应):丢弃开头/结尾的纯黑帧(亮度阈值判定),保留中间内容帧;托盘视频与显微镜视频帧率不同,禁止用同一抽帧参数直接混用两路标签。

§6.4 PyTorch DataLoader

# 完整可运行示例:器械存在检测的 Dataset + DataLoader
# 依赖:torch >= 2.0, pandas, cv2, numpy;假定 §6.3 的抽帧缓存已生成
import torch
from torch.utils.data import Dataset, DataLoader
import pandas as pd

class CATARACTSToolDataset(Dataset):
    """读取 §6.3 生成的抽帧缓存 + 器械 CSV。
    cache_dir 下每台手术一个 .npz(frames[N,224,224,3] uint8, frame_ids[N])。
    labels_mode:
      - "hard"    : 丢弃 0.5 分歧帧,标签 {0,1}
      - "soft"    : 保留 0.5 作为软标签(BCEWithLogitsLoss 可直接消费)
    """
    def __init__(self, video_ids, cache_dir, gt_dir, labels_mode="soft",
                 subset_cols=None):
        self.video_ids = video_ids
        self.cache_dir, self.gt_dir = cache_dir, gt_dir
        self.labels_mode = labels_mode
        self.index = []                                   # (video_id, 行号)
        self.tool_tables = {}
        for vid in video_ids:
            lab = pd.read_csv(f"{gt_dir}/{vid}.csv")
            lab = lab.rename(columns={lab.columns[0]: "frame_id"})
            if labels_mode == "hard":
                lab = lab[(lab.iloc[:, 1:] != 0.5).all(axis=1)]
            self.tool_tables[vid] = lab
            self.index += [(vid, r) for r in range(len(lab))]
        self.cols = subset_cols or list(lab.columns[1:21])  # 21 类工具列

    def __len__(self):
        return len(self.index)

    def __getitem__(self, idx):
        vid, row = self.index[idx]
        z = np.load(f"{self.cache_dir}/{vid}.npz")
        local = int(self.tool_tables[vid].iloc[row]["frame_id"])
        pos = int(np.searchsorted(z["frame_ids"], local))
        img = torch.from_numpy(z["frames"][pos]).permute(2, 0, 1).float() / 255.0
        y = torch.tensor(
            self.tool_tables[vid].iloc[row][self.cols].to_numpy(dtype=np.float32))
        return img, y

train_ids = [f"train{i:02d}" for i in range(1, 26)]
train_ds = CATARACTSToolDataset(train_ids, "/data/cataracts/cache",
                                "/data/cataracts/ground_truth/tool_presence",
                                labels_mode="soft")
train_loader = DataLoader(train_ds, batch_size=64, shuffle=True,
                          num_workers=8, pin_memory=True, drop_last=True)

model = torch.nn.Sequential(                                # 玩具骨干,替换为 ResNet/ViT
    torch.nn.Conv2d(3, 32, 3, stride=2, padding=1), torch.nn.ReLU(),
    torch.nn.AdaptiveAvgPool2d(1), torch.nn.Flatten(),
    torch.nn.Linear(32, 21),
)
criterion = torch.nn.BCEWithLogitsLoss()                    # 多标签:逐工具独立 sigmoid
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)
for imgs, ys in train_loader:                               # 训练循环骨架
    loss = criterion(model(imgs), ys)
    loss.backward(); optimizer.step(); optimizer.zero_grad()
    break

运行要点:

  1. 先小后大:用 1-2 台手术验证 Dataset/标签对齐无误(打印若干帧与标签目检),再扩展到官方 25 台训练集。
  2. 帧号对齐是第一风险点:若抽帧缓存与 CSV 行号错位,训练会静默失败(loss 正常下降但指标崩溃)——务必在 Dataset 里用 frame_ids 数组按值查找(如上例的 searchsorted),不要按数组下标假设对齐。
  3. 软标签直通BCEWithLogitsLoss 接受 0-1 之间的浮点目标,0.5 可直接作为目标值,无需任何特殊处理。
  4. 正负样本比:多数帧多数工具为 0(负类占绝对多数),可加 pos_weight(按类统计后设为负正比)平衡梯度。
  5. DataLoader 安全性num_workers > 0 时 npz 随机读取需保证文件句柄按 worker 独立打开(上例每次 __getitem__ 打开一次,安全但偏慢;优化时改为 worker 初始化时缓存句柄表)。

§6.5 坑点 8 个

⚠️ 坑点 1:把 0.5 分歧帧当普通标签训练/评测(分类:标签理解)

问题:器械参考标准是概率化的——两名专家判断不一致的帧被记为 0.5,且这些帧在官方 ROC 评测中被显式忽略。直接把 0.5 当硬标签(四舍五入或丢弃不一致帧以外的处理混乱)会系统性污染训练目标,评测时把 0.5 帧计入会显著压低 AUC。
症状:自建逐帧准确率远低于官方排行榜水平;或训练损失在器械切换边界附近长期震荡。
解决

  1. 简单方法:训练用 “hard” 模式直接丢弃含 0.5 的帧;评测完全复用官方 evaluate_cataracts2017.py(其内部忽略 0.5 帧)。
  2. 进阶方法:训练用 “soft” 模式,0.5 作为软标签直接喂 BCEWithLogitsLoss(见 §6.4 代码),让模型表达边界不确定性。
  3. SOTA 方法:对器械切换边界 ±2 帧额外做标签平滑或高斯软化,显式建模仲裁未覆盖的时间不确定性。
    参考https://cataracts.grand-challenge.org/Data (参考标准定义);https://cataracts.grand-challenge.org/Evaluation/ (评测忽略 0.5 帧)

⚠️ 坑点 2:2017 划分与 2020 划分混用造成测试泄漏(分类:数据泄漏)

问题:数据集存在两套官方划分——器械检测 25/25,活动识别 25/5/20。同一台手术在两套划分中的角色不同;若先用 2017 划分训练、再在 2020 测试集上评测(或反之),部分手术可能同时出现在训练与测试侧。
症状:阶段识别测试指标高得反常(Jaccard 比文献高 10 个点以上),审稿人要求核对划分时无法自洽。
解决

  1. 简单方法:项目启动时固定一套划分写入配置文件,全仓库只引用这套配置。
  2. 进阶方法:维护 video_id → (split_2017, split_2020) 映射表;任何跨版本预训练实验,先对两套划分求交集并从预训练侧剔除测试视频。
  3. SOTA 方法:预训练阶段用全部 50 台视频的自监督任务(无标签),微调与评测严格回到单一官方划分,并在论文中显式声明。
    参考https://ieee-dataport.org/open-access/cataracts (两套划分并存);https://arxiv.org/abs/2302.10834 (25/5/20 划分出处)

⚠️ 坑点 3:把多标签任务当互斥多类分类(分类:评估误用)

问题:一帧最多可同时使用 3 件器械,本质是多标签问题。2017 挑战中的 LCCV-Cataract 队把任务改造成 22 类互斥分类(21 器械 + 无器械),训练时丢弃了全部多器械帧,最终以 0.8248 在 14 支队伍中排名第 13(冠军 0.9971)。
症状:训练集"干净"但验证 AUC 上不去;推理时单帧只能输出一件器械,术者双手操作场景全错。
解决

  1. 简单方法:21 维 sigmoid 输出 + BCEWithLogitsLoss,不做 softmax。
  2. 进阶方法:建模共现先验(如超声手柄 78.5% 帧与微操作器共现)作为结构化输出约束或后处理校正。
  3. SOTA 方法:多标签头 + 时间一致性正则(相邻帧器械切换应有代价),参考 2017 冠军方案 CNN 集成 + 时序后处理的组合思路。
    参考:Al Hajj et al., Medical Image Analysis 2019;52:24-41(队伍方案差异分析)

⚠️ 坑点 4:忽视器械使用时间边界的系统性不确定(分类:标签理解)

问题:官方仲裁只裁定"用的是什么器械",不裁定"精确从哪一帧开始接触眼球"。器械切入/离开视野的若干帧内,标签存在固有的 ± 数帧漂移;论文明确提示使用者必须考虑这一不确定性。
症状:模型预测的概率曲线平滑、看似"滞后"于硬标签;用逐帧二值准确率评估时永远卡在某个平庸水平。
解决

  1. 简单方法:放弃逐帧准确率,统一用 ROC AUC(官方指标)或容忍 ±1 秒的窗口化 F1。
  2. 进阶方法:训练时对标签做时间维高斯平滑(σ ≈ 0.5-1 秒),匹配标注的时间分辨率。
  3. SOTA 方法:改用段级(segment-level)评测——先预测器械使用区间再与参考区间比对编辑代价,规避帧级对齐敏感度。
    参考https://cataracts.grand-challenge.org/Data (未仲裁说明);https://arxiv.org/abs/2109.15063 (时间不确定性讨论)

⚠️ 坑点 5:视频开头黑帧与时长极端值破坏批处理(分类:预处理陷阱)

问题:部分视频开头存在纯黑帧(后续衍生数据集专门做过黑帧清洗);同时时长从 6 分 23 秒到 40 分 34 秒跨越 6 倍以上,全帧加载时最长视频直接撑爆显存/内存。
症状:DataLoader 偶发 NaN 损失或全零 batch(黑帧);OOM 报错集中在长视频样本。
解决

  1. 简单方法:抽帧时按帧亮度均值 < 阈值(如 5/255)丢弃黑帧;批内按时间随机截窗固定长度(如 16 帧)。
  2. 进阶方法:离线预抽帧缓存为 .npz/内存映射文件,训练时只随机访问窗口(见 §6.4 的 index 设计)。
  3. SOTA 方法:流式解码(PyAV/Decord 按需 seek)+ 帧索引表,实现零缓存长视频训练。
    参考https://doi.org/10.5281/zenodo.14924735 (黑帧清洗先例);https://ieee-dataport.org/open-access/cataracts (时长统计)

⚠️ 坑点 6:长尾器械与强共现导致评估指标失真(分类:偏倚陷阱)

问题:21 类器械出现频次极度不均——核心器械(超声手柄、灌吸手柄、微操作器)出现数万帧,而 Vannas scissors、Mendez ring 等只在少数术式变体中出现;且超声手柄 78.5% 的帧与微操作器共现。宏平均会被长尾类的高方差主导,微平均又被头部类淹没。
症状:宏 AUC 在不同随机种子间波动巨大;某些工具的 AUC 接近 0.5(随机水平)。
解决

  1. 简单方法:按官方口径只报 21 类平均 AUC,同时附每类 AUC 明细表定位长尾类。
  2. 进阶方法:对稀有类使用加权损失或过采样(按"含该工具的帧"采样而非按帧采样)。
  3. SOTA 方法:把长尾器械合并为"器械组"报告(如按手术流程功能分组),并在分割/阶段任务上交叉验证工具识别的语义一致性。
    参考:Al Hajj et al., Medical Image Analysis 2019(共现弦图与类别分布)

⚠️ 坑点 7:双路视频帧率不同,跨流标签错位(分类:工程陷阱)

问题:显微镜视频约 30 fps、托盘视频约 50 fps,且两路时长统计略有差异(10:56 vs 11:03)。想联合建模两路视频时,若用同一抽帧步长或假设时间戳一一对应,会造成标签与画面错位。
症状:托盘侧模型用显微镜侧标签训练后 AUC 异常低;双流融合模型的收敛劣于单流。
解决

  1. 简单方法:两路视频分别按各自 fps 抽帧,标签只挂在显微镜流,托盘流作为辅助模态自监督学习。
  2. 进阶方法:按视频时间戳(秒)重采样两路到统一时间网格(如 1 fps)再融合。
  3. SOTA 方法:双流网络各自编码 + 时间戳对齐的交叉注意力融合,对齐误差在损失中显式惩罚。
    参考https://ieee-dataport.org/open-access/cataracts (双路规格);https://arxiv.org/abs/2109.15063 (视频以图像序列组织的说明)

⚠️ 坑点 8:用离线协议评测在线系统(分类:评估误用)

问题:CATARACTS2020 明确定义在线(online)工作流识别:算法在时刻 t 只能使用当前及历史帧。若用双向模型(ViT/Transformer 全序列自注意力)离线训练后直接报告指标,与在线协议不可比,无法支撑实时手术室的部署叙事。
症状:论文宣称可实时部署,但评测用的是整个视频的双向编码;复现者在在线约束下性能大幅下降。
解决

  1. 简单方法:因果化输入——滑窗(如过去 10 秒)+ 因果时序模块(TCN/因果 LSTM)。
  2. 进阶方法:训练时对历史特征做缓存前馈(如 SS-TCN 的特征缓冲设计),推理严格单向前传。
  3. SOTA 方法:同时报告 offline 与 online 两套指标并注明延迟(帧/秒),对齐 CATARACTS2020 的协议定义。
    参考https://zenodo.org/records/3715645 (EndoVis 2020 在线任务定义);https://arxiv.org/abs/2302.10834 (在线时序卷积实现)

坑点地图(按工程流程定位):选版本与划分 → 坑点 2;读取标注 → 坑点 1、4;预处理与批处理 → 坑点 5、7;模型设计 → 坑点 3;评测与部署叙事 → 坑点 6、8。建议新团队在项目启动会上过一遍这 8 条,把每条对应的检查动作写进代码评审清单。

§6.6 数据增强

增强策略的设计前提:CATARACTS 的标签在时间轴上与帧绑定,任何增强都不应改变帧的语义归属;下表按"空间/色彩/时间"三类给出安全与危险操作的判定。

类别 操作 判定
空间 随机裁剪(1920→288/299/224 输入尺寸内)、轻微旋转(±10°)、亮度/对比度抖动 ✅ 模拟显微镜视野变化与光照波动,2017 参赛方案普遍使用
空间 水平翻转 ⚠️ 谨慎:显微镜视野存在左右手器械位置先验,翻转后共现结构可能失真,需实验验证
色彩 色调/饱和度小幅度扰动 ✅ 不同滤光片与白平衡差异的合理代理
时间 时间加速/减速 ❌ 阶段与器械使用时长是临床属性,变速破坏标签对齐
时间 帧丢弃/时间抖动(±1 帧) ✅ 在坑点 4 的时间不确定性容差内,可提升鲁棒性
混合 帧级随机擦除/遮挡 ⚠️ 谨慎:可能遮挡器械本体,造成"工具在场却看不见"的错误监督信号

增强实施的两个原则:所有空间增强必须同步作用于训练标签之外的输入流(标签在帧级 CSV 中,天然与增强无关);任何改变帧内容语义的增强(如强色彩反转)都应先在小样本上人工目检 20-30 帧再决定是否入库。

§6.7 模型推荐

模型/范式 适配任务 输入 要点
ResNet/VGG 系 + 多标签头 器械存在检测 单帧 288-299 px 2017 挑战主力范式,冠军为 CNN 集成;宏 AUC > 0.99 可期
CNN + TCN(TeCNO 式) 阶段识别 1 fps 抽帧 在线友好、训练稳定,是阶段识别的强基线
CNN + LSTM/GRU + CRF 阶段/步骤识别 短滑窗 捕捉阶段转移先验,适合在线协议
时序卷积 + 依赖损失(SS-TCN 式) 弱监督步骤识别 1 fps 抽帧 利用阶段→步骤本体映射做弱监督
ViT/Swin + 因果时序头 器械 + 阶段联合 滑窗 注意坑点 8:在线评测需因果化
U-Net/DeepLab 系 场景语义分割 2020 衍生集 36 类 像素掩码齐全,可直接迁移分割预训练权重

选型补充:2017 冠军 DResSys 与多数 Top5 方案都采用"CNN 基础模型 + 时序模块"的两段式架构,说明在 50 台手术的规模下,精心设计的时序后处理比更换骨干网络的收益更稳定;Transformer 类骨架在如此小的手术量上容易过拟合,若使用需配合强增强与预训练权重冻结策略。

§6.8 硬件需求

场景 GPU 显存 内存 磁盘 说明
单视频管道验证(1 fps 抽帧,224 px) ≥ 8 GB 16 GB 50 GB 建议起步配置
器械检测全量训练(1 fps,ResNet-50) ≥ 16 GB 32 GB 300 GB(含缓存) 25 台训练视频约 66k 帧
阶段识别全量训练(滑窗时序模型) ≥ 24 GB 64 GB 500 GB 时序缓存体量为主
2018 图像包全量实验 ≥ 24 GB 64 GB ≥ 1.5 TB 图像包本体 691.2 GB

配置的逻辑:瓶颈先是磁盘与解码带宽,其次才是 GPU。117.8 GB 视频解压后建议保留压缩包原档(torrent 做种需要),抽帧缓存单独建目录并纳入备份策略;若使用 NVMe 存放缓存、机械盘存放原档,训练吞吐通常可提升 2-3 倍。

§6.9 评估指标代码

官方口径优先:器械任务的全部结论都应基于下方 official_macro_auc 的输出(与 evaluate_cataracts2017.py 对齐),自定义指标仅作补充分析。

# 官方口径评测:21 类平均 ROC AUC(忽略 0.5 分歧帧),与 evaluate_cataracts2017.py 对齐
import numpy as np
from sklearn.metrics import roc_auc_score

def official_macro_auc(y_true: np.ndarray, y_score: np.ndarray) -> float:
    """y_true/y_score: [N, 21]。y_true 取值 {0, 0.5, 1};0.5 帧逐类剔除。
    另附逐类 AUC 与 0.5 帧占比,用于长尾诊断(坑点 6)。"""
    aucs = {}
    for t in range(y_true.shape[1]):
        keep = y_true[:, t] != 0.5
        if len(np.unique(y_true[keep, t])) < 2:
            aucs[t] = np.nan                       # 该工具在剔除后无正/负样本
            continue
        aucs[t] = roc_auc_score(y_true[keep, t], y_score[keep, t])
    valid = [v for v in aucs.values() if not np.isnan(v)]
    detail = {f"tool_{t:02d}": (round(v, 4) if not np.isnan(v) else None)
              for t, v in aucs.items()}
    return float(np.mean(valid)), detail

# 阶段识别补充指标(社区惯例):帧级准确率 + 逐类 Jaccard
def phase_metrics(y_true: np.ndarray, y_pred: np.ndarray, n_classes: int = 19):
    acc = float((y_true == y_pred).mean())
    jac = {}
    for c in range(n_classes):
        inter = np.sum((y_true == c) & (y_pred == c))
        union = np.sum((y_true == c) | (y_pred == c))
        jac[c] = float(inter / union) if union else np.nan
    return acc, jac

指标选择的立场声明:器械任务用官方 ROC AUC 是唯一能与 2017 排行榜对话的口径;阶段任务同时报告帧级准确率与逐类 Jaccard,并注明评测是 offline 还是 online(坑点 8)——文献中两种口径的差异足以淹没模型间差异。若做段级(segment-level)评估(编辑距离、区间 F1),必须在论文中单独成表,不与帧级指标混排。

§6.10 MLOps 笔记

  • 数据版本化:以 IEEE DataPort 归档(DOI 10.21227/ac97-8m18,2021-04-22)为不可变基线,划分配置与抽帧缓存的哈希写入实验跟踪(MLflow/W&B),杜绝坑点 2 的划分漂移。
  • 缓存策略:1 fps 抽帧缓存全量约数十 GB,用内存映射(np.memmap/ zarr)+ 帧索引表支撑随机访问;缓存版本与预处理代码版本绑定。
  • 评估自动化:把官方 evaluate_cataracts2017.py 收进 CI,任何模型改动自动产出 21 类 AUC 明细,与排行榜直接可比。
  • 监控:线上部署后监控各阶段时长分布的漂移(医院换设备/术式会立刻体现在阶段时长上),对照 §7.6 的漂移场景设置告警阈值。
  • 复现包:发布模型时附带 video_id 列表 + 划分配置 + 抽帧参数 + 随机种子四件套;CATARACTS 的测试集参考标准已公开,第三方可直接复核你的成绩。
  • 许可闸门:在 CI 中加入使用许可检查——任何对外交付物(论文、产品 demo、模型卡)必须携带非商业声明与 MedIA 2019 引用,防止团队在不知情下违反官方条款。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
单中心偏倚 全部数据来自布雷斯特一家医院,术式流程、器械品牌、手术室规范单一 外部验证(§5.5);结论表述限定"单中心白内障"
术者集中偏倚 48/50 台手术出自同一位知名专家,技能水平与操作习惯高度同质 模型选择时避免把"识别该专家习惯"误当"理解手术"
性别失衡 女性 76%(38/12) 在患者层分析中报告性别分层结果
设备单一偏倚 Zeiss OPMI Lumera T + Toshiba 180I + MediCap USB200 单一套件 跨设备验证;色域/白平衡增强(§6.6)
类别不平衡 器械出现频次悬殊,部分器械仅见于个别术式变体 加权损失/过采样;分组报告(§6.5 坑点 6)
时间边界标注误差 器械接触眼球的精确时刻未仲裁,±数帧漂移 低-中 AUC 评测 + 软标签(§6.5 坑点 1、4)

偏倚表的使用方式:立项时把"严重程度:高"的条目写进研究局限声明;方法设计阶段用"缓解措施"列倒推实验配置(例如存在术者集中偏倚,就应避免把"识别该术者习惯"作为验证指标);论文写作阶段按条目逐一回应审稿人对泛化性的质疑,比事后补充解释更有说服力。

§7.2 标注质量

器械标注采用全量双人独立标注 + 分歧仲裁的强协议,并以 0.5 显式暴露不可仲裁的时间边界,透明度高于多数同类数据集。官方论文的定性结论是"自动标注几乎与人工标注同样准确"(13 支非组织者队伍中多数超过人工对比基线的表现区间)。需要指出的残余风险:其一,"两名非医学专家"的一致性系数未量化披露;其二,2020 阶段标注由医生 + 护士双人完成,但未见逐帧一致性报告。使用时建议对自用子集做一次抽样复标,建立内部一致性基准。

§7.3 泛化性评估

部署场景 失效风险 证据/机制
其他医院/国家白内障手术 单中心 + 单术者主导;术式偏好与器械组合可能不同
不同品牌显微镜/相机 中-高 色彩、视野、光照特性改变;数据集设备单一
非白内障眼科手术(玻切、角膜等) 极高 阶段本体与器械清单均为白内障定制
手术室实时流(在线约束) 2020 协议要求在线识别;离线双向模型直接上线的性能损失见坑点 8
托盘视频流 托盘画面与显微镜画面统计特性差异大,标注仅覆盖显微镜流

读表要点:术式内、跨中心是最现实的部署目标,也是当前证据最薄弱的环节(无公开跨中心结果发表,见 §7.8 矩阵);跨术式迁移不应作为该数据集上的研究主张,阶段本体与器械清单均为白内障定制;离线到在线的衰减由协议决定(2020 明确要求在线识别),评测时必须单独报告 online 口径成绩。

§7.4 伦理与合规

全部患者签署知情同意;视频仅含手术显微镜视野(眼部术区),不包含面部等直接身份特征;标注数据不含姓名、病历号等标识符。许可层面:IEEE DataPort 开放获取发布,官方明确声明禁止商业用途,学术发表必须引用 MedIA 2019 论文。基于该数据训练的临床模型在进入任何前瞻性使用前,需独立通过伦理审查与当地监管要求。

补充说明:数据集描述中"两名非医学专家标注员"的设计意味着标注团队未接触患者临床身份信息,标注环节本身不构成额外的隐私暴露面;再分发视频片段(论文配图、演示截图)时仍应遵循原始许可并避免与患者身份信息(如病历封面)同版发布。

§7.5 公平性

数据集未披露人种/民族、社会经济状态字段,无法做种族公平性分析。已知的可评估公平性维度是性别(76% 女性):建议在阶段时长、器械使用模式的模型误差上做性别分层审计,确认模型未学到与性别相关的伪相关(如术式选择与性别的表面关联)。此外,年龄跨度 23-83 岁提供了天然的年龄分层切片——外伤性白内障的年轻患者手术路径可能与常规老年患者不同,长尾阶段的识别错误是否集中在这些病例上,值得单独审计。

§7.6 数据漂移

数据采集窗口仅 8 个月(2015 年 1-9 月),内部时间漂移可忽略;真正的漂移风险在空间外推:设备换代(4K 显微镜、内置滤光)、术式演进(飞秒激光辅助白内障手术 FAICO 的普及会显著改变撕囊与超声乳化阶段的形态)、器械迭代(预装式推注器替换 Implant injector 类器械)。部署前建议以新手术室的历史视频做阶段时长的分布对比(PSI/KS 检验),超阈值即触发再校准。

§7.7 DAIMS 数据质量评估

以下按 24 项固定检查清单逐项评估(✅ 达标 / ⚠️ 部分达标或需用户自查 / ❌ 缺失):

# 检查项 状态 说明
1 宽格式数据 每视频一个 CSV,逐帧一行、21 工具列,结构扁平
2 唯一标识 video_id + frame_id 构成帧级唯一主键
3 特殊字符处理 工具名表头为 ASCII 命名,CSV 纯数值
4 重复行 帧序号单调递增,无重复记录
5 缺失编码 ⚠️ 无 NaN,但 0.5 是需要特殊处理的编码,易被误当普通数值
6 标签标识 标签语义(器械接触眼球)在官方文档中定义清晰
7 罕见类分组 ⚠️ 官方未提供长尾器械分组方案,需使用者自行定义
8 偏倚评估 ⚠️ 官方披露单中心/术者构成,但无量化偏倚分析
9 数据字典 21 器械清单 + 图 1 顺序 + 标注协议均有官方文档
10 信息性缺失解释 0.5 分歧帧的含义与评测处理方式有明确说明
11 设备记录 显微镜/相机/录像机型号完整披露
12 共线性 ⚠️ 工具共现强(超声手柄 78.5% 帧与微操作器共现),多标签建模需注意
13 编码映射 ⚠️ 2017 的 21 工具序与 2020 的 18+1 阶段本体是两套体系,无官方统一映射表
14 时间戳处理 帧号即时间轴;视频 fps 有官方披露(约 30/约 50)
15 划分建议 两套官方划分 + 评测脚本完整公开
16 泄漏讨论 ⚠️ 官方未讨论双划分混用风险,需使用者自行规避(坑点 2)
17 标签分布 ⚠️ 官方未发布逐类帧数统计,仅弦图展示典型共现
18 测量偏倚 标注协议(双人 + 仲裁 + 未仲裁边界的显式表达)透明
19 外部验证建议 ⚠️ 官方未附外部验证协议;社区有 OOD 子集先例
20 版本记录 三届挑战版本与归档时间线清晰
21 预处理脚本 官方只提供评测脚本,无抽帧/预处理/DataLoader 脚本
22 合规要求 非商业限制 + 强制引用条款在下载页明确声明
23 多模态对齐 ⚠️ 显微镜与托盘双路帧率不同,无官方逐帧对齐表
24 去标识化 术区画面无身份特征,知情同意齐备
DAIMS 评分:18.5 / 24

评分解读:24 项中 14 项 ✅、9 项 ⚠️、1 项 ❌(✅ 计 1 分、⚠️ 计 0.5 分、❌ 计 0 分)。数据集在"结构规范、协议透明、版本清晰"三个维度表现优秀——器械清单、参考标准定义、评测脚本与许可条款都有官方一级来源,这在手术视频类数据集中属于第一梯队。扣分集中在工程可用性:无官方预处理与加载脚本(唯一 ❌ 项)、两套划分与两套标签体系并存且无统一映射、标签分布与一致性指标披露不全,以及双路视频对齐需要自行解决。换言之,这是一份"研究协议一流、工程管道缺位"的基准。

对你意味着什么:如果你要复现 2017 器械检测基准,官方资产(划分 + 脚本 + 公开的测试参考标准)足以保证结果可比,直接按 §6.1-§6.4 与 §6.9 实施即可;如果你要做阶段识别或跨模态研究,预算中必须包含自行开发预处理管道、盘点标签分布与处理 0.5 分歧帧的工程量(约一到两周单人工作量);如果目标是部署,把 §7.1 的单中心/单术者偏倚和 §7.6 的漂移风险写进风险登记表,并强制安排跨中心小规模外部验证。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
CATARACTS 测试集(hidden 评测转公开) LaTIM/Inserm(官方) 器械存在检测 21 类平均 ROC AUC 0.9971(冠军 DResSys) —(基准本体) 自动标注接近人工水平(官方论文结论)
2020 语义分割隐藏测试(10 台测试视频 531 图) Digital Surgery Ltd / Medtronic 等组织 36 类场景分割 三子任务榜单(9-11 队) 从器械检测迁移到像素分割,难度显著上升 官方称该衍生集为"迄今标注质量最高的手术数据"之一
OpenMIBOOD 清洗子集(前 5 台测试视频,去黑帧) 雷根斯堡应用技术大学 分布外(OOD)工作流评估 面向 OOD 设置的专用协议 预处理漂移(黑帧移除)被显式控制 为跨预处理管道的稳健性评估提供了可复用载体

解读该矩阵时的两点提醒:其一,除第一行外,各行均为"在 CATARACTS 上训练、在衍生或外部条件下再评估"的研究实践,其性能衰减幅度取决于具体方法,不存在统一数字;其二,真正的跨中心外部验证(不同医院的白内障视频)迄今仍无公开结果发表,这是该基准生态当前最大的空白,也是新研究的差异化机会。


§8 基准性能与生态

§8.1 官方排行榜(CATARACTS2017,器械存在检测)

评测指标为 21 类平均 ROC AUC(每类计算 ROC 曲线下面积后取均值,专家分歧帧不计入)。不同队伍的提交次数、模型容量与时序后处理各不相同,数值仅在官方测试集上可比,不可与在其他数据集或其他任务(如阶段识别 Jaccard)上的数字直接比较。

排名 模型/队伍 机构 平均 ROC AUC 年份 关键技术 完整引用 代码
1 DResSys D-Wave Systems Inc. 0.9971 2017 CNN 集成 + 时序后处理(技术报告制) Al Hajj et al., 2019, Medical Image Analysis. DOI 10.1016/j.media.2018.11.008 未公开
2 CUMV The Chinese University of Hong Kong 0.9897 2017 深度 CNN 分类器 同上(挑战论文系统评估 14 队方案) 未公开
3 TROLIS Oxipit, UAB 0.9812 2017 CNN 多标签方案 同上 未公开
4 CatResNet Touch Surgery 0.9769 2017 ResNet 变体 同上 未公开
5 TUMCTNet Technical University of Munich 0.9715 2017 CNN + 时序建模(6 次提交) 同上 未公开
6 CDenseNet Zhejiang University 0.9579 2017 DenseNet 变体 同上 未公开
7 RToolNet Carl von Ossietzky Universität Oldenburg 0.9568 2017 残差网络 同上 未公开
8 ZIB-Res-TS Zuse Institute Berlin 0.9541 2017 ResNet + 时序平滑 同上 未公开
9 MIL+resnet INESC TEC 0.9513 2017 多示例学习 + ResNet 同上 未公开
10 CRACKER INESC TEC 0.9484 2017 CNN 方案 同上 未公开
11 SurgiToolNet Gachon University 0.9192 2017 CNN 方案 同上 未公开
12 AUGSQZNT Epsilon 0.9040 2017 CNN 方案 同上 未公开
13 LCCV-Cataract Georgia Institute of Technology 0.8248 2017 互斥多类改造(丢弃多器械帧,见坑点 3) 同上 未公开
14 VGG fine-tuning Konica Minolta, Inc. 0.7061 2017 VGG-16 微调,单帧无时序 同上 未公开
参考 LaTIM(组织者,不计名次) Inserm / LaTIM 0.9931 2017 组织者参考方案 同上 未公开

注:各队伍技术细节以挑战论文的差异化分析章节为准(官方要求每次提交附技术报告);"未公开"指无公开代码仓库,部分队伍的技术报告可在挑战网站存档中查到。

§8.2 SOTA 总结与选型建议

器械存在检测在官方测试集上已接近饱和(Top5 均 > 0.97,冠军 0.9971),新方法在此任务上刷点的边际价值很低——更值得做的是长尾器械明细、时间边界鲁棒性与跨中心迁移。阶段识别(2020 协议,20 类活动、在线约束)仍是活跃战场,主流路线是 CNN 空间骨干 + 因果时序模块(TCN/LSTM/CRF),弱监督方向利用阶段-步骤本体降低标注成本。选型建议:做工程验证选 TeCNO 式 CNN+TCN 起步;做方法研究优先在在线协议 + 长尾明细上建立差异化;不要把 2017 AUC 与 2020 Jaccard 混在同一张表里引用。

从 2017 榜单还能读出两条对今日仍有指导意义的经验:其一,头部队伍的差距主要体现在时序建模与集成策略上(VGG 单帧微调 0.7061 vs CNN 集成 + 时序 0.9971),说明该任务的时间上下文价值远大于骨干网络的代际差异;其二,互斥多类的架构性错误(LCCV-Cataract)造成的性能损失比任何超参问题都大一个量级,架构选型前务必先核对任务的标签结构。

§8.3 评测协议

  • 器械检测(2017):提交每个测试视频一个 CSV(frame_id + 21 列任意实数置信度);评测逐类计算 ROC AUC(忽略 0.5 帧)后取均值;重提交需技术报告且一周冷却,每队取最优提交计入排名。
  • 活动识别(2020):在线协议(时刻 t 仅用历史信息),train 25 / dev 5 / test 20;提交与评测经 Synapse 平台(syn21680292),现提交已关闭、测试参考标准已随归档公开。
  • 语义分割(2020 子挑战):三个粒度递进的子任务(背景/解剖/器械组合),隐藏测试 531 图,9-11 队参赛。

协议设计的可借鉴点:2017 的"技术报告 + 一周冷却"双规则是为了抑制测试集间接过拟合——每次重提交都会向排行榜暴露一点测试分布信息,冷却期与实质性差异要求共同限制信息泄露速率;2020 把工作流识别明确限定为在线任务,则在协议层面就把"离线刷分"与"可部署能力"区分开来。这两条设计在自建基准时都值得照搬。

数据集 术式 规模 模态 标注 获取
Cholec80 胆囊切除 80 台 腹腔镜视频 7 器械 + 7 阶段 申请审核
M2CAI16 多术式腔镜 27 台(工作流子任务) 腹腔镜视频 8 阶段 + 9 器械 挑战归档
AutoLaparo 子宫肌瘤切除 21 台 腹腔镜视频 7 阶段 开放申请
MISAW 显微微血管吻合 10 台训练会话 立体视频 + 运动学 阶段/步骤/活动 开放
2020 CATARACTS 分割衍生集 白内障 4,670 + 531 图 显微镜帧 36 类像素掩码 随 EndoVis 2020 发布

横向比较的三点提示:腔镜类数据集(Cholec80/M2CAI16/AutoLaparo)的器械与阶段体系基于腹腔镜手术,与白内障显微手术的视觉分布差异极大,不能直接迁移;MISAW 提供运动学模态但规模最小;若研究目标是"跨术式的通用工作流理解",通常以 Cholec80 做主实验、CATARACTS 做跨术式泛化验证(或反之),两者结合才能支撑泛化性主张。

§8.5 关键论文 Top 6

  1. Al Hajj H, Lamard M, Conze P-H, et al. CATARACTS: Challenge on automatic tool annotation for cataRACT surgery. Medical Image Analysis, 2019;52:24-41. DOI 10.1016/j.media.2018.11.008 — 挑战官方论文:50 台手术、21 类器械、14 队方案的系统性差异化评估,结论为自动标注接近人工水平。
  2. Luengo I, Grammatikopoulou M, Mohammadi R, et al. 2020 CATARACTS Semantic Segmentation Challenge. arXiv:2110.10965, 2021 — 在 CATARACTS 视频上构建 36 类像素级标注(4,670+531 图)并组织三子任务分割竞赛。
  3. Endoscopic Vision Challenge (EndoVis) 2020 Challenge Design Document. Zenodo, DOI 10.5281/zenodo.3715645, 2020 — CATARACTS2020 工作流识别子挑战的协议文档:20 类活动、在线约束、三划分定义。
  4. Gutbrod M, Rauber D, Weber Nunes D, Palm C. OpenMIBOOD(含 CATARACTS 清洗子集). Zenodo, DOI 10.5281/zenodo.14924735, 2025 — 提供去黑帧清洗的测试子集,支撑 OOD 评估标准化。
  5. Cazzato D, Meoni G, Le Dosty LM, Donati M, Fanfani A. Workflow Augmentation of Video Data for Event Recognition with Time-Sensitive Neural Networks. arXiv:2109.15063, 2021 — 以 CATARACTS 训练集做工作流图增强,讨论标注时间不确定性与视频存储形态。
  6. 弱监督时序卷积系列工作(如 Weakly Supervised Temporal Convolutional Networks for Fine-grained Surgical Activity Recognition. arXiv:2302.10834, 2023)— 利用 5 phases + 19 steps 本体映射生成弱标签,探索标注成本与识别粒度的平衡。

使用这批论文的提示:第 1 条是数据集与 2017 榜单的唯一权威出处,任何引用都绕不开;第 2-4 条是延伸标注与衍生生态的出处,使用对应衍生资产时必须连带引用;第 5-6 条是方法侧工作的示例,引用其结论时注意它们各自使用的是 2017 还是 2020 划分(坑点 2 同样适用于读论文)。

§8.6 社区活跃度

  • IEEE DataPort 归档页自报 15,991 次浏览、903,890 次下载(截至页面统计口径 2026-09),下载体量在同类手术数据集中位居前列。
  • Semantic Scholar 收录引用 147+(截至 2026-09),近三年仍有引用其划分与标注协议的新论文(含 2025-2026 年期刊论文),数据集处于稳定维护的"经典基准"状态。
  • 三届挑战赛(2017/2018/2020)累计吸引 20+ 支国际队伍提交,grand-challenge.org 页面与 Synapse 工作区持续可访问。
  • 衍生活跃:2025 年仍有基于其测试子集的新衍生数据集(OpenMIBOOD,Zenodo)与期刊论文引用其数据发布,社区将其中长期维护的基准使用。

§8.7 生态快照

以下资源均为 2026-09 时点确认可访问的官方或权威镜像入口:

资源 类型 链接 状态(截至 2026-09) 推荐理由
CATARACTS 2017 挑战站 官方主页/排行榜 https://cataracts.grand-challenge.org/ 在线 规则、数据说明、Results/ Evaluation 全量协议
CATARACTS 2018 挑战站 官方下载 https://cataracts2018.grand-challenge.org/ 在线 torrent 直下与许可条款
CATARACTS 2020 挑战站 官方主页 https://cataracts2020.grand-challenge.org/ 在线 2020 任务定义与 Synapse 入口
IEEE DataPort 归档 数据托管 https://ieee-dataport.org/open-access/cataracts 在线(开放获取) 视频/标注/评测脚本一站式下载
UCL Discovery 论文开放版 开放获取论文 https://discovery.ucl.ac.uk/id/eprint/10068008 在线 挑战论文作者接受稿全文
OpenMIBOOD 清洗子集 衍生数据集 https://doi.org/10.5281/zenodo.14924735 在线 小体量 OOD 试验起点

§9 相关资源与引用

§9.1 官方资源清单

资源 说明
挑战主页(2017) https://cataracts.grand-challenge.org/ — 数据说明(Data)、评测格式(Evaluation)、排行榜(Results)
数据归档 https://ieee-dataport.org/open-access/cataracts — Videos(117.8 GB)、CATARACTS2018_images(691.2 GB)、ground_truth.zip(18.55 MB)、evaluation_scripts.zip(7.84 KB)
评测脚本 evaluate_cataracts2017.py / evaluate_cataracts2018_videos.py / evaluate_cataracts2018_images.py / evaluation_cataracts2020.py(随归档分发)
2018 下载页 https://cataracts2018.grand-challenge.org/download/ — torrent 链接与许可条款
2020 挑战 https://cataracts2020.grand-challenge.org/ 与 Synapse 工作区 syn21680292
官方评估示例格式 提交 CSV:每行 frame_id + 21 列置信度,不带表头
论文开放获取版本 https://discovery.ucl.ac.uk/id/eprint/10068008 — UCL Discovery 作者接受稿(含全部队伍技术细节)

§9.2 BibTeX 引用

@article{alhajj2019cataracts,
  author  = {Al Hajj, Hassan and Lamard, Mathieu and Conze, Pierre-Henri and
             Roychowdhury, Soumali and Hu, Xiaowei and Mar{\v{s}}alkait{\v{e}}, Gabija and
             Zisimopoulos, Odysseas and Dedmari, Muneer Ahmad and Zhao, Fenqiang and
             Prellberg, Jonas and Sahu, Manish and Galdran, Adrian and Ara{\'u}jo, Teresa and
             Vo, Duc My and Panda, Chandan and Dahiya, Navdeep and Kondo, Satoshi and
             Bian, Zhengbing and Vahdat, Arash and Bialopetravi{\v{c}}ius, Jonas and
             Flouty, Evangello and Qiu, Chenhui and Dill, Sabrina and
             Mukhopadhyay, Anirban and Costa, Pedro and Aresta, Guilherme and
             Ramamurthy, Senthil and Lee, Sang-Woong and Campilho, Aur{\'e}lio and
             Zachow, Stefan and Xia, Shunren and Conjeti, Sailesh and Stoyanov, Danail and
             Armaitis, Jogundas and Heng, Pheng-Ann and Macready, William G. and
             Cochener, B{\'e}atrice and Quellec, Gwenol{\'e}},
  title   = {CATARACTS: Challenge on automatic tool annotation for cataRACT surgery},
  journal = {Medical Image Analysis},
  volume  = {52},
  pages   = {24--41},
  year    = {2019},
  doi     = {10.1016/j.media.2018.11.008}
}

@dataset{alhajj2021cataracts_data,
  author    = {ALHAJJ, Hassan and Lamard, Mathieu and Conze, Pierre-Henri and
               Cochener, B{\'e}atrice and Quellec, Gwenol{\'e}},
  title     = {CATARACTS},
  year      = {2021},
  publisher = {IEEE DataPort},
  doi       = {10.21227/ac97-8m18}
}

§9.3 引用指南

  • 任何学术产出(论文、报告、技术文档)使用 CATARACTS 视频或标注,必须引用上方 MedIA 2019 论文(下载页明文要求)。
  • 引用数据本体(IEEE DataPort 归档)时同时给出 DOI 10.21227/ac97-8m18,注明所用版本(2017/2018/2020 划分)。
  • 引用排行榜数字时注明指标口径(21 类平均 ROC AUC、分歧帧剔除)与评测日期,避免与阶段识别指标混排。
  • 2020 语义分割衍生数据另需引用 Luengo et al. arXiv:2110.10965;OpenMIBOOD 子集另需引用其 Zenodo DOI。
  • 涉及 0.5 概率化参考标准的方法学讨论,建议引用官方 Data/Evaluation 页面而非二手转述,以保证口径一致。

§10 AI 使用声明卡

§10.1 本页面创作使用的 AI 模型

环节 模型/工具 用途
内容起草 大语言模型(CodeBuddy Code 内置 fast-model) 结构组织、初稿撰写、代码骨架生成
事实检索 CodeBuddy WebSearch / WebFetch 官方页面、论文摘要、编码库的定点核实
一致性校验 check_md.py(结构校验脚本) 行数、章节完整性、G3 纯净度、代码围栏配对的自动检查

§10.2 AI 参与范围说明

AI 负责初稿生成、格式规范化(frontmatter/JSON-LD/表格)与代码示例编写;全部关键数字(手术数、划分、时长、fps、标注协议、排行榜分数、引用数、许可条款)均经检索比对官方一级来源后由人工确认;AI 未接触任何数据集本体数据。代码示例经过可运行性复核(语法与依赖声明完整),但未在完整数据集副本上做端到端执行验证,使用者在首次运行时应先以单视频子集验证。

§10.3 输入来源列表

  1. Al Hajj H, et al. CATARACTS: Challenge on automatic tool annotation for cataRACT surgery. Medical Image Analysis, 2019;52:24-41. DOI 10.1016/j.media.2018.11.008
  2. CATARACTS 挑战官方主页(数据与参考标准说明). https://cataracts.grand-challenge.org/Data
  3. CATARACTS 2017 官方评测协议(ROC AUC 定义与提交格式). https://cataracts.grand-challenge.org/Evaluation/
  4. CATARACTS 2017 官方排行榜(14 队完整成绩). https://cataracts.grand-challenge.org/Results/
  5. CATARACTS IEEE DataPort 开放获取归档页. https://ieee-dataport.org/open-access/cataracts
  6. CATARACTS 2018 下载页(torrent 与许可条款). https://cataracts2018.grand-challenge.org/download/
  7. CATARACTS 2020 挑战官方主页. https://cataracts2020.grand-challenge.org/
  8. EndoVis 2020 挑战设计文档(CATARACTS 工作流子挑战 20 类活动定义). Zenodo. DOI 10.5281/zenodo.3715645
  9. Luengo I, et al. 2020 CATARACTS Semantic Segmentation Challenge. arXiv:2110.10965
  10. PubMed 收录页(MedIA 2019 论文,PMID 30468970). https://pubmed.ncbi.nlm.nih.gov/30468970
  11. UCL Discovery 论文开放获取版本. https://discovery.ucl.ac.uk/id/eprint/10068008
  12. Semantic Scholar 引用统计 API(147 次,截至 2026-09). https://api.semanticscholar.org/graph/v1/paper/DOI:10.1016/j.media.2018.11.008
  13. OpenMIBOOD CATARACTS 清洗子集. Zenodo. DOI 10.5281/zenodo.14924735
  14. Cazzato D, et al. Workflow Augmentation of Video Data…. arXiv:2109.15063(设备型号与存储形态佐证)
  15. Weakly Supervised Temporal Convolutional Networks…. arXiv:2302.10834(25/5/20 划分与 1 fps 帧数口径佐证)
  16. ICD-11 编码库(9B10 白内障区段)与 SNOMED CT 概念页(193570009 / 39450006)
  17. CATARACTS 2017 挑战官方评测脚本 evaluate.pygrand-challenge.org 用户内容分发)

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景与 ICD-11/SNOMED 映射 千方病案医学编辑部 对照 ICD-11/SNOMED 官方编码与 MedIA 2019 论文原文核对 ✅ 已通过/已验证
§3-§4 规格、结构与 DAIMS 字段字典 千方病案医学编辑部(数据工程) 对照 IEEE DataPort 文件清单与官方 Data/Evaluation 页面逐项核对 ✅ 已通过/已验证
§5 划分与泄漏分析 千方病案医学编辑部(数据工程) 双划分来源交叉核对(IEEE DataPort + arXiv:2302.10834) ✅ 已通过/已验证
§6 代码示例与 8 个坑点 千方病案医学编辑部(数据工程) 代码逻辑复核;坑点逐条溯源至官方文档/论文 ✅ 已通过/已验证
§7 质量评估与 DAIMS 24 项 千方病案医学编辑部 逐项对照官方披露信息打分 ✅ 已通过/已验证
§8 排行榜与引用数字 千方病案医学编辑部 对照官方 Results 页与 Semantic Scholar API 核对 ✅ 已通过/已验证
§9 官方资源链接与 BibTeX 千方病案医学编辑部 逐条访问链接确认可达性;BibTeX 与 PubMed 收录信息比对 ✅ 已通过/已验证

§10.5 AI 生成章节标注

本页面各章节均由 AI 起草、人工审核后发布;其中 §6.5 的 8 个坑点由 AI 基于官方文档、挑战论文与衍生数据集披露的真实失败模式提炼,经人工逐条溯源验证。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核声明一致)

页面状态:published(全部内容已完成审核并发布)


§C 结构化数据(JSON-LD)

返回 AI-Ready 数据集