PolypGen — 多中心息肉检测分割泛化基准 AI-Ready Wikipedia | 千方病案医数集

横跨 5 国 6 中心的 8,037 帧结肠镜息肉数据集,专为跨中心泛化评估而建

来源 University of Oxford / SimulaMet / EndoCV2021 Consortium(Synapse 托管) url: https://www.synapse.org/#!Synapse:syn26376615/wiki/613312发布时间: 2026-09-08最后更新: 2026-09-08 阅读 3

信息速览

数据集名称PolypGen — 多中心息肉检测分割泛化基准 AI-Ready Wikipedia | 千方病案医数集
数据类型8,037 帧结肠镜图像,3,447 个像素级息肉实例,300+ 名患者,5 国 6 中心,CC BY 4.0 免费获取
规模300+ 名患者(6 中心每中心至少 50 名,官方未公布确切总数)
接入方式University of Oxford / SimulaMet / EndoCV2021 Consortium(Synapse 托管) url: https://www.synapse.org/#!Synapse:syn26376615/wiki/613312
AI 就绪度

数据集封面

PolypGen — 多中心息肉检测与分割泛化基准 AI-Ready Wikipedia

INFOBOX

数据集名称 PolypGen
英文全称 PolypGen: A multi-centre polyp detection and segmentation dataset for generalisability assessment
别名/简称 PolypGen dataset、EndoCV2021 扩展数据集、syn26376615
疾病分类 结肠息肉与癌前病变(ICD-11:DB35 大肠息肉 / 2E92.4Y 结肠腺瘤性息肉 / 2B90 结肠恶性肿瘤-演变终点)
SNOMED CT 68496003 Polypoid lesion of colon(结肠息肉样病变)
数据模态 结肠镜单帧图像 + 视频序列帧(JPG 原图、JPG 像素级 mask、PASCAL VOC TXT 边界框、框叠加图)
AI 任务类型 息肉分割(语义/实例)、息肉检测(定位)、跨中心泛化评估、联邦学习、视频序列跟踪
样本总数 8,037 帧(3,762 正样本帧 + 4,275 阴性帧)/ 23 条正样本序列 / 3,447 个息肉实例标注 / 300+ 名患者
数据大小 官方未公布总体积(8,037 帧 JPG 四件套:原图 / mask / bbox TXT / overlay,分辨率 384×288 至 1920×1080)
数据格式 JPG(原图与 mask)、TXT(PASCAL VOC 绝对坐标边界框)、TXT(官方 train-validation 划分)
许可证 CC BY 4.0(仅限教育与研究用途,使用须引用论文)
访问级别 注册后开放(注册 Synapse 账号即可下载;视频序列另经 GitHub 链接获取)
DUO 标签 GRU(通用研究)、PUB(须公开发表/引用)
语言 英文(文档与标注体系);影像数据无语言属性
首发日期 2021-06(arXiv 2106.04463 与 EndoCV2021 挑战数据)/ 2022(完整 8,037 帧版上线 Synapse)
最后更新 2023-02-06(Scientific Data 论文发表,编译版 syn45200214)
发布机构 牛津大学、利兹大学、SimulaMet 联合 6 家医疗中心(Ali, Jha 等 15 位作者)
官方主页 https://github.com/DebeshJha/PolypGen
下载地址 https://www.synapse.org/#!Synapse:syn26376615/wiki/613312
DOI 10.1038/s41597-023-01981-y(论文)/ 10.7303/syn26376615(数据)
引用次数 181+(Semantic Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方划分 TXT + 三种标注格式 + 严格专家 QA;扣分项:mask 为有损 JPG、需手动转 YOLO/COCO、负样本无标注文件
页面状态 published

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

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、结肠息肉临床任务定义、金标准描述)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PolypGen 以 CC BY 4.0 发布、仅限教育与研究用途,下载需注册 Synapse 账号,且使用时必须引用 Ali et al., 2023, Scientific Data。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? PolypGen 是一个来自 5 个国家 6 家医院(法国、意大利×2、挪威、英国、埃及)的结肠镜息肉数据集,共收录 8,037 帧图像与视频序列帧——其中 3,762 帧含有息肉或来自确诊息肉患者的检查,4,275 帧来自检查全程无息肉的正常黏膜肠镜。每一个息肉都被精细勾画了像素级轮廓(共 3,447 个实例),并且全部标注由 6 名工作超过 20 年的资深胃肠病学家逐一复核。数据集于 2023 年 2 月正式发表于 Scientific DataSynapse 托管)。

为什么重要? 息肉 AI 模型最致命的问题不是"刷分不够高",而是换一家医院、换一台内窥镜后性能暴跌——大量模型在自家数据上 Dice 轻松超过 0.9,到了陌生中心却掉到 0.5 以下。PolypGen 从设计之初就是为了量化和解决这个问题:它明确提供"以 C1-C5 训练、在从未见过的 C6 上测试"的样本外协议,并附带 23 条视频序列用于时序评估。在官方基准中,同一个 DeepLabV3+ 在 C6 单帧上 Dice 为 0.82,换到序列帧就降到 0.71;TransNetR 的跨中心测试中,最低中心(C5)与最高中心(C3)的 mIoU 相差超过 40 个百分点。这种"精心设计的落差"正是它的核心价值。

我能用它做什么? 训练息肉分割/检测模型并做跨中心泛化测试;用官方 TXT 划分复现论文基准;把 23 条序列用于视频息肉跟踪或时序模型;在联邦学习研究中以 6 个中心模拟 6 家医院;或者把 PolypGen 作为外部测试集,检验你用 Kvasir-SEG、CVC-ClinicDB 等单中心数据训练的模型的真实泛化水平——这最后一个用法,是它对绝大多数团队最直接的贡献。

§1.1 技术摘要

PolypGen 由牛津大学 Sharib Ali 团队联合 SimulaMet(挪威)及 6 家参与医院构建,是 EndoCV2021(ISBI 2021,尼斯)挑战赛数据集的完整扩展版。数据采集协议规定每个中心至少贡献 50 名独特患者的肠镜素材;正样本包括来自确诊息肉患者的单帧(覆盖患者全部息肉实例的多视角采样)与以目标息肉为中心的短序列(23 条,含息肉可见与不可见帧),阴性样本则全部为来自 4 家医院的正常黏膜序列帧(4,275 帧,23 个序列文件夹)。标注在 Labelbox 平台完成:3 名研究人员分别标注,6 名资深胃肠病学家执行二元审查(临床可接受 / 不可接受),初步审查中 2,213 帧有 676 帧被拒(约 30.5%),被拒或存疑帧经重新标注后再次复审——这一严格流程使 1,537 张单帧标注全部通过专家验收。数据以四件套发布:原图 JPG、同尺寸 mask JPG、PASCAL VOC 绝对坐标边界框 TXT、框叠加 JPG,另附官方 train-validation 划分 TXT(C1-C5 单帧 1,449 帧按 80%/20% 切分)。发布版不再强制训练/测试划分,鼓励用户自行设计中心留出方案。

与 EndoCV2021 的版本关系需要特别澄清:挑战赛当时发布的仅是 C1-C5 单帧 1,449 帧(含挑战专用训练/测试划分),2022 年上线的完整版在此基础上追加了 C6 全部数据(单帧 88 帧 + 序列帧 432 帧)、全部 23 条正样本序列与 4,275 帧阴性序列帧,并最终以 Scientific Data 论文固化目录结构与许可条款。因此,把"8,037 帧"直接与 2021 年挑战排行榜对比属于口径错位——复现 2021 年结果请用挑战子集,引用当前规模请用 2023 年论文数字。

§1.2 战略价值

维度一:泛化性评估的基础设施。 在 PolypGen 之前,主流息肉数据集几乎全部来自单一中心(Kvasir-SEG 来自挪威一家医院的 1,000 帧、CVC-ClinicDB 来自巴塞罗那一家医院 612 帧),在这些数据上训练并测试的模型存在严重的"自我循环"偏倚。PolypGen 用 6 个中心、5 个国家、异构患者群体构建了一个天然的域漂移试验场:官方技术验证显示,DeepLabV3+(ResNet101)在 C6 单帧样本外测试中 Dice 仅 0.82,而同类模型在同中心数据上普遍可达 0.9 以上;按息肉尺寸分层后,小息肉(≤100×100 像素)的 Dice 更是骤降到 0.46。对于任何宣称"临床可用"的息肉 AI,PolypGen 都是绕不开的压力测试集。

维度二:标注质量的可审计性。 该数据集罕见地公开了完整的标注质检链路:Labelbox 三人分工标注 → 全体胃肠病学家交叉复核 → 独立二元审查 → 歧义帧重标再审。论文给出了量化结果(单帧审查 2,213 帧拒 676 帧、歧义批次复审 34.17% 被拒)和 8 条书面标注协议(如带器械的息肉须排除器械、染色墨迹区域须排除墨迹、pedunculated 息肉包含全部隆起区等)。这种透明度让研究者能够精确理解标签的语义边界,而不是对着一团模糊的 mask 猜测标注意图——这是它区别于多数"一标了之"数据集的关键差异。

维度三:多形态任务与研究范式的试验床。 单帧分割、目标检测、视频序列时序建模、联邦学习(6 个中心天然模拟 6 家数据孤岛医院)都能在同一套数据上开展,且官方与社区已提供相应基准锚点:联邦学习研究中 In-Federation F1 82.85、Out-Federation F1 86.01(见 §8.1)。对需要"一份数据、多篇论文"的中小团队而言,这种任务多样性显著提升了数据投资回报。

§1.3 同类数据集横向对比

数据集 规模 中心数 标注类型 关键差异
PolypGen 8,037 帧(1,537 单帧 + 2,225 正序列帧 + 4,275 阴性帧) 6 中心 / 5 国 像素级 mask + PASCAL VOC bbox,专家复审 唯一为泛化评估设计;含阴性序列帧与官方 OOD 协议
Kvasir-SEG 1,000 张 1(挪威) 像素级 mask 单中心、无阴性帧、社区基准最丰富
CVC-ClinicDB 612 张 1(西班牙) 像素级 mask 来自 29 个视频的息肉帧,规模小
ETIS-Larib 196 张 1 像素级 mask 常用作外部测试集,规模最小
CVC-ColonDB 380 张 1 像素级 mask 侧重短序列,申请获取
HyperKvasir 110,079 图像 + 374 视频 1(挪威) 部分标注(全消化道发现) 规模最大但息肉标注子集有限
LDPolypVideo 346 条视频 / 57,886 帧 1(中国) 像素级 mask + 时序 视频规模大,单中心
ASU-Mayo 18,781 张 1(美国) 像素级 mask 申请获取,无 bbox

§1.4 版本时间轴

版本 时间 内容 获取渠道
EndoCV2021 挑战版 2021-06(随 arXiv:2106.04463 发布) 仅 C1-C5 单帧 1,449 帧,含挑战训练/测试划分 endocv2021.grand-challenge.org
完整发布版 2022 8,037 帧(新增 C6、阴性帧、23 条正样本序列),无强制划分 Synapse syn26376615
编译正式版 2023-02-06(Scientific Data 论文发表) 与完整版内容一致,官方 train-validation TXT、目录结构定型 Synapse syn45200214(CC BY 4.0)

§1.5 典型应用场景

  1. 跨中心泛化基准:以 C1-C5 训练、C6 单帧(88 帧)与序列(432 帧)做样本外测试,这是论文官方协议,结果可与 Ali et al., 2023, Scientific Data. DOI 10.1038/s41597-023-01981-y 及 §8.1 排行榜直接对标。
  2. 息肉检测模型训练:使用 PASCAL VOC TXT 边界框训练 YOLO/Faster R-CNN 系检测器,同时利用约 61% 的无标注帧做阴性背景学习。
  3. 视频/时序息肉跟踪:23 条正样本序列 + 23 个阴性序列文件夹支持帧间一致性、去闪烁与跟踪算法研究。
  4. 联邦学习研究:6 个中心的数据天然按医院切分,已有联邦研究产出 In-Federation F1 82.85 / Held-Out F1 74.3 的锚点结果(见 §7.8)。
  5. 外部验证集:将 PolypGen 整体或单中心作为外部测试集,检验 Kvasir-SEG / CVC 系训练模型的跨域性能——TransNetR 的 OOD 测试即为此用法(C5 mIoU 仅 35.97)。

§2 医学背景

§2.1 ICD-11 编码映射

PolypGen 的标注对象是结肠镜下可见的结肠息肉样病变。数据集本身不提供组织学标签(标注为内镜视觉轮廓),因此下表覆盖其病变谱系的分类学定位(ICD-11 MMS v2025-01):

标签/概念 ICD-11 编码 ICD-11 中文名称 说明
大肠息肉(总类) DB35 大肠息肉 母编码,含 DB35.0-DB35.4 子类型;本数据集标注对象的主体类别
增生性息肉 DB35.0 大肠增生性息肉 低恶性潜能,镜下常表现为苍白扁平隆起
炎性息肉 DB35.1 大肠炎性息肉 黏膜炎症后形成,多见于炎症性肠病
腺瘤性息肉(癌前) 2E92.4Y 结肠/直肠腺瘤性息肉 归入良性肿瘤章节;腺瘤-癌序列的主要前体
息肉病综合征 2E92.40 息肉病综合征 遗传性多发息肉(FAP 等),本数据集未见专项收录
结直肠癌(演变终点) 2B90 结肠恶性肿瘤 息肉未切除的远期结局;论文背景引述的年度新发约 130 万例即指结直肠癌整体

§2.1b SNOMED CT 映射

标签/概念 ICD-11 SNOMED CT 码 术语
结肠息肉样病变 DB35 68496003 Polypoid lesion of colon (disorder)
结肠恶性肿瘤 2B90 363406005 Malignant neoplasm of colon (disorder)

⚠️ 说明:PolypGen 标注基于内镜视觉形态(含 Paris 形态分类参考与 JNET/NBI 分级用于序列描述),不含病理组织学标签;上述编码用于把视觉标签挂接到术语体系,不能替代病理诊断编码。

§2.2 疾病简介与流行病学

结肠息肉是肠黏膜表面向肠腔内隆起的病变,绝大多数为良性,但其数量、大小与表面形态与结直肠癌(CRC)风险直接相关。腺瘤性息肉遵循"腺瘤-癌"序列演变为癌,锯齿状通路(增生性/无蒂锯齿状病变)则是另一条重要癌变路径;内镜下检出并切除息肉是阻断这一进程的核心手段。论文引述的背景数字显示:全球每年新发结直肠癌约 130 万例、死亡率约 51%,CRC 是全球第三大癌症死亡原因。人群层面,腺瘤检出率随年龄与性别变化(初检成人约 20-31%,男性与高龄人群更高),而内镜检查存在不可忽略的漏检率——这正是计算机辅助检测(CADe)系统的临床切入点:在检查过程中实时框出被忽视的息肉。不同国家筛查覆盖率、设备型号、操作者习惯的差异,导致内镜影像存在显著的中心间分布差异,这也是 PolypGen 强调多中心采集的医学动因。

内镜下可见的息肉按大体形态遵循 Paris 分类(隆起型 Ip/Isp/Is 与平坦型 IIa/IIb/IIc 等),其中平坦型病变(IIa-c)与 >10 mm 病变的识别最依赖经验——论文特别指出,像素级标注对 Paris IIa-c 且 >10 mm 息肉的量化尤为关键。按组织学构成(综合临床综述口径):腺瘤性息肉约占检出息肉的 65-80%(其中管状腺瘤占绝对多数),增生性息肉约 20%,锯齿状腺瘤与其他类型不足 10%;恶变潜能随形态与大小递增——绒毛状腺瘤癌变风险约 50%,而多数小管状腺瘤仅约 5%。这些临床分层解释了为什么分割掩码(尺寸量化)与检测框(召回优先)是两种互补的标注形态。

组织学类型 占比(检出构成) 恶变潜能 内镜识别难度
管状腺瘤 65-80% 中的主体 低(<5%) 中(多为隆起型)
绒毛状/管状绒毛状腺瘤 10-25% 高(绒毛成分约 50%) 中高(常无蒂、表面颗粒状)
增生性息肉 约 20% 中(苍白、易漏检)
无蒂锯齿状病变 不等 中(约 5%) 高(平坦、近端结肠)
错构瘤性/炎性息肉 少见 低(散发) 低中

注:上表为临床流行病学背景(综合公开综述口径),PolypGen 本身不发布组织学构成统计,仅提供形态占比图(protruded vs flat,论文图 6)。

§2.3 临床任务定义

任务 定义 在 PolypGen 中的形态 临床场景
息肉检测(CADe) 在单帧中定位息肉并输出边界框 PASCAL VOC TXT,3,447 实例 检查中实时提醒医生,降低漏检率
息肉分割(CADx 前置) 像素级勾画息肉轮廓用于大小/形态量化 JPG mask,与原图同尺寸 辅助容积测量、Paris 形态分类、切除方案规划
阴性确认 判定帧内无息肉 阴性序列帧 4,275 帧 + 正序列内空 mask 帧 减少误报、支持"检查质量"评估
时序跟踪 跨帧关联同一息肉 23 条正样本序列 盲区提醒、回看定位、防止重复/遗漏
跨中心泛化 中心留出的样本外评估 C1-C6 中心编号 + 官方划分 TXT 新医院部署前的域适应验证

§2.4 患者人群表

维度 内容
来源 6 家医院:C1 Ambroise Paré(法国巴黎)、C2 Istituto Oncologico Veneto(意大利帕多瓦)、C3 CRO-IRCCS(意大利阿维亚诺)、C4 奥斯陆大学医院(挪威)、C5 John Radcliffe(英国牛津)、C6 亚历山大大学(埃及)
样本量 300+ 名独特患者,每中心至少 50 名
年龄/性别 不提供(完全匿名化协议,人口学信息在源头脱敏时移除)
种族/地域 欧洲(5 中心)+ 北非埃及(1 中心);具体人种构成未公布
就医类型 结直肠癌筛查、症状诊断性肠镜与监测性肠镜(含息肉切除术中序列,如靛胭脂染色/抬升注射帧)
病变谱 单帧覆盖患者全部息肉实例的多视角;序列针对目标局部息肉;含小/中/大尺寸分层(≤100×100 / >100×100 ≤200×200 / >200×200 像素)

§2.5 临床价值

对 CADe 系统而言,PolypGen 提供了"部署前压力测试"的近似环境:一个在 C2(意大利帕多瓦,Olympus H190)上训练的模型,面对 C6(埃及亚历山大,Olympus Exera 160AL)的患者群体、设备参数与操作风格差异,其性能衰减幅度(官方基准中最高与最低中心 mIoU 相差约 40 点)为工程团队设定了现实的泛化预期。对 CADx 方向,像素级 mask 支持息肉尺寸的自动量化,而尺寸(尤其 >10 mm)正是监测间期与切除策略的核心依据;序列数据则支持"回看提醒"(第二读片)研究——利用时序信息召回之前一闪而过的息肉。对医院信息科与监管科学,该数据集的中心留出协议为"模型在本地人群上是否可信"提供了可复用的评估方法论模板。

从监管与部署视角看,该数据集还回答了一个常被回避的问题:跨中心失效是可以被量化的。论文用 AHD(表面距离类指标)与逐中心矩阵证明,失效不是随机的而是与中心/设备/人群系统性相关——这正是 EU AI Act 类法规框架下"部署前本地验证"要求的证据模板。研究团队在投稿或注册证申报时,PolypGen 上的 OOD 结果可以作为"已知局限"章节的标准素材。

§2.6 金标准表

维度 描述
划分 官方技术验证:C1-C5 单帧 1,449 帧为训练池(80%/20% train/val,划分 TXT 随包提供),C6(单帧 88 + 序列 432 帧)为样本外测试;发布版不强制划分
标注方式 Labelbox 平台人工像素级勾画 + PASCAL VOC 边界框;mask 与原图同尺寸
标注者 3 名研究人员分工标注;6 名资深胃肠病学家(均 >20 年内镜经验)交叉复审与二元审查
一致性保证 初审 2,213 帧拒 676 帧(约 30.5%);歧义批次由 2 名研究者重标后再交 1 名专家复审,复审仍有 34.17% 被拒;8 条书面协议统一语义边界
性质 视觉形态学金标准(非组织学);序列描述参考 JNET(NBI)分级,部分帧为靛胭脂染色内镜

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐版本 大小 理由
复现论文 OOD 基准(分割) 编译正式版(syn45200214)+ 随包 train-val TXT 官方未公布总体积(8,037 帧 JPG 四件套) 与 DeepLabV3+/TransNetR 数字直接可比
训练检测器(bbox) 编译正式版 同上 PASCAL VOC TXT 四件套齐全,含阴性帧背景
视频/时序模型 Synapse 完整版 + GitHub 提供的 Google Drive 序列链接 同上(序列另打包) 23 条正样本序列在 Synapse,GitHub 亦镜像序列下载入口
EndoCV2021 历史对比 挑战版(C1-C5 单帧 1,449 帧) 较小 与 2021 挑战排行榜可比,注意子集口径不同
仅需外部测试集 下载后只取 test 中心(如 C6 或 held-out 序列) 同上 建议按中心/序列留出,勿混入训练池(见 §5.3)

§3.1 模态详情

PolypGen 为纯影像数据集,包含两种组织形态:单帧图像(1,537 张,按中心分文件夹 data-C1 至 data-C6)与视频序列帧(正样本 2,225 帧分布于 23 条序列 seq_1 至 seq_23;阴性 4,275 帧分布于 seq1_neg 至 seq23_neg 共 23 个序列文件夹,来自 4 家医院)。成像涵盖白光内镜与染色内镜(含靛胭脂染色的抬升/切除序列,如 seq12、seq14、seq15、seq16),序列描述中参考 JNET(NBI 专家团队)分级,但数据集不含独立的 NBI 通道。每帧配套:原图 JPG、同尺寸 mask JPG(无息肉帧为 null 空 mask)、PASCAL VOC 格式 bbox TXT(无息肉帧为空文件)以及框叠加可视化 JPG。图像分辨率跨度大(384×288 至 1920×1080),mask 尺寸与原图严格一致。

采样协议刻意保留了真实检查的复杂性,官方确立四条采样规则:

采样规则 含义 对建模的影响
单帧取自患者视频的不同视点 单帧覆盖该患者全部息肉实例的多视角 单帧适合学习息肉形态多样性
序列含息肉可见与不可见帧(多数序列) 目标时隐时现,模拟检查中的真实观感 训练检测器必须处理"无息肉帧"
序列内最小间隔采样 相邻帧差异小、时序连续 帧级随机划分必泄漏(坑点 1)
单帧含患者全部息肉,序列仅针对局部目标息肉 两类数据的实例密度语义不同 单帧/序列口径必须分开评估(坑点 6)

序列层级的典型元信息(论文表 3 节选):seq12 为靛胭脂染色抬升的 4-5 mm 息肉(低对比度)、seq14/seq15/seq16 为靛胭脂抬升 + 圈套器置位、JNET 分级 2a——即序列不仅覆盖检出场景,还覆盖切除流程中的介入帧。

§3.2 按子集样本数

子集 帧数 构成
C1(法国,单帧) 484 正样本
C2(意大利帕多瓦) 1,166 正样本(含序列 865 帧)
C3(意大利阿维亚诺) 457 正样本
C4(挪威奥斯陆) 677 正样本(含序列 450 帧)
C5(英国牛津) 458 正样本
C6(埃及亚历山大) 520 正样本(单帧 88 + 序列 432 帧,官方 OOD 测试中心)
正样本合计 3,762 单帧 1,537(C1-C5 1,449 + C6 88)+ 序列 2,225
阴性序列帧 4,275 来自 4 家医院、23 个 seqN_neg 文件夹,仅序列、无标注文件
总计 8,037

序列帧分布于 C2(865)、C4(450)、C6(432)为主,其余约 478 帧分布在 C1、C3、C5 的序列中;任何序列内不混合不同中心的数据。

§3.3 格式表

数据 格式 说明
原始图像 JPG 分辨率 384×288 至 1920×1080,文件名含中心/患者编码(如 C1_962OLCV1_100H0004)
分割掩码 JPG 与原图同尺寸;息肉区域非零、背景零;有损压缩(见坑点 3)
边界框 TXT PASCAL VOC 绝对坐标(xmin ymin xmax ymax),每行一个实例;无息肉帧为空 TXT
框叠加图 JPG bbox 可视化辅助人工核对,与原图同尺寸
官方划分 TXT C1-C5 单帧 train/val 划分清单,随包提供
目录元信息 文件夹命名 Positive/Negative → Single_Frames_centre_Split / Sequence_Frames → data-Cx / seq_x

§3.4 存储大小

官方渠道未公布精确总体积;体量由 8,037 帧 JPG(原图 + mask + overlay 三套图像文件)与 3,447 个实例的 TXT 标注构成,其中 overlay 可视化图占相当比例。实际下载包以 Synapse 发布页列示的文件清单为准;建议磁盘预留不低于 10 GB 以容纳解压与转换副本(该预留值为经验估计,非官方数字)。

§3.5 标注方式

人工标注,Labelbox 平台。3 名研究人员将单帧数据均分后独立标注,产出像素级 mask 与边界框;全部标注帧经 6 名资深胃肠病学家复审,并执行独立的二元审查(临床可接受 / 不可接受)。审查执行 8 条书面协议(逐条列出如下);正样本中的无息肉帧以空 mask(null)与空 bbox 文件表示——这是显式的信息性缺失编码而非数据损坏。

# 标注协议 消解的歧义
1 清晰隆起息肉仅标 protruded 隆起区域 隆起边界与皱襞分界
2 染色墨迹(inked)区域仅标非墨迹部分 切除标记墨迹被误标为病变
3 含器械的息肉排除器械(可形成多个目标) 圈套器/钳子遮挡下的目标切分
4 带蒂(pedunculated)息肉包含所有隆起区(皱襞遮挡除外) 蒂部是否计入
5 flat 平坦息肉须在放大视图下标注 平坦病变边界不清
6 远处不清晰息肉不标注 远景模糊目标的低质量标签
7 遮挡部分排除黏膜受阻区 视野遮挡导致的假边界
8 癌变但非息肉样黏膜排除 恶性浸润区域与息肉样病变的语义分界

这 8 条协议的价值在于把"息肉"的定义边界从隐含经验变成可执行规则——使用者在阅读 mask 时应当始终记得:掩码描绘的是"内镜视觉下的息肉样隆起",不是病理学意义的肿瘤范围。

§3.6 标注者资质与一致性

复审专家为 6 名资深胃肠病学家,均具有超过 20 年内镜经验,分别来自参与中心(含牛津 John Radcliffe 医院的 James E. East 等作者)。量化质检结果:排除歧义批次后共复审 2,213 帧,接受 1,537 帧、拒绝 676 帧(拒绝率约 30.5%);歧义批次经 2 名研究者联合重标后再审,仍有 34.17% 被拒——未公布 Cohen’s kappa 类一致性系数,但两轮高拒绝率与书面协议共同构成了可审计的质量闭环。全部 3,447 个息肉实例标注最终均通过专家验收。

§3.7 采集周期

官方未公布逐中心的确切采集起止时间。可核实的锚点包括:C1 伦理批件签发于 2019 年(N° IDRCB: 2019-A01602-55)、C5 伦理批件为 2016 年(REC Ref: 16/YH/0247)、arXiv 预印本于 2021-06 公开、Scientific Data 论文于 2023-02-06 在线——即数据采集大约落在 2016 年至 2021 年窗口内(temporalCoverage 按 2016/2021 记录)。

时间锚点 事件
2016 C5 John Radcliffe 伦理批件(REC Ref 16/YH/0247),采集窗口上界参考
2019 C1 Ambroise Paré 伦理批件(IDRCB: 2019-A01602-55,Endospectral study)
2021-06 arXiv:2106.04463 提交;EndoCV2021(ISBI 2021)举办,C1-C5 子集发布
2022 完整 8,037 帧版上线 Synapse
2023-02-06 Scientific Data 论文在线发表,编译版 syn45200214(CC BY 4.0)

§3.8 地域覆盖

中心 城市/国家 病例贡献 区域
C1 巴黎,法国 ≥50 名患者 欧洲
C2 帕多瓦,意大利 ≥50 名患者 欧洲
C3 阿维亚诺,意大利 ≥50 名患者 欧洲
C4 奥斯陆,挪威 ≥50 名患者 欧洲
C5 牛津,英国 ≥50 名患者 欧洲
C6 亚历山大,埃及 ≥50 名患者 非洲

即 5 国 6 中心:欧洲 5 个 + 非洲 1 个(埃及)。GitHub 仓库表述为"collected from six different centers in Europe and Africa"。

§3.9 设备规格

中心 内镜系统/型号 伦理与知情同意
C1 Ambroise Paré(法国) Olympus Exera 195 伦理批件 N° IDRCB: 2019-A01602-55(Endospectral study)
C2 IOV-IRCCS(意大利) Olympus endoscope H190 通用患者同意
C3 CRO-IRCCS(意大利) Olympus VG-165, CV180, H185 通用患者同意
C4 奥斯陆大学医院(挪威) Olympus Evis Exera III, CF 190 豁免审查 + 书面知情同意
C5 John Radcliffe(英国) GIF-H260Z, EVIS Lucera CV260 REC Ref 16/YH/0247,universal consent
C6 亚历山大大学(埃及) Olympus Exera 160AL, 180AL 书面知情同意

六个中心全部使用 Olympus 系统设备——这既是数据质量的一致性保障,也是设备多样性的上限(详见 §7.1 偏倚条目)。

§3.10 深度溯源链

患者肠镜检查(6 中心,含书面知情同意/伦理批件)→ 中心内视频与图像采集(Olympus 系统录制)→ 中心内匿名化(移除人口学烧录信息)→ 高级内镜医师筛选并提交素材 → 组织方按协议采样单帧与序列(单帧取不同视点、序列含息肉可见/不可见帧且间隔最小化)→ Labelbox 三人标注 → 6 名胃肠病学家两轮复审(含二元审查与歧义重标)→ 打包发布至 Synapse(syn26376615 / 编译版 syn45200214,CC BY 4.0)→ Scientific Data 同行评审论文(DOI 10.1038/s41597-023-01981-y)固化描述与协议。每一环节均有论文正文或表 2/图 6-7 的书面记录,可追溯性强。


§4 数据结构

§4.0 目录树

PolypGen/
├── Positive/                          # 3,762 正样本帧
│   ├── Single_Frames_centre_Split/    # 单帧(1,537 张)
│   │   ├── data-C1/                   # 法国 Ambroise Paré(484 帧)
│   │   │   ├── original_images/       #   原图 .jpg
│   │   │   ├── gt/                    #   像素级掩码 .jpg(与原图同尺寸)
│   │   │   ├── pxy/                   #   PASCAL VOC 边界框 .txt(每行一实例)
│   │   │   └── bb_overlay_images/     #   框叠加可视化 .jpg
│   │   ├── data-C2/ … data-C5/        # 意大利×2 / 挪威 / 英国
│   │   └── data-C6/                   # 埃及(88 帧,官方 OOD 测试)
│   └── Sequence_Frames/               # 23 条正样本序列(2,225 帧)
│       ├── seq_1/                     #   子目录结构与单帧四件套相同
│       ├── seq_2/ … seq_22/
│       └── seq_23/
├── Negative/                          # 4,275 阴性帧(仅序列,无标注文件)
│   ├── seq1_neg/                      # original_images only(.jpg)
│   ├── seq2_neg/ … seq10_neg/
│   └── seq11_neg/ … seq23_neg/        # 共 23 个序列文件夹,来自 4 家医院
└── train_val_split_*.txt              # 官方 C1-C5 单帧 80%/20% 划分清单

注意:level 2 四个图像/标注子目录的英文命名以实际解压结果为准(论文图 7 描述为 original images / annotated masks / bounding boxes / box overlay 四类);上图为按论文描述整理的语义树。

§4.1 DAIMS 字段字典

字段 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
frame_id 文本 图像文件名(含中心与患者编码) C1_962OLCV1_100H0004.jpg 主键;可解析中心与检查 全局唯一
centre_id 分类 数据来源中心(目录 data-Cx 解析) C4 中心留出划分、域漂移分析 C1-C6
sequence_id 分类 序列编号(目录 seq_x / seqN_neg 解析) seq_14 / seq5_neg 序列级划分、时序建模 单帧为空 seq_1-23;seqN_neg 1-23
split(官方 TXT) 分类 官方 train/val 归属 train 复现论文协议 阴性帧与 C6 不在单帧划分内 train / val
image 图像 原始结肠镜帧(JPG) 1920×1080 RGB 模型输入 传感器/压缩噪声 384×288 至 1920×1080
mask 图像 像素级息肉掩码(JPG) 同原图尺寸,息肉区非零 分割标签 JPG 有损压缩边界抖动 null 空掩码 = 帧内无息肉 二值(读后需阈值化)
bbox(TXT 行) 整数×4 PASCAL VOC 绝对坐标 xmin ymin xmax ymax 512 340 610 470 检测标签 与 mask 轮廓不完全逐像素一致 空文件 = 帧内无息肉 图像宽高内
polyp_size 派生 息肉像素尺寸分层 small(≤100×100) 难例分层评估 由 bbox/mask 计算 small / medium / large
label(帧级) 整数 正/阴性(目录 Positive/Negative) 1 检测器背景采样 阴性帧无标注文件 0 / 1

§4.2 标签分布

  • 帧级:正样本 3,762 帧 vs 阴性 4,275 帧(约 46.8% / 53.2%);DatasetNinja 转换统计显示 8,037 帧中 3,121 帧含实例标注、4,916 帧(61%)无标注(含全部阴性帧与正序列内无息肉帧)。
  • 实例级:3,447 个息肉实例(arXiv v1 记为 3,446),全部属于单一前景类 polyp;DatasetNinja 解析得 3,734 个 mask 对象(含转换口径差异),平均单帧 1.2 个实例。
  • 尺寸分层(像素口径):small ≤100×100、medium >100×100 且 ≤200×200、large >200×200;官方直方图(论文图 2b)逐中心给出各层计数,最大中心 C2 在各层均为多数;面积口径下小息肉 <10,000 像素²、大息肉 ≥40,000 像素²。
  • 形态构成:含 protruded(隆起)与 flat(平坦)两类形态的标注占比图(论文图 6)随包发布;染色帧(靛胭脂)出现在部分切除序列中。

逐中心正样本帧数与序列构成(训练池设计时应以此为准):

中心 正样本帧合计 其中单帧 其中序列帧 序列存在性
C1(法国) 484 主要构成 部分 有序列
C2(意大利帕多瓦) 1,166 部分 865 序列帧最多的中心
C3(意大利阿维亚诺) 457 主要构成 少量 有序列
C4(挪威) 677 部分 450 序列第二大来源
C5(英国) 458 主要构成 少量 有序列
C6(埃及,OOD 测试) 520 88 432 官方 OOD 协议同时覆盖两种口径

读表要点:C2 一家贡献了近半正样本序列帧,任何"序列占比"类指标都会被 C2 主导;C6 的 88/520 拆分使其成为唯一同时提供单帧与序列 OOD 测试的中心。

§4.3 关键统计

统计项 数值 来源
总帧数 8,037 论文 Data Records
正/阴性帧 3,762 / 4,275 同上
息肉实例标注 3,447 同上
图像分辨率范围 384×288 至 1920×1080 同上
单帧有标注率 1,537/1,537(单帧全标注);全帧 3,121/8,037 含实例 同上 + DatasetNinja
平均实例面积 单帧平均占图约 8.45%-10.11% DatasetNinja
序列数 正 23 条 / 阴性 23 个文件夹 论文图 7
患者数 300+(每中心 ≥50) 论文

§4.4 数据层级

国家(5)→ 中心(6:C1-C6,每中心 ≥50 患者)→ 患者(300+,匿名无 ID 发布)
        → 检查(肠镜视频)→ 序列(seq_1-23 正 / seqN_neg 阴性,帧间连续)
        → 帧(8,037:单帧 1,537 + 正序列帧 2,225 + 阴性帧 4,275)
        → 实例(3,447 息肉:mask + bbox 双标注)

关键层级事实:患者 ID 不对外发布(匿名化),只能以序列/文件夹作为最接近"患者级"的分组单元做划分;同一序列内的帧来自同一检查且时间相邻,相关性极强。

§4.5 缺失值与信息性缺失编码

现象 表现 语义 处理建议
正样本帧无息肉 mask 为 null 空值、bbox TXT 为空文件 序列采样包含"息肉不可见帧",属设计行为 检测训练视为纯背景帧;分割训练跳过或作全零标签
阴性帧无任何标注文件 Negative/ 下仅 original_images 阴性序列无 GT 一律作为负样本/背景;勿走标注解析流程
无人口学元数据 不提供年龄/性别 完全匿名化协议 不可做人群分层分析;公平性研究需外部队列
无帧时间戳 文件名不含时间信息 序列顺序即帧顺序 按文件名排序重建时序
mask 无类别通道 单前景类、无组织学标签 内镜视觉标注 无法做多类分割或病理分级任务

§5 划分与使用建议

§5.1 官方划分

论文技术验证采用中心留出式协议:训练集为 C1-C5 单帧 1,449 帧(内部按 80%/20% 切分 train/val,划分清单以 TXT 随包提供),测试为完全未见过的 C6 中心(单帧 88 帧 + 序列帧 432 帧)——跨人群、跨设备、跨内镜医师的严格样本外测试。该协议专为度量泛化性设计,论文同时建议用户按需自定义(如"随机三中心训练、其余三中心测试")。发布版数据本身不强制 train/test 划分。

§5.2 社区惯例划分

社区存在两种主流做法:其一,沿用官方 TXT 只做单帧分割;其二,把全部 8,037 帧按中心或按序列重组,如 sota2.com 汇编的各类榜单口径(per-centre 测试、23 条序列测试、联邦 In/Out-Federation)。转换工具方面,cosmoimd 平台公开了 PolypGen → COCO/YOLO 的转换脚本(见 §8.7),转换后常按中心做 6 折中心留出交叉验证。

常见转换与划分路径对比:

路径 输入 输出 适用任务 风险点
官方 TXT 直用 C1-C5 单帧 + train-val TXT 80/20 单帧分割池 复现论文分割基准 忽略序列与 C6 则泛化结论不完整
cosmoimd COCO 转换 全部四件套 train_images + train_ann.json 检测器(Faster R-CNN 等) 需 Synapse token;确认空帧进入背景
自写 VOC→YOLO 单帧/序列 TXT 归一化标签 YOLO 系检测 坐标语义转换(坑点 4)
序列分组划分 seq_1-23 + 阴性序列 序列级 train/test 时序模型/跟踪 必须整序列分配(坑点 1)
中心 6 折留一 data-C1…C6 每折 5 训 1 测 泛化谱系分析 计算量 ×6;小中心折方差大

§5.3 泄漏风险 ⚠️

  • 序列时间泄漏(最高危):正样本序列相邻帧几乎相同,若把帧打散随机划分,训练/验证/测试集将包含近似复制帧,mIoU 可虚高 20 个点以上。任何含序列数据的划分必须以序列(seq_x)为最小单元整体分配。
  • 患者级泄漏:单帧虽来自不同视点,但同一患者多帧高度相关;由于患者 ID 未发布,唯一稳妥做法是把"文件夹/序列"视作患者代理单元,禁止跨 split 复用同一 data-Cx 文件夹内的同源素材做验证。
  • 中心泄漏(协议性):官方 OOD 协议的意义就在于 C6 完全隔离;若在训练中混入 C6 再"测 C6",结果失去泛化含义。
  • overlay 图泄漏(工程性):bb_overlay_images 仅是可视化,若误把它当输入图像,等于把标注泄漏进输入。

§5.4 划分策略建议

  1. 对标论文:C1-C5 单帧 1,449 训练(80/20)+ C6 样本外测试(88 单帧 + 432 序列帧),与 §8.1 直接可比。
  2. 中心 6 折留一交叉验证:每折以 5 个中心训练、1 个中心测试,报告均值±标准差与逐中心结果,量化域漂移谱系。
  3. 单帧 + 序列混合训练:若用序列,须整序列分配;建议额外单独报告"单帧测试"与"序列测试"两条曲线(官方落差约 10-13 个点)。
  4. 外部验证:保留 C5(跨中心测试中最难中心之一)或整个 PolypGen 作为外部集,验证用 Kvasir-SEG/CVC 系训练的模型。

若采用"混合训练 + 中心留出",一个可直接落地的组合示意:

实验编号 训练池 内部验证 测试池 回答的问题
E1(官方复现) C1-C5 单帧 1,449(80%) C1-C5 单帧(20%) C6 单帧 88 + 序列 432 与论文数字可比
E2(域谱系) 除 Ck 外全部帧 训练池 20% Ck 全部帧(k=1…6 轮换) 逐中心脆弱度排名
E3(时序) 16 条正序列 + 全部单帧 序列级 20% 7 条留出序列 时序泛化与帧间一致性
E4(外部锚) 全部 8,037 帧 训练池 20% Kvasir-SEG / ETIS-Larib 反向外推能力

§5.5 交叉验证建议

中心数仅 6,留一交叉验证的方差仍较大;建议每折内再以序列为单位做 5 折内部验证选型,最终只报告 6 折外层测试均值。谨慎使用逐帧 k 折——它必然引发时间泄漏。

§5.6 外部验证建议

推荐的外部锚点数据集:Kvasir-SEG(1,000 张,挪威)、CVC-ClinicDB(612 张)、CVC-ColonDB(380 张)、ETIS-Larib(196 张,难度最高)、LDPolypVideo(视频)。TransNetR 已示范"Kvasir-SEG 内部训练 + PolypGen 6 中心 OOD"的双向外推路径;反向(PolypGen 训练 → ETIS 测试)同样是高价值验证。


§6 AI 就绪指南

§6.0 云端快速启动

Synapse 提供网页直接下载与 synapseclient 命令行两种方式;Colab/Kaggle 环境建议用 Python 客户端 + 个人 Access Token 拉取(账号注册免费,编译版 ID 为 syn45200214):

pip install -q synapseclient
python - <<'PY'
import synapseclient
# 首次使用请在 https://www.synapse.org 个人设置中生成 Access Token
syn = synapseclient.Synapse()
syn.login(authToken="YOUR_SYNAPSE_TOKEN")   # 替换为你的 Token;切勿提交到代码库
syn.get("syn45200214", downloadLocation="/content/polypgen")   # 编译正式版
PY
# 解压后目录:/content/polypgen/PolypGen/{Positive,Negative}

序列视频包在 GitHub 仓库(DebeshJha/PolypGen)提供的 Google Drive 链接中,Synapse 与 Drive 需分别拉取,否则会拿到"不完整数据集"(见坑点 8)。

§6.1 快速上手

下面的代码假设数据解压到 data_root,目录拼接关系为 data_root/PolypGen/Positive/Single_Frames_centre_Split/data-CX/<四件套子目录>;最小可用子集是任意单中心的单帧四件套(如 data-C4),5 分钟内即可跑通加载。重要约定:ground truth 子目录名以实际解压为准(论文描述为 original images / annotated masks / bounding boxes / box overlay 四类目录),下例按常见命名 gt(mask)与 pxy(bbox)解析,首次运行请先 ls 确认。

# 目录结构预期(data_root 拼接关系):
#   data_root/PolypGen/Positive/Single_Frames_centre_Split/data-C4/
#     ├── original_images/  C4_*.jpg          # 原图
#     ├── gt/               C4_*.jpg          # 像素级掩码(同尺寸 JPG)
#     ├── pxy/              C4_*.txt          # PASCAL VOC bbox(每行一实例)
#     └── bb_overlay_images/ C4_*.jpg         # 框叠加可视化(勿作输入)
# 最小可用子集:data-C4 单中心四件套
from pathlib import Path
from PIL import Image
import numpy as np

root = Path("data_root/PolypGen/Positive/Single_Frames_centre_Split/data-C4")
img_path = sorted((root / "original_images").glob("*.jpg"))[0]
msk_path = root / "gt" / img_path.name          # mask 与原图同名
img = np.array(Image.open(img_path).convert("RGB"))
raw = np.array(Image.open(msk_path).convert("L"))

mask = (raw > 127).astype(np.uint8)             # JPG 有损 → 必须阈值化(见坑点 3)
ys, xs = np.where(mask > 0)
print("image:", img.shape, "| mask fg px:", mask.sum(),
      "| bbox:", (xs.min(), ys.min(), xs.max(), ys.max()) if len(xs) else "empty frame")

§6.2 数据获取

项目 内容
主渠道 Synapse:syn26376615(发布页)/ syn45200214(编译下载 ID)
序列补充 GitHub 仓库提供的 Google Drive 文件夹链接(视频序列)
前置条件 注册免费 Synapse 账号;商业用途需联系作者(Sharib Ali / Debesh Jha)
许可 CC BY 4.0;仅限教育与研究用途;使用须引用论文
大小 官方未公布总体积(8,037 帧 JPG 四件套);预留 ≥10 GB 磁盘
命令行 synapseclient(见 §6.0)或网页打包下载;cosmoimd 提供带 token 的批量下载脚本

推荐下载流程(首次约 20-40 分钟):

  1. 注册 Synapse 账号并在个人设置页生成 Access Token(等同密码,妥善保管)。
  2. 访问 syn26376615 发布页 确认最新版本号与文件清单。
  3. 网页端直接下载 ZIP,或按 §6.0 脚本用 syn.get("syn45200214") 拉取编译版。
  4. 若需要视频序列,另从官方 GitHub README 获取 Google Drive 链接下载。
  5. 解压后运行下述完整性校验脚本,逐中心核对帧数。
# 校验完整性:统计各中心单帧数量应与论文一致
from pathlib import Path
root = Path("data_root/PolypGen/Positive/Single_Frames_centre_Split")
expect = {"data-C1": 484, "data-C2": 1166, "data-C3": 457,
          "data-C4": 677, "data-C5": 458, "data-C6": 520}
for d, n in expect.items():
    got = len(list((root / d / "original_images").glob("*.jpg")))
    print(f"{d}: {got}/{n}", "OK" if got == n else "MISMATCH — 下载不完整")

§6.3 预处理全流程

流程:JPG mask 二值化 → PASCAL VOC TXT 解析与格式转换(YOLO/COCO)→ 尺寸标准化(512×512 主流)→ 质量清洗(overlay 排除、空帧分流)→ 增强。以下为可运行的转换脚本:

<details>
<summary>点击展开:mask 二值化 + VOC→YOLO 转换 + 标准化完整脚本(约 55 行)</summary>

# 前置:数据位于 data_root/PolypGen/...(结构见 §4.0)
# 输出:yolo 数据集(images/{train,val}、labels/{train,val},YOLO 归一化中心格式)
from pathlib import Path
import numpy as np
from PIL import Image

SRC = Path("data_root/PolypGen/Positive/Single_Frames_centre_Split")
DST = Path("yolo_dataset")
IMG_DIR, LBL_DIR = "original_images", "pxy"     # gt/ 为 mask 目录

def binarize_mask(mask_path: Path) -> np.ndarray:
    """JPG 有损掩码必须阈值化:>127 视为前景(见坑点 3)"""
    raw = np.array(Image.open(mask_path).convert("L"))
    return (raw > 127).astype(np.uint8)

def voc_lines_to_yolo(txt: Path, w: int, h: int):
    """PASCAL VOC 绝对坐标 xmin ymin xmax ymax → YOLO 归一化 cx cy w h"""
    out = []
    for line in txt.read_text().splitlines():
        p = [float(v) for v in line.split()[:4]]
        x1, y1, x2, y2 = min(p[0], p[2]), min(p[1], p[3]), max(p[0], p[2]), max(p[1], p[3])
        out.append(f"0 {(x1+x2)/2/w:.6f} {(y1+y2)/2/h:.6f} {(x2-x1)/w:.6f} {(y2-y1)/h:.6f}")
    return out

for centre in ["data-C1", "data-C2", "data-C3", "data-C4", "data-C5"]:  # C6 留作 OOD 测试
    for img_path in sorted((SRC / centre / IMG_DIR).glob("*.jpg")):
        img = Image.open(img_path); w, h = img.size
        std = img.resize((512, 512)); txt = SRC / centre / LBL_DIR / (img_path.stem + ".txt")
        rel = f"{centre}_{img_path.name}"
        std.save(DST / "images" / "train" / rel, quality=95)
        lines = voc_lines_to_yolo(txt, w, h) if txt.exists() else []
        (DST / "labels" / "train" / (img_path.stem + ".txt")).write_text("\n".join(lines))
        # 交叉校验:bbox 数量应等于 mask 连通域近似数(此处仅校验 bbox 行数与 mask 是否一致为空)
        msk = binarize_mask(SRC / centre / "gt" / img_path.name)
        assert bool(len(lines)) == bool(msk.sum() > 0), f"bbox/mask 不一致: {img_path.name}"
print("done: YOLO 格式已生成于", DST)

</details>

清洗要点:① 剔除 bb_overlay_images(可视化图,非输入);② 空标注帧分流为背景(检测)或跳过(分割);③ 逐帧校验 bbox 与 mask 空/非空一致(官方保证语义一致,但 JPG 压缩可能产生孤立噪点,可用最小连通域面积过滤,如 <50 像素)。

清洗规则清单(建议固化为数据验收测试):

规则 判定条件 处置
overlay 排除 路径含 bb_overlay_images 从输入清单剔除
空帧三分支 有 bbox / 空 TXT / 无 TXT 后两者标记为背景帧
mask 噪点过滤 连通域面积 <50 像素 从标签中移除该连通域
bbox-mask 一致性 bbox 行数 >0 与 mask 前景 >0 须同真同假 断言失败即阻断训练
尺寸极值检查 原图短边 <288 或长边 >1920 记录并人工抽查
序列完整性 seq_1-23 与 seqN_neg 1-23 全存在 缺失即重新下载(坑点 8)

§6.4 PyTorch DataLoader

<details>
<summary>点击展开:完整可运行的 Dataset 类 + transform + DataLoader(约 70 行)</summary>

# 前置:/content/polypgen/PolypGen/...;依赖 torch torchvision albumentations
import torch
from torch.utils.data import Dataset, DataLoader
from pathlib import Path
import numpy as np
from PIL import Image
import albumentations as A

class PolypGenSegDataset(Dataset):
    """PolypGen 单帧分割数据集:C1-C5 训练、C6 样本外测试(官方协议)。
    目录约定:root/data-CX/{original_images,gt,pxy};mask 为 JPG 需阈值化。"""
    def __init__(self, root, centres, size=512, augment=False):
        self.samples = []
        for c in centres:
            for img in sorted((root / c / "original_images").glob("*.jpg")):
                self.samples.append((img, root / c / "gt" / img.name))
        self.tf = A.Compose(
            [A.Resize(size, size)] + (
                [A.HorizontalFlip(p=0.5), A.RandomScale(scale_limit=(-0.5, 1.0), p=0.5),
                 A.RandomCrop(size, size, p=0.5)] if augment else []
            ) + [A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
                 A.ToTensorV2()],
        )

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

    def __getitem__(self, i):
        img_p, msk_p = self.samples[i]
        img = np.array(Image.open(img_p).convert("RGB"))
        msk = (np.array(Image.open(msk_p).convert("L")) > 127).astype(np.float32)
        t = self.tf(image=img, mask=msk)
        return t["image"], t["mask"][None].float()   # CHW mask

# data_root 拼接关系:root 下直接是 data-C1..data-C6(由 Single_Frames_centre_Split 进入)
ROOT = Path("data_root/PolypGen/Positive/Single_Frames_centre_Split")
train_ds = PolypGenSegDataset(ROOT, ["data-C1", "data-C2", "data-C3", "data-C4", "data-C5"], augment=True)
ood_ds   = PolypGenSegDataset(ROOT, ["data-C6"])          # 官方样本外测试中心
train_dl = DataLoader(train_ds, batch_size=16, shuffle=True,  num_workers=4, pin_memory=True)
ood_dl   = DataLoader(ood_ds,   batch_size=16, shuffle=False, num_workers=4, pin_memory=True)
x, y = next(iter(train_dl)); print(x.shape, y.shape, y.dtype)   # [16,3,512,512] [16,1,512,512] float32

</details>

序列数据训练:把 root 指向 Sequence_Frames/seq_x 并保持同批样本来自同一序列,才能利用时序相关性;切勿把序列帧打散进随机划分(见坑点 1)。

序列 Dataset 的最小改造思路(在上述类基础上):

class PolypGenSeqDataset(PolypGenSegDataset):
    """序列版:整序列分配、批内同序列、按文件名排序重建时序。"""
    def __init__(self, seq_root, seq_names, size=512):
        self.samples = []
        for s in seq_names:                      # 例 ["seq_3", "seq_14"]
            frames = sorted((Path(seq_root) / s / "original_images").glob("*.jpg"))
            self.samples += [(f, Path(seq_root) / s / "gt" / f.name) for f in frames]

    def get_batches_by_seq(self, batch_size=8):
        """按序列切批:同批帧来自同一条序列,保证时序一致性。"""
        from collections import defaultdict
        by_seq = defaultdict(list)
        for (img_p, msk_p) in self.samples:
            by_seq[img_p.parent.parent.name].append((img_p, msk_p))
        for seq, items in by_seq.items():
            for i in range(0, len(items), batch_size):
                yield items[i:i + batch_size]

要点:文件名即帧顺序(数据集不提供时间戳),排序后天然时序单调;评估时逐序列计算再对序列取平均,与官方"23 条序列测试"口径对齐。

§6.5 坑点 8 个

⚠️ 坑点 1:帧级随机划分引发序列时间泄漏(分类:数据泄漏)

问题:正样本序列相邻帧几乎相同(仅视点/位移微变),把 2,225 帧序列帧打散随机划分后,验证/测试帧在训练集中存在近似复制,评估指标严重虚高。
症状:验证 mIoU 高达 0.9+,但部署或中心留出测试骤降到 0.5 上下;逐帧 diff 发现测试帧与训练帧肉眼难辨。
解决

  1. 简单方法:任何划分以 seq_x 文件夹为最小单元整体分配,禁止帧级打散。
  2. 进阶方法:以"序列组"做 GroupShuffleSplit:
from sklearn.model_selection import GroupShuffleSplit
import numpy as np
groups = [p.parent.name for p, _ in ds.samples]   # seq_3 / data-C4 ...
tr, te = next(GroupShuffleSplit(1, test_size=0.2,
              random_state=0).split(np.zeros(len(groups)), groups=groups))
  1. SOTA 方法:直接采用官方中心留出协议(C1-C5 训练、C6 与序列测试),并报告逐中心与逐序列两组指标。
    参考Ali et al., 2023, Scientific Data. DOI 10.1038/s41597-023-01981-y(官方协议与序列设计动机)

⚠️ 坑点 2:空标注帧被误判为数据损坏(分类:标签理解)

问题:数据集中约 61% 的帧(4,916/8,037)没有实例标注:阴性帧完全没有标注文件,正样本序列内无息肉帧则是空 mask(null)+ 空 bbox TXT。很多加载器把"标注缺失"当作损坏而抛错,或把空 mask 帧静默丢弃,导致阴性背景从未进入训练。
症状UnicodeDecodeError/StopIteration(解析空 TXT)、训练日志中"跳过 N 个损坏样本"、检测器假阳性率异常高(缺少难负样本)。
解决

  1. 简单方法:加载逻辑显式三分支——有 bbox空 TXT 文件无 TXT 文件,后两者统一视为背景帧。
  2. 进阶方法:检测训练把空帧按 1:1 与正帧混批(含难例挖掘),可显著压低假阳性。
  3. SOTA 方法:按论文协议理解正序列内空帧的"息肉不可见帧"语义,将其用于时序可见性建模而非丢弃。
    参考论文 Data Records(No polyp in positive samples mask empty bounding box files and mask with null values)

⚠️ 坑点 3:mask 为有损 JPG,二值化不当产生毛刺边界(分类:预处理陷阱)

问题:官方掩码以 JPG 存储(与原图同尺寸),有损压缩使边界像素值在 0-255 之间连续分布;用 mask != 0 阈值会把压缩伪影读成前景,产生孤立噪点与毛刺边界,小息肉尤甚。
症状:mask 二值化后前景像素数比 bbox 面积大/小数个百分点;连通域统计出现大量 1-3 像素碎斑;小息肉 Dice 异常低。
解决

  1. 简单方法mask = (raw > 127),再过滤面积 <50 像素的连通域。
  2. 进阶方法:以 cv2.connectedComponentsWithStats 清理后做一次形态学闭运算(3×3)平滑边界,并与 bbox 求交裁剪。
  3. SOTA 方法:训练时对 mask 先高斯软化再用 BCE+Dice 混合损失,容忍边界不确定性;评估统一 >127 口径。
    参考论文 Data Records(annotated masks in .jpg format);官方基线训练配置

⚠️ 坑点 4:PASCAL VOC TXT 被误当 YOLO 归一化格式解析(分类:工程陷阱)

问题:官方 bbox 为 PASCAL VOC 绝对坐标 xmin ymin xmax ymax(像素、原点左上),且多息肉帧为多行;一些团队沿用 YOLO 解析器(归一化 cx cy w h)直接读入,坐标全错。
症状:检测结果框整体偏移或缩放到图像一角;bbox 面积与 mask 前景面积不匹配;assert x2 > x1 频繁失败。
解决

  1. 简单方法:按 VOC 语义解析后自行转换(见 §6.3 脚本 voc_lines_to_yolo),转换前用一帧可视化叠加验证。
  2. 进阶方法:用 cosmoimd 平台的 convert_polypgen_to_coco.py 一步转 COCO(需 Synapse token),再转 YOLO。
  3. SOTA 方法:在数据卡中固化格式断言(bbox 全部落在图像宽高内、x2>x1、行数与 mask 连通域数一致),纳入 CI 数据测试。
    参考cosmoimd/polyp_detection_platform

⚠️ 坑点 5:同中心随机划分高估泛化——跨中心性能断崖(分类:偏倚陷阱)

问题:若不做中心留出,跨设备/人群的域漂移被训练集"吸收",报告的指标是域内指标而非泛化指标。官方与社区证据显示落差巨大:TransNetR 的 OOD 测试中 C3 mIoU 76.75 而 C5 仅 35.97,相差约 40 点。
症状:论文复现数字对不上;模型在自家医院数据表现优异、合作医院测试崩盘;误判为过拟合而盲目正则化。
解决

  1. 简单方法:至少复现官方协议(C1-C5 → C6)作为泛化下界报告。
  2. 进阶方法:6 折中心留一交叉验证,报告均值±方差与逐中心热力图,定位脆弱中心。
  3. SOTA 方法:中心留出 + 域适应/风格迁移(如 AdaIN、测试时增强/训练)组合,逐中心量化增益。
    参考Jha et al., 2023, TransNetR. arXiv:2303.07428sota2.com PolypGen 榜单

⚠️ 坑点 6:单帧与序列混训却不分开报告,评估口径混淆(分类:评估误用)

问题:序列帧分布不均(C2 865 / C4 450 / C6 432 为主),且官方基准显示同一模型序列测试系统性低于单帧(DeepLabV3+ R101:单帧 DSC 0.82 vs 序列 0.71)。把两种帧混在一个测试池里报单一指标,会掩盖约 10 点的口径差。
症状:与论文数字"对不上";不同论文间比较失真(有人只测单帧、有人混测);细看发现测试集构成完全不同。
解决

  1. 简单方法:任何训练配置下分别报告"单帧测试"与"序列测试"两条结果。
  2. 进阶方法:按官方口径固定测试池(88 单帧 + 432 序列帧),混测时显式加权说明。
  3. SOTA 方法:视频流式评估(逐序列滑动窗口),额外报告帧间一致性指标(时序抖动)。
    参考Ali et al., 2023, Scientific Data. DOI 10.1038/s41597-023-01981-y(表 5 vs 表 6)

⚠️ 坑点 7:颜色增强破坏染色内镜与设备色域线索(分类:预处理陷阱)

问题:数据集含靛胭脂染色帧(seq12/14/15/16 等切除序列)与 6 套 Olympus 色域,颜色本身承载"染色/黏膜状态"语义;激进的 HSV/Hue-Jitter 增强会把染色帧与白光帧互相混淆,模型学到假关联。
症状:加入强颜色增强后训练损失更低但 OOD 测试变差;染色序列上假阳性激增(蓝色器械/染液被当成息肉纹理)。
解决

  1. 简单方法:颜色类增强限制在小幅亮度/对比度(如 Brightness±0.1、CLANE),关闭 Hue 通道扰动。
  2. 进阶方法:几何增强(翻转/缩放/裁剪)为主,颜色归一化用 per-dataset 统计而非 ImageNet 均值。
  3. SOTA 方法:显式域条件化(输入端拼接中心 one-hot 或设备嵌入),让模型区分而非抹平色域差异。
    参考论文表 3(序列描述含 Dye lifted / Indigo Carmine)

⚠️ 坑点 8:下载不完整——Synapse 与 Google Drive 双渠道缺一不可(分类:工程陷阱)

问题:主数据在 Synapse(需注册账号;编译版 ID syn45200214),视频序列另在 GitHub 仓库给出的 Google Drive 链接;很多团队只下载其一,导致"8,037 帧"缺序列或缺单帧。Synapse 匿名访问部分文件还会触发权限错误。
症状:各中心帧数与论文不符(如 data-C6 不足 88 帧);Sequence_Frames 缺 seq;脚本在 syn.get() 报 403。
解决

  1. 简单方法:下载后运行 §6.2 的数量校验脚本,逐中心核对 484/1,166/457/677/458/520。
  2. 进阶方法:用 synapseclient + Access Token 脚本化拉取并记录文件 MD5;序列从 Drive 拉取后同样校验 23 条序列齐全。
  3. SOTA 方法:把校验脚本纳入 DVC/CI 数据验收门禁,任何环境重建数据必须过门禁。
    参考DebeshJha/PolypGenSynapse syn26376615

§6.6 数据增强

  • 安全 ✅:水平翻转(肠腔无左右语义)、小幅旋转 ≤10°、随机缩放 0.5-2.0(官方基线即用)、随机裁剪、亮度/对比度微扰、高斯噪声与模糊(模拟镜头污渍)、弹性形变轻度(黏膜蠕动近似)。
  • 危险 ❌:Hue/饱和度大范围抖动(破坏染色内镜语义,见坑点 7)、垂直翻转(违背重力相关的液体/气泡分布常识,收益未验证)、CutOut 遮挡过大会覆盖小息肉(small 类本就 Dice 0.46)、把 bb_overlay 图当作增强输入(标注泄漏)。

按任务维度的增强取舍:

增强算子 分割 检测 时序/跟踪 备注
HorizontalFlip p=0.5 mask/bbox 同步变换
RandomScale 0.5-2.0 ⚠️ 轻度 官方基线同款;重缩放后小息肉更难
RandomCrop 512² ⚠️ 需确保裁剪后仍有目标或正确处理空框
亮度/对比度微扰 幅度 ≤0.1
Hue/HSV 抖动 破坏染色语义(坑点 7)
CutOut/GridMask ⚠️ ⚠️ 遮挡面积勿超前景均值
帧序打乱 时序语义破坏

§6.7 模型推荐

模型 任务 PolypGen 适用性 备注
DeepLabV3+ (ResNet50/101) 分割 官方最佳基线(C6 单帧 DSC 0.82) 论文逐项数字齐全,首选复现锚点
TransNetR 分割 轻量实时,OOD 全 6 中心已测 mIoU 60.58(All OOD),代码开源
U-Net / ResNetUNet 分割 官方基线(0.63-0.80 DSC) 快速基线与消融对照
PSPNet / FCN8 分割 官方基线 PSPNet 0.80 DSC 接近最佳
YOLOv8 / Faster R-CNN 检测 用 §6.3 转换的 YOLO/COCO 标签 需自行处理 61% 空标注背景帧
TransUNet / PraNet 系 分割 社区常用,可迁移 建议只在官方口径下比较

§6.8 硬件需求

场景 GPU 显存 说明
单帧分割训练(512×512,batch 16) 1× Quadro RTX 6000(官方) ≥16 GB 官方基准同款配置(约 500 epochs)
消融/快速实验 1× RTX 3090/4090 24 GB batch 8-16 可复现官方量级
检测训练(YOLO,1080p 输入) 1× RTX 4090 / A5000 16-24 GB 多尺度训练更吃显存
推理(临床演示) 任意 ≥8 GB 8 GB TransNetR 达 54.60 FPS(Kvasir-SEG 实测)

§6.9 评估指标代码

# 与官方口径对齐:JI=mIoU、DSC=mDice,另算 F2(官方强调 recall 倾向)
import numpy as np

def seg_metrics(pred: np.ndarray, gt: np.ndarray, eps: float = 1e-7):
    p, g = pred.astype(bool), gt.astype(bool)
    inter = np.logical_and(p, g).sum()
    ji = inter / (np.logical_or(p, g).sum() + eps)          # Jaccard / mIoU
    dsc = 2 * inter / (p.sum() + g.sum() + eps)             # Dice
    prec = inter / (p.sum() + eps)                          # PPV
    rec = inter / (g.sum() + eps)                           # Recall/Sensitivity
    f2 = (5 * prec * rec) / (4 * prec + rec + eps)          # F2:漏检惩罚更重
    return {"JI": ji, "DSC": dsc, "PPV": prec, "Recall": rec, "F2": f2}

# 用法:对 C6 OOD 逐帧计算后取均值±标准差,并与官方表 5/6 对比
# 注意:空 GT 空预测帧(阴性帧)在官方检测评估中计入特异性口径,分割评估建议单独列示

检测任务的指标口径(官方挑战沿用的 EndoCV 惯例):

# 检测评估:bbox 级 TP 判定 + 逐帧灵敏度/特异性
def match_boxes(pred, gt, iou_thr=0.5):
    """pred/gt: list[(xmin, ymin, xmax, ymax)];返回 TP/FP/FN"""
    ious, matched = [], set()
    for pb in pred:
        best, best_iou = -1, 0.0
        for gi, gb in enumerate(gt):
            if gi in matched:
                continue
            x1, y1 = max(pb[0], gb[0]), max(pb[1], gb[1])
            x2, y2 = min(pb[2], gb[2]), min(pb[3], gb[3])
            inter = max(0, x2 - x1) * max(0, y2 - y1)
            a1 = (pb[2] - pb[0]) * (pb[3] - pb[1])
            a2 = (gb[2] - gb[0]) * (gb[3] - gb[1])
            iou = inter / (a1 + a2 - inter + 1e-7)
            if iou > best_iou:
                best, best_iou = gi, iou
        if best_iou >= iou_thr:
            matched.add(best)
        else:
            ious.append(1)      # FP
    tp = len(matched)
    return tp, len(ious), len(gt) - tp      # TP, FP, FN
# 灵敏度 = TP / (TP + FN);特异度依赖阴性帧(无 GT 帧上的 FP 计入假阳性)
# mAP@0.5 按常规逐置信度排序累加 PR 曲线即可;EndoCV2021 采用 F2 为综合指标

口径提醒:阴性帧(4,275 张)在检测评估里是"必须保持安静的帧"——把阴性帧计入 FP 统计后,检测器的真实临床假阳性率才会显形;只报 mAP 会美化结果。

§6.10 MLOps 笔记

  • 数据版本化:Synapse 条目自带版本(syn26376615 / syn45200214),DVC 或 MLflow 记录"哪个 split TXT + 哪个转换脚本 + 哪个 commit"三元组,避免口径漂移。
  • 数据测试门禁:把帧数校验(§6.2)、bbox/mask 一致性断言(§6.3)写成 pytest,数据重下载后必须过测。
  • 指标追踪:单帧/序列两条测试曲线分开记录;OOD 各中心指标逐一入库,禁止只报均值。
  • 复现包:官方 train-val TXT + 固定随机种子 + albumentations 版本锁定(Resize/RandomScale 行为随版本变化)。
  • 隐私合规:CC BY 4.0 + 教育研究用途限定写入模型卡;对外发布衍生模型时引用 Ali et al. 2023 并声明数据来源。
  • 存储分层:原始 ZIP 只读归档一份;解压目录以软链接挂载到实验环境,避免多副本导致版本分叉;转换产物(YOLO/COCO)单独入库并标注生成脚本 hash。
  • 评测复现服务:把 E1-E4 四组实验(见 §5.4 表)封装为可一键触发的 pipeline,评审补实验时可直接重跑,避免"论文数字无法复现"的经典返工。

从原始 ZIP 到可训练数据的推荐产物链(每步产物都应纳入版本控制):

syn45200214.zip(只读归档)
  └─ 解压 → PolypGen/(帧数校验过)
       └─ 转换 → yolo_dataset/ 或 coco/(脚本 hash 记录)
            └─ 划分 → splits/{E1,E2,E3,E4}.json(含序列分组)
                 └─ 训练 → runs/{exp_id}/(配置 + 指标 + OOD 逐中心矩阵)

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解建议
中心规模不均衡 正样本帧 C2 1,166 vs C3 457,跨 2.5 倍 加权采样或按中心重采样;逐中心报告指标
地域代表性 欧洲 5 中心 + 埃及 1 中心,非洲仅 1/6 中高 外部验证纳入亚洲/美洲队列(如 LDPolypVideo)
设备单一 6 中心全部 Olympus 系统 中高 谨慎宣称跨品牌泛化(宾得/富士设备未见)
人口学盲区 完全匿名化,无年龄/性别 不可做人群亚组分析;公平性结论需外部数据
序列分布倾斜 序列帧集中于 C2/C4/C6 时序结论按中心分层验证
尺寸难度失衡 小息肉(≤100×100 px)DSC 仅 0.46 过采样小息肉;评估按尺寸分层报告
无组织学标签 内镜视觉标注,无病理金标准 不可用于病理分级任务;CADx 研究需外接病理

§7.2 标注质量

标注质量处于公开内窥镜数据集的第一梯队:Labelbox 三人标注 → 6 名资深胃肠病学家(>20 年经验)全员复审 → 独立二元审查(2,213 帧拒 676 帧,约 30.5%)→ 歧义批次重标再审(复审仍拒 34.17%)。8 条书面协议消解了"墨迹、器械、遮挡、皱襞"等经典标注歧义源。需要了解的边界:mask 为 JPG 有损格式(边界精度受压缩限制);未公布标注者间一致性系数(如 Dice@annotators);flat 息肉在放大视图下标注,其边界天然更具不确定性;染色帧的"非墨迹区"协议要求标注者具备临床背景。

质检数字一览:

质检环节 数量 结果
标注分工 3 名研究人员 单帧均分、Labelbox 平台标注
专家复审 6 名胃肠病学家(>20 年经验) 全部标注帧覆盖
二元审查(排除歧义后) 2,213 帧 接受 1,537 / 拒绝 676(约 30.5%)
歧义批次重标 2 名研究者联合重标 再审后仍有 34.17% 被拒
最终发布实例 3,447 个息肉实例 全部通过专家验收
形态占比 protruded / flat 占比图 随包发布(论文图 6)

§7.3 泛化性

场景 失效风险 证据
中心外推(C1-C5 → C6) 性能显著下降但仍可用 官方:DeepLabV3+ R101 单帧 DSC 0.82 / 序列 0.71
中心间互测 最低与最高中心差约 40 点 mIoU TransNetR OOD:C5 35.97 vs C3 76.75
单帧 → 序列 系统性下降约 10 点 官方表 5 vs 表 6;TransNetR 60.58 vs 47.17
小息肉检测/分割 高危(DSC 0.46) 官方尺寸分层(DeepLabV3+ R101)
跨品牌设备 未知,无法用本数据评估 全部 Olympus,需外部数据
染色内镜帧 常规白光训练模型易失效 seq12/14/15/16 靛胭脂帧外观显著异于白光

§7.4 伦理

各中心自行负责伦理、法律与隐私流程:每中心完成患者知情同意(书面或通用同意),多数中心经地方医学伦理委员会/IRB 审查(C5 REC Ref 16/YH/0247;C1 N° IDRCB: 2019-A01602-55;C4 豁免 + 书面同意;C2/C3 通用患者同意;C6 书面知情同意)。数据在发送给组织方前已在中心内完成匿名化(移除人口学烧录信息),发布版不含任何年龄、性别等人口学字段。许可为 CC BY 4.0,官方明确限定教育与研究用途并要求引用论文;商业用途需联系作者。

§7.5 公平性

PolypGen 在地域多样性上优于多数前辈数据集(首次纳入埃及中心,为北非人群提供内镜影像代表),但公平性边界清晰:单一非洲中心 vs 五个欧洲中心,比例失衡;无人口学标签,无法度量性别/年龄/种族亚组性能;设备全部 Olympus,跨品牌公平性无从谈起。对追求公平性的团队,建议把 C6 视为"代表性不足群体"子集单独报告性能,并把跨中心差距作为公平性差距的代理指标。

公平性维度 现状 风险 建议动作
地域 欧洲 5 中心 + 非洲 1 中心 非洲以外南方人群仍缺代表 外部验证纳入亚洲/拉美队列
人口学 无年龄/性别字段 无法检测亚组性能差 以 C6 作代理子集单独报告
设备品牌 全 Olympus 品牌域偏移未覆盖 跨品牌测试需外部数据
病变谱 未发布逐帧组织学 无法按组织学分层公平评估 结合病理报告的队列补足

§7.6 数据漂移

该数据集本身就是"设计出来的漂移":中心间(人群、设备参数、操作者风格)构成 source domain 与 target domain 的天然对。部署监测建议:① 以中心 ID 为分层监控维度,跟踪各中心输入分布(分辨率、色调统计)与性能衰减;② 用 t-SNE 嵌入(论文图 1 即官方示范)做季度级特征漂移可视化;③ 序列帧与单帧分开监控——官方证据显示两者分布与难度显著不同;④ 染色内镜使用率上升时(临床策略变化),白光训练模型需触发再评估。

监测维度 触发信号 建议阈值/动作
输入色调分布 均值/方差偏离训练统计 偏移 >2σ 触发域适应评估
中心性能衰减 单中心 mIoU 周环比下降 下降 >5 点启动复检
单帧/序列口径差 序列指标相对单帧下降扩大 差距 >15 点提示时序适配失效
小息肉召回 small 层召回下滑 低于基线 0.46 对应水平即复查
染色帧占比 染色序列占比上升 超训练分布即补采/微调

§7.7 DAIMS 24 项检查

# 检查项 状态 说明
1 宽格式 影像目录树组织,无表格化宽表(需自行解析文件夹结构)
2 唯一标识 文件名全局唯一且内嵌中心/检查编码(如 C1_962OLCV1_100H0004)
3 特殊字符 文件名仅含字母数字下划线,跨平台安全
4 重复行 ⚠️ 序列相邻帧高度近似(设计使然),需按序列分组去重
5 缺失编码 空 mask(null)与空 bbox TXT 为显式无息肉编码,语义清晰
6 标签标识 目录名(Positive/Negative)+ 文件夹名(data-Cx/seq_x)双重标识
7 罕见类分组 ⚠️ flat 息肉与染色帧占比低,官方仅给占比图未给逐帧清单
8 偏倚评估 论文提供 t-SNE 分布图与逐中心/逐尺寸直方图
9 数据字典 ⚠️ 论文图 7 描述目录语义,但无独立数据字典文档
10 信息性缺失解释 空标注帧语义在论文正文明确陈述
11 设备记录 表 2 逐中心列明内镜型号与伦理信息
12 共线性 影像数据无特征共线性问题(不适用即通过)
13 编码映射 ⚠️ 单类标签无需映射表,但无 Paris/JNET 逐帧编码发布
14 时间戳处理 帧无时间戳元数据,仅能按文件名顺序重建时序
15 划分建议 官方 train-val TXT + 明确的 OOD 协议与建议
16 泄漏讨论 ⚠️ 官方强调中心留出,但未明文警告序列帧级泄漏
17 标签分布 论文图 2b/图 6 给出尺寸与形态分布
18 测量偏倚 ⚠️ 标注依赖内镜视觉形态,无病理对照,测量偏倚未量化
19 外部验证建议 论文与社区(TransNetR)均示范外部/OOD 验证路径
20 版本记录 ⚠️ Synapse 条目有版本,但官方未发布结构化版本变更表
21 预处理脚本 ⚠️ 官方划分 TXT 提供,预处理/转换依赖社区脚本(cosmoimd 等)
22 合规要求 CC BY 4.0 + 用途限定 + 引用要求,条款清晰
23 多模态对齐 原图/mask/bbox/overlay 四件套同尺寸同帧严格对齐
24 去标识化 全匿名化协议,无人口学信息,各中心合规留痕

DAIMS 评分:17.5 / 24(✅ 13 项 ×1 + ⚠️ 9 项 ×0.5 + ❌ 2 项 ×0)

评分解读:17.5 分属于"高质量研究数据集,但非开箱即用"区间。得分主要来自无可挑剔的标注 QA 链路、显式的信息性缺失编码与完备的溯源记录;失分集中在工程化短板——无宽表/字典/时间戳、mask 有损压缩、以及把"如何防泄漏"的最后一公里留给用户。

对你意味着什么:① 用它做泛化研究是安全且高回报的,但要自己写目录解析与格式转换(预算 1-2 天工程量);② 任何划分必须按序列/中心分组,这个坑官方没替你填(检查项 16 仅半分);③ 想做人群亚组或病理相关研究,此数据集给不了答案,需外接队列;④ 交付模型时把"训练中心清单 + OOD 协议"写进模型卡,评审与审计都会要。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
PolypGen C6 单帧(OOD) 埃及亚历山大大学 分割 DeepLabV3+ R101 DSC 0.82 较同中心普遍 >0.9 下降约 8-10 点 跨人群/设备样本外仍可用(Ali et al., 2023, Scientific Data. DOI 10.1038/s41597-023-01981-y
PolypGen C6 序列(OOD) 同上 分割 DeepLabV3+ R101 DSC 0.71 较单帧再降约 11 点 序列口径系统性更难
PolypGen 全 6 中心 OOD 多中心 分割 TransNetR mIoU 60.58(C3 76.75 至 C5 35.97) 域差距达 40+ 点 跨中心脆弱性被精确定位(Jha et al., 2023, TransNetR. arXiv:2303.07428
PolypGen 23 条序列 OOD 多中心 视频分割 TransNetR mIoU 47.17 低于单帧 13.4 点 时序连续性并未自动带来增益
联邦设置(In/Out-Federation) 6 中心模拟 分割 In-Fed F1 82.85 / Out-Fed F1 86.01 / Held-Out F1 74.3 Held-Out 较 In-Fed 低约 8.6 点 联邦范式下未见中心仍是短板(sota2.com 榜单汇编
Kvasir-SEG(内部) 挪威单中心 分割 TransNetR DSC 0.8706 / 54.60 FPS 同中心基准 展示"单中心训练 → PolypGen OOD"外推路径

§8 基准性能与生态

§8.1 排行榜

以下为 PolypGen 上有同行评审或公开代码支撑的代表结果。注意:各行评测口径不同(官方 C6 OOD / 全 6 中心 OOD / 序列 / 中心子集 / 联邦),数值不可直接横向比较;同一模型内跨口径比较请以 §7.8 为准。

排名 模型 性能 年份 关键技术 完整引用 代码
1 TransNetR(全 6 中心 OOD mIoU 60.58) mIoU 60.58(C3 76.75 / C6 63.35 / C2 66.08 / C1 65.38 / C4 46.01 / C5 35.97) 2023 ResNet50 编码器 + Residual Transformer 块 Jha, D., Tomar, N. K., Sharma, V., Bagci, U., 2023. TransNetR: Transformer-based Residual Network for Polyp Segmentation with Multi-Center Out-of-Distribution Testing. arXiv:2303.07428. DOI 10.48550/arXiv.2303.07428 GitHub
2 DeepLabV3+ (ResNet101)(官方 C6 单帧 OOD) DSC 0.82 / JI 0.75 2023 空洞可分离卷积编码解码 + ASPP Ali, S., Jha, D., et al., 2023. A multi-centre polyp detection and segmentation dataset for generalisability assessment. Scientific Data 10, 75. DOI 10.1038/s41597-023-01981-y 论文基准
3 DeepLabV3+ (ResNet101)(官方 C6 序列 OOD) DSC 0.71 / JI 0.65 2023 同上 同上 论文基准
4 PSPNet(官方 C6 单帧 OOD) DSC 0.80 / JI 0.72 2023 金字塔场景解析 同上 论文基准
5 ResNetUNet (ResNet34)(官方 C6 单帧 OOD) DSC 0.79 / JI 0.73(87 FPS,最快) 2023 ResNet 编码 U-Net 解码 同上 论文基准
6 FCN8(官方 C6 单帧 OOD) DSC 0.76 / JI 0.68 2023 全卷积网络 同上 论文基准
7 U-Net(官方 C6 单帧 OOD) DSC 0.63 / JI 0.55 2023 编码解码 + 跳连 同上 论文基准
8 联邦学习框架(sota2 汇编条目) In-Federation F1 82.85 / Out-Federation F1 86.01 / Held-Out F1 74.3 2023-2024 6 中心去中心化训练 数值经 sota2.com PolypGen 榜单 汇编,原始论文口径请以该榜单链接核对
9 社区 SOTA(Centre 2 子集) Dice 87.34 2024 sota2 汇编条目(ref 20) 同上
10 社区 SOTA(整体口径) Dice 72.88 2024 sota2 汇编条目(ref 24) 同上

口径警告:行 1(全 6 中心 OOD)与行 2(仅 C6 测试)训练/测试池不同;行 8-10 为第三方榜单汇编,引用前请回溯原始论文核对协议。序列最佳社区数字(23 条序列 mDice 80.8、16 条视频序列 Dice 86.44 等)同样因序列集合不同而不可互比。

§8.2 SOTA 总结与选型建议

官方基准给出的清晰信号:跨中心场景下没有免费的午餐——即便最强配置(DeepLabV3+ R101),OOD 单帧 DSC 也只有 0.82,序列 0.71;TransNetR 的逐中心扫描揭示 C5 类中心是普遍短板。选型建议:① 追求复现与可解释,用官方四基线(DeepLabV3+ / PSPNet / ResNetUNet / U-Net);② 追求轻量实时部署,选 TransNetR(54.60 FPS 且 OOD 行为已被完整刻画);③ 追求榜单名次,先固定评测协议再谈模型,否则数字没有意义。

从官方数字还能读出三条结构性规律,供设计实验时参考:

  1. 架构容量与 OOD 稳健性正相关:U-Net(最轻)在 C6 单帧上 DSC 仅 0.63,而 DeepLabV3+ R101 达 0.82——域差距不是靠"轻量即泛化"能弥补的。
  2. 序列是更真实的试金石:所有模型在序列口径上系统性下滑(最佳 0.71),说明静态帧上刷出的分数含"水分",临床部署应同时报告序列指标。
  3. 小目标是决定性短板:small 层 DSC 0.46 vs large 0.87,几乎决定总分上限——任何改进贡献里,先看小息肉分层指标是否动了。

§8.3 评测协议

官方协议(论文 Technical Validation):C1-C5 单帧 1,449 帧训练(80%/20% train/val,TXT 随包)、约 500 epochs、batch 16、输入 512×512、Adam(lr 0.01、weight decay 1e-5)、保存 100 epochs 后最佳模型、Quadro RTX 6000;增强为 scaling 0.5-2.0、随机裁剪、随机水平翻转、归一化。测试两套:C6 单帧 88 帧、C6 序列 432 帧。指标:JI(mIoU)、DSC(mDice)、F2、PPV、Recall/Sensitivity、Accuracy、AHD 系(平均 Hausdorff 距离类)、NSD、FPS。复现时锁定 albumentations 与 PyTorch 版本,否则增强行为漂移会带来 1-2 点波动。

官方超参数速查表:

超参数 取值 备注
输入尺寸 512×512 全部基线一致
Batch size 16 Quadro RTX 6000 单卡
Epochs 约 500 100 epochs 后开始保存最佳模型
优化器 Adam lr 0.01、weight decay 1e-5
增强 scaling 0.5-2.0 / 随机裁剪 / 水平翻转 / 归一化 经典策略,无颜色抖动
硬件 Quadro RTX 6000 单卡可复现
主要指标 JI、DSC、F2、PPV、Recall、Acc 另报 AHD/NSD/FPS
测试池 C6 单帧 88 帧;C6 序列 432 帧 两个口径分别报告
数据集 规模 中心 标注 获取
Kvasir-SEG 1,000 张 挪威 1 中心 mask 开放
HyperKvasir 110,079 图像 + 374 视频 挪威 1 中心 部分标注 开放
CVC-ClinicDB 612 张 西班牙 1 中心 mask 开放
CVC-ColonDB 380 张 西班牙 1 中心 mask 申请
ETIS-Larib 196 张 1 中心 mask 开放
CVC-VideoClinicDB 11,954 张 西班牙 1 中心 mask 申请
ASU-Mayo 18,781 张 美国 1 中心 mask 申请
EDD2020 386 张 多 lesions 多类标注 开放
LDPolypVideo 346 视频 / 57,886 帧 中国 1 中心 mask + 时序 开放
Kvasir-Capsule 4,741,504 张 挪威 胶囊内镜 开放

(规模与获取状态来自 Ali et al., 2023, Scientific Data 表 1 及 DatasetNinja 汇编,使用前请以各官方页为准。)

§8.5 关键论文 Top 8

  1. Ali, S., Jha, D., Ghatwary, N., Realdon, S., Cannizzaro, R., Salem, O. E., Lamarque, D., Daul, C., Riegler, M. A., Anonsen, K. V., Petlund, A., Halvorsen, P., Rittscher, J., de Lange, T., East, J. E., 2023. A multi-centre polyp detection and segmentation dataset for generalisability assessment. Scientific Data 10, 75. DOI 10.1038/s41597-023-01981-y — 数据集主论文:协议、标注 QA、官方基准一应俱全。
  2. Jha, D., Tomar, N. K., Sharma, V., Bagci, U., 2023. TransNetR: Transformer-based Residual Network for Polyp Segmentation with Multi-Center Out-of-Distribution Testing. arXiv:2303.07428. DOI 10.48550/arXiv.2303.07428 — 首个 PolypGen 全 6 中心 OOD 系统扫描,逐中心数字最有引用价值。
  3. Ali, S., Jha, D., et al., 2021. PolypGen: A multi-center polyp detection and segmentation dataset for generalisability assessment. arXiv:2106.04463 — 预印本版本,含 3,446 标注数等早期口径。
  4. Ali, S., et al., 2022. EndoCV2021 challenge evaluation paper (Addressing generalisability in endoscopy sub-challenges). arXiv:2202.12031 — EndoCV2021(ISBI 2021)挑战赛的官方评估,PolypGen 前身数据的首轮社区基准。
  5. Ronneberger, O., Fischer, P., Brox, T., 2015. U-Net: Convolutional Networks for Biomedical Image Segmentation. MICCAI 2015 — 官方基线之一,PolypGen 上 OOD 下降最显著(0.63 DSC),反证容量与泛化的关系。
  6. Chen, L.-C., Zhu, Y., Papandreou, G., Schroff, F., Adam, H., 2018. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (DeepLabV3+). ECCV 2018 — 官方最佳基线架构。
  7. Jha, D., Smedsrud, P. H., Riegler, M. A., Halvorsen, P., de Lange, T., Johansen, D., Johansen, H. D., 2020. Kvasir-SEG: A Segmented Polyp Dataset. MMM 2020 — 最常用单中心对照基准,与 PolypGen 构成内外验证对。
  8. Borgli, H., et al., 2020. HyperKvasir: a comprehensive multi-class image and video dataset for gastrointestinal endoscopy. Scientific Data 7, 283. DOI 10.1038/s41597-020-00622-y — 规模对照数据集,全消化道发现分类。

§8.6 社区活跃度

截至 2026-09 的可核实活跃度:官方 GitHub 仓库 DebeshJha/PolypGen 26 stars / 1 fork,README 最近一次更新为 2025-08;Synapse 数据条目持续可下载并保留版本历史;EndoCV2021 挑战页(grand-challenge.org)保留历史排行榜;sota2.com 维护 PolypGen 多口径榜单(约 20 条记录);cosmoimd 等下游工程平台提供 COCO/YOLO 转换脚本。整体热度中等——低于 Kvasir-SEG 系,但作为泛化评估基准在跨中心论文中的出场率稳定。

社区信号 数值/状态(截至 2026-09) 解读
GitHub stars / forks 26 / 1 小众但官方维护
README 最近更新 2025-08 官方仍回应链接与联系方式
Semantic Scholar 引用 181+(含 arXiv 合并口径,2021 年起累计) 稳定的年引用流
sota2 榜单条目 约 20 条(覆盖单帧/序列/子集/联邦口径) 口径碎片化,引用需回溯
下游工程工具 cosmoimd 等 COCO/YOLO 转换 实际可用性已被生产平台验证
挑战赛遗产 EndoCV2021(ISBI 2021)归档页 历史方法学参考

§8.7 生态快照

资源 类型 链接 热度(截至 2026-09) 推荐理由
官方 GitHub 代码/说明 https://github.com/DebeshJha/PolypGen 26 stars 数据入口、序列链接、作者联系方式
Synapse 数据页 数据托管 https://www.synapse.org/#!Synapse:syn26376615/wiki/613312 持续可下载 官方主渠道(syn26376615 / syn45200214)
Scientific Data 论文 文档 https://www.nature.com/articles/s41597-023-01981-y 引用 181+(Semantic Scholar) 全部协议与基准的权威来源
EndoCV2021 挑战页 历史基准 https://endocv2021.grand-challenge.org 归档保留 前身挑战赛排行榜与方法
TransNetR 基线代码 https://github.com/DebeshJha/TransNetR 社区常用 全 6 中心 OOD 复现起点
cosmoimd 转换脚本 工程工具 https://github.com/cosmoimd/polyp_detection_platform 活跃维护 PolypGen→COCO/YOLO 一键转换
sota2 榜单 榜单汇编 https://www.sota2.com/research/dataset/polypgen 持续更新 多口径成绩速查(引用需回溯原文)
DatasetNinja 页面 可视化统计 https://datasetninja.com/polypgen 静态 标注统计与在线浏览

§9 相关资源与引用

§9.1 官方资源列表

§9.2 BibTeX 完整引用

@article{ali2023multi,
  title   = {A multi-centre polyp detection and segmentation dataset for generalisability assessment},
  author  = {Ali, Sharib and Jha, Debesh and Ghatwary, Noha and Realdon, Stefano and Cannizzaro, Renato and Salem, Osama E and Lamarque, Dominique and Daul, Christian and Riegler, Michael A and Anonsen, Kim V and Petlund, Andreas and Halvorsen, Pal and Rittscher, Jens and de Lange, Thomas and East, James E},
  journal = {Scientific Data},
  volume  = {10},
  number  = {1},
  pages   = {75},
  year    = {2023},
  doi     = {10.1038/s41597-023-01981-y}
}

@misc{ali2021polypgen,
  title         = {PolypGen: A multi-center polyp detection and segmentation dataset for generalisability assessment},
  author        = {Ali, Sharib and Jha, Debesh and Ghatwary, Noha and Realdon, Stefano and Cannizzaro, Renato and Salem, Osama E and Lamarque, Dominique and Daul, Christian and Riegler, Michael A and Anonsen, Kim V and Petlund, Andreas and Halvorsen, Pal and Rittscher, Jens and de Lange, Thomas and East, James E},
  howpublished  = {arXiv:2106.04463},
  year          = {2021},
  doi           = {10.48550/arXiv.2106.04463}
}

@article{jha2023transnetr,
  title   = {TransNetR: Transformer-based Residual Network for Polyp Segmentation with Multi-Center Out-of-Distribution Testing},
  author  = {Jha, Debesh and Tomar, Nikhil Kumar and Sharma, Vanshali and Bagci, Ulas},
  journal = {arXiv preprint arXiv:2303.07428},
  year    = {2023},
  doi     = {10.48550/arXiv.2303.07428}
}

@article{ali2022endocv,
  title   = {Addressing generalisability in endoscopy sub-challenges: EndoCV2021 challenge evaluation},
  author  = {Ali, Sharib and others},
  journal = {arXiv preprint arXiv:2202.12031},
  year    = {2022},
  doi     = {10.48550/arXiv.2202.12031}
}

@inproceedings{jha2020kvasirseg,
  title     = {Kvasir-SEG: A Segmented Polyp Dataset},
  author    = {Jha, Debesh and Smedsrud, Pia H and Riegler, Michael A and Halvorsen, Pal and de Lange, Thomas and Johansen, Dag and Johansen, Havard D},
  booktitle = {MultiMedia Modeling (MMM)},
  year      = {2020},
  doi       = {10.1007/978-3-030-37731-1_5}
}

§9.3 引用指南

  • 使用数据(任何子集):引用 ali2023multi(Scientific Data 主论文),这是 CC BY 4.0 使用条款的明确要求。
  • 使用 C1-C5 单帧 1,449 帧子集做挑战对比:同时引用 ali2022endocv(EndoCV2021 评估论文)。
  • 使用 TransNetR 数字或代码:引用 jha2023transnetr
  • 引用早期口径(3,446 实例等):引用 ali2021polypgen 并注明预印本版本差异。
  • 引用本 Wiki:注明千方病案医数集(qianfanghub.com)与最后审核日期 2026-09-05。

§10 AI 使用声明卡

§10.1 AI 模型列表

用途 模型/工具 使用范围
资料检索与事实汇编 大语言模型(CodeBuddy 内置 fast-model) 检索结果归纳、结构化整理
正文初稿撰写 同上 按宪法模板生成章节文本与代码示例
事实核验 WebSearch + Semantic Scholar API 全部硬数字回溯原始来源

§10.2 AI 参与范围

AI 参与了资料检索、事实提取、初稿撰写与代码示例生成。数字类硬事实(帧数、实例数、基准成绩、伦理批件号)均以检索到的论文正文、GitHub 仓库、Synapse 页面、sota2.com 与 Semantic Scholar API 为准并附内联来源链接;对检索未支持的假设性信息(如未核实的总体积、未证实的作者归属)采取省略或明示"官方未公布"的处理。章节结构、行数预算与 G3 纯净度遵循《写作宪法》执行。

具体而言:§2 的 ICD-11/SNOMED 编码经 ICD-11 MMS v2025-01 检索核实;§2.2 的组织学占比属于公开临床综述口径,已在文中明示与数据集本身统计的边界;§6 的全部代码为 AI 起草、按官方协议口径校准目录与坐标语义,未在真实数据上端到端运行,使用者应先在小子集上验证;§7.8 与 §8.1 中 sota2.com 汇编的联邦学习与子集成绩已在显著位置标注"口径不同不可互比、引用需回溯原文"。

§10.3 输入来源列表

  1. Ali, S., Jha, D., et al., 2023. A multi-centre polyp detection and segmentation dataset for generalisability assessment. Scientific Data 10, 75. DOI 10.1038/s41597-023-01981-y
  2. Ali, S., Jha, D., et al., 2021. PolypGen: A multi-center polyp detection and segmentation dataset for generalisability assessment. arXiv:2106.04463
  3. PubMed 36746950(主论文索引页)
  4. PMC9902556(全文)
  5. ar5iv 全文渲染版(arXiv:2106.04463)
  6. DebeshJha/PolypGen(官方 GitHub)
  7. Synapse syn26376615 发布页
  8. DatasetNinja: PolypGen
  9. sota2.com: PolypGen 榜单汇编
  10. Jha, D., et al., 2023. TransNetR. arXiv:2303.07428
  11. cosmoimd/polyp_detection_platform(转换脚本)
  12. EndoCV2021 challenge(grand-challenge.org)
  13. White Rose eprints(Scientific Data 出版记录)
  14. Semantic Scholar API(引用数,截至 2026-09)
  15. Find-A-Code: ICD-11 DB35 Polyp of large intestine
  16. 千方病案医数集写作宪法(内部规范)

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景(ICD-11/SNOMED 映射) 千方病案医学编辑部 对照 ICD-11 MMS v2025-01 与 SNOMED CT 浏览器逐条核对 ✅ 已通过/已验证
§3/§4 规模数字与目录结构 千方病案医学编辑部 对照 Scientific Data 论文正文与图 7 逐项核对 ✅ 已通过/已验证
§5/§6 划分协议与代码示例 千方病案医学编辑部(数据工程) 官方协议回溯 + 代码逻辑走查 ✅ 已通过/已验证
§7 DAIMS 24 项与偏倚分析 千方病案医学编辑部 逐项对照宪法定义与论文证据链 ✅ 已通过/已验证
§8 基准数字 千方病案医学编辑部 回溯论文表 5/6、TransNetR 论文与 sota2 榜单 ✅ 已通过/已验证
§9/§10 引用与声明卡 千方病案医学编辑部 BibTeX 逐字段与 DOI 核对 ✅ 已通过/已验证

§10.5 AI 生成章节标注

以下章节由 AI 生成初稿并经人工核验:§1 概览、§2.2 疾病简介、§3 数据集规格、§4 数据结构、§5 划分建议、§6 AI 就绪指南(含坑点)、§7 质量评估、§8 基准与生态、§9 引用、§C JSON-LD。§0 声明、§2.1 编码表、§10 声明卡由编辑部基于模板直接维护。

§10.6 最后人工审核

最后人工审核日期:2026-09-05(与 §0 审核日期一致)

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

返回 AI-Ready 数据集