信息速览

m2cai16-tool — 腹腔镜手术器械识别数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | m2cai16-tool(m2cai16 腹腔镜手术器械识别数据集) |
| 英文全称 | m2cai16-tool — M2CAI 2016 Tool Presence Detection Challenge Dataset |
| 别名/简称 | m2cai2016-tool;空间标注扩展版称 m2cai16-tool-locations |
| 疾病分类(ICD-11) | DC11 胆石症(Cholelithiasis,含 DC11.0 伴急性胆囊炎、DC11.3 不伴胆囊炎与胆管炎等细分) |
| 数据模态 | 腹腔镜手术视频帧(RGB)+ 每帧 7 类器械 presence 二值标注 |
| AI 任务类型 | 帧级多标签分类(器械存在性检测);扩展版支持目标检测 |
| 样本总数 | 15 段手术视频(训练 10 / 测试 5);1 fps 抽帧后 23,000 帧标注 |
| 数据大小 | 视频总时长折算约 6.4 小时(由 23,000 帧 @1 fps 推算);官方打包体积未公开 |
| 数据格式 | MP4 视频 + 逐视频 TXT presence 标注;locations 扩展版为 JPG 帧 + VOC 风格 XML 边界框 |
| 许可证 | 未声明标准开源许可证;申请制学术使用,官方要求引用 EndoNet 论文 |
| 访问级别 | 申请审核(CAMMA 官方表单,链接邮件发放) |
| DUO 标签 | GRU(通用研究使用,限研究用途并引用出处) |
| 语言 | 影像数据无语言;标注与文档为英文 |
| 首发日期 | 2016-05-23(训练集发布) |
| 最后更新 | 2016-09-09(测试集发布,官方 presence 版本此后未再修订) |
| 发布机构 | CAMMA / ICube, University of Strasbourg, CNRS, IHU Strasbourg;University Hospital of Strasbourg |
| 官方主页 | CAMMA Datasets |
| 下载地址 | m2cai16-tool request 表单(填写后邮件发放下载链接) |
| DOI | 10.1109/TMI.2016.2593957(生成论文 EndoNet,IEEE TMI 2016) |
| 引用次数 | 598+(OpenAlex 索引,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 官方视频级划分清晰、标注语义简单,但需自行抽帧并对齐 1 fps 标注、无官方预处理与加载脚本、presence 版无空间信息 |
| 页面状态 | published |
§0 E-E-A-T 审核与可信度声明
医学审核:[千方病案医学编辑部]交叉审核:§2 医学背景(ICD-11 编码、胆石症流行病学)、§7 偏倚分析。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
本页为 m2cai16-tool 的 AI-Ready 中文结构化百科条目:全部规模数字与基准数字可溯源至官方页面与同行评审文献,8 个坑点均来自该数据集的真实失败模式,代码示例按"可直接照抄改造"标准编写。条目结构遵循 AI-Ready Wikipedia 规范,支持大模型检索增强与结构化抽取(页尾 JSON-LD 与 Croissant 元数据同步提供)。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。m2cai16-tool 通过 CAMMA 官方表单申请获取,使用时须遵守数据提供方约定并引用 EndoNet 论文(IEEE TMI 2016)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
本节用三段式速览回答"是什么、为什么、能做什么",再以摘要、横向对比、版本时间轴与应用场景建立整体认知;细节规格请进入 §3 及以后章节。
§1.0 📌 30 秒速览
这是什么? m2cai16-tool 是 2016 年 MICCAI 手术机器视觉研讨会(M2CAI 2016)"器械存在性检测挑战赛"的官方数据集,由法国斯特拉斯堡大学医院提供手术视频、CAMMA 团队完成标注。它包含 15 段真实的腹腔镜胆囊切除术视频,每段视频按每秒 1 帧抽取画面后,人工标注画面中是否出现了 7 类常用手术器械(抓钳、双极电凝、电钩、剪刀、施夹器、冲洗器、标本袋),合计 23,000 帧标注。
为什么重要? 它是手术视频理解这一方向最早的公开基准之一:任务定义干净(每帧输出 7 个 0/1)、官方划分固定(10 段训练 / 5 段测试)、评估指标统一(mAP),使全球团队能在同一条跑道上比较。2016 年的获胜架构 EndoNet(IEEE TMI 2016)确立了"CNN 逐帧分类 + 时序平滑"的范式,直接催生了后续 Cholec80 等更大规模数据集与手术阶段识别研究。截至 2026-09,其生成论文已被索引引用 598+ 次(OpenAlex)。
我能用它做什么? 训练和评测器械存在性检测模型、为手术阶段识别与工作流监控研究提供器械 usage 信号、做视频检索与手术报告生成的中间任务、复现 2016 挑战赛历史基线。若需要器械的空间位置,可配合斯坦福扩展版 m2cai16-tool-locations(2,532 帧、3,141 个边界框)使用。
一句话画像:它是手术视频多标签分类的"MNIST"——规模不足以支撑前沿训练,但协议足够标准,适合做第一课、快速验证与方法对照。
§1.1 技术摘要
m2cai16-tool 源自斯特拉斯堡大学医院开展的腹腔镜胆囊切除术(laparoscopic cholecystectomy)常规手术录像。15 段视频以单目腹腔镜镜头采集,原始帧率 25 fps,时长介于 20-75 分钟。标注采用"每秒一帧"的稀疏粒度:标注者回看视频,对每个 1 fps 采样时刻给出 7 维二值向量,标记 grasper、bipolar、hook、scissors、clipper、irrigator、specimen bag 七类器械是否出现在画面中,总计 23,000 帧 (Twinanda et al. 2016 技术报告、Jin et al. 2018)。
官方将 video 1-10(2016-05-23 发布)划为训练集、video 11-15(2016-09-09 发布)划为测试集,任务要求对每帧输出 7 元素二值向量,明确不涉及器械定位 (M2CAI 2016 挑战页)。评估采用逐类平均精度(AP)再取均值的 mAP;官方基线显示了强烈的"数据规模敏感性":仅用本集 10 段训练的 ToolNet-m2cai16 为 52.5 mAP,而用 40 段 Cholec80 训练的 ToolNet-Cholec80 与多任务 EndoNet-Cholec80 达到 73.9/74.2 mAP。
数据集与 Cholec80 存在部分视频重叠,官方建议引用 EndoNet 论文(IEEE TMI 2016)。斯坦福大学团队于 2018 年发布 m2cai16-tool-locations 扩展,为 video 1-10 中的 2,532 帧补充 3,141 个器械边界框,使空间检测与手术技能评估成为可能 (Stanford tooldetection 页面)。
§1.2 战略价值
历史基准价值:m2cai16-tool 是手术场景理解领域第一批公开、可申请、指标统一的视频基准之一。在 Cholec80(2016 年底)出现之前,它是器械存在性检测的事实标准赛道;2016 挑战赛获胜方案 EndoNet-Cholec80 的 74.2 mAP 至今仍是复现研究的参照点(Twinanda et al.)。其"小而干净"的定位使它非常适合做消融实验、新架构快速验证与教学演示——在 15 段视频上跑通一个完整的多标签分类实验,成本远低于 80 段视频的 Cholec80。
任务链路入口价值:器械使用信号是手术工作流监控的核心中间表示。m2cai16-tool 与同系列 m2cai16-workflow(41 段视频、8 阶段标注)共享部分视频源,天然支持"器械 → 阶段"的跨任务研究;斯坦福扩展版又把任务延伸到空间定位与技能评估(运动经济、器械切换频率等指标)。对研究团队而言,它是一套可以从"分类"做到"检测"再做"技能评估"的低成本起点;对工程团队而言,它是验证手术视频预处理管线(抽帧、对齐、时序建模)的标准试金石。
教学与迁移价值:本数据集浓缩了手术视频 AI 的全部典型工程难点——帧率对齐、类别不平衡、时序相关性、单中心偏倚——却没有大数据集的算力门槛。一篇用 m2cai16-tool 完成的多标签分类课程作业,稍作扩展即可迁移到 Cholec80 乃至跨术式数据集;它也因此出现在大量手术视频理解论文的实验表第一列,成为社区共同语言的一部分。
§1.3 同类数据集横向对比
下表将本数据集放入 2016-2025 年手术视频基准的坐标系统。规模与标注粒度是两条主要差异轴;“协议封闭性”(划分与指标是否冻结)是第三条隐性轴。
| 数据集 | 视模规模 | 模态/标注 | 任务 | 与 m2cai16-tool 的差异化 |
|---|---|---|---|---|
| m2cai16-tool | 15 段视频 / 23,000 帧(1 fps) | 7 类器械 presence 二值向量 | 多标签帧级分类 | 本文主角;官方挑战划分与 mAP 榜单 |
| m2cai16-tool-locations | video 1-10 中 2,532 帧 | 3,141 个 7 类器械边界框 | 目标检测、技能评估 | 斯坦福扩展,补空间信息 |
| m2cai16-workflow | 41 段视频(训练 27 / 测试 14) | 8 阶段逐帧标注 | 手术阶段识别(在线) | 同系列姊妹集,部分视频同源 |
| Cholec80 | 80 段视频(13 位外科医生,25 fps) | 7 阶段 + 7 器械 presence | 阶段识别 + 器械检测 | 更大规模,含 m2cai16-tool 部分视频 (MLDTA) |
| m2caiSeg | 307 张帧图(245 训练/62 测试) | 19 类语义分割掩码 | 器械/解剖结构分割 | m2cai16 挑战衍生,含 7 器械 + 解剖结构类 (HuggingFace 镜像) |
| LEMON | 4,194 段视频 / 938 小时 / 85M 帧 | 大规模未标注 + 多任务评测集 | 预训练 + 下游评测 | 2025 年基础模型时代的大规模对照(M2CAI16 被列为其下游评测集之一)(arXiv:2503.19740) |
横向看,m2cai16-tool 的不可替代点在于协议封闭性:10/5 划分、7 类固定列序、mAP 指标全部由 2016 挑战赛一次定义至今未变,这使历史数字(52.5/73.9/74.2)仍具可比性;而 Cholec80、LEMON 等更大规模数据集在规模与多样性上全面超越,但评测协议各自演化,跨集数字不可直接混排。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2016-05-23 | 训练集发布 | 10 段视频 + presence 标注,开放申请 (Twinanda 技术报告) |
| 2016-09-09 | 测试集发布 | 5 段视频,挑战赛提交用 (Twinanda 技术报告) |
| 2016-10 | M2CAI 2016 挑战赛 | MICCAI 2016 卫星研讨会(雅典),Labex CAMI 与 IHU Strasbourg 赞助 (挑战页) |
| 2016 | EndoNet 论文 | IEEE TMI,DOI 10.1109/TMI.2016.2593957,生成并支撑数据集 (CAMMA) |
| 2017-2018 | m2cai16-tool-locations | 斯坦福扩展:2,532 帧、3,141 个边界框,WACV 2018 发表 (Stanford) |
| 2016 至今 | 官方版未再修订 | presence 标注自 2016-09 后保持不变;CAMMA 持续维护结果排行(邮件提交)(MLDTA) |
时间轴的一个观察:这个数据集的所有"版本"都是 2016 年内的发布事件,此后近十年没有官方修订——这在活跃数据集里很少见,但对基准型数据集反而合理:协议冻结保证了历史可比性。使用者应把"版本"理解为"协议快照"而非"持续演进的产品"。
§1.5 典型应用场景
- 器械存在性检测基准评测:用官方 10/5 划分与 mAP 指标比较新模型,复现并超越 EndoNet-Cholec80 的 74.2 mAP 历史基线。
- 手术工作流监控的前置模块:器械 usage 信号是阶段识别与 OR 调度系统的输入特征,可与 m2cai16-workflow 联合研究——EndoNet 的多任务实验已经验证了这条链路的可行性。
- 手术视频检索与 indexing:按器械组合对手术视频库建立帧级索引,支持"含剪刀操作的片段"这类检索需求;二值向量天然适合倒排索引与哈希加速。
- 手术技能评估研究:借助 locations 扩展的空间信息提取器械轨迹、运动热图与使用时间线,量化运动经济性 (Jin et al. WACV 2018)。
- 半监督/自监督的评测场:以本集为下游小样本评测集,检验在大规模未标注手术视频(如 LEMON 语料)上预训练的表征质量 (arXiv:2503.19740)。
- 教学与快速原型:数据体量小、划分固定,适合作为手术视频多标签分类的入门实验与课程作业基线。
选择场景时的一个判断标准:如果你的产出需要"器械在场的证据",用 presence 版;需要"器械在哪里的证据",用 locations 版;两者都需要,就按 §5.3 的隔离原则把两套协议分开报告。
§2 医学背景
本节为非临床读者补充手术场景的医学上下文:数据集对应的疾病(胆石症)、术式(腹腔镜胆囊切除术)与 AI 任务(器械存在性检测)在临床语义上的位置。编码与流行病学数字均有公开来源支撑。
§2.1 ICD-11 编码映射
数据集对应的手术场景为腹腔镜胆囊切除术,主要适应证为症状性胆石症及其并发症。下表列出相关 ICD-11 编码(依据 WHO ICD-11 MMS 切表结构,ICD-11 胆石症条目对照):
| 数据标签 | ICD-11 编码 | ICD-11 术语(英文) | 中文名称 | 与数据集的关系 |
|---|---|---|---|---|
| 全部视频的手术场景 | DC11 | Cholelithiasis | 胆石症 | 胆囊切除术的首要适应证 |
| 伴炎症病例 | DC11.0 | Gallbladder or cystic duct stones with acute cholecystitis | 胆囊或胆囊管结石伴急性胆囊炎 | 部分手术的适应证 |
| 无并发症病例 | DC11.3 | Gallbladder or cystic duct stones without cholecystitis and cholangitis | 胆囊或胆囊管结石不伴胆囊炎与胆管炎 | 择期手术常见适应证 |
| 胆管结石伴炎症 | DC11.4 | Bile duct stones with cholangitis | 胆管结石伴胆管炎 | 术前 ERCP 处理后转 LC 的场景 |
| 胆管结石无炎症 | DC11.6 | Bile duct stones without cholangitis and cholecystitis | 胆管结石不伴胆管炎与胆囊炎 | 同上 |
| 器械标签 grasper/bipolar/hook 等 | 不适用 | 不适用 | 不适用 | 器械标签为术中所见,非疾病诊断编码 |
注:m2cai16-tool 未随集公布各视频的具体 ICD 诊断编码;上表描述的是腹腔镜胆囊切除术总体适应证谱系,用于医学背景定位而非逐例标注。数据集标签本身是术中所见(器械在场),与疾病编码分属两个语义层。
§2.2 疾病简介与流行病学
胆石症(cholelithiasis)指胆囊或胆道内形成结石,是全球最常见的消化系统疾病之一。流行病学要点:欧美发达国家成人患病率约 10-15% (Patient.info 专业版);系统综述估计的全球汇总患病率约 5.86%,地域差异显著;女性患病为男性的 2-3 倍,发病高峰在 40 岁以后 (Amboss)。约 80% 的胆石患者在诊断时无症状,每年约 2% 的无症状结石进展为有症状疾病 (Patient.info)。
按成分,胆石分为胆固醇结石(占多数,英国数据约 80%)、胆色素结石与混合性结石 (Patient.info)。并发症谱包括急性胆囊炎、胆总管结石(choledocholithiasis)、胆管炎与胆源性胰腺炎,其中胆囊结石伴急性胆囊炎与不伴炎症的单纯结石分别对应 ICD-11 的 DC11.0 与 DC11.3 细分码。
症状性胆石症的标准治疗是腹腔镜胆囊切除术(laparoscopic cholecystectomy),该术式自 1990 年代起成为金标准,也是全球最常开展的腹部手术之一——这正是 m2cai16-tool 选择该术式作为采集场景的原因:手术量大、术式标准化程度高、器械组合相对固定。一台典型 LC 的器械使用节奏(分离期以抓钳+电钩为主、钳夹期出现施夹器、冲洗吸引间歇出现、标本袋收尾)恰好对应了数据集 7 类标签的时序结构,这也是器械 presence 信号能够反推手术阶段的解剖学基础。
从建模视角看,这种"器械节奏"是一把双刃剑:它使器械信号成为阶段的强代理特征(信息量高),但也意味着 7 类标签之间存在强相关(共线性),逐类独立评估时会把共线性误读为模型能力。
§2.3 临床任务定义
m2cai16-tool 支持的 AI 任务不是疾病诊断,而是术中场景感知:给定腹腔镜视频帧,判定 7 类器械(grasper 抓钳、bipolar 双极电凝、hook 电钩、scissors 剪刀、clipper 施夹器、irrigator 冲洗器、specimen bag 标本袋)是否在场。在临床工作流中,该任务对应"手术进度感知"的器械证据链:例如钳夹切割阶段(clipping/cutting)必然出现施夹器,胆囊剥离阶段以电钩为主。挑战赛明确任务输出为 7 元素二值向量、不涉及器械定位(M2CAI 2016 挑战页)。
按临床 AI 任务分类学,它属于"术中新息感知"而非"筛查/诊断/分级/预后"四大临床任务中的任何一类;其角色更接近手术室里的"字幕生成器"——把像素流翻译成结构化的器械事件流。七个标签的判定难度并不均等:grasper/hook 出现频繁且形态清晰,属于易类;scissors/clipper/irrigator 出现窗口短、与抓钳形态相近,属于难类(官方逐类 AP 数据见 §8.1)。
这类感知能力可支撑三类下游应用:手术视频自动索引、手术报告自动生成、OR 实时调度与决策支持。三者对精度的要求依次提高:索引可以容忍秒级延迟与中等精度,报告生成要求器械事件与阶段边界对齐,实时调度则要求低延迟高召回——同一份数据集在不同应用里对应的验收标准并不相同。
§2.4 患者人群
| 维度 | 信息 |
|---|---|
| 来源机构 | 法国斯特拉斯堡大学医院(University Hospital of Strasbourg),与 IRCAD/IHU Strasbourg 合作 |
| 手术类型 | 腹腔镜胆囊切除术(cholecystectomy),15 例 |
| 视频时长 | 每段 20-75 分钟,25 fps 单目腹腔镜采集 (Jin et al.) |
| 患者年龄/性别/种族 | 未随数据集公开(原始论文与挑战页均未报告人口学统计) |
| 采集年份 | 未随数据集公开;数据集发布于 2016 年 |
| 伦理与隐私 | 通过机构渠道采集并经申请制分发;体内视野不含面部等直接身份特征 |
人口学信息的缺失是该数据集最常被忽视的限制:所有逐类指标都是"混合人群"上的结果,无法检查模型是否对特定年龄、性别或体质的患者表现更差。在公平性审计(§7.5)成为发表硬要求的今天,这一信息缺口意味着任何基于本数据集的公平性结论都无从谈起——使用者在论文中应显式声明这一局限。
§2.5 临床价值
器械存在性检测是手术场景理解的最小闭环:标注成本低(逐秒二值标注远比分割便宜)、语义明确、且与手术阶段强相关。临床价值体现在三个层面:
- 术后:器械使用时间线可自动生成结构化手术记录、支持器械清点核对与视频数据库检索——把"翻 1 小时录像找关键操作"变成"按器械组合秒级检索"。
- 术中:实时器械感知是工作流识别与"关键安全步骤提醒"(如电凝接近施夹点)的基础信号;EndoNet 论文正是把它与阶段识别组成多任务联合架构,验证了器械信号对阶段推断的价值 (Twinanda TMI 2016)。
- 培训:器械切换频率与运动轨迹(借助 locations 扩展)已被证明与手术技能相关,可用于住院医师的客观化考核——斯坦福团队据此提取使用时间线、运动热图与轨迹图作为技能指标 (Jin et al. WACV 2018)。
对数据集使用者而言,"临床价值"还有一个工程视角:7 类标签是手术视频里最便宜的高质量监督信号,适合作为自监督/半监督预训练后的第一个有监督适配任务。
§2.6 标注金标准对照
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| presence 版(官方) | 每秒 1 帧回看标注,7 维二值向量 | CAMMA 团队(斯特拉斯堡,与外科团队合作) | 官方挑战金标准,mAP 评估 |
| locations 版(扩展) | 对 video 1-10 的 2,532 帧标注 7 类器械边界框,先标单器械帧、再补充 2-3 器械帧 | 斯坦福团队,外科医生监督并抽查 (Jin et al.) | 研究性扩展金标准,AP/IoU 0.5 评估 |
两个"金标准"的关系需要澄清:官方 presence 版是挑战赛唯一认可的评测依据,所有历史排行数字建立其上;locations 版没有挑战赛背书,但胜在信息密度高,且其帧级 50/30/20 划分被斯坦福及后续检测研究沿用为事实协议。同一视频同时拥有两种粒度的标签,这在本领域数据集中并不多见——它允许研究者在同一批画面上对比"分类便宜但粗、检测贵但细"的成本收益。
§3 数据集规格
本节从版本选择切入,再逐层展开模态、规模、格式、标注协议与溯源信息。阅读优先级建议:先看 §3.0 确定你需要的版本,再看 §3.2/§3.3 确认规模与格式,最后按需查阅标注与设备细节。
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 获取渠道 | 理由 |
|---|---|---|---|
| 复现 M2CAI 2016 器械 presence 基准 | 官方 presence 版 | CAMMA 表单申请 | 与官方 mAP 榜单同协议(10/5 视频级划分) |
| 器械空间检测 / 轨迹与技能分析 | m2cai16-tool-locations | Stanford tooldetection 页面 + GitHub | 2,532 帧、3,141 个边界框,含 VOC 风格 XML 与帧图 |
| 大规模预训练后再来此评测 | presence 版 + 自备预训练语料 | CAMMA + 公开手术视频集 | 本集仅约 6.4 小时,不适合从零预训练 |
| 器械/解剖结构分割 | m2caiSeg 衍生集 | HuggingFace 镜像 | 19 类语义掩码,但帧量小(307 张),非官方挑战协议 |
矩阵的使用方式:先在第一列找到与自己最接近的需求描述,再核对第三列的获取成本——三个版本的获取难度依次递减(CAMMA 表单需等待、Stanford/GitHub 即取即用、HF 镜像一键下载),但语义信息的密度依次递增的是前两列方向。注意所有衍生版本的指标都不可与官方 mAP 榜单混排。
§3.1 模态详情
- 腹腔镜视频帧(RGB):单目腹腔镜镜头,原始 25 fps,时长 20-75 分钟/段;同系列 m2cai16-workflow 论文报告其训练视频为 1920×1080 分辨率 (Cadene et al. 技术报告),m2cai16-tool 与之同源。斯坦福 locations 版发布的帧图为 596×334 px (ISSC 2024)。画面内容为腹腔内术野,包含组织、烟雾、血液反光、镜头清洁擦拭等真实手术噪声——这些"干扰帧"恰是模型鲁棒性的试金石。
- presence 标注:每视频一份 1 fps 粒度的逐帧 7 维二值向量文本;官方明确"annotated with the tool presence at 1 fps" (Twinanda 技术报告)。标注列序固定为 grasper、bipolar、hook、scissors、clipper、irrigator、specimen bag,与挑战赛公布的器械编号一致。
- 空间标注(扩展版):7 类器械的轴对齐边界框,含类别与坐标,VOC 风格 XML;标注覆盖 2,532 帧、3,141 个实例,平均每帧 1.2 个框 (Stanford)。帧选取策略为"先标单器械帧、再补 2-3 器械帧"以均衡类别 (Jin et al.)。
单目彩色视频是本数据集唯一的传感模态:没有深度、没有 kinematics 运动学数据、没有音频。这与同期的 JIGSAWS(含运动学)形成对比,也决定了它的建模入口基本只有视觉骨干网络一条路。
§3.2 子集与样本数
| 子集 | 视频数 | 视频编号 | 发布日期 | 单段时长 | 用途 |
|---|---|---|---|---|---|
| 训练集 | 10 | video 1-10 | 2016-05-23 | 20-75 分钟 | 模型训练与验证 |
| 测试集 | 5 | video 11-15 | 2016-09-09 | 20-75 分钟 | 官方挑战评测(mAP) |
| 合计 | 15 | video 1-15 | — | 20-75 分钟 | 1 fps 下采样后共 23,000 帧 (Jin et al.) |
两个子集的另一处不对称在时间轴上:训练集比挑战赛提前近 5 个月发布,供参赛者开发模型;测试集开赛前夕才放出,且官方通过邮件表单分发、结果回传邮箱的方式维持评测封闭性。这种"训练早放、测试晚放、标签不公开"的节奏是 2016 年前后 CV 竞赛数据集的标准操作,也意味着今天的研究者拿到的是完整 15 段标注,复现时应自行遵守 10/5 划分而非全量重训。
§3.3 数据格式
| 组成 | 格式 | 说明 |
|---|---|---|
| 手术视频 | MP4(H.264 等常见编码) | 15 段,25 fps;用户需自行按 1 fps 抽帧与标注对齐 |
| presence 标注 | TXT(逐帧行、7 个 0/1 值) | 顺序对应官方 7 类;社区复现按每视频一份组织 |
| locations 帧图 | JPG(596×334 px) | 含水平翻转增强副本 (GitHub tooldetection) |
| locations 框标注 | XML(VOC 风格,帧级一文件) | 7 类器械边界框坐标与类别 |
| locations 划分清单 | TXT(train/trainval/val/test) | ImageSets/Main 下四个文件指定帧归属 |
格式上的两点工程提示:其一,presence 标注是纯文本数字,任何语言都能零依赖读取,这是它"AI 就绪"的最大加分项;其二,locations 的帧图自带翻转副本,若不做去重会把增广帧当独立样本计入统计(这也是社区帧数口径出现 2,532 vs 2,811 分歧的可能来源之一)。
§3.4 存储大小
数据集视频总时长折算约 6.4 小时(23,000 帧 @1 fps 推算);由于官方通过表单分发且未公布打包体积,确切 GB 数以实际下发的压缩包为准。locations 扩展版的 2,532 张帧图与标注为轻量文本/小图,体积在百 MB 量级以内。
对存储与内存规划而言,两个量级值得预判:抽帧后的完整帧库(15 段视频 × 约 6.4 小时 × 1 fps × 约 100-300 KB/JPG)通常落在 10-30 GB 区间,建议为帧目录预留 50 GB;而只读标注文本与 locations 包的话,任何一台笔记本都绰绰有余。训练侧无需把全部帧驻留内存,按 batch 流式读取即可。
§3.5 标注方式
presence 标注为人工回看标注:标注者按 1 fps 采样逐帧判定 7 类器械是否在画面中出现,输出二值向量;这是弱成本、粗粒度的帧级标注,不包含器械数量与位置。挑战赛页面明确"从一幅图像输出 7 元素二值向量,不涉及定位"(挑战页)。
从标注成本结构看,1 fps 粒度是当时团队刻意的设计权衡:以 25 fps 逐帧标注 15 段视频需要约 10 倍工作量,而器械在场的持续时间通常以秒计,1 fps 已能覆盖任务信息量的主体——代价是坑点 1 的帧对齐问题被转嫁给了每个使用者。
locations 扩展为监督下的精细标注:先标注只含单一工具的帧,再逐步补充含 2-3 个工具的帧以均衡每类实例数,全程由外科医生监督并抽查 (Jin et al.)。该策略使每类都有可观的实例数(见 §4.2 分布表),但同时造成了"帧选取非随机"的口径特点:locations 的 2,532 帧不代表 23,000 帧的均匀抽样,用它估计真实帧分布会失真。
§3.6 标注者资质与一致性
官方 presence 版由 CAMMA 研究团队在斯特拉斯堡外科合作背景下完成,具体标注者人数与一致性指标(如 kappa)未随数据集公布。locations 版明确"在外科医生监督与抽查下完成"(under supervision and spot-checking from a surgeon)(Jin et al.),且官方 Stanford 页面给出了每类实例数与平均每帧 1.2 框的统计用于核查标注密度。
两个版本标注者背景的差异值得一提:presence 版的标注者更接近"研究标注员 + 外科顾问"模式,追求的是对 15 段视频全集的一致覆盖;locations 版是"斯坦福学生标注员 + 外科医生终审"模式,追求的是对精选帧的深度精确。前者胜在完整,后者胜在准确——把它们当成同一质量等级的两套框标注来混用,是最常见的解读错误。
§3.7 采集与发布周期
视频采集于 2016 年数据集发布之前(具体采集窗口未公开);版本节奏为:训练集 2016-05-23、测试集 2016-09-09、挑战赛 2016 年 10 月(MICCAI 2016 雅典卫星会)、生成论文 2016 年发表于 IEEE TMI (CAMMA)。官方版本此后未再修订,衍生扩展(locations、m2caiSeg 等)由第三方在 2017-2025 年间陆续发布。
发布节奏透露的维护状态值得注意:CAMMA 页面至今仍受理申请与结果提交,但 presence 标注本身多年未更新,社区对其的"维护"主要体现为持续受理排行邮件与第三方扩展,而非官方勘误——引用时以 2016 年发布口径为准。
§3.8 地域覆盖
单一医学中心:法国斯特拉斯堡大学医院。无跨中心、跨地域数据;这是 §7.1 偏倚与 §7.3 泛化性讨论的核心限制。斯特拉斯堡是欧洲腹腔镜外科与 IRCAD 培训中心所在地,术式标准化程度高,但同时也意味着器械品牌、团队习惯高度同质——数据集记录的是一个"高一致性"手术环境,天然缺少跨中心变异。
§3.9 设备规格
单目腹腔镜成像链路,原始采集 25 fps;具体腹腔镜型号、处理器械品牌与图像处理器未随数据集公布。locations 版公开帧图分辨率为 596×334 px,用户自行从 MP4 抽帧时将得到原生分辨率画面(同系列 workflow 视频报告为 1920×1080)(Cadene et al.)。
分辨率选择的实践含义:1920×1080 原生帧信息量远超模型需要,主流做法是短边缩放至 224-596 像素训练;若复现斯坦福 locations 管线,则应保持其 596×334 口径以对齐历史数字。
§3.10 深度溯源链
斯特拉斯堡大学医院手术室(单目腹腔镜,25 fps)
→ CAMMA 团队(ICube/CNRS/IHU Strasbourg)筛选 15 段胆囊切除术
→ 1 fps 采样 + 7 类器械 presence 人工标注
→ M2CAI 2016 挑战赛分发(训练 2016-05-23 / 测试 2016-09-09)
→ 生成论文 EndoNet,IEEE TMI 2016,DOI 10.1109/TMI.2016.2593957
→ 斯坦福团队扩展 m2cai16-tool-locations(2,532 帧边界框,WACV 2018)
→ 千方病案医数集 AI-Ready 百科条目(本页,审核日期 2026-09-05)
溯源链上的每一环都有可验证的锚点:视频来源锚定在医院与挑战页的机构声明上,标注协议锚定在技术报告的 1 fps 表述上,数字锚定在论文与官方页面。唯一的薄弱环节是最上游——视频的采集批次与患者筛选规则没有公开文档,这也是 §7.1 "存活者偏倚"一条的来源。本页作为链条末端,承诺所有转述数字可回溯至链条中段的具体文献。
§4 数据结构
本节先给出解压后的目录树与文件约定,再按 DAIMS 规范展开字段字典、标签分布、关键统计与缺失值语义。presence 标注的结构极其简单——这正是它的工程优势:全部复杂度都被转移到了"帧对齐"与"划分纪律"两件事上。
§4.0 目录树(解压后典型结构)
官方通过申请表单分发压缩包;以下为官方约定与社区复现整合后的典型结构(具体文件名以实际下发包为准,社区预处理脚本参考):
m2cai16-tool/
├── train_dataset/ # 训练子集(2016-05-23 发布)
│ ├── video01.mp4 # 手术视频(25 fps,20-75 分钟)
│ ├── video02.mp4
│ ├── ...
│ ├── video10.mp4
│ └── *.txt # 每视频一份 presence 标注:
│ # 每行 = 1 fps 一帧的 7 个 0/1 值
│ # 列序 grasper bipolar hook scissors
│ # clipper irrigator specimen_bag
├── test_dataset/ # 测试子集(2016-09-09 发布)
│ ├── video11.mp4
│ ├── ...
│ ├── video15.mp4
│ └── *.txt # 格式与训练标注一致
└── frames/ # 用户自建(§6.3 ffmpeg 抽帧产物)
└── video01/
└── video01_00000001.jpg # 命名约定:{video_id}_%08d.jpg
m2cai16-tool-locations/ # 斯坦福扩展(VOC 风格,[GitHub](https://github.com/ajin12/tooldetection))
├── Annotations/ # 每标注帧一个 .xml(类别 + 边界框)
├── ImageSets/
│ ├── Layout/ # 每工具类一个 .txt:逐帧二值 presence
│ └── Main/ # train.txt / trainval.txt / val.txt / test.txt
└── JPEGImages/ # .jpg 帧图(596×334)及水平翻转副本
目录树的三点解读:其一,presence 部分的"视频 + 文本"双件套结构决定了加载器必须自己维护帧-标注对齐(§6.3);其二,locations 部分是完整 VOC 惯例,任何目标检测框架都能直接读取;其三,frames 目录不存在于官方包中,是本页推荐的抽帧产物约定——把官方数据与派生数据分开存放,是避免"处理后数据被当原始数据引用"的关键习惯。
§4.1 DAIMS 字段字典(presence 标注核心表)
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| frame_id | string | 视频内帧标识(1 fps 序号) | video07_00512 |
主键、时序对齐 | 抽帧方式不当会错位 | 无 | 连续整数序号 |
| video_id | string | 视频编号 | video07 |
划分隔离键 | 无 | 无 | video01-video15 |
| grasper | int | 抓钳是否在画面 | 1 | 多标签分类目标 | 器械部分出画时依赖标注者判断 | 0 为真实语义非缺失 | |
| bipolar | int | 双极电凝是否在画面 | 0 | 多标签分类目标 | 同上 | 同上 | |
| hook | int | 电钩是否在画面 | 1 | 多标签分类目标 | 与抓钳共存时需仔细区分 | 同上 | |
| scissors | int | 剪刀是否在画面 | 0 | 多标签分类目标 | 稀有类,正例稀少 | 同上 | |
| clipper | int | 施夹器是否在画面 | 0 | 多标签分类目标 | 稀有类;与抓钳外观相似 | 同上 | |
| irrigator | int | 冲洗器是否在画面 | 0 | 多标签分类目标 | 稀有类 | 同上 | |
| specimen_bag | int | 标本袋是否在画面 | 0 | 多标签分类目标 | 袋体形态多变 | 同上 |
字段字典的两点使用说明:其一,7 个器械列是同构的(类型、取值、语义完全平行),可被向量化处理,无需为单类写特判;其二,"观测误差"列揭示的是标注的固有模糊带——器械部分出画时"在场"的判定依赖标注者对"可识别"的理解,这种模糊带在所有 presence 型标注中都存在,不是本集独有的缺陷。
§4.2 标签分布
presence 版的逐类帧分布官方未公布完整计数,但挑战赛基线的逐类 AP 间接揭示了分布:抓钳与电钩几乎贯穿全程(对应 AP 82.2/89.4),而 scissors、clipper、irrigator “仅在手术中短暂出现,训练图像稀缺”(Twinanda 技术报告),其 ToolNet-m2cai16 逐类 AP 仅 17.0/43.6/12.5。locations 版给出了可核查的每类实例分布(转引 ISSC 2024,注意其帧数口径与官方 2,532 存在差异,见坑点 8):
| 器械类 | 训练实例 | 验证实例 | 测试实例 | 合计 |
|---|---|---|---|---|
| Grasper | 707 | 420 | 293 | 1,420 |
| Bipolar | 215 | 120 | 95 | 430 |
| Hook | 165 | 79 | 64 | 308 |
| Scissors | 197 | 107 | 84 | 388 |
| Clipper | 220 | 116 | 64 | 400 |
| Irrigator | 228 | 173 | 84 | 485 |
| Specimen Bag | 241 | 138 | 96 | 475 |
这张分布表与 §8.1 的逐类 AP 表放在一起读会很有启发:Grasper 实例最多(1,420)且 AP 最高,Irrigator 实例不算最少(485)但空间 AP 最低(17.5)——说明稀有性之外,形态多变(冲洗/吸引时器械头部形态差异大)是独立的困难因素。数据量不是唯一的解释变量,这是单看 mAP 均值永远发现不了的。
§4.3 关键统计
- 视频数:15(训练 10 / 测试 5);视频时长 20-75 分钟;原始帧率 25 fps。
- 标注帧数:23,000 帧(1 fps 下采样后),折算视频总时长约 6.4 小时。
- 标签维度:7 类器械 × 每帧二值;总标注值 161,000 个(23,000 × 7)。
- 标签列序(官方固定):grasper → bipolar → hook → scissors → clipper → irrigator → specimen bag。
- locations 扩展:2,532 帧 / 3,141 个边界框 / 平均 1.2 框每帧 / 覆盖 video 1-10。
- 任务指标:mAP(逐类 AP 的均值),官方基线波动极大(52.5±30.5),逐类差异是主要来源。
- 每帧器械并存数:presence 允许 0-7 类同时在场;locations 实测平均 1.2 框/帧,说明多数标注帧只含 1-2 类器械(部分原因是帧选取策略偏向单器械帧)。
需要特别提醒的是"标签独立性":7 个二值位不是互斥单选,而是一组并存的布尔事实。把任务误做成 7 类 softmax 是新手最常见的架构错误之一——正确做法是 7 个独立 sigmoid 输出 + 逐类 BCE 损失。
§4.4 数据层级
手术病例(15 例,每视频一例)
└── 手术视频(25 fps MP4,20-75 分钟)
└── 1 fps 采样帧(23,000 帧)
└── 7 维 presence 标签向量(每帧)
locations 扩展:1 fps 帧 → 精选 2,532 帧 → 每帧 0-N 个边界框实例
层级设计对实验的含义:病例级只有 15 个样本,任何按病例聚合的统计都不具统计力,因此该数据集的全部推断都发生在帧级;视频级是划分与隔离的正确单位(GroupKFold 的分组键);帧级是建模与评测的最小单位,但相邻帧强相关,帧级随机划分只用于数据增广语境。三个层级各司其职,混淆层级是大多数实验设计错误的根源。
§4.5 缺失值与信息性缺失编码
presence 标注无缺失:每帧 7 维向量完整;标签值 0 表示"器械不在场"这一真实语义,不是缺失编码,任何把 0 当 NaN 处理的管线都是错误的。潜在"伪缺失"来自时间粒度:25 fps 原始视频只有 1/25 的时刻被标注,未标注的 24 帧并非"无器械",而是"未观测"——若需要更细粒度标签,只能通过插值或自监督外推,且需在论文中明示。
另一种容易误读的"缺失"是类别的结构性稀疏:scissors、clipper、irrigator 在多数视频整段缺席,这不是标注遗漏,而是术式本身的器械使用规律。逐类统计正例时应按视频分组查看,而不是只看全集占比——全集占比会掩盖"某些视频完全没有该类"的事实。
§5 数据划分与使用建议
划分是本数据集使用中最容易"无形中做错"的环节:官方协议清晰但只有一种,社区衍生协议各自为政。本节给出三种场景下的推荐做法与泄漏红线。
§5.1 官方划分
官方固定划分:video 1-10 训练(2016-05-23 发布)、video 11-15 测试(2016-09-09 发布)(Twinanda 技术报告)。挑战赛协议要求对测试 5 段视频逐帧输出 presence 预测,以逐类 AP 的均值 mAP 排名;结果需连同技术报告发送至 m2cai2016@gmail.com 以维护官方排行 (MLDTA)。
官方划分的隐含优点是"视频级隔离":训练与测试零共享视频,不存在帧级泄漏;其代价是测试侧只有 5 段视频、约 7,000+ 帧,指标方差不可忽略——这正是官方基线 mAP 带 ±15-30 标准差的原因之一。与姊妹的 workflow 挑战强制"在线模式"(只能利用 t 时刻之前的信息)不同,tool presence 挑战页面未对时序信息施加在线约束,逐帧离线预测即可;但引入未来帧信息的时序模型应在技术报告中声明,以保证社区可比性。
§5.2 社区惯例划分
locations 版采用帧级 50%/30%/20% 划分(训练/验证/测试),实例对应 1,405/843/563 个边界框分组 (Jin et al.、ISSC 2024);YOLOv8 复现与半监督检测研究均沿用该口径。presence 版研究中,部分团队从 10 段训练视频内部再切分出验证集(按视频或按时间段),无统一惯例。
两种口径并存导致的实际混乱值得记录:同样是"在 m2cai16-tool 上的检测精度",帧级划分的数字可以远高于视频级留出数字,二者的差距本身就是泄漏幅度的经验估计。引用他人结果前,先确认其表头/脚注里的划分口径,这一步比选模型更重要。
§5.3 泄漏风险与隔离建议
- locations 帧级划分的时间自相关泄漏:50/30/20 按帧随机切分,同一视频相邻秒的近似帧会同时落入训练与测试集,检测指标被系统性高估;比较文献数字时务必注明划分口径。
- 与 Cholec80 的视频重叠:官方说明 m2cai16 系列数据集"部分视频取自 Cholec80"(MLDTA);若在 Cholec80 上预训练再到 m2cai16-tool 评测,存在同源视频跨集泄漏,需先按视频源去重。
- 建议:presence 任务严格用官方 10/5 视频级划分;自建验证集时按视频分组(GroupKFold by video_id),禁止帧级随机切分进入任何报告指标。
一条红线总结:“评测视频 11-15 的任何信息(含标签分布、逐类正例率)不得参与训练期决策”——超参选择、阈值调优、早停、类别权重设定全部只能使用训练 10 段的内部数据。挑战赛时代之后的大量复现工作在这条红线上含糊不清,这也是本集历史数字难以精确复现的主要原因之一。
§5.4 交叉验证与外部验证建议
在 10 段训练视频上做按视频分组的 5 折交叉验证(每折 2 段视频)评估方差,再锁定超参后在官方 5 段测试视频上报告一次。这样得到的"内部 CV 方差"可以作为测试集单次数字的置信度参照,缓解"5 段视频太容易过拟合评测"的担忧。
外部验证优先级排序:第一优先 Cholec80 的独立视频——13 位外科医生、80 段视频、同为胆囊切除且器械类别几乎重合,是天然的分布偏移温和的外部集;第二优先 m2cai16-workflow 的测试视频(同中心、同术式,仅任务不同);第三才是跨术式数据集(如含胃切除、疝修补的手术视频库),用于检验器械形态差异下的鲁棒性极限。每一级都应报告"相对内部测试的变化幅度"而非只报绝对值。
外部验证的报告模板:外部集名称 | 与本集关系(同中心/跨中心/跨术式)| 使用帧数 | 逐类 AP 变化 | mAP 变化 | 主要失效类——按此表填写可保证审稿人关心的泛化问题全部被覆盖。
§6 AI 就绪指南
本节是全篇操作核心:从获取、抽帧、对齐到训练与评估,给出一条可以照抄的完整路径,并把 8 个真实坑点放在路径旁边。所有代码假设你已获得官方数据;未获得前,可以先用 §6.1 的最小验证脚本设计管线。
§6.0 云端快速启动
数据集无公开直链,必须先经 CAMMA 表单 申请;获得下载链接后可在本地解压再上传至 Colab/云主机(数据量约几 GB,上传耗时可接受)。locations 扩展可直接从 GitHub tooldetection 仓库 获取标注结构,帧图见 Stanford 页面 说明。
云端实践建议:Colab 免费档即可完成 presence 全流程(抽帧约 15 分钟、ResNet-50 训练 10 epochs 约 40 分钟);把抽帧结果存入 Google Drive 并缓存为 zip,可跳过重复抽帧;不要把数据集本身再上传到公开网盘或 HuggingFace——申请制数据的再分发违反获取约定。
§6.1 快速上手
代码前的三个约定:data_root 指向解压后的 m2cai16-tool/ 目录(其下是 train_dataset/ 与 test_dataset/);帧目录按 {data_root}/frames/{video_id}/ 组织,由你自己用 ffmpeg 生成(§6.3);最小可用子集 = 任一训练视频 + 它的标注 TXT(数 MB 即可跑通全管线)。
data_root 拼接关系一览:
data_root/
├── train_dataset/
│ ├── video01.mp4 # 原始视频,仅用于抽帧
│ ├── video01.txt # presence 标注,行号 = 秒序号
│ └── ...
├── frames/ # 由用户按 1 fps 生成(不随官方包提供)
│ └── video01/
│ ├── video01_00000001.jpg # 第 1 秒的帧(对应标注第 1 行)
│ └── ...
└── test_dataset/ # 官方评测前禁止参与任何训练决策
核对点:抽帧后每视频帧数应约等于其标注行数(±1 秒的编码误差可接受);若某视频帧数与行数差超过 3,先检查 ffmpeg 参数再继续。
# 目录结构预期:
# data_root/
# train_dataset/video01.mp4 + video01 标注 txt
# frames/video01/video01_00000001.jpg ... # 1 fps 抽帧结果
# 读取一份标注并检查形状(最小验证脚本)
from pathlib import Path
def load_presence_txt(txt_path):
rows = [ln.split() for ln in Path(txt_path).read_text().splitlines() if ln.strip()]
return [[int(v) for v in r] for r in rows] # 每行 7 个 0/1
labels = load_presence_txt("data_root/train_dataset/video01.txt")
assert all(len(r) == 7 for r in labels), "每行必须为 7 维 presence 向量"
print(f"video01 标注帧数: {len(labels)}") # 应约等于视频秒数
§6.2 数据获取
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 填写 CAMMA datasets 页 的 m2cai16-tool request 表单 | 填写姓名、机构、研究用途 |
| 2 | 等待邮件发放下载链接并加入 mailing list | 官方承诺链接在可用后发送 (挑战页) |
| 3 | 下载并解压 m2cai16-tool 压缩包 |
含 15 段 MP4 与 presence 标注 TXT |
| 4 | 引用 EndoNet 论文 | IEEE TMI 2016,DOI 10.1109/TMI.2016.2593957(官方强制要求) |
| 5 | (可选)获取 locations 扩展 | Stanford 页面 + GitHub |
| 6 | 抽帧后核对帧数与标注行数 | 偏差 >3 秒先排查 ffmpeg 参数(防坑点 1) |
| 7 | 记录压缩包哈希与抽帧参数 | 写入实验配置,固化数据版本(防坑点 8) |
# 获取后验收脚本:跑通即说明包完整、抽帧与标注可对齐
from pathlib import Path
root = Path("data_root")
videos = sorted((root / "train_dataset").glob("*.mp4"))
print(f"训练视频数: {len(videos)}") # 预期 10
for v in videos[:2]:
txt = v.with_suffix(".txt")
n_lines = len([l for l in txt.read_text().splitlines() if l.strip()])
frames = len(list((root / "frames" / v.stem).glob("*.jpg")))
print(f"{v.stem}: 标注 {n_lines} 行 / 抽帧 {frames} 张") # 差值应 ≤3
# 获得链接后:解压并按 1 fps 抽帧(与标注粒度严格一致)
unzip m2cai16-tool.zip -d data_root
mkdir -p data_root/frames
for v in data_root/train_dataset/*.mp4; do
vid=$(basename "$v" .mp4)
ffmpeg -i "$v" -vf fps=1 -q:v 2 "data_root/frames/${vid}/${vid}_%08d.jpg"
done
获取核对清单(申请前建议逐项确认):表单中如实填写研究用途与机构信息;同一申请不要重复提交(官方通过 mailing list 发放更新);下载后校验压缩包完整性再做抽帧;若同时申请 workflow 数据集,注意两包分开存放以便划隔离清单。locations 扩展无需申请 CAMMA,标注结构直接见 GitHub 仓库。
§6.3 预处理全流程
流水线四步:抽帧对齐(ffmpeg 1 fps)→ 标注解析(TXT → 张量)→ 清洗(剔除片头黑屏/镜头清洁帧可选)→ 标准化(ImageNet 均值方差;分辨率统一 224×224 或 596×334)。
# 预处理:标注与帧对齐 + 基础统计
import numpy as np
from pathlib import Path
def load_presence_txt(txt_path):
rows = [ln.split() for ln in Path(txt_path).read_text().splitlines() if ln.strip()]
return [[int(v) for v in r] for r in rows] # 每行 7 个 0/1
def build_video_table(data_root, video_id):
labels = np.array(load_presence_txt(f"{data_root}/train_dataset/{video_id}.txt"))
frame_dir = Path(f"{data_root}/frames/{video_id}")
n_frames = len(list(frame_dir.glob("*.jpg")))
m = min(len(labels), n_frames) # 抽帧数与标注行数可能相差 ±1 秒
return labels[:m], frame_dir, m
labels, frame_dir, m = build_video_table("data_root", "video01")
print("每类正例帧数:", labels.sum(axis=0)) # 顺序: grasper bipolar hook scissors
# clipper irrigator specimen_bag
print("正例占比:", labels.mean(axis=0).round(3))
清洗环节的两个可选规则:其一,连续多帧全零标签且画面为黑屏/转场的时间段可整体剔除(依据逐帧亮度统计自动筛选),能减少易学负样本对损失的稀释;其二,镜头清洁擦拭帧(画面短暂模糊/变色)建议保留而非剔除——真实部署中这类帧不可避免,剔除会让验证指标虚高。标准化参数建议统一用 ImageNet 均值方差,与主流预训练骨干保持一致;若从零训练,可改为数据集自身统计。
预处理完成后的验证清单:全部 15 段视频帧数与标注行数逐一比对并记录差值;逐类正例占比表与 §4.2 分布同数量级;抽样 10 帧目视核对"标注为 1 的器械确实可见";把以上三步的输出存为 preprocess_report.json 随实验归档。
§6.4 PyTorch DataLoader(完整可运行)
以下 Dataset 类实现了"帧文件 + TXT 标注"的对齐读取,是 §6.3 预处理结果的直接消费者;transform 部分遵循 §6.6 的增强安全清单。
<details>
<summary>展开完整 Dataset + DataLoader 代码(约 50 行)</summary>
# 预期目录:data_root/frames/{video_id}/{video_id}_%08d.jpg
# data_root/train_dataset/{video_id}.txt(每行 7 个 0/1)
# 最小子集:任一训练视频 + 对应标注即可运行
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
from pathlib import Path
from PIL import Image
from torchvision import transforms
TOOL_NAMES = ["grasper", "bipolar", "hook", "scissors",
"clipper", "irrigator", "specimen_bag"]
train_tf = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(), # presence 与左右无关,翻转安全
transforms.ColorJitter(0.2, 0.2, 0.1),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
eval_tf = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
class M2CAI16ToolPresence(Dataset):
def __init__(self, data_root, video_ids, transform=train_tf):
self.items, self.transform = [], transform
for vid in video_ids:
txt = Path(data_root) / "train_dataset" / f"{vid}.txt"
labels = np.array(load_presence_txt(str(txt)), dtype=np.float32)
frame_dir = Path(data_root) / "frames" / vid
frames = sorted(frame_dir.glob("*.jpg"))
m = min(len(labels), len(frames))
for i in range(m):
self.items.append((frames[i], labels[i]))
def __len__(self):
return len(self.items)
def __getitem__(self, idx):
img_path, label = self.items[idx]
img = Image.open(img_path).convert("RGB")
return self.transform(img), torch.from_numpy(label)
train_set = M2CAI16ToolPresence("data_root", [f"video{i:02d}" for i in range(1, 6)])
loader = DataLoader(train_set, batch_size=32, shuffle=True,
num_workers=4, pin_memory=True)
imgs, lbls = next(iter(loader))
print(imgs.shape, lbls.shape, lbls.sum(dim=0)) # [32,3,224,224] [32,7] 每类正例数
</details>
<details>
<summary>展开最小训练循环(ResNet-50 + 逐类 BCE + pos_weight,约 40 行)</summary>
# 依赖:§6.4 的 Dataset 与 DataLoader;标签顺序 TOOL_NAMES
import torch
import torch.nn as nn
from torchvision.models import resnet50, ResNet50_Weights
device = "cuda" if torch.cuda.is_available() else "cpu"
model = resnet50(weights=ResNet50_Weights.IMAGENET1K_V2)
model.fc = nn.Linear(model.fc.in_features, 7) # 7 个独立 logit,不用 softmax
model.to(device)
# 逆频率加权:pos_weight = 负样本数 / 正样本数(稀有类权重更大)
all_labels = torch.cat([lbls for _, lbls in DataLoader(train_set, batch_size=256)])
pos_weight = ((1 - all_labels).sum(0) / all_labels.sum(0).clamp(min=1)).to(device)
criterion = nn.BCEWithLogitsLoss(pos_weight=pos_weight)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=1e-4)
for epoch in range(10):
model.train()
for imgs, lbls in loader:
imgs, lbls = imgs.to(device), lbls.to(device)
optimizer.zero_grad()
loss = criterion(model(imgs), lbls)
loss.backward()
optimizer.step()
print(f"epoch {epoch}: loss={loss.item():.4f}")
torch.save(model.state_dict(), "m2cai16tool_resnet50.pt")
</details>
§6.5 坑点 8 个(真实失败模式)
以下 8 个坑点全部源自该数据集及其扩展的真实失败模式:前 3 个来自官方论文的失败分析,第 4-5 个来自数据协议的泄漏结构,第 6-7 个来自评估环节的常见误用,第 8 个来自社区传播中的口径漂移。每个坑点给出简单/进阶/SOTA 三档解法。
⚠️ 坑点 1:1 fps 标注与 25 fps 视频的帧-标签错位(分类:预处理陷阱)
问题:标注粒度为每秒 1 帧,原始视频 25 fps;抽帧方式(按帧号取、按时间取、含丢帧)不同会导致帧序列与标注行错位一至数秒,模型学到的是错位标签。
症状:训练损失正常但验证 mAP 异常低且所有类一起差;目视抽查发现预测与画面"差一拍"。
解决:
- 简单方法:统一用
ffmpeg -vf fps=1从第 0 秒起抽帧,帧序号 i 对应标注第 i 行;加载时取min(len(frames), len(labels))截齐。- 进阶方法:以标注行时间戳
i/1.0 s为准,用ffmpeg -ss <t> -frames:v 1精确取时刻帧,消除编码器关键帧偏差。- SOTA 方法:训练时对标签做 ±1 帧随机时移作为弱增强/正则,或在特征后接时序平滑(LSTM/TCN)吸收残余错位(EndoNet 后续工作即引入时序建模,Twinanda 技术报告结论)。
参考:Twinanda et al. 2016 技术报告(1 fps 标注定义)、社区预处理脚本(帧对齐实现)。
⚠️ 坑点 2:稀有类剪刀/施夹器/冲洗器被高频类淹没(分类:偏倚陷阱)
问题:scissors、clipper、irrigator 仅在手术中短暂出现,训练正例稀缺;grasper 几乎全程在场,主导了交叉熵损失。
症状:整体 mAP 被 grasper/hook 拉高,但稀有类 AP 个位数(ToolNet-m2cai16 上 irrigator 仅 12.5、scissors 17.0);混淆矩阵显示三者大量被判为 grasper(外观相似)。
解决:
- 简单方法:逐类统计正例占比,按逆频率加权 BCE 损失(
pos_weight = N_neg / N_pos)。- 进阶方法:对含稀有类的帧过采样(帧级 WeightedRandomSampler),配合 Focal Loss 抑制易负例。
- SOTA 方法:利用 Cholec80 的 40 段训练视频迁移预训练再微调——官方实验证明训练数据从 10 段扩到 40 段时 mAP 从 52.5 升至 73.9-74.2,数据扩充是第一生产力(Twinanda 技术报告)。
参考:Twinanda et al. 2016(逐类 AP 表与失败分析)。
⚠️ 坑点 3:presence ≠ 数量 ≠ 定位(分类:标签理解)
问题:标签是"是否在场"的二值语义:一帧出现两把 grasper 仍标 1,器械只露 10% 画面也算在画;挑战赛明确"不涉及定位"。
症状:把 presence 标签当计数回归或多类 softmax(而非 7 个独立 sigmoid)训练,指标异常;或误以为可从 presence 输出画框。
解决:
- 简单方法:输出层用 7 个独立 sigmoid + 逐类 BCE,禁止 softmax;评估用逐类 AP。
- 进阶方法:需要定位时改用 m2cai16-tool-locations(2,532 帧、3,141 框)训练检测器。
- SOTA 方法:presence 与定位双任务联合——斯坦福证明用 locations 框训练的检测器转帧级 presence 预测可"显著超越 2016 挑战赛所有已有工作"(Jin et al. NIPS ML4H 2017)。
参考:M2CAI 2016 挑战页(任务定义)。
⚠️ 坑点 4:locations 版帧级 50/30/20 划分的时间自相关泄漏(分类:数据泄漏)
问题:locations 扩展按帧随机切分训练/验证/测试,同一视频相邻秒的近似帧分跨集合,模型只需"记住"相邻帧即可得分。
症状:检测 mAP 虚高且换视频即崩;不同论文报告的 locations 指标差距大、难以比较。
解决:
- 简单方法:报告指标时显式标注"帧级划分(遵循 Jin et al.)",不与视频级划分结果混排。
- 进阶方法:自建按视频分组的划分(如 video 1-7 训练 / 8-9 验证 / 10 测试)做泛化评估。
- SOTA 方法:同时报告两种口径,并用时间连续块切分(连续秒段整体划入同一折)量化泄漏幅度。
参考:Jin et al. 2018(50/30/20 帧级划分定义)。
⚠️ 坑点 5:与 Cholec80 的视频重叠导致跨数据集泄漏(分类:数据泄漏)>
问题:官方说明 m2cai16 系列数据集"部分视频取自 Cholec80";在 Cholec80 上预训练/预抽取特征再到 m2cai16-tool 评测,同源视频会同时出现在两侧。
症状:迁移预训练带来的提升异常夸张;不同预训练语料对比实验不可复现。
解决:
- 简单方法:预训练语料剔除与 m2cai16-tool 15 段同源的视频(按采集机构与发布信息人工核对)。
- 进阶方法:以帧内容指纹(感知哈希)比对两库帧级重叠,建立排除清单。
- SOTA 方法:报告"含/不含重叠视频"两组结果,给出泄漏上界。
参考:MLDTA 对 CAMMA 数据集页的存档(“Some of the videos are taken from the Cholec80 dataset”)。
⚠️ 坑点 6:只报 mAP 均值掩盖 ±15-30 的逐类波动(分类:评估误用)
问题:官方基线的 mAP 均值伴随极大标准差(52.5±30.5、74.2±15.3),均值比较无法反映稀有类是否改善。
症状:新方法均值 +1.2 就宣称 SOTA,但剪刀/冲洗器 AP 反而下降;审稿被质疑。
解决:
- 简单方法:表格同时报告逐类 AP 与均值,稀有类单独讨论。
- 进阶方法:在 10 段训练视频上做按视频分组 5 折交叉验证,报告均值±标准差后再与测试集单次结果并列。
- SOTA 方法:按"高频类均值 / 稀有类均值"双指标报告,并给出与 EndoNet 逐类 AP 的配对比较。
参考:Twinanda et al. 2016(表 1 含 ± 标准差与逐类数值)。
⚠️ 坑点 7:置信度阈值全局统一导致稀有类漏检(分类:评估误用)
问题:presence 输出的是每类置信度,需按类阈值化才是 0/1 判定;官方基线即"对 fc_tool 的 7 维置信度施加阈值"(applying thresholds to these confidences)。
症状:统一 0.5 阈值下稀有类几乎全 0;F1 极低但 AP 正常——AP 与阈值无关,阈值化后才暴露。
解决:
- 简单方法:按类在验证集上扫描阈值取 F1 最优(稀有类阈值应显著低于 0.5)。
- 进阶方法:阈值化前做逐类概率校准(temperature scaling / Platt)。
- SOTA 方法:部署场景用时序多数投票(滑动窗口)平滑二值输出,抑制单帧抖动。
参考:Twinanda et al. 2016(置信度阈值化协议)。
⚠️ 坑点 8:版本与口径混乱——23,000 帧、2,532 vs 2,811 帧引用打架(分类:工程陷阱)
问题:跨文献口径不一致:presence 版为 15 段视频 23,000 帧(1 fps);locations 版官方 Stanford 页面为 2,532 帧/3,141 标注,而后续论文分别记为 2,811 帧(ISSC 2024)、2,812 帧(半监督检测研究),导致引用数字互相矛盾。
症状:论文/文档里帧数对不上被审稿人指出;复现时数据量与文献描述不符。
解决:
- 简单方法:以官方来源为准——presence 版引 Twinanda 2016,locations 版引 Stanford 页面(2,532 帧/3,141 标注)。
- 进阶方法:拿到数据后自测:统计 1 fps 抽帧总数(应≈23,000)与 locations XML 文件数,在自己的文档里固化实测口径。
- SOTA 方法:在发布模型卡/数据卡时同时给出官方口径与实测口径两行数字并注明来源版本日期。
参考:Stanford tooldetection vs ISSC 2024(口径分歧实例)。
8 个坑点覆盖的环节依次为:数据对齐(1)、类别体系(2、3)、划分隔离(4、5)、指标解读(6、7)、版本口径(8)——恰好构成一条从拿到数据到发出论文的完整风险链。建议把本节打印贴在实验记录本第一页。
§6.6 数据增强(安全 ✅ / 危险 ❌)
- ✅ 水平翻转:presence 与画面左右无关(locations 框需同步翻转坐标,官方发布的帧图即含翻转副本)。
- ✅ 光度扰动:亮度/对比度/色相抖动模拟腹腔镜白平衡漂移;轻微高斯噪声模拟成像噪声。
- ✅ 时间抖动(±1-2 个 1 fps 采样):配合标签小幅平移,提升时序鲁棒性。
- ✅ 烟雾模拟增强:对画面叠加半透明灰白层模拟术中烟雾,提升真实 OR 条件下的鲁棒性(标注不变,在场器械仍可辨)。
- ❌ 激进裁剪:presence 标签假设全画面语义,随机大幅裁剪可能把唯一出现的器械裁出画面,制造"标签噪声"。
- ❌ 时间重采样/变速:破坏与 1 fps 标注的逐帧对齐,直接复现坑点 1 的错位问题。
- ❌ 灰度化:双极电凝、冲洗液等类别的颜色线索是有判别力的,整帧去色损失关键证据。
一条通用原则:presence 标签对"空间完整性"敏感(裁剪可能移除证据)但对"外观变换"鲁棒(翻转、色偏不改变在场事实)。凡是可能改变画面内容完整性的几何增强都应慎用,凡是只改变像素风格的光度增强都值得优先尝试。
§6.7 模型推荐
| 模型 | 适用场景 | 起步配置 | 备注 |
|---|---|---|---|
| ResNet-18/50 + 逐帧 sigmoid | 基线复现 | ImageNet 预训练,BCE + pos_weight | 数小时可收敛,建议首选 |
| EndoNet(AlexNet 双头) | 历史基线复现 | 按原论文 Caffe→PyTorch 移植 | 74.2 mAP 参照点 (Twinanda TMI 2016) |
| CNN + LSTM/TCN 时序头 | 在线工作流感知 | 帧特征缓存后轻量时序层 | 吸收 1 fps 标注的时序噪声 |
| Faster R-CNN / DETR | locations 空间检测 | VGG-16/ResNet-50 骨干 | 官方扩展协议 mAP@IoU 0.5,历史值 63.1 (Jin et al.) |
| YOLOv8 系列列 | 快速工程落地 | imgsz≈596,200 epochs | 复现协议见 ISSC 2024 |
| 视频基础模型(如 LemonFM 等)线性探针 | 表征质量评测 | 冻结骨干 + 7 维线性头 | 适合检验预训练表征的器械语义 (arXiv:2503.19740) |
选型的经验法则:先跑通 ResNet-50 逐帧基线拿到逐类 AP 分布,再决定是否需要时序头(看混淆是否集中在时间边界)或检测器(看是否需要空间证据)。在这个 23,000 帧的数据集上,简单模型的迭代速度就是最大的研究杠杆。
迁移到更大规模时的路径建议:把在本集上调通的预处理与损失函数原样搬入 Cholec80(列序兼容:同为 7 类器械 presence),保留 pos_weight 设置让其在新数据分布上重估;Locations 的 VOC 结构则可直接接入任意检测框架——本集学到的工程决策在邻居数据集上几乎全部可复用,这是"从它开始"的隐性红利。
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 抽帧与解析 | CPU 4 核 / 16 GB 内存 | CPU 8 核 / 32 GB | ffmpeg 1 fps 抽 23,000 帧约十几分钟 |
| presence 训练 | 1×8 GB GPU(如 RTX 3060) | 1×16 GB GPU | 224×224 输入,batch 32 起步 |
| locations 检测 | 1×11 GB GPU | 1×24 GB GPU | 检测器显存开销更大;官方早期用 Tesla K40 级别训练约两天 (Jin et al. NIPS ML4H 2017) |
| 大规模预训练迁移 | 1×24 GB GPU | 多卡 A100 级 | 仅当引入视频基础模型或自监督预训练时需要 |
作为参照:2016 年挑战赛参赛者用当时主流的 AlexNet+Caffe 在单卡上数天内即可完成训练;如今同样的实验在消费级 GPU 上不到半天。硬件门槛的下降意味着这个数据集的全部基线都可以在实验室级别复现。
§6.9 评估指标代码
# 逐类 AP 与 mAP:与官方定义一致(逐类 PR 曲线下面积再平均)
import numpy as np
from sklearn.metrics import average_precision_score
def evaluate_presence(y_true: np.ndarray, y_prob: np.ndarray):
aps = {}
for i, name in enumerate(TOOL_NAMES):
if y_true[:, i].sum() == 0:
continue # 测试期无正例的类按官方惯例跳过或记 0
aps[name] = average_precision_score(y_true[:, i], y_prob[:, i])
mAP = float(np.mean(list(aps.values())))
return aps, mAP
# aps, mAP = evaluate_presence(labels_np, probs_np)
# print({k: round(v, 3) for k, v in aps.items()}, "mAP:", round(mAP, 3))
若模型含时序组件(CNN+TCN/LSTM),建议同时报告平滑前后的两组指标,以量化时序收益并保持与逐帧协议的可比性:
# 时序多数投票平滑:窗口内各类正票超过半数才置 1
def temporal_smooth(prob: np.ndarray, window: int = 5, thresh: float = 0.5):
smoothed = prob.copy()
for t in range(len(prob)):
lo, hi = max(0, t - window // 2), min(len(prob), t + window // 2 + 1)
smoothed[t] = (prob[lo:hi] > thresh).mean(axis=0)
return (smoothed >= 0.5).astype(int)
# y_bin = temporal_smooth(probs_np) # 平滑后的二值预测
# 注意:官方 mAP 用连续置信度计算,平滑仅用于二值化部署输出
指标选择的最后建议:论文主表用官方 mAP(连续置信度、无平滑),工程部署表另报阈值化后的逐类 F1 与时序平滑后的指标;两套指标并列且注明口径,是本数据集上最稳妥的报告方式。
§6.10 MLOps 笔记
- 数据版本:把"官方压缩包哈希 + 抽帧参数(fps=1、起始偏移)"写入实验配置,杜绝坑点 1/8 的复现歧义。
- 指标追踪:逐类 AP 七条曲线 + mAP 一条曲线分开记录;稀有类单设告警阈值。
- 实验对照纪律:任何混入 Cholec80 的训练实验单独打标(corpus=mixed),与纯 m2cai16 实验隔离(坑点 5)。
- 漂移监控:上线后监控逐帧正例率(尤其 grasper 占比)与白平衡统计量的漂移,跨中心部署前必须重校准。
- 许可合规:分发的模型与论文引用 EndoNet(IEEE TMI 2016);数据本身不可再分发,公开的只有权重与代码。
- 消融留痕:阈值策略(全局 0.5 vs 逐类调优 vs 时序投票)是部署指标的最大杠杆之一,每次变更都要留档(坑点 7)。
- 回归测试集:从测试 5 段视频固定抽样 500 帧做快速回归集,每次模型更新 5 分钟内验证逐类 AP 无异常退化。
- 复现包发布:公开论文代码时附"环境锁定文件 + 抽帧参数 + 评测脚本"三件套,让他人 30 分钟内复现你的主表数字。
交付前的最后一遍快速检查(全部可脚本化):
[ ] 抽帧帧数 = 标注行数(±1)且记录在 preprocess_report.json
[ ] 训练/测试只出现 video 01-10 / 11-15,无交叉
[ ] 输出层为 7 个独立 sigmoid,无 softmax
[ ] 主表 mAP 用连续置信度计算,逐类 AP 全部列出
[ ] 稀有类(scissors/clipper/irrigator)单独讨论
[ ] 引用列表含 EndoNet TMI 2016,协议口径显式声明
§7 质量评估与局限性
质量评估分两层:§7.1-§7.6 讨论数据集作为研究材料的内在质量(偏倚、标注、泛化、伦理、公平、漂移),§7.7-§7.8 用 DAIMS 检查表与外部验证矩阵给出结构化评分。总体判断先行:这是一个"语义干净、元数据贫血"的数据集——建模侧几乎无坑,流程侧需要使用者自证清白。
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | 全部视频来自斯特拉斯堡大学医院单一团队 | 高 | 外部验证(Cholec80、跨中心数据)后再报告泛化结论 |
| 术式单一 | 仅胆囊切除术,器械组合固定 | 高 | 跨术式数据集上测试器械形态鲁棒性 |
| 类别不平衡 | scissors/clipper/irrigator 短暂出现,正例稀缺(官方逐类 AP 12.5-17.0 @ToolNet-m2cai16) | 高 | 逆频率加权、过采样、迁移扩充数据 |
| 外观混淆 | 剪刀/施夹器/冲洗器与高频 grasper 形态相似 | 中 | 需要时引入空间标注(locations)辅助判别 |
| 时间粒度偏置 | 1 fps 标注丢弃 24/25 的时刻信息 | 中 | 时序平滑与插值,报告口径显式化 |
| 存活者偏倚(发布选择) | 发布的是 2016 年精选 15 段,非连续队列 | 中 | 把它当基准而非流行病学样本 |
上表六项偏倚的性质并不相同:前两项是构成性偏倚(数据设计的必然产物,只能靠外部数据缓解),中间两项是标注偏倚(可通过标注策略与损失设计缓解),后两项是协议偏倚(依赖使用者的解读方式)。把它当基准时偏倚影响有限,把它当真实手术分布的样本时偏倚被急剧放大——这是"基准型数据集"与"队列型数据集"的本质区别。
§7.2 标注质量
presence 标注语义简单(7 类器械在场与否)、歧义低,这是该数据集质量最稳的部分;官方未公布标注者间一致性系数(如 Cohen’s kappa),属于信息缺口——复现者应意识到"在场判定"在器械仅露尖端、部分出画、烟雾半遮挡时存在天然模糊带,不同标注者可能给出不同答案。
locations 扩展"由外科医生监督并抽查",并公开了每类实例计数与平均 1.2 框/帧的密度统计供核查 (Jin et al.、Stanford)。器械部分出画、烟雾遮挡瞬间等边界情况的判定规则未见公开文档;斯坦福的帧选取策略(先单器械后多器械)意味着其框标注在"单器械帧"上最可靠,多器械密集帧的框质量应抽样目检后再信任。
实用建议:凡用本数据集发表的指标,建议附上自建验证帧的目检结果(如随机 100 帧人工复核一致率),以弥补官方一致性数据缺失。
§7.3 泛化性评估
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨医院/跨腹腔镜设备 | 高:白平衡、器械品牌外观差异大 | 单中心数据,无跨中心验证报告 |
| 跨术式(非胆囊切除) | 高:器械类型与组合不同 | 数据集仅含胆囊切除术 |
| 训练数据量缩减 | 高:10 段训练 mAP 52.5 vs 40 段 74.2 | Twinanda 技术报告 |
| 稀有类少样本 | 高:irrigator AP 12.5-65.1 区间剧烈波动 | 同上,逐类 AP 表 |
| 同中心新病例 | 中低:术式与团队一致,主要风险为病例间变异 | 官方测试 5 段为同中心留出集 |
对泛化性结论的表达建议:在本数据集上报告的任何指标,语句上都应限定为"在 m2cai16-tool 官方测试划分上";涉及"手术视频泛化能力"的表述必须搭配至少一个外部集(§5.4 优先级)的验证结果,否则属于过度声明。历史文献中"数据量决定天花板"的结论(52.5 → 74.2)是本集最有外部稳健性的发现,因为它有明确的机制解释(稀有类样本量)。
§7.4 伦理与合规
视频为腹腔内手术视野,不含患者面部或体表可识别特征;分发采用申请制(机构信息 + 研究用途声明),官方要求引用 EndoNet 论文且结果提交用于维护公共排行 (CAMMA)。官方未随集公布患者知情同意的具体文书细节,使用者应遵循所在机构伦理审查要求;不得将数据再分发或用于训练面向临床决策的产品而不做独立验证。
从数据伦理类型学看,本数据集属于"低直接辨识度、高再识别残余风险"类别:体内影像本身不带身份信息,但结合手术日期、术式与医院信息做交叉比对,理论上存在间接再识别路径。因此公开模型权重与演示视频时应避免暴露具体病例的元数据组合,演示帧建议打码或使用远端发布方提供的公开示例。
§7.5 公平性
数据集未公开患者人口学信息(年龄、性别、种族),无法进行按人群分层的性能审计;从数据来源看,其反映的是法国单一中心外科团队的器械使用习惯。将其用于跨人群、跨地区产品时,公平性结论不可外推。
可以做的替代审计是"器械公平性":检查模型在 7 个类别上的性能方差而非人群方差——把稀有类视为本数据集语境下的"弱势群体",用同样的审计框架检验资源分配是否失衡(§4.2 与 §8.1 的分布-性能对照即是一个简版审计)。这一思路也适用于其他存在类别长尾的手术视频数据集。
§7.6 数据漂移
腹腔镜成像与器械在 2016 年后持续演进:4K/3D 镜头普及、荧光/近红外成像进入临床、一次性器械与新型吻合器械改变画面器械组合、新设备的白平衡曲线不同于早期 1080p 成像链路。本数据集代表的是 2016 年前后斯特拉斯堡的成像分布,模型在新一代 OR 视频上的表现需重新校准。
跨时间漂移的可监控信号包括:逐帧正例率结构变化(如某类器械使用频率下降)、色域与亮度统计漂移、器械出现时长分布变化、画面分辨率与宽高比变化。实践上,建议在部署管线中内置前哨集(从新中心视频采样约 1,000 帧做逐类预测分布对比),漂移超过设定阈值即触发再校准流程。
§7.7 DAIMS 数据质量评估(24 项)
DAIMS(Data quality Assessment for In-domain Medical Supervision)24 项检查覆盖结构、语义、流程三层;状态图例:✅ 通过、⚠️ 部分满足/需自行核验、❌ 缺失。
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 一帧一行、7 列标签的宽表结构清晰 |
| 2 | 唯一标识 | ✅ | video_id + 帧序号可全局唯一定位 |
| 3 | 特殊字符 | ✅ | 标注仅含数字与工具名,无编码陷阱 |
| 4 | 重复行 | ✅ | 无重复标注行(相邻帧相似属时序本性而非重复) |
| 5 | 缺失编码 | ✅ | 标注完整无缺;0 为真实语义 |
| 6 | 标签标识 | ⚠️ | presence 无计数与定位语义,易被误用 |
| 7 | 罕见类分组 | ⚠️ | scissors/clipper/irrigator 正例极稀少 |
| 8 | 偏倚评估 | ⚠️ | 单中心、单一术式,官方未提供偏倚分析 |
| 9 | 数据字典 | ✅ | 7 类器械定义见官方挑战页 |
| 10 | 信息性缺失解释 | ✅ | 未标注的 24/25 时刻为"未观测",语义可解释 |
| 11 | 设备记录 | ⚠️ | 腹腔镜型号与品牌未随集公布 |
| 12 | 共线性 | ⚠️ | grasper 与其他器械强共现,逐类建模需注意 |
| 13 | 编码映射 | ✅ | 7 类列序官方固定且简单 |
| 14 | 时间戳处理 | ⚠️ | 1 fps 粒度需用户自行对齐 25 fps 视频 |
| 15 | 划分建议 | ✅ | 官方 10/5 视频级划分明确 |
| 16 | 泄漏讨论 | ⚠️ | 官方划分安全;locations 帧级划分存在泄漏口径 |
| 17 | 标签分布 | ⚠️ | 严重不平衡且官方未公布逐类帧计数 |
| 18 | 测量偏倚 | ✅ | 器械在场判定主观性低 |
| 19 | 外部验证建议 | ✅ | Cholec80 可作天然外部集 |
| 20 | 版本记录 | ⚠️ | 官方版 2016 后未更新;衍生版口径不一 |
| 21 | 预处理脚本 | ❌ | 官方未提供抽帧、加载或评估脚本 |
| 22 | 合规要求 | ⚠️ | 无正式许可文本,依赖申请表约定与引用要求 |
| 23 | 多模态对齐 | ✅ | 单一视觉模态,无跨模态对齐需求 |
| 24 | 去标识化 | ⚠️ | 体内视野天然低辨识度,但官方未公布脱敏流程文档 |
DAIMS 评分:17.5 / 24(✅ 12 项 ×1 + ⚠️ 11 项 ×0.5 + ❌ 1 项 ×0)
评分方法说明:✅ 计 1 分(检查项通过且可直接引用),⚠️ 计 0.5 分(检查项部分满足或需使用者自行核验),❌ 计 0 分(检查项缺失)。评分反映"开箱即用的数据工程成熟度",不反映数据本身的科研价值——后者应结合 §1.2 的战略价值综合判断。
评分解读:该数据集的强项在"结构简单、语义干净"——宽表标注、唯一标识、编码映射等工程基础项全部达标;失分集中在"元数据与流程":无预处理脚本、无正式许可文本、设备与标注一致性信息缺失、版本口径在社区传播中已经出现分歧。它是一个适合快速开展建模研究、但需要使用者自己补齐工程脚手架的数据集。
状态分布统计:24 项中 12 项通过(50%)、11 项部分满足(46%)、1 项缺失(4%)。缺失项(预处理脚本)与半数 ⚠️ 项同源于"2016 年发布、无持续维护"这一事实——数据集的静态性既是可比性的来源,也是工程配套缺失的根源。
从分布看,失分项几乎都不是"数据本身错了",而是"官方没有说明":这提示使用者的风险控制重点应放在元数据补全(抽帧参数留档、口径固化、许可确认)而非数据修复。12 个 ✅ 项保证了新手可以零惊喜地读懂数据;11 个 ⚠️ 项则逐一对应本页 §6.5 的坑点——两份清单实为同一枚硬币的两面。
对你意味着什么:如果你要跑 presence 基准,直接采用官方 10/5 划分并自建抽帧脚本(本页 §6.3-§6.4 可直接复用),把"fps=1 对齐"与"逐类阈值"写进实验记录;如果目标是检测或技能分析,改用 locations 扩展并显式声明帧级划分口径;如果你要把结果写进论文,逐类 AP 表是必备项,只报均值会被质疑;如果你要产品化,先做跨中心外部验证——本数据集只支撑"同中心基准",不支撑泛化声明。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| m2cai16-tool presence 基准(跨标注迁移) | Stanford | 用 locations 框训练的检测器转帧级 presence 预测 | 定性:“显著超越 2016 挑战赛所有已有工作”(逐类数值表见原文) | 高于 EndoNet-Cholec80 74.2 基线 | 空间标注反哺 presence 任务有效 (Jin et al. NIPS ML4H 2017、WACV 2018) |
| m2cai16-tool-locations 内部留出 | Stanford | 7 类器械空间检测 | mAP@IoU 0.5 = 63.1(Grasper 48.3、Irrigator 17.5 为最弱两类) | — | 空间任务同样受稀有类与形态多变困扰 (Jin et al.) |
矩阵只有两行的现实反映了小型基准的普遍困境:绝大多数后续论文选择"自建划分 + 自报数字",缺少统一的外部验证协议。斯坦福的跨标注迁移(用框标注反哺 presence 任务)是矩阵里最有信息量的一行——它证明了两种标注不是替代关系而是互补关系。使用本数据集发表工作时,建议把你的方法在这两行协议上的表现同时报告,以增强可比性。
§8 基准性能与生态
本节给出可直接引用的历史基准数字、可操作的评测协议,以及围绕本数据集生长出来的衍生资源生态。所有数字均有单一可溯来源,跨协议数字已明确标注不可比。
§8.1 排行榜(官方挑战协议,测试 5 段视频,mAP)
下表按官方挑战协议(10 段训练 / 5 段测试、逐帧输出、mAP)排列历史基线;三行数字同源同协议,可直接横向比较。
| 排名 | 模型 | mAP | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | EndoNet-Cholec80 | 74.2±15.3 | 2016 | AlexNet 多任务微调(阶段+器械),Cholec80 40 段迁移 | Twinanda et al., 2016, IEEE TMI. DOI 10.1109/TMI.2016.2593957;技术报告 arXiv:1610.08851 | 官方 Caffe 实现随 EndoNet 论文发布 |
| 2 | ToolNet-Cholec80 | 73.9±15.7 | 2016 | 单任务 AlexNet 微调,Cholec80 训练 | Twinanda et al., 2016, technical report. arXiv:1610.08851 | 同上 |
| 3 | ToolNet-m2cai16 | 52.5±30.5 | 2016 | 单任务 AlexNet,仅 10 段本集训练 | Twinanda et al., 2016, technical report. arXiv:1610.08851 | 同上 |
⚠️ 上表数值全部出自同一篇技术报告的同一评测协议,可横向比较;但与后续工作(如斯坦福利用空间标注的方案)不可直接混排——后者未在完全相同协议下公布逐类数值(NIPS ML4H 2017),其定性结论为"显著超越 2016 挑战赛获胜者"。
阅读提示:排行榜只到 2016 年并非遗漏——此后缺乏完全同协议的公开数字,后续工作大多采用自建划分或迁移训练(见 §8.2),把不同口径的数字硬排成一张榜只会制造误导。
官方逐类 AP 明细(同一评测,PR 曲线下面积):
| 器械类 | ToolNet-m2cai16 | ToolNet-Cholec80 | EndoNet-Cholec80 |
|---|---|---|---|
| Grasper | 82.2 | 86.0 | 87.0 |
| Bipolar | 50.3 | 69.1 | 68.7 |
| Hook | 89.4 | 94.2 | 93.9 |
| Scissors | 17.0 | 51.9 | 52.8 |
| Clipper | 43.6 | 63.0 | 66.5 |
| Irrigator | 12.5 | 65.1 | 63.0 |
| Specimen bag | 72.2 | 88.6 | 87.3 |
| MEAN(mAP) | 52.5±30.5 | 73.9±15.7 | 74.2±15.3 |
这张表是理解本数据集的钥匙:Hook 一类三个模型都在 89 以上(形态独特、出现频繁),而 Irrigator 在仅用本集训练时只有 12.5——把训练数据从 10 段扩到 40 段(Cholec80),Irrigator 立刻跳到 65.1。稀有类的天花板首先由数据量决定,其次才是架构(Twinanda 技术报告)。
§8.2 SOTA 总结与选型建议
- 历史线:2016 年挑战赛证明"数据量 > 架构创新"——同为 AlexNet,40 段训练(73.9-74.2)碾压 10 段训练(52.5);多任务(阶段+器械)增益有限 (Twinanda 技术报告)。
- 演进线:斯坦福团队把任务升级为空间检测(Faster R-CNN,mAP 63.1)并反哺 presence 任务 (Jin et al. 2018);后续半监督、vSLAM+Mask R-CNN(自建盲测报 96.8 mAP,协议不同仅作参考,arXiv:2103.16847)与 YOLOv8 复现(ISSC 2024)持续把该基准当作试金石。
- 前沿线:2025 年的内窥镜基础模型工作(LEMON/LemonFM)把 m2cai16 系列列为下游评测集之一,代表"先大预训练、后小评测"的新范式正在取代"在小数据集上直接训练"的旧范式 (arXiv:2503.19740)。
- 选型建议:跑通基线用 ResNet-50 + 逐类 BCE + pos_weight;追求论文可比性复现 EndoNet 协议;追求工程效果直接上现代检测器 + Cholec80 预训练(注意坑点 5 重叠)。
- 复现提醒: EndoNet 原始实现基于 Caffe 框架,PyTorch 复现需自行对齐 AlexNet 权重转换与输入预处理(224×224、无额外增强),否则与 74.2 存在不可忽略的实现差。
§8.3 评测协议
官方协议:训练仅用 10 段训练视频(外部数据如 Cholec80 需在技术报告中声明);对 5 段测试视频逐帧输出 7 维二值预测;指标为逐类 AP(PR 曲线下面积)的均值 mAP;结果与技术报告发送至 m2cai2016@gmail.com 以纳入官方排行 (MLDTA)。locations 扩展协议:帧级 50/30/20 划分,AP@IoU 0.5 逐类与均值 (Jin et al.)。
复现协议时的四个易错细节:其一,官方 mAP 基于连续置信度而非阈值化后的二值输出;其二,逐类 AP 在测试期无正例的类上未定义,官方做法是逐类计算后取均值(意味着每类都有正例);其三,多任务模型不得在测试时使用测试视频的阶段标签;其四,测试 5 段视频不得参与任何超参选择——包括阈值调优,调阈值只能用训练视频内部切出的验证段。
§8.4 相关数据集
| 数据集 | 规模 | 标注 | 获取 |
|---|---|---|---|
| Cholec80 | 80 段视频、13 位外科医生、25 fps | 7 阶段 + 7 器械 presence(1 fps) | CAMMA 申请 |
| m2cai16-workflow | 41 段视频 | 8 阶段逐帧标注(训练 27/测试 14) | CAMMA 申请 (挑战页) |
| m2cai16-tool-locations | 2,532 帧 / 3,141 框 | 7 类器械边界框 | Stanford / GitHub |
| m2caiSeg | 307 张帧图 | 19 类语义分割掩码 | HuggingFace 镜像 |
| LEMON | 4,194 段视频 / 938 小时 / 85M 帧 | 大规模未标注 + 下游任务集 | 2025 年发布的大规模内窥镜基础模型语料 (arXiv:2503.19740) |
补充说明:表中前四个数据集共享"斯特拉斯堡胆囊切除"这一数据源(部分视频跨集复用),构成一个亲缘网络;LEMON 则代表完全不同的构建路线(网络大规模采集)。引用任何一个相关数据集时,都应检查其与本集的视频重叠情况(坑点 5)。
表中资源恰好构成一条演进链:m2cai16-tool(2016,分类起点)→ locations(2018,空间扩展)→ Cholec80(更大规模的同任务集)→ m2caiSeg(像素级任务)→ LEMON(2025,基础模型语料)。新入行的研究者可以沿这条链规划自己的"数据集路线图":以本集入门,以 Cholec80 深化,以 LEMON 类语料做预训练。
§8.5 关键论文 Top 7
- A.P. Twinanda, S. Shehata, D. Mutter, J. Marescaux, M. de Mathelin, N. Padoy, “EndoNet: A Deep Architecture for Recognition Tasks on Laparoscopic Videos,” IEEE Transactions on Medical Imaging, 2016. DOI 10.1109/TMI.2016.2593957 — 数据集生成论文;提出首个腹腔镜视频多任务 CNN(阶段+器械),引用数本领域最高之一。
- A.P. Twinanda et al., “Single- and Multi-Task Architectures for Tool Presence Detection Challenge at M2CAI 2016,” technical report, arXiv:1610.08851, 2016 — 挑战赛官方基线与 74.2 mAP 协议;全部历史基准数字的唯一出处。
- A. Jin, S. Yeung, J. Jopling, J. Krause, D. Azagury, A. Milstein, L. Fei-Fei, “Tool Detection and Operative Skill Assessment in Surgical Videos Using Region-Based Convolutional Neural Networks,” WACV, 2018 — 发布 m2cai16-tool-locations 空间标注;首次把器械检测接到手术技能评估。
- A. Jin et al., “Automatic Surgical Tool Localization and Skill Assessment,” arXiv:1802.08774, 2018 — WACV 论文预印本,含 23,000 帧口径与标注协议细节。
- M. R. Ragab et al., “A Novel Deep ML Architecture by Integrating Visual SLAM into Mask R-CNN for Real-time Surgical Video Analysis,” arXiv:2103.16847, 2021 — 自建盲测协议下的高分参考,展示 vSLAM 区域提议替代 RPN 的思路。
- “Cholecystectomy Surgical Instrument Detection Using Variants of YOLOv8,” ISSC 2024 — locations 版现代检测器复现与逐类实例分布 (论文 PDF)。
- LEMON 协作团队, “LEMON: A Large Endoscopic MONocular Dataset and Foundation Model for Perception in Surgical Settings,” arXiv:2503.19740, 2025 — 把 m2cai16 系列纳入大规模预训练时代对照表,代表基准使用范式的迁移。
补充阅读:R. Stauder et al. 的 TUM LapChole 技术报告(arXiv:1610.09278)是同届 workflow 挑战的姊妹数据说明,有助于理解 m2cai 系列的整体设计逻辑。
§8.6 社区活跃度
- CAMMA 官方持续接受结果提交以维护 m2cai16 系列排行(邮件 m2cai2016@gmail.com),数据集页面至今活跃 (MLDTA 存档)。
- 斯坦福 tooldetection 提供完整的标注接口脚本(MATLAB)、VOC 目录与训练代码(GitHub ajin12/tooldetection)。
- 2024-2025 年仍有 YOLOv8 复现、半监督检测、基础模型(LEMON)等新工作引用该基准,显示其作为"小而标准"试金石的持续生命力。
- 衍生生态活跃:m2caiSeg(分割)、locations(检测)、半监督与弱监督方法的对照实验、以及各类综述中的常客——它已从"挑战赛数据集"沉淀为"领域公共基础设施"。
值得注意的是社区对官方排行之外的贡献:由于官方不再更新标注,后来的研究者多以自建验证集 + 官方测试集双轨报告,这种"去中心化评测"虽然牺牲了单一榜单的权威性,却让数据集在协议争议中保持了透明。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| CAMMA Datasets 页 | 官方数据门户 | camma.u-strasbg.fr/datasets | 唯一官方申请入口 |
| M2CAI 2016 挑战页 | 官方协议 | program-challenge | 任务定义、划分与规则原文 |
| EndoNet 技术报告 | 论文 | arXiv:1610.08851 | 全部官方基线数字出处 |
| Stanford tooldetection | 扩展数据+代码 | ai.stanford.edu/~syyeung/tooldetection.html | locations 版数据与技能评估 |
| ajin12/tooldetection | GitHub 仓库 | github.com/ajin12/tooldetection | VOC 目录结构与标注工具 |
| 千方病案医数集条目 | 本百科 | m2cai16-tool/0 | AI-Ready 结构化中文百科 |
生态资源的引用优先级:涉及数据事实(规模、划分、协议)以 CAMMA 官方页与 EndoNet 论文为最终依据;涉及空间标注以 Stanford 页面为准;社区仓库与镜像仅作为工程实现参考,其统计口径不作为事实引用。
§9 相关资源与引用
本节汇总官方入口、完整 BibTeX 与引用惯例。所有链接在 2026-09 时点核验可访问;CAMMA 域名为官方权威来源,其余为社区镜像或衍生资源。
§9.1 官方资源清单
- 官方数据申请:CAMMA Datasets(m2cai16-tool request 表单)
- 挑战协议与规则:M2CAI 2016 Challenges
- 官方基线技术报告:arXiv:1610.08851
- 生成论文:EndoNet, IEEE TMI 2016
- 空间扩展:Stanford tooldetection + GitHub 仓库
- 结果提交与排行维护:m2cai2016@gmail.com
- 姊妹数据集:m2cai16-workflow(同页申请)、Cholec80(CAMMA 发布)
- 衍生资源:m2caiSeg 语义分割镜像、SurgMotion 预处理脚本示例
§9.2 BibTeX 引用块
以下三条覆盖本数据集的全部使用场景:条目一对应 presence 版官方强制引用;条目二对应挑战协议与技术报告数字;条目三对应 locations 扩展。
@article{twinanda2016endonet,
title = {EndoNet: A Deep Architecture for Recognition Tasks on Laparoscopic Videos},
author = {Twinanda, Andru Putra and Shehata, Sherif and Mutter, Didier and
Marescaux, Jacques and de Mathelin, Michel and Padoy, Nicolas},
journal = {IEEE Transactions on Medical Imaging},
year = {2016},
doi = {10.1109/TMI.2016.2593957}
}
@techreport{twinanda2016tool,
title = {Single- and Multi-Task Architectures for Tool Presence Detection
Challenge at {M2CAI} 2016},
author = {Twinanda, Andru Putra and Mutter, Didier and Marescaux, Jacques and
de Mathelin, Michel and Padoy, Nicolas},
institution = {ICube, University of Strasbourg, CNRS, IHU Strasbourg},
type = {Technical report},
year = {2016},
eprint = {1610.08851},
archivePrefix = {arXiv}
}
@inproceedings{jin2018tool,
title = {Tool Detection and Operative Skill Assessment in Surgical Videos
Using Region-Based Convolutional Neural Networks},
author = {Jin, Amy and Yeung, Serena and Jopling, Jeffrey and Krause, Jonathan and
Azagury, Dan and Milstein, Arnold and Fei-Fei, Li},
booktitle = {IEEE Winter Conference on Applications of Computer Vision (WACV)},
year = {2018}
}
§9.3 引用指南
使用 presence 版数据时,官方强制要求引用 EndoNet(IEEE TMI 2016)论文(CAMMA 数据页要求原文);使用 locations 扩展时请同时引用 Jin et al.(WACV 2018);在论文中报告结果时,注明"官方 10/5 视频级划分、mAP 指标"或"locations 帧级 50/30/20 划分、AP@IoU 0.5",避免协议混排。
三条补充惯例:其一,若用了 Cholec80 迁移训练,请同时引用 Cholec80 的来源论文(同为 Twinanda et al. TMI 2016)并声明混合训练协议;其二,若引用本页的中文结构化描述,请以官方英文来源为准并在参考文献中保留 DOI;其三,技术报告(arXiv:1610.08851)与期刊论文(TMI)内容有重叠但评测表不同,引用时按实际使用的那份数字选择对应文献。第四,locations 扩展的引用应注明"WACV 2018 / arXiv:1802.08774"其中之一即可,两者为同一工作的正式版与预印本,无需同时列出。
§10 AI 使用声明卡
本页遵循 AI-Ready 内容透明原则,完整披露 AI 参与范围、输入来源与人工校验流程,供读者评估页面可信度。
§10.1 本页面使用的 AI 模型
| 模型 | 用途 |
|---|---|
| 千方写作助手(大语言模型) | 资料汇总、结构化撰写、代码示例生成 |
模型使用不涉及对数据集内容的重新生成或改写:所有描述性内容均以 §10.3 来源为底稿做结构化重组,AI 不对来源缺失的信息做补全式创作。
§10.2 AI 参与范围
AI 负责文献检索结果的结构化整理、章节撰写与代码示例起草;所有关键数字(15 段视频、23,000 帧、7 类器械、逐类 AP、mAP、2,532 帧/3,141 框、引用计数)均逐条对照原始来源核验;事实性错误由人工审核流程兜底。
具体分工边界:AI 起草的代码示例经过逻辑走查与 API 核对,但未在本页撰写环境中做端到端运行(数据需申请获取);医学编码(ICD-11)对照公开切表资料复核;所有外部链接在撰写时点(2026-09)可访问。任何"AI 推测"性质的内容(如存储体积的推算、偏倚严重程度的分级)均已在正文中标注为推算或评估,与有直接来源的事实区分。
§10.3 输入来源列表
以下 17 条来源覆盖本页全部事实性内容,编号顺序与检索过程一致;"截至 2026-09"表示该时点核验了链接与内容。
- A.P. Twinanda et al., “EndoNet: A Deep Architecture for Recognition Tasks on Laparoscopic Videos,” IEEE TMI, 2016. DOI 10.1109/TMI.2016.2593957.
- A.P. Twinanda et al., “Single- and Multi-Task Architectures for Tool Presence Detection Challenge at M2CAI 2016,” technical report, arXiv:1610.08851, 2016.
- CAMMA, “Datasets,” http://camma.u-strasbg.fr/datasets, 截至 2026-09.
- CAMMA, “M2CAI 2016 Challenges,” http://camma.u-strasbg.fr/m2cai2016/index.php/program-challenge/, 截至 2026-09.
- MLDTA, “M2CAI 2016 Challenge | Vision Dataset,” https://www.mldta.com/dataset/m2cai-2016-challenge/, 截至 2026-09.
- A. Jin et al., “Tool Detection and Operative Skill Assessment in Surgical Videos Using Region-Based CNNs,” WACV, 2018;预印本 arXiv:1802.08774.
- Stanford AI Lab, “Tool Detection and Operative Skill Assessment,” https://ai.stanford.edu/~syyeung/tooldetection.html, 截至 2026-09.
- A. Jin et al., NIPS ML4H Workshop PDF, https://ai.stanford.edu/~syyeung/jin_nips_ml4h_2017.pdf, 2017.
- GitHub, “ajin12/tooldetection,” https://github.com/ajin12/tooldetection, 截至 2026-09.
- “A Novel Deep ML Architecture by Integrating vSLAM into Mask R-CNN…,” arXiv:2103.16847, 2021.
- “LEMON: A Large Endoscopic MONocular Dataset and Foundation Model…,” arXiv:2503.19740, 2025.
- “Cholecystectomy Surgical Instrument Detection Using Variants of YOLOv8,” ISSC 2024, http://adrianmoore.net/websites/ISSC2024/046..pdf.
- Rankless/OpenAlex, “EndoNet 引用索引,” https://www.rankless.org/hit-papers/10.1109/tmi.2016.2593957, 截至 2026-09.
- HuggingFace 镜像, “Angelou0516/m2caiSeg,” http://aifasthub.com/datasets/Angelou0516/m2caiSeg, 截至 2026-09.
- N. Cadene et al., “M2CAI Workflow Challenge: CNNs with Time Smoothing and HMM…,” arXiv 技术报告, 2016.
- Patient.info 专业版, “Gallstones and cholecystitis,” https://patient.info/doctor/gastroenterology/gallstones-and-cholecystitis, 更新于 2025-01.
- Amboss, “Cholelithiasis,” https://www.amboss.com/us/knowledge/cholelithiasis, 截至 2026-09.
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与规模数字 | 千方病案医学编辑部 | 对照 CAMMA 官方页与 Twinanda 技术报告逐项核数 | ✅ 已通过/已验证 |
| §2 医学背景与 ICD-11 编码 | 千方病案医学编辑部 | 对照 ICD-11 切表资料与临床文献复核 | ✅ 已通过/已验证 |
| §4 数据结构与 DAIMS 字典 | 医疗 AI 数据工程师 | 对照官方标注定义与社区复现结构 | ✅ 已通过/已验证 |
| §6 预处理代码与 8 个坑点 | 医疗 AI 数据工程师 | 代码逻辑走查;坑点逐条溯源至论文/官方页 | ✅ 已通过/已验证 |
| §7-§8 基准数字与外部验证 | 千方病案医学编辑部 | 全部数值核对至单一可溯来源 | ✅ 已通过/已验证 |
校验采用"数字必溯源"原则:正文与表格中出现的每个数量(视频数、帧数、类数、AP/mAP、边界框数、引用数)都能在 §10.3 的来源列表中找到唯一对应出处;无法溯源的数字一律删除而非标注。人工校验修正的典型问题包括:逐类 AP 表的行列顺序对齐、locations 帧数的口径分歧标注(见坑点 8)、以及 SNOMED CT 数字编码因缺乏可靠来源而整行省略的处理决定。
§10.5 AI 生成章节标注
本页全部章节由 AI 起草(基于 §10.3 所列来源),经 §10.4 所列人工审核流程核验后发布;无纯人工独立撰写章节。章节之间存在依赖关系:§6 的代码假设 §3/§4 的结构与口径,§7 的评分引用 §6.5 的坑点编号,跳读时建议按 §3 → §4 → §6 的顺序建立上下文。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
再审核触发条件建议:CAMMA 官方页面协议变更、locations 口径出现新的权威澄清、或本页引用的任一链接失效超过 30 天,任一条件满足即应复核对应章节并更新本日期。
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- SLAM-3D-Endoscopic — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- jigsaws — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- multibypass140 — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- scared — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- hamlyn-datasets — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- c3vd — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- endoslam — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- endomapper — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- misaw — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- cad-cap — 共享标签:医学影像 / 内窥镜影像 / 手术视频
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
