信息速览

Kvasir-SEG — 胃肠道息肉分割基准数据集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | Kvasir-SEG |
| 英文全称 | Kvasir-SEG: A Segmented Polyp Dataset |
| 别名/简称 | Kvasir-SEG、KvasirSEG、Kvasir 息肉分割数据集 |
| 疾病分类 | ICD-11:DB35.Z 大肠息肉,未特指(进展终点:2B90–2B92 结直肠恶性肿瘤);ICD-10:K63.5 结肠息肉 |
| SNOMED CT | 68496003 Polyp of colon (disorder) / 428054006 Adenomatous polyp of colon / 73761001 Colonoscopy (procedure)(详见 §2.2) |
| 数据模态 | 影像(结肠镜白光静态图像)+ 像素级分割掩膜 + 边界框标注 |
| AI 任务类型 | 语义分割、目标检测、息肉定位、实时 CADe 原型开发、跨数据集泛化评估 |
| 样本总数 | 1,000 张息肉图像 + 1,000 张对应掩膜 + 边界框 JSON(另有 Kvasir-Sessile 子集 196 张) |
| 数据大小 | 46.2 MB(解压)/ 44.1 MB(kvasir-seg.zip)/ 13.7 MB(kvasir-sessile.zip) |
| 数据格式 | JPEG(图像与掩膜,332×487 ~ 1920×1072 px)/ JSON(kvasir_bboxes.json) |
| 许可证 | Kvasir-SEG Terms of Use:研究与教育用途免费,商用须事先书面许可,出版物必须引用数据集论文 |
| 访问级别 | 开放(免注册直接下载) |
| DUO 标签 | HMB, NCU, PUB |
| 语言 | 英文(文档与标注键名) |
| 首发日期 | 2019-11(arXiv:1911.07069)/ 2020-01(MMM 2020 会议,韩国大田) |
| 最后更新 | 2021-01(Kvasir-Sessile 子集随 IEEE 论文发布) |
| 发布机构 | Simula Research Laboratory / SimulaMet(挪威)& Vestre Viken Health Trust |
| 官方主页 | https://datasets.simula.no/kvasir-seg/ |
| 下载地址 | https://datasets.simula.no/downloads/kvasir-seg.zip |
| DOI | 10.1007/978-3-030-37734-2_37(MMM 2020 论文) |
| 引用次数 | 2,550+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 免注册下载、格式极简、基准生态极其丰富;扣分项:无官方统一划分、规模仅 1,000 张、无病理亚型标签与患者元数据 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、巴黎分型、息肉漏诊率与结直肠癌流行病学、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典、§5 数据划分策略(5 套社区协议对照)、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 Simula Research Laboratory、Vestre Viken Health Trust、Augere Medical AS 无任何商业利益关联。本页面不销售 Kvasir-SEG 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守 Kvasir-SEG 官方 Terms of Use——研究与教育用途免费且无需事先许可;商业用途须事先获得书面许可;所有使用该数据集或报告其实验结果的文档与出版物必须引用数据集论文(Jha et al., MMM 2020)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
Kvasir-SEG 是挪威 Simula 研究实验室与 Vestre Viken 医疗信托于 2019 年发布的胃肠道息肉分割公开数据集,包含 1,000 张结肠镜息肉图像、逐像素分割掩膜和边界框标注——所有掩膜都经过医学博士手工勾勒、经验丰富的胃肠病学家审核验证。
它的地位可以用一句话概括:如果你读到一篇 2020 年后发表的结肠息肉分割论文,它 95% 的概率在 Kvasir-SEG 上报告了 Dice 分数。在它出现之前,这个领域只有几百张标注图像散落在 CVC-ClinicDB、ETIS-Larib 等小数据集里,结果互不可比;Kvasir-SEG 以 1,000 张专家验证掩膜成为第一个"够格"的统一评测场,原始论文已被引用 2,500 余次(截至 2026-09)。
你可以用它来:训练并评测一个息肉分割模型(U-Net 到 Transformer 全家桶的标配考卷)、做跨数据集泛化研究(与 CVC-ClinicDB/ETIS-Larib 组成经典五库协议)、或者作为医学影像分割教学的第一课——46 MB 体积,笔记本 CPU 都能跑通全流程。
§1.1 摘要
Kvasir-SEG 是 Kvasir 系列的第三代成员:2017 年 Pogorelov 等人发布 Kvasir v2(8,000 张、8 类消化道图像)时只有帧级分类标签,无法支撑分割研究;Jha 等人将其中息肉类别的 1,000 张图像上传至 Labelbox 平台,由工程师与医学博士双人手工勾勒息肉边缘、胃肠病学家终审,生成 1-bit 二值掩膜,并由掩膜坐标导出边界框 JSON,形成了这个"图像 + 掩膜 + 边界框"三件套数据集。图像分辨率从 332×487 到 1920×1072 不等,整体仅 46.2 MB。论文同时给出 FCM 聚类(Dice 0.239)与 ResUNet(Dice 0.788)两条基线,并提出以 Dice 系数与 mIoU 为标准指标。2021 年作者团队追加发布 Kvasir-Sessile 子集(196 张 <10mm 的 Paris 0-Is/0-IIa 扁平息肉),直指临床最难检出的病变类型。数据集全程免注册、免申请、直接下载,这是它横扫社区的关键杠杆之一。
§1.2 战略价值分析
评测标准化维度:Kvasir-SEG 出现前,息肉分割研究处于"战国时代"——CVC-ClinicDB(612 张)、ETIS-Larib(196 张)、ASU-Mayo(受限获取)各自为战,论文间结果基本不可比。Kvasir-SEG 以三倍于当时最大公开集的标注规模、零门槛获取方式和明确的指标建议(Dice + mIoU),在两年内完成了事实统一:2020 年 MICCAI 的 PraNet 以"Kvasir-SEG 900 张训练 + 100 张测试"的协议开创了沿用至今的主流评测口径,此后 Polyp-PVT、SSFormer、MEGANet 等数十个 SOTA 模型全部在这一口径下同场竞技。一个数据集让一个子领域的结果第一次可以严格排序。
临床转化维度:结肠镜息肉漏诊率高达 14%-30%(论文引 van Rijn 2006 / Heresbach 2008),而每多检出 1% 的腺瘤就意味着间期结直肠癌风险的实质下降。Kvasir-SEG 的掩膜级标注恰好对应 CADe(计算机辅助检测)系统最核心的"勾边提示"功能需求——实时分割模型(ColonSegNet 182 FPS、HarDNet-MSEG 86.7 FPS 等)都以它为起跑线走向内镜工作站。2021 年 Kvasir-Sessile 子集的发布更直接瞄准了临床痛点:扁平锯齿状息肉正是漏诊率最高、癌变路径最隐匿的类型。
生态杠杆维度:46 MB 的体积 + 免注册下载 + 图像/掩膜同名双文件夹的极简结构,让 Kvasir-SEG 成为医学影像分割的"Hello World"——HuggingFace 上有十余个镜像与衍生模型,Kaggle 上每个分割入门 Notebook 几乎都以它为素材,MediaEval 2020 Medico 竞赛将其选为指定数据。它的成功还直接催生了 HyperKvasir(11 万张)、Kvasir-Instrument、Kvasir-Capsule 等整个 Kvasir 生态的扩张。
§1.3 横向对比
| 数据集 | 图像数 | 模态 | 标注 | 获取 | 核心差异化 |
|---|---|---|---|---|---|
| Kvasir-SEG | 1,000 | 结肠镜静态帧 | 像素掩膜 + 边界框,胃肠病学家验证 | 免注册直接下载 | 引用最多的息肉分割基准;双标注类型;生态最成熟 |
| CVC-ClinicDB | 612 | 结肠镜静态帧(29 序列) | 像素掩膜 | 开放下载 | 2015 MICCAI 挑战赛遗产;序列来源明确 |
| ETIS-Larib | 196 | 结肠镜静态帧 | 像素掩膜 | 注册后下载 | 规模小;经典 zero-shot 泛化测试集 |
| CVC-ColonDB | 380(1,200 帧中标注 300+) | 结肠镜视频帧(15 序列) | 像素掩膜 | 注册后下载 | 跨库泛化测试常用;与训练集分布差异大 |
| HyperKvasir | 110,079 图像 + 373 视频 | 全消化道 | 分类为主,部分分割 | 开放下载 | 规模最大但分割标注仅覆盖子集 |
| SUN database | 49,136 帧(100 息肉视频) | 结肠镜视频 | 逐帧掩膜 + 阴性帧 | 申请获取 | 视频时序 + 阴性对照;2020 年发布 |
Kvasir-SEG 的不可替代性在于三点:标注规模在"专家验证掩膜"口径下至今仍是公开集第一梯队;双标注(掩膜 + 边界框)同时服务分割与检测任务;以及五年沉淀出的无与伦比的文献可比性——几乎所有新模型都报告它在 Kvasir-SEG 上的分数。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 2017-02 | Kvasir v2 发布(Pogorelov et al., MMM 2017):8,000 张、8 类消化道图像,仅帧级分类标签 |
| 2019-11 | Kvasir-SEG arXiv 首发(arXiv:1911.07069):1,000 张息肉图像 + 掩膜 + 边界框 |
| 2020-01 | MMM 2020 会议论文正式发表(韩国大田,LNCS 11962: 451-462,DOI: 10.1007/978-3-030-37734-2_37) |
| 2020-06 | PraNet 发布(MICCAI 2020 Oral),确立"900 训练/100 测试"主流评测协议 |
| 2020-12 | MediaEval 2020 Medico 竞赛采用 Kvasir-SEG 为息肉分割任务指定数据 |
| 2021-01 | Kvasir-Sessile 子集发布(196 张 <10mm Paris 0-Is/0-IIa 息肉;IEEE 论文 9314114) |
| 2021-03 | IEEE Access 实时基准论文发表(ColonSegNet;11 种架构统一评测,DOI: 10.1109/ACCESS.2021.3063716) |
| 2020-2026 | Polyp-PVT、SSFormer、MEGANet、QueryNet、PolypSegTrack 等数十个 SOTA 模型持续刷新排行榜;论文引用突破 2,500 次 |
§1.5 典型 AI 应用场景
- 息肉分割模型基准评测:从 U-Net 到 Vision Transformer 的标准考卷,Dice/mIoU 双指标、PraNet 协议下数十年文献可直接对标。
- 实时 CADe 系统原型开发:46 MB 轻量数据 + 182 FPS 级实时基线(ColonSegNet),适合边缘设备部署前的算法筛选。
- 跨数据集泛化与域偏移研究:与 CVC-ClinicDB、CVC-ColonDB、ETIS-Larib、CVC-300 组成经典五库协议,zero-shot 跨库测试是泛化性论文标配。
- 医学影像分割教学:双文件夹极简结构 + 免注册下载,是分割课程与 Kaggle 入门 Notebook 最常用的真实医疗数据。
- 小样本/半监督/弱监督分割方法验证:1,000 张的规模天然适合研究数据高效学习、伪标签与 SAM 微调等低资源场景。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
Kvasir-SEG 面向的核心临床问题是结直肠息肉的内镜检出,其疾病编码锚定如下:
| 临床概念 | ICD-10-CM | ICD-11 | 说明 |
|---|---|---|---|
| 结肠息肉(未特指) | K63.5 | DB35.Z 大肠息肉,未特指 | WHO crosswalk 主映射;Kvasir-SEG 图像的主要对应 |
| 腺瘤性息肉(良性肿瘤) | D12.0-D12.8 | 2E92 结肠良性肿瘤相关 | 腺癌前驱病变;需病理确认,数据集不含此标签 |
| 炎性息肉 | K51.4x | DD52 相关 | 溃疡性结肠炎相关假息肉 |
| 结肠恶性肿瘤(进展终点) | C18 | 2B90 | 息肉-腺癌序列终点 |
| 直肠恶性肿瘤(进展终点) | C20 | 2B92 | 同上 |
| 结肠镜检查(操作) | — | MJ08 内窥镜检查相关 | 数据采集操作 |
为什么"息肉"不是一个诊断而是一个起点:结直肠癌几乎遵循"正常黏膜 → 息肉(腺瘤/锯齿状病变)→ 高级别异型增生 → 腺癌"的演进序列,超过 95% 的结直肠腺癌起源于息肉(Pathology Outlines 共识)。内镜检查中"找到并圈出息肉"是这条拦截链的第一环——这正是 Kvasir-SEG 标注任务的临床本质:分割掩膜圈出的不是诊断,而是切除决策的对象。数据集不含病理标签(腺瘤 vs 增生性 vs 锯齿状无法区分),因此它服务的是 CADe(检测)而非 CADx(诊断)——这是使用该数据前必须建立的第一认知(详见 §6.5 坑点 8)。
§2.2 SNOMED CT 映射
| 临床场景 | ICD-10-CM | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|---|
| 结肠息肉 | K63.5 | DB35.Z | 68496003 | Polyp of colon (disorder) |
| 结肠腺瘤性息肉 | D12.6 | 2E92 相关 | 428054006 | Adenomatous polyp of colon |
| 结肠镜检查 | — | MJ08 相关 | 73761001 | Colonoscopy (procedure) |
| 息肉切除术 | — | — | 302214000 | Polypectomy (procedure) |
| 结直肠癌(进展终点) | C18/C20 | 2B90-2B92 | 363406005 | Malignant tumor of colon (disorder) |
§2.3 疾病简介
结直肠癌(CRC)是全球发病率第三、死亡率第二的恶性肿瘤——GLOBOCAN 2022 统计显示年新发约 190 万例、死亡约 90 万例(Bray et al., 2024, CA: A Cancer Journal for Clinicians)。息肉是结直肠癌的前驱病变:50 岁筛查人群中近半数可在结肠镜下发现息肉,且检出率随年龄增长。结肠镜是息肉检出与评估的金标准,配合活检与切除构成完整的防控闭环。然而息肉漏诊问题长期存在——文献报告的漏诊率为 14%-30%(van Rijn et al. 2006;Heresbach et al. 2008;数据集论文引用口径),扁平、微小、位于皱襞后方或肠道准备不佳区域的息肉最易被遗漏。腺瘤检出率(ADR)是结肠镜质量的核心指标,每 1% 的 ADR 提升与间期癌风险下降约 3% 相关——这正是自动息肉检出系统的临床价值锚点。
§2.4 临床任务定义
| AI 任务 | 临床定义 | 标准参考 | 在 Kvasir-SEG 中的操作化 |
|---|---|---|---|
| 息肉检出(CADe) | 结肠镜视野中发现息肉 | ADR 质量指标体系 | 边界框检测(kvasir_bboxes.json)或分割掩膜非空判定 |
| 息肉分割(勾边) | 逐像素勾画息肉-黏膜边界 | 胃肠病学家标注共识 | 1-bit 掩膜监督学习,Dice/mIoU 评估 |
| 息肉形态分型 | Paris 分型(0-Ip/0-Isp/0-Is/0-IIa/0-IIb/0-IIc) | Paris 2002 专家共识 | 仅 Kvasir-Sessile 子集显式标注 0-Is/0-IIa;主集无分型标签 |
| 息肉大小分层 | <5mm 微小 / 5-9mm 小 / ≥10mm 大 | 临床随访决策阈值 | 无显式标签,可由掩膜像素面积近似推算(需注意无标尺) |
| 病理性质判定(CADx) | 腺瘤 vs 增生性 vs 锯齿状 | NICE/KUDO 分型(需 NBI/放大内镜) | 不支持——数据集无病理标签(见 §6.5 坑点 8) |
§2.5 患者人群特征
| 维度 | 特征 |
|---|---|
| 数据来源 | 单中心:Vestre Viken Health Trust(挪威),Kvasir v2 原始图像由该机构经验丰富的胃肠病学家采集与验证 |
| 采集时间 | 2010 年代中期(Kvasir v2 项目期间;论文未公布精确采集时间窗) |
| 规模 | 1,000 张息肉静态帧(另有 Kvasir-Sessile 子集 196 张) |
| 患者级元数据 | 未发布——无年龄、性别、检查指征、肠道准备评分等任何患者层面信息(公平性审计因此不可行,见 §7.5) |
| 病变构成 | 全部为含息肉阳性帧;息肉大小分布不均(Jha et al. 2021 IEEE Access 口径:大息肉约 700、中约 323、小约 48——该口径与主集 1,000 张存在统计差异,仅供参考) |
| 亚型覆盖 | 主集无组织学/Paris 分型标签;Kvasir-Sessile 子集为 196 张 <10mm 的 Paris 0-Is(无蒂)或 0-IIa(浅表隆起)病变 |
人群层面的核心提示:这不是一个流行病学抽样数据集。1,000 张图像经过专家质量筛选(Kvasir v2 构建时已替换低质量息肉图像),是"教学片级"而非"手术室直播级"数据——肠道准备差、大量粪水、剧烈模糊的真实临床场景被系统性过滤(详见 §7.1 与 §6.5 坑点 4)。
§2.6 金标准/参考标准
| 标注产物 | 标注方式 | 标注者 | 金标准性质 |
|---|---|---|---|
| 分割掩膜(1,000 张) | Labelbox 平台手工勾勒息肉边缘 → 导出 ROI 坐标 → 黑色空图画轮廓并填充白色,生成 1-bit 掩膜 | 工程师 + 医学博士双人标注,经验丰富的胃肠病学家审核验证 | 专家共识级像素标注;未报告标注者间一致性指标(如 Cohen’s κ) |
| 边界框(JSON) | 由掩膜极值坐标自动导出 | 程序生成 | 与掩膜严格一致;部分图像含多个边界框(多息肉/多区域) |
| 图像内容验证 | 原始 Kvasir v2 图像经胃肠病学家逐张验证确含息肉 | Vestre Viken Health Trust 胃肠病学家 | 阳性帧内容可靠;无病理活检对照 |
| ScopeGuide 标记处理 | 部分原图一角含 Olympus ScopeGuide 定位探头绿色标记框 → 发布版统一替换为黑色块 | 数据集制作者 | 消除与任务无关的设备水印(注意残留黑色角落,见 §6.5 坑点 5) |
金标准的关键局限:掩膜为"二值边界"而非"多标签语义"——息肉边缘的低置信过渡带(反光区、模糊边界)被单值化;且全程无双盲重标与一致性量化,意味着掩膜本身存在不可审计的标注噪声。对边界敏感型损失函数(Boundary Loss、Hausdorff 距离损失)的研究者应意识到这一点。
§3 数据集规格
§3.0 版本抉择矩阵
Kvasir-SEG 本体只有一个版本,但获取渠道与衍生子集众多。30 秒选型:
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 论文复现 / 与文献严格对标 | 官方 zip(datasets.simula.no) | 44.1 MB | 原始 JPEG 分辨率(332×487~1920×1072)与 kvasir_bboxes.json 唯一权威来源;排行榜数值均基于此版本 |
| 快速原型 / Notebook 教学 | HuggingFace 镜像(Angelou0516/kvasir-seg) | ~344 MB(PNG) | load_dataset 一行加载、自带 ESFPNet 三分划分;注意 PNG 重采样与原 JPEG 存在版本差异(见 §6.5 坑点 7) |
| Kaggle 竞赛/练习 | Kaggle 镜像 | 各异 | 免下载、内建 GPU;但镜像间预处理不统一,发表前须回归官方版复测 |
| 扁平小息肉专项研究 | Kvasir-Sessile 子集 | 13.7 MB | 196 张 <10mm Paris 0-Is/0-IIa,临床最难检出类型的专项评测 |
| 更大规模/多病种/视频研究 | HyperKvasir | ~110 GB | 11 万图像 + 373 视频全消化道;但分割标注不如此集聚焦 |
| 器械分割/手术场景 | Kvasir-Instrument | 590 张 | 同团队器械分割姊妹集 |
一句话结论:做研究、发论文,永远以 datasets.simula.no 的官方 zip 为最终评测版本;镜像只用于原型阶段。
§3.1 模态详细说明
Kvasir-SEG 是单模态(白光结肠镜静态 RGB 图像)+ 双标注(像素掩膜、边界框)数据集:
- 结肠镜静态帧:Olympus 内窥镜系统白光模式采集的 JPEG 图像,分辨率从 332×487 到 1920×1072 不等(反映多代采集设备与导出设置),8-bit RGB 三通道。内容覆盖不同大小、形态(隆起/扁平/带蒂)、位置与光照条件下的息肉,部分帧含镜面高光、少量粘液与出血点。
- 分割掩膜:与图像同名、同分辨率的 1-bit 二值掩膜(息肉前景为白色 255,背景为黑色 0),以 JPEG 格式分发(这引入了压缩灰阶噪声,读取后必须重新二值化,见 §6.5 坑点 5)。
- 边界框:kvasir_bboxes.json 文件,键为图像文件名,值为原图坐标系下的 bbox 列表(xmin/ymin/xmax/ymax + label)及图像宽高,部分图像含多个 bbox。
§3.2 样本量拆分
| 子集 | 样本数 | 内容 |
|---|---|---|
| Kvasir-SEG 主集 | 1,000 | 息肉图像 + 同名掩膜 + kvasir_bboxes.json |
| Kvasir-Sessile 子集 | 196 | <10mm Paris 0-Is / 0-IIa 扁平小息肉(主集的精选子集,单独发布) |
| 官方固定 train/val/test 划分 | 不存在 | 见 §5.1 的 5 套社区协议对照 |
为什么"1,000 张"这个数字足够重要也值得警惕:在专家验证掩膜口径下,它是公开结肠息肉分割数据集的规模第一梯队(CVC-ClinicDB 612、ETIS-Larib 196、CVC-ColonDB 380);但放到通用分割领域,1,000 张仅相当于 PASCAL VOC 一个类别的量。这直接决定了它的两大使用特征:模型极易过拟合(需重增强与预训练权重),以及排行榜分数的置信区间天然偏宽(100 张测试集上 ±2 个 Dice 点的差异可能只是噪声,见 §6.5 坑点 1 与坑点 4)。
§3.3 数据格式详情
| 文件类型 | 格式 | 尺寸/结构 | 说明 |
|---|---|---|---|
| 图像 | JPEG(RGB,8-bit) | 332×487 ~ 1920×1072 px | images/ 目录,Labelbox 导出的哈希文件名(如 cju0qkwl35piu0993l0dewei2.jpg) |
| 掩膜 | JPEG(名义 1-bit,实际为灰度 JPEG) | 与对应图像同分辨率 | masks/ 目录,同名文件;前景 255 / 背景 0,边缘因 JPEG 压缩含中间灰阶 |
| 边界框 | JSON | 约 37 KB | kvasir_bboxes.json:{文件名: {bbox: [{xmin, ymin, xmax, ymax, label}], height, width}};部分图像多个 bbox |
§3.4 存储大小
| 形态 | 大小 | 备注 |
|---|---|---|
| kvasir-seg.zip | 44.1 MB | 官方分发包 |
| 解压后 | 46.2 MB | 官方页面口径 |
| kvasir-sessile.zip | 13.7 MB | 扁平息肉子集 |
| HuggingFace PNG 镜像 | ~344 MB | 无损重采样版本,体积约 7 倍 |
全量加载到内存也仅需约 1-2 GB(解码后),任何消费级 GPU 甚至 CPU 都可完成全流程训练——这是它成为教学首选的硬件基础。
§3.5 标注方式
标注流程(论文 §3.3 完整描述):
Kvasir v2 息肉类 1,000 张图像
→ 上传至 Labelbox 平台
→ 工程师 + 医学博士双人手工勾勒息肉 ROI 边缘
→ 经验丰富的胃肠病学家逐张审核验证
→ 导出标注 JSON(含图像信息与 ROI 坐标点)
→ 在黑色空图上按坐标画轮廓并填充白色 → 1-bit 掩膜
→ 由掩膜极值坐标导出边界框 → kvasir_bboxes.json
两个常被忽略的细节:其一,掩膜是先矢量坐标后栅格化的产物——边缘精度受 Labelbox 多边形顶点密度限制;其二,边界框不是独立标注,而是掩膜的派生产物,二者天然严格一致,不会出现检测框与分割区域冲突。
§3.6 标注者资质
| 维度 | 详情 |
|---|---|
| 初始标注 | 1 名工程师 + 1 名医学博士(双人协作) |
| 审核验证 | 1 名经验丰富的胃肠病学家(Vestre Viken Health Trust 临床团队) |
| 一致性检验 | 未报告标注者间一致性指标(无 Cohen’s κ / Dice 一致性)——数据集质量声明依赖"专家审核"流程而非统计证据 |
| 内容验证 | Kvasir v2 原始图像已经 Vestre Viken 胃肠病学家逐张验证 |
§3.7 数据采集时间范围
原始图像采集于 2010 年代中期(Kvasir v2 项目,2016-2017 年发布);Kvasir-SEG 标注工作完成于 2019 年,2019-11 arXiv 首发、2020-01 会议发表。论文未公布更精确的采集时间窗。
§3.8 地理覆盖
单中心——Vestre Viken Health Trust(挪威,覆盖奥斯陆西侧贝鲁姆等地区人群)。单中心 + 单一设备厂商(Olympus)+ 北欧人群,构成该数据集最核心的泛化性边界(详见 §7.3 外部泛化证据)。
§3.9 采集设备规格
| 项目 | 规格 | 说明 |
|---|---|---|
| 内镜系统 | Olympus 内窥镜(白光模式) | IEEE Access 2021 论文描述为"高分辨率电磁成像系统,ScopeGuide, Olympus Europe" |
| 定位标记 | ScopeGuide 电磁定位探头 | 部分原图一角含绿色 ScopeGuide 标记框,发布版已替换为黑色块 |
| 成像模式 | 白光(WL) | 不含 NBI/BLI 等窄带或放大成像 |
| 输出分辨率 | 332×487 ~ 1920×1072 px | 跨度约 6 倍,反映多代设备与导出设置 |
§3.10 深度溯源链
| 环节 | 系统/方法 | 关键转换 |
|---|---|---|
| 1. 临床采集 | Vestre Viken Health Trust 结肠镜检查 | 真实筛查/诊疗流程中抓取含息肉静态帧 |
| 2. 内容验证与筛选 | 该机构经验丰富的胃肠病学家 | 逐张验证息肉存在;Kvasir v2 构建时替换低质量图像(质量筛选 = 精选偏倚的源头) |
| 3. Kvasir v2 发布(2017) | Simula/UiT/OsloMet 等联合团队 | 8,000 张、8 类帧级分类数据集(Pogorelov et al., MMM 2017) |
| 4. 像素级标注(2019) | Labelbox 平台 + 双人标注 + 专家终审 | 息肉类 1,000 张 → 矢量 ROI → 1-bit 掩膜 + JSON 边界框 |
| 5. 公开发布 | datasets.simula.no | 2019-11 arXiv / 2020-01 MMM 会议;免注册直接下载 |
| 6. 子集扩展(2021) | 专家选取 | 196 张 <10mm Paris 0-Is/0-IIa → Kvasir-Sessile 单独发布 |
§4 数据结构详解
§4.0 目录结构预览
kvasir-seg/
├── images/ # 1,000 张结肠镜 JPEG 图像(332×487 ~ 1920×1072 px)
│ ├── cju0qkwl35piu0993l0dewei2.jpg
│ ├── cju0qoxqj9q6s0835b43399p4.jpg
│ └── ... # (Labelbox 哈希文件名,共 1,000 个)
├── masks/ # 1,000 张同名分割掩膜(前景 255 / 背景 0,JPEG 灰度)
│ ├── cju0qkwl35piu0993l0dewei2.jpg
│ ├── cju0qoxqj9q6s0835b43399p4.jpg
│ └── ...
└── kvasir_bboxes.json # 全部图像的边界框(键 = 文件名,原图坐标系)
三个必须知道的路径事实:(1) 图像与掩膜文件名完全相同,仅靠父目录区分——合并目录时立即冲突;(2) 文件名是 Labelbox 哈希 ID 而非序号,不要用数值排序逻辑处理;(3) kvasir_bboxes.json 的键不含扩展名前缀目录——匹配时需以纯文件名 stem 对齐。
§4.1 DAIMS 标准化字段描述表
以"单帧记录"为逻辑行(图像 + 掩膜 + 边界框三元组):
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| image_id | STRING | 帧标识符(文件 stem) | “cju0qkwl35piu0993l0dewei2” | 三元组对齐主键;划分分组键 | 无 | 不允许缺失 | Labelbox 哈希串 |
| image | JPEG RGB | 结肠镜帧 | 1920×1072×3 uint8 | 模型输入 | JPEG 压缩伪影;反光/模糊 | 不允许缺失 | 332×487 ~ 1920×1072 |
| mask | JPEG 灰度 | 二值分割掩膜 | 255=息肉 / 0=背景 | 分割监督标签 | 边缘 JPEG 灰阶噪声需重二值化 | 不允许缺失 | {0, 255}(读取后含中间灰阶) |
| bbox | JSON 对象数组 | 息肉边界框 | [{“xmin”:611,“ymin”:549,“xmax”:678,“ymax”:615,“label”:“polyp”}] | 检测任务标签;ROI 裁剪 | 由掩膜派生,与掩膜严格一致 | 每图至少 1 个;多 bbox 图像存在 | 原图坐标系整数 |
| image.width/height | INT | 原图宽高(JSON 内) | 1920 / 1072 | resize 后坐标同步缩放基准 | 无 | 不允许缺失 | 487~1920 / 332~1072 |
| 亚型/病理标签 | — | 不存在 | — | — | — | 结构性缺失(非随机) | — |
| 患者元数据 | — | 不存在 | — | — | — | 结构性缺失 | — |
§4.2 标签分布统计
| 维度 | 分布 | 说明 |
|---|---|---|
| 像素级类别比 | 息肉像素占比通常 <10%(多数帧 <5%) | 严重类别不平衡;pixel accuracy 天然虚高(见 §6.5 坑点 3) |
| 每图息肉区域数 | 多数 1 个连通域;部分图像多 bbox | kvasir_bboxes.json 中多 bbox 条目对应 |
| 息肉大小(IEEE Access 2021 口径) | 大约 700 / 中约 323 / 小约 48 | 该口径来自 Jha et al. 2021(总数 1,071 与主集 1,000 存在统计差异,仅作趋势参考):小息肉严重不足 |
| Kvasir-Sessile | 196 张 <10mm Paris 0-Is / 0-IIa | 临床最难检出亚型专项子集 |
| 阴性帧 | 0 张 | 全阳性数据集——不能训练"有/无息肉"判别,评估时需外部阴性帧(HyperKvasir 正常类)补充 |
§4.3 关键字段描述性统计
- 分辨率分布:最低 332×487(约 16 万像素),最高 1920×1072(约 206 万像素),跨度约 13 倍;中位分辨率约 720×576 量级。
- 掩膜前景比例:多数图像息肉占画面面积 <10%,少数近景帧可达 30%+——尺度先验跨图像差异极大,是简单 resize 策略失效的统计根源(见 §6.5 坑点 2)。
- 边界框:1,000 个图像条目,bbox 总数 ≥1,000(多息肉帧多框),坐标全部落在 JSON 记录的 width/height 范围内。
§4.4 数据层级关系
Kvasir-SEG(1,000 帧,全阳性)
├─ 图像(images/{image_id}.jpg)── 1:1 ── 掩膜(masks/{image_id}.jpg)
│ │
│ └─ 1:N ── 边界框(kvasir_bboxes.json[image_id].bbox[])
│
├─ Kvasir-Sessile(196 帧精选子集,<10mm Paris 0-Is/0-IIa)
│
└─ 上游血缘:Kvasir v2 息肉类(8,000 张分类集的 1/8)
└─ 姊妹扩展:HyperKvasir / Kvasir-Instrument / Kvasir-Capsule
与 EHR 数据集不同,这里没有患者-检查-帧的三级结构:帧与患者/检查会话的对应关系未发布。这带来两个直接后果:无法做患者级分组划分(泄漏控制只能退而求其次,见 §5.3);无法确认任意两帧是否来自同一检查(潜在近重复帧不可审计,见 §7.1)。
§4.5 缺失值情况与信息性缺失编码
| 缺失类型 | 字段 | 缺失原因 | 信息性缺失编码 | 对 AI 的影响 |
|---|---|---|---|---|
| 结构性缺失 | 病理亚型标签 | 数据集定位 CADe 而非 CADx | 缺失 = 无法做病理分类 | 勿把分割分数外推为诊断能力(坑点 8) |
| 结构性缺失 | 患者人口学(年龄/性别) | 未发布 | 缺失 = 公平性审计不可行 | 模型偏倚无法按人口学分解评估 |
| 结构性缺失 | 阴性(无息肉)帧 | 仅收录阳性帧 | 缺失 = 无假阳性监督 | 需外部阴性帧补充做特异性评估 |
| 结构性缺失 | 帧-患者/会话对应 | 未发布 | 缺失 = 患者级划分不可行 | 泄漏控制依赖图像哈希去重与谨慎随机划分 |
| 边缘灰阶 | 掩膜边缘像素 | JPEG 压缩 | 中间灰阶 ≈ 边界低置信区 | 读取后须重二值化(阈值选择影响 Dice,坑点 5) |
§5 数据划分与使用建议
§5.1 官方数据划分
Kvasir-SEG 官方不提供固定 train/validation/test 划分——这是该数据集最大的方法学陷阱。社区实际并存 5 套协议,论文间数值跨协议不可比:
| 协议 | 划分 | 提出者/出处 | 适用场景 |
|---|---|---|---|
| 原论文协议 | 800 / 100 / 100(80/10/10 随机) | Jha et al. 2020(ResUNet 基线) | 复现原始基线 |
| 官方 GitHub 协议 | 880 / 120(train/val) | DebeshJha/Kvasir-SEG 仓库 | 快速基线 |
| PraNet 协议(主流) | 900 train / 100 test;与 CVC-ClinicDB 550 train / 62 test 联合 | Fan et al., MICCAI 2020 | 与排行榜文献对标的唯一选择 |
| ESFPNet 协议 | train / validation / test 三分 | Chang et al. 2024(HF 镜像内置) | HF 生态快速实验 |
| HarDNet-MSEG 协议 | 1,450 合并训练(Kvasir+CVC 混合)/ 各库分别测试 | Huang et al. 2021 | 实时模型复现 |
行动建议:投稿/对标一律采用 PraNet 协议(900/100);方法部分必须写明所用协议与随机种子;任何时候不要把 80/10/10 下的 Dice 与 PraNet 协议下的 Dice 并列比较。
§5.2 推荐划分策略
- 与文献对标:直接采用 PraNet 协议——训练取 Kvasir-SEG 900 张 + CVC-ClinicDB 550 张,测试取两库各余下 100 / 62 张;ETIS-Larib、CVC-ColonDB、CVC-300 全程不参与训练,作 zero-shot 泛化测试。
- 独立研究:按图像文件名排序后哈希取模划分(可复现),或固定随机种子的分层随机划分(按掩膜前景占比分层,避免小息肉集中落入测试集)。
- K 折交叉验证:1,000 张规模下 5 折(每折 200 张)是稳健选择;报告均值 ± 标准差而非单次最优。
- ⚠️ 禁止按帧相似度无感知随机:数据源自视频抓取,可能存在同息肉近重复帧,纯随机划分可能把近重复帧分入两侧造成隐性泄漏(见 §5.3)。
import hashlib, os, random
img_dir = "kvasir-seg/images"
files = sorted(os.listdir(img_dir))
def stable_split(files, seed=42, ratio=(0.9, 0.1)):
# 可复现:文件名 MD5 + 种子决定归属,跨机器/跨时间一致
rnd = random.Random(seed)
idx = list(range(len(files)))
rnd.shuffle(idx)
n_train = int(len(files) * ratio[0])
train = {files[i] for i in idx[:n_train]}
test = {files[i] for i in idx[n_train:]}
assert train.isdisjoint(test)
return train, test
train_set, test_set = stable_split(files)
print(f"train={len(train_set)}, test={len(test_set)}") # 900 / 100
§5.3 数据泄漏风险防御
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 近重复帧跨侧(源自视频抓取的相邻帧/同息肉多角度帧) | 中高 | 划分前做感知哈希(pHash)去重或聚类,近重复组整体归入同一侧 |
| 2 | 镜像站"已划分好"的训练集与官方版混用 | 高 | 只在一个版本体系内划分与评测(坑点 7) |
| 3 | 测试集参与阈值/早停选择 | 中 | 阈值与早停只依据验证集;无验证集时从训练集再切 10% |
| 4 | TTA/后处理参数在测试集上调优 | 中 | CRF/形态学参数锁定后在测试集上一次评估 |
| 5 | 跨库"泛化测试"中混入训练(如误用 ETIS-Larib 训练又报告其 zero-shot 分数) | 高 | 严格区分 seen/unseen 库清单并在方法中声明 |
§5.4 交叉验证建议
- 标准:5 折交叉验证(每折 200 张),按掩膜前景占比分层,报告 Dice/mIoU 均值 ± 标准差。
- 小样本稳定性检验:对同一划分用 3 个随机种子重训,观察 Dice 波动——1,000 张规模下 ±1~2 个 Dice 点的种子间波动是常态,小于此量级的"SOTA 提升"不可信(见 §6.5 坑点 4)。
§5.5 外部验证
在 Kvasir-SEG(±CVC-ClinicDB)上训练的模型,社区标准外部验证路径为:ETIS-Larib(196 张,法国)→ CVC-ColonDB(380 张,西班牙)→ CVC-300(EndoScene 测试集)。文献公认结论:Kvasir-SEG 内部 Dice 0.90 的模型在 ETIS-Larib 上通常跌至 0.66-0.80、在 CVC-ColonDB 跌至 0.71-0.83(详见 §7.8 外部验证矩阵)——跨库零样本评估是该领域检验模型真实泛化能力的强制动作。
§6 AI 就绪指南
§6.0 云端快速启动
HuggingFace 一行加载(零下载零解压):
from datasets import load_dataset ds = load_dataset("Angelou0516/kvasir-seg") # train / validation / test 三分(ESFPNet 协议) sample = ds["train"][0] # 含 image 与 mask(PNG 重采样版)该镜像月下载量约 2,881 次(截至 2026-09 快照),适合 5 分钟跑通原型;注意其为 PNG 重采样版本,发表级评测请回归官方 zip(见 §6.5 坑点 7)。
Kaggle 免配置路径:Kaggle 搜索 “Kvasir-SEG” 可得多个社区镜像与入门 Notebook,免费 P100 GPU 上 ResUNet 级别模型约 10-20 分钟可完成训练——课堂演示与作业首选路径。
§6.1 快速上手(PyTorch 版)
# ========================================
# Kvasir-SEG 快速上手 — PyTorch 版
# 环境要求: torch>=2.0, torchvision, Pillow, numpy
#
# ⚠️ 目录结构预期:
# 将官方 kvasir-seg.zip 解压至 ./data/,确保以下结构:
# ./data/kvasir-seg/
# ├── images/ # 1,000 张 JPEG 结肠镜图像
# ├── masks/ # 1,000 张同名掩膜(前景 255 / 背景 0)
# └── kvasir_bboxes.json # 边界框(本例仅用图像+掩膜)
#
# 图像与掩膜以【相同文件名】关联:
# pair = images/{stem}.jpg <-> masks/{stem}.jpg
# ========================================
import os
from PIL import Image
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
import torchvision.transforms.v2 as T
DATA_ROOT = "./data/kvasir-seg"
IMG_SIZE = 256 # 原图分辨率不一(332x487~1920x1072),统一 resize
class KvasirSegDataset(Dataset):
def __init__(self, root, stems, img_size=256, train=True):
self.img_dir = os.path.join(root, "images")
self.mask_dir = os.path.join(root, "masks")
self.stems = stems
self.train = train
self.img_size = img_size
self.img_tf = T.Compose([
T.ToImage(), T.ToDtype(torch.float32, scale=True),
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
def __len__(self):
return len(self.stems)
def __getitem__(self, i):
s = self.stems[i]
img = Image.open(os.path.join(self.img_dir, s + ".jpg")).convert("RGB")
mask = Image.open(os.path.join(self.mask_dir, s + ".jpg")).convert("L")
img = img.resize((self.img_size, self.img_size), Image.BILINEAR)
mask = mask.resize((self.img_size, self.img_size), Image.NEAREST)
x = self.img_tf(img)
# 关键:JPEG 掩膜含压缩灰阶,必须以 127 阈值重新二值化
y = (np.array(mask) > 127).astype(np.float32)
y = torch.from_numpy(y).unsqueeze(0) # (1, H, W)
if self.train: # 最简单的同步水平翻转增强
if torch.rand(()) > 0.5:
x, y = torch.flip(x, dims=[-1]), torch.flip(y, dims=[-1])
return x, y
# 可复现 900/100 划分(PraNet 协议口径,仅 Kvasir-SEG 部分)
stems = sorted(f[:-4] for f in os.listdir(os.path.join(DATA_ROOT, "images")))
g = torch.Generator().manual_seed(42)
perm = torch.randperm(len(stems), generator=g).tolist()
train_stems = [stems[i] for i in perm[:900]]
test_stems = [stems[i] for i in perm[900:]]
train_loader = DataLoader(KvasirSegDataset(DATA_ROOT, train_stems, train=True),
batch_size=8, shuffle=True, num_workers=2)
test_loader = DataLoader(KvasirSegDataset(DATA_ROOT, test_stems, train=False),
batch_size=8, shuffle=False)
xb, yb = next(iter(train_loader))
print(xb.shape, yb.shape, yb.unique()) # torch.Size([8,3,256,256]) torch.Size([8,1,256,256]) tensor([0., 1.])
§6.2 数据获取流程
| 获取方式 | 链接/位置 | 大小 | 流程 |
|---|---|---|---|
| 官方 zip(推荐) | https://datasets.simula.no/downloads/kvasir-seg.zip | 44.1 MB | 免注册、免申请、直接下载;遵守 Terms of Use(研究/教育免费;商用须书面许可;出版物必须引用论文) |
| Kvasir-Sessile 子集 | https://datasets.simula.no/downloads/kvasir-sessile.zip | 13.7 MB | 同上 |
| HuggingFace 镜像 | Angelou0516/kvasir-seg | ~344 MB | load_dataset 加载;PNG 重采样 + ESFPNet 划分(第三方再分发,许可标注 cc-by-4.0,以官方条款为准) |
| Kaggle 镜像 | Kaggle 搜索 “Kvasir-SEG” | 各异 | 平台内使用;预处理不统一,注意版本 |
| 官方 GitHub | https://github.com/DebeshJha/Kvasir-SEG | — | 基线代码、880/120 划分与说明 |
Terms of Use 核心义务:出版物必须引用 Jha et al. MMM 2020 论文(BibTeX 见 §9);商用须事先书面许可——官方 GitHub README 说明其收到的商用申请"均已批准",商用路径通畅但必须走流程。
§6.3 预处理 Pipeline
<details>
<summary><b>点击展开完整的 5 步预处理代码(官方 zip → 训练就绪张量)</b></summary>
# 步骤 1:完整性校验——图像/掩膜一一对应
import os, json
import numpy as np
from PIL import Image
root = "./data/kvasir-seg"
imgs = {f[:-4] for f in os.listdir(f"{root}/images")}
msks = {f[:-4] for f in os.listdir(f"{root}/masks")}
assert imgs == msks, f"不匹配: 仅图像 {imgs - msks}, 仅掩膜 {msks - imgs}"
print(f"配对完整: {len(imgs)} 对")
# 步骤 2:边界框 JSON 解析与坐标健康检查
with open(f"{root}/kvasir_bboxes.json") as f:
bboxes = json.load(f)
multi = 0
for stem, rec in bboxes.items():
W, H = rec["width"], rec["height"]
assert len(rec["bbox"]) >= 1
multi += len(rec["bbox"]) > 1
for b in rec["bbox"]:
assert 0 <= b["xmin"] < b["xmax"] <= W and 0 <= b["ymin"] < b["ymax"] <= H
print(f"含多边界框图像: {multi} 张")
# 步骤 3:感知哈希近重复检测(划分前去重,防隐性泄漏)
import imagehash # pip install imagehash
hashes = {}
dups = []
for stem in sorted(imgs):
h = imagehash.phash(Image.open(f"{root}/images/{stem}.jpg"))
for prev, ph in hashes.items():
if h - ph <= 6: # 汉明距离阈值
dups.append((prev, stem))
hashes[stem] = h
print(f"疑似近重复对: {len(dups)}(划分时同组归一侧)")
# 步骤 4:掩膜二值化 + 前景占比统计(分层依据)
fg_ratio = {}
for stem in sorted(imgs):
m = np.array(Image.open(f"{root}/masks/{stem}.jpg").convert("L"))
fg_ratio[stem] = (m > 127).mean()
r = np.array(list(fg_ratio.values()))
print(f"前景占比: 中位 {np.median(r):.3%}, P90 {np.percentile(r, 90):.3%}, 最大 {r.max():.3%}")
# 步骤 5:同步几何变换的增强示例(图像与掩膜同一随机状态)
import torchvision.transforms.v2 as T
import torchvision.transforms.v2.functional as F
import torch
def paired_augment(img_pil, mask_pil, out=256):
seed = torch.randint(0, 2**31, (1,)).item()
img_pil = img_pil.resize((out, out), Image.BILINEAR)
mask_pil = mask_pil.resize((out, out), Image.NEAREST)
for tf in (lambda x: F.hflip(x), lambda x: F.vflip(x),
lambda x: F.rotate(x, angle=15)):
torch.manual_seed(seed)
if torch.rand(()) > 0.5:
img_pil, mask_pil = tf(img_pil), tf(mask_pil)
return img_pil, mask_pil
</details>
预处理三原则:(1) 掩膜用 NEAREST、图像用 BILINEAR——插值方式写反是最常见的隐蔽 bug;(2) 任何几何增强必须图像-掩膜同步(同一随机种子或 torchvision 的成对 API);(3) 色彩增强(亮度/对比度/色相抖动)只作用于图像,永不作用于掩膜。
§6.4 框架加载
PyTorch DataLoader 已见 §6.1。TensorFlow 与 HuggingFace 路径:
# TensorFlow / Keras
import tensorflow as tf
def parse(img_path, mask_path):
img = tf.io.decode_jpeg(tf.io.read_file(img_path), channels=3)
msk = tf.io.decode_jpeg(tf.io.read_file(mask_path), channels=1)
img = tf.image.resize(img, [256, 256]) / 255.0
msk = tf.image.resize(msk, [256, 256], method="nearest")
msk = tf.cast(msk > 127, tf.float32)
return img, msk
ds = (tf.data.Dataset.from_tensor_slices((train_img_paths, train_mask_paths))
.map(parse, num_parallel_calls=tf.data.AUTOTUNE)
.shuffle(512).batch(8).prefetch(tf.data.AUTOTUNE))
# HuggingFace(原型阶段;发表级评测请回归官方 zip)
from datasets import load_dataset
ds = load_dataset("Angelou0516/kvasir-seg")
print(ds) # train / validation / test(ESFPNet 协议)
§6.5 常见坑点
⚠️ 坑点 1:划分协议混用——你的 Dice 和别人的 Dice 不是一回事(分类:评估误用)
问题:Kvasir-SEG 无官方固定划分,社区并存至少 5 套协议(80/10/10、880/120、PraNet 900/100、ESFPNet 三分、HarDNet 合并训练)。同一模型在不同协议下 Dice 可差 3-5 个点,跨协议比较排行榜毫无意义。
症状:复现某论文差 2-4 个 Dice 点;自己模型"超过 SOTA"但审稿人无法复现;同一表格里不同来源的数值暗中混排。
解决:(1) 与文献对标统一用 PraNet 协议(900 train / 100 test,联合 CVC-ClinicDB 550/62);(2) 方法部分强制声明:协议名称、随机种子、是否联合 CVC-ClinicDB 训练、输入分辨率;(3) 引用他人数值时核对原文协议,不可比的加脚注说明。
参考:Fan et al. 2020(PraNet, MICCAI, DOI: 10.1007/978-3-030-59719-1_23);Jha et al. 2020 原论文 80/10/10 协议。
⚠️ 坑点 2:分辨率跨度 6 倍,粗暴 resize 摧毁尺度先验(分类:预处理陷阱)
问题:原图从 332×487 到 1920×1072 不等。统一 resize 到 256×256 会把小图上近景大息肉与大图上微小息肉压到同一像素尺度——模型学到的是扭曲的几何先验,而非尺度不变性;直接拉伸(不保持长宽比)还会改变息肉形态。
症状:测试集上小息肉漏检严重;resize 到更小尺寸后 Dice 骤降;部署到高清内镜流(1080p 实时帧)时性能崩塌。
解决:(1) 训练用多尺度策略(随机 0.75-1.5 倍缩放裁剪)替代单尺度 resize;(2) 保持长宽比 + padding 而非直接拉伸;(3) 评估时报告按息肉像素面积分层的 Dice(小/中/大三档),定位尺度敏感点;(4) 若目标部署为高清流,训练时保留高分辨率分支(如 512×512 输入)。
参考:Polyp-PVT(arXiv:2108.06932)对多尺度与旋转鲁棒性的专门分析;社区审计讨论(§10.3 输入来源 13)。
⚠️ 坑点 3:像素级类别不平衡——accuracy 是自欺指标,阈值 0.5 不是默认正确(分类:评估误用)
问题:息肉像素通常占画面 <10%(多数 <5%)。全预测背景的"模型"也能拿到 95%+ pixel accuracy;而 Dice 对二值化阈值高度敏感,默认 0.5 阈值往往远离最优点。
症状:accuracy 高达 0.97 但 Dice 仅 0.6;验证集上阈值 0.3 与 0.6 的 Dice 相差 5 个点以上;PR 曲线远抖于 ROC。
解决:(1) 指标只报 Dice / mIoU(论文官方建议)+ 可选 F2、precision、recall,永不单独报 accuracy;(2) 在验证集上扫描阈值(0.1-0.9)选最优,锁定后再碰测试集;(3) 损失函数用 Dice Loss + BCE 组合或 Focal Loss 对抗不平衡;(4) 报告 PR 曲线而非 ROC。
参考:Jha et al. 2020 §4(Suggested Metrics:Dice 与 mIoU);社区 PraNet 复现实践(阈值 0.6 优于 0.5 的报告,§10.3 输入来源 14)。
⚠️ 坑点 4:1,000 张的"实验室幻觉"——精选数据上的高分在临床噪声中崩塌(分类:偏倚陷阱)
问题:Kvasir-SEG 经专家质量筛选,不含肠道准备差、粪水覆盖、剧烈运动模糊的重噪声帧;1,000 张的规模使模型极易记忆特定光照/角度/纹理。两个后果:测试集 Dice 0.90+ 的模型面对真实内镜视频流时假阳性/漏检激增;100 张测试集上 1-2 个 Dice 点的"SOTA 提升"常在噪声范围内。
症状:论文分数漂亮,接上真实结肠镜视频即崩溃;换随机种子重训 Dice 波动 ±2 点;zero-shot 测 ETIS-Larib 跌 10-20 点。
解决:(1) 永远做跨库 zero-shot 评估(ETIS-Larib / CVC-ColonDB / CVC-300)作为泛化声明的前提;(2) 3 个种子重训报告均值 ± 标准差;(3) 强增强(弹性形变、cutout、亮度/对比度扰动)+ ImageNet 预训练权重是对抗小样本过拟合的标配;(4) 面向部署的研究应在 HyperKvasir 视频帧或真实前瞻数据上做最终验证。
参考:PraNet/Polyp-PVT 论文的五库协议设计;§7.8 外部验证矩阵;社区审计文章(§10.3 输入来源 13)。
⚠️ 坑点 5:掩膜读取与二值化——JPEG 灰阶、三通道与阈值 127(分类:工程陷阱)
问题:掩膜以 JPEG 分发,压缩在前景/背景过渡带产生中间灰阶;
convert("RGB")读取会得到三通道;阈值取 0、127 还是 250 会改变有效前景面积,直接影响 Dice 1-3 个点。此外部分原图一角的 ScopeGuide 绿框已被替换为黑色块——不要把黑色角落当作"需分割的暗区"学习。症状:同一 checkpoint 评测两次 Dice 不一致;掩膜出现灰边毛刺;边缘区域被错误计入/排除。
解决:(1) 统一
convert("L")单通道读取 +(m > 127)重二值化(全项目同一阈值并写入方法学);(2) resize 掩膜用 NEAREST 插值;(3) 评测脚本与训练脚本共享同一掩膜加载函数;(4) 增强时如需裁剪,避开或一致处理黑色 ScopeGuide 角块。参考:官方页面 Ground Truth Extraction 一节(1-bit 掩膜与 ScopeGuide 处理说明)。
⚠️ 坑点 6:kvasir_bboxes.json 坐标系与 resize 同步(分类:工程陷阱)
问题:边界框为原图坐标(xmin/ymin/xmax/ymax),且各图分辨率不同;JSON 键为文件 stem;部分图像含多个 bbox。resize/crop/翻转后忘记同步变换坐标,检测标签即全面错位。
症状:可视化时检测框偏离息肉;检测 mAP 异常低;多 bbox 图像只画了第一个框。
解决:(1) 任何几何变换后按缩放系数同步更新 bbox(
xmin*W_new/W等),翻转/旋转按对应公式变换;(2) 以rec["width"]/rec["height"]而非 PIL 尺寸为基准(防 EXIF 差异);(3) 遍历rec["bbox"]全列表而非取首元素;(4) 训练前随机抽 20 张做"框-掩膜-图"三联可视化人工检查。参考:kvasir_bboxes.json 结构(§4.0/§4.1);openmedlab Awesome-Medical-Dataset 的 Kvasir-SEG 条目。
⚠️ 坑点 7:镜像版本混用——官方 JPEG 与 HF/Kaggle 重采样版不可互换(分类:工程陷阱)
问题:HF 镜像为 PNG 重采样 + ESFPNet 划分,Kaggle 各镜像预处理不一(常见 512×512 重导出)。在镜像上训练、在官方版上评测(或反之),分辨率与压缩域差异会引入 1-3 个 Dice 点的系统性偏差;把镜像的"自带划分"当作 PraNet 协议更是张冠李戴。
症状:同一模型两处评测分数不一致;"严格按论文协议"却复现不出论文数值。
解决:(1) 原型阶段可用镜像,发表级训练与评测统一回归官方 zip;(2) 论文方法部分写明数据获取渠道与文件校验信息;(3) 划分文件(train/test 文件名清单)随代码开源。
参考:HuggingFace Angelou0516/kvasir-seg 数据集卡(明确标注其划分为 ESFPNet 协议)。
⚠️ 坑点 8:无病理亚型标签——分割 Dice 高 ≠ 临床诊断强(分类:标签理解)
问题:Kvasir-SEG 只回答"息肉在哪里",不回答"息肉是什么"——腺瘤(需切除随访)、增生性(多数无害)、锯齿状(隐匿癌变路径)在掩膜中是同一类前景。把分割分数外推为"AI 能发现癌症前兆"是过度声明;阴性帧缺失也使特异性/假阳性率无法在本集内评估。
症状:论文引言宣称"辅助癌症诊断"但实验只有分割 Dice;模型在真实检查中对正常皱襞/粪水大量假阳性却无数据可量化。
解决:(1) 论文表述严格限定为 CADe(检测/勾边);(2) 病理分型研究改用带诊断标签的数据(如 HyperKvasir 分类标签、KUMC 等);(3) 特异性评估需自行混入阴性帧(HyperKvasir 正常类图像)构建"有/无"测试;(4) 扁平小息肉专项评估用 Kvasir-Sessile 子集。
参考:Kvasir-Sessile 发布说明(196 张 Paris 0-Is/0-IIa);§2.4 临床任务定义表。
§6.6 数据增强
| ✅ 安全增强 | ❌ 危险增强(禁止) |
|---|---|
| 水平/垂直翻转、90° 旋转(图像掩膜同步) | 只翻转图像不翻转掩膜(标签错位) |
| 弹性形变(小幅度,模拟黏膜蠕动形变) | 剧烈弹性形变扭曲息肉形态学特征 |
| 亮度/对比度/色相抖动(仅图像) | 任何作用于掩膜的颜色变换 |
| Cutout / Random Erasing(仅图像) | 在掩膜上 cutout(等于删除标签) |
| 多尺度随机缩放裁剪(0.75-1.5×) | 非等比拉伸改变息肉长宽形态 |
| MixUp/Mosaic(谨慎,加权掩膜) | 跨图像拼接产生解剖学不可能结构且不加验证 |
原论文基线使用的增强组合(复现参考):flipping、random crop、scaling、rotation、brightness、cutout、random erasing(Jha et al. 2020 §5.2)。
§6.7 模型推荐
| 任务/目标 | 推荐 backbone | 训练配置 | 预期性能(PraNet 协议,Kvasir-SEG test) |
|---|---|---|---|
| 快速基线(CPU 可跑) | U-Net(ResNet34 编码器) | 256×256,Dice+BCE,50 epochs | Dice 约 0.82-0.88 |
| 复现原始论文 | ResUNet(论文实现) | 320×320,Nadam 1e-4,150 epochs | Dice 0.788 / mIoU 0.778 |
| 文献对标基线 | PraNet(Res2Net50) | 352×352,联合 CVC-ClinicDB 训练 | Dice 0.898 / mIoU 0.840 |
| Transformer 主流 | Polyp-PVT / SSFormer-L | 352×352,PVTv2 预训练 | Dice 0.917-0.926 / mIoU 0.864-0.874 |
| 实时部署导向 | ColonSegNet / HarDNet-MSEG / Nano 分割头 | 轻量编码器,TensorRT 导出 | Dice 0.82-0.90 @ 87-182 FPS |
| 追求当前上限 | QueryNet / PAAN / PolypSegTrack | 大分辨率 + 联合检测分割 | Dice 0.933-0.947 / mIoU 0.883-0.910 |
§6.8 计算资源需求
| 硬件 | 最小配置 | 推荐配置 |
|---|---|---|
| 磁盘 | 1 GB(数据 + 代码) | 5 GB(含 checkpoint 与日志) |
| 内存 | 8 GB | 16 GB |
| GPU | 无(U-Net 小图 CPU 可训,小时级) | 1 × 8-16 GB 显存(Polyp-PVT 级别 batch 8 @ 352px) |
| 训练时间 | ResUNet 基线约 20-40 分钟(单张消费级 GPU) | Polyp-PVT 全协议约 2-4 小时 |
| 云端替代 | Kaggle 免费 P100 / Colab 免费 T4 | 足够完成全部实验 |
原论文算力参考:NVIDIA DGX-2(V100)上 ResUNet 150 epochs——以 2026 年视角,单张 RTX 4090 即可数倍速完成同等实验。
§6.9 评估指标
import numpy as np
def dice_iou(pred, gt, eps=1e-7):
"""pred/gt: 二值化后的 (H, W) 数组;按图像计算后取全测试集均值(mDice/mIoU)"""
pred, gt = pred.astype(bool), gt.astype(bool)
inter = (pred & gt).sum()
dice = (2 * inter + eps) / (pred.sum() + gt.sum() + eps)
iou = (inter + eps) / ((pred | gt).sum() + eps)
return dice, iou
# 协议要点:逐图计算再平均(mean Dice),而非全数据集像素池化后计算——两者不可比
scores = [dice_iou(p > 0.5, g > 127) for p, g in zip(preds, gts)]
mDice = np.mean([s[0] for s in scores])
mIoU = np.mean([s[1] for s in scores])
社区共识指标栈:(1) Dice + mIoU——论文官方建议,排行榜主指标;(2) PraNet 评测工具箱六指标(mDice、mIoU、MAE、weighted F-measure、S-measure、E-measure,MATLAB main.m 或 Python 移植版)——与 PraNet 系文献全面对标时使用;(3) 检测任务报 mAP@0.5 与 Recall;(4) 实时性报 FPS(须注明硬件与输入分辨率)。阈值与"逐图平均 vs 像素池化"口径必须写进方法学(见 §6.5 坑点 1、3)。
§6.10 MLOps 笔记
- 版本锁定:论文方法部分注明数据获取渠道(官方 zip)、下载日期与校验和;镜像版本(HF/Kaggle)必须单独声明。
- 引用义务:Terms of Use 硬性要求引用 Jha et al. MMM 2020(BibTeX 见 §9);使用 Kvasir-Sessile 需同时引用其 2021 IEEE 论文。
- 商用路径:商用须事先书面许可(联系官方邮箱);官方说明其收到的商用申请均已批准,但"申请"这一动作不可省略。
- 划分开源:随代码发布 train/test 文件名清单与随机种子——1,000 张规模下这是审稿人复现的唯一保障。
- 部署预警:任何宣称临床部署的系统,Kvasir-SEG 分数只能作为算法初筛证据,监管级验证必须在前瞻、多中心、含阴性帧的数据上完成(见 §7.3/§7.8)。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | Vestre Viken Health Trust 单中心,挪威北欧人群,Olympus 单一设备厂商 | 高 | 跨库 zero-shot 评估(ETIS/ColonDB/CVC-300)成为强制动作 |
| 精选偏倚(幸存者偏差) | 图像经专家质量筛选,剔除肠道准备差、重模糊、重反光帧——数据"纯净度"高于真实手术室 | 高 | 部署前在 HyperKvasir 视频帧/前瞻数据上复测 |
| 小息肉欠代表 | 大小分布偏向中大息肉(IEEE Access 口径小息肉仅约 48 张) | 中高 | 小息肉专项评估用 Kvasir-Sessile;按面积分层报告 Dice |
| 无阴性帧偏倚 | 全阳性构图,模型学不到"什么不是息肉" | 中高 | 混入 HyperKvasir 正常类帧构建特异性测试 |
| 标注一致性不可审计 | 双人标注 + 单专家终审,无 κ/一致性量化报告 | 中 | 边界敏感损失函数慎用;承认掩膜存在标注噪声 |
| 患者级结构缺失 | 帧-患者/会话对应未发布,近重复帧不可完全排除 | 中 | 感知哈希去重后划分(§6.3 步骤 3) |
| 人群公平性不可审计 | 无年龄/性别/种族元数据 | 中 | 声明局限;公平性声明需另觅含元数据集 |
§7.2 标注质量评估
| 标注产物 | 可靠性 | 一致性 | 局限性 |
|---|---|---|---|
| 分割掩膜 | 高(医学博士标注 + 胃肠病学家终审) | 未量化(无重标/κ 值) | 边界低置信区单值化;反光/模糊边界主观裁量 |
| 边界框 | 高(掩膜派生,程序一致) | 与掩膜严格一致 | 多息肉帧多框需全量遍历 |
| 图像内容(含息肉) | 高(Kvasir v2 胃肠病学家逐张验证) | — | 无病理活检对照,"息肉"为内镜下判断 |
| 病理亚型标签 | 不存在 | — | 腺瘤/增生/锯齿状不可分(坑点 8) |
§7.3 泛化性讨论
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨中心(挪威 → 法国/西班牙) | 高 | PraNet 协议模型在 ETIS-Larib 上 Dice 跌至 0.66-0.91(因模型而异,见 §7.8),普遍低于库内 10-20 点 |
| 跨设备(Olympus → 其他厂商) | 中高 | 无公开的对照实验;色彩/锐度域差预期显著,论文与社区均列为开放问题 |
| 静态帧 → 实时视频流 | 高 | 视频含运动模糊、镜头冲洗、粪水遮挡等被精选过滤的噪声;实时系统论文均以视频数据补测 |
| 白光 → NBI/放大内镜 | 高 | 数据集纯白光;NBI 下血管纹理模式完全不同 |
| 检测 → 诊断(CADx) | 必然失效 | 无病理标签,任务定义上即不支持(坑点 8) |
§7.4 伦理考量
- 图像来自真实接受结肠镜检查的患者,源自挪威临床诊疗流程;Kvasir 系列构建时已获当地伦理合规审查并完成去标识化(腔内影像不含面部等直接标识符)。
- 数据仅含腔内影像与标注,不含任何患者身份与临床元数据——这保护了隐私,也同时封死了人群公平性审计的可能。
- Terms of Use 限定研究与教育用途;商用须书面许可。将其集成进医疗器械软件前,许可确认是法务第一步。
- 不应将在本数据集上训练的模型直接用于真实患者诊疗提示——精选数据的"高分"不构成临床有效性证据(医疗免责声明见 §0)。
§7.5 公平性评估
患者级人口学元数据未发布,经典的按年龄/性别/种族分解的公平性评估在本数据集上不可执行——这本身就是最重要的公平性事实。可执行的替代是病变维度的公平性:评估模型对不同大小、形态、位置息肉的表现是否均衡。
# 按息肉像素面积分层的 Dice("病变公平性"审计)
import numpy as np
def stratified_dice(preds, gts, thresholds=(0.01, 0.05)):
rows = {"small(<1%)": [], "medium(1-5%)": [], "large(>5%)": []}
for p, g in zip(preds, gts):
ratio = (g > 127).mean()
key = ("small(<1%)" if ratio < thresholds[0]
else "medium(1-5%)" if ratio < thresholds[1] else "large(>5%)")
inter = ((p > 0.5) & (g > 127)).sum()
d = 2 * inter / ((p > 0.5).sum() + (g > 127).sum() + 1e-7)
rows[key].append(d)
return {k: (np.mean(v), len(v)) for k, v in rows.items() if v}
已知社区共识:所有公开模型在小息肉(<1% 画面占比)档的 Dice 显著低于大息肉档,差距常达 10 点以上——这也是 Kvasir-Sessile 子集存在的意义。
§7.6 数据漂移提示
- 采集于 2010 年代中期的 Olympus 设备——与 2026 年主流内镜(4K、NBI/BLI/TXI 增强成像)存在明显域差;监控信号:输入帧分辨率分布、色彩直方图 PSI、高光像素占比。
- 模型若部署于视频流,需监控帧级模糊率与肠道准备质量分布——这些维度在训练集中被精选过滤,漂移必然发生。
- 文献口径漂移:2023 年后新论文普遍转向 mDice/mIoU + 五库协议,旧论文单库 80/10/10 数值不宜再直接引用对比(坑点 1)。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本) | ✅ | 图像-掩膜一一对应,帧即样本 |
| 2 | 有唯一标识符列 | ✅ | 文件名 stem 为帧级唯一 ID,三元组对齐主键 |
| 3 | 无 Unicode 或特殊字符 | ✅ | Labelbox 哈希文件名,纯 ASCII |
| 4 | 无重复行 | ⚠️ | 官方未提供近重复帧审计;视频抓取来源存在同息肉多帧可能,需自行 pHash 去重 |
| 5 | 缺失值已识别并编码 | ✅ | 1,000 图像全量具备掩膜与边界框,无缺失记录 |
| 6 | 标签列被明确标识 | ✅ | 掩膜即分割标签,JSON 为检测标签 |
| 7 | 已对罕见类别(<3%)进行分组 | ❌ | 无亚型标签体系;小息肉(<1% 占比)未作分组处理,sessile 子集需单独下载 |
| 8 | 偏倚评估已完成 | ⚠️ | 论文讨论了任务动机与大小分布,但无正式偏倚/人口学分析(无元数据可分析) |
| 9 | 有完整的数据字典 | ⚠️ | 官方页面有文字说明,无形式化字段级数据字典;JSON 结构需自行解析确认 |
| 10 | 对"信息性缺失"有明确编码解释 | ⚠️ | 结构性缺失(病理标签/元数据/阴性帧)未在官方文档中系统化说明 |
| 11 | 数据采集设备和设置已记录 | ⚠️ | Olympus + ScopeGuide 有提及,但无型号/参数系统表 |
| 12 | 已移除完全共线性变量 | ⚠️ | 图像数据不适用;未做近重复帧移除(同 #4) |
| 13 | 对编码的映射标准已说明 | ❌ | 无 ICD/SNOMED/病理编码映射(本百科 §2.1/§2.2 补充) |
| 14 | 对时间戳的处理已明确说明 | ⚠️ | 静态帧无时间戳;帧-会话对应关系未发布 |
| 15 | 训练/验证/测试划分建议已给出 | ⚠️ | 原论文给出 80/10/10、GitHub 给出 880/120,但无固定官方测试集——多协议并存反成陷阱 |
| 16 | 数据泄漏风险已被讨论 | ⚠️ | 官方未讨论近重复帧泄漏;社区以跨库 zero-shot 协议部分补位 |
| 17 | 标签分布已被分析 | ✅ | 论文与 IEEE Access 2021 给出大小分布;像素占比可复算 |
| 18 | 选择性测量偏倚已被讨论 | ⚠️ | 质量筛选流程已披露(Kvasir v2 替换低质图像),但"精选偏倚"影响未被官方量化 |
| 19 | 外部验证建议已给出 | ⚠️ | 原论文未给;社区五库协议(ETIS/ColonDB/CVC-300)已成为事实标准 |
| 20 | 数据更新和版本信息已记录 | ⚠️ | 单一版本 + sessile 扩展,无版本号体系与 changelog |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 官方 GitHub 有基线代码与 880/120 划分;无官方预处理 pipeline |
| 22 | 合规使用要求已明确 | ✅ | Terms of Use 明确(研究/教育免费、商用书面许可、强制引用) |
| 23 | 多模态对齐方法已说明 | ⚠️ | 单模态数据集;图像-掩膜-边界框三者同源对齐(同名/派生)天然成立 |
| 24 | 去标识化方法已被记录 | ✅ | 腔内影像无直接标识符;ScopeGuide 设备标记已遮蔽;无 PHI 风险项 |
DAIMS 评分:15.0 / 24
评分解读:中等——标注质量与获取体验是一流的,但临床语义深度与标准化协议存在结构性缺口。
对你意味着什么:Kvasir-SEG 的 8 个 ✅ 项集中在"作为分割基准的本职工作"——格式干净、对齐严格、零缺失、许可清晰、隐私无虞,作为算法评测场它开箱即用。扣分几乎全部来自"它不是一个临床数据库":无病理亚型标签(#7/#13)、无患者元数据(#8/#10)、无官方固定划分(#15)、无近重复帧审计(#4/#12)。建议在使用前执行以下操作:(1) 统一采用 PraNet 协议并声明随机种子(修复 #15);(2) 按 §6.3 步骤 3 做感知哈希去重(修复 #4);(3) 混入 HyperKvasir 阴性帧构建特异性测试(修复 #10 的部分后果);(4) 论文表述限定 CADe 边界,病理研究另选数据(尊重 #7/#13)。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 样本量 | 评估任务 | 性能指标 | 相对内部测试集变化 | 关键发现 |
|---|---|---|---|---|---|---|
| ETIS-Larib | 法国(Limoges) | 196 | 分割(zero-shot) | PraNet Dice 0.665 / SSFormer-L 0.801 / Polyp-PVT 0.781 / PolypSegTrack 0.914 | 库内 -10~-23 点 | 最严苛的泛化试金石;与训练集域差最大,所有模型显著掉分 |
| CVC-ColonDB | 西班牙(Hospital Clinic) | 380 | 分割(zero-shot) | PraNet Dice 0.709 / Polyp-PVT 0.808 / D2-Former 0.828 | 库内 -9~-19 点 | 跨库掉分次之;Transformer 编码器相对 CNN 掉分更少 |
| CVC-300 (EndoScene) | 西班牙 | 300 | 分割(zero-shot) | PraNet Dice 0.871 / Polyp-PVT 0.900 | 库内 -2~-3 点 | 分布最接近训练集的外部库,掉分最小 |
| CVC-ClinicDB(联合训练内) | 西班牙 | 62(test) | 分割(seen) | PraNet Dice 0.899 / Polyp-PVT 0.937 | 基准 | 常与 Kvasir-SEG 合并训练,属"库内"参照 |
| 真实临床视频流 | 多中心前瞻场景 | — | 实时检测分割 | 无统一公开数值 | 显著退化(定性共识) | 精选静态帧高分不构成视频流性能证据;需专门视频数据验证 |
约束说明:本矩阵数值取自 PraNet(MICCAI 2020)、Polyp-PVT(CAAI AIR 2023)、SSFormer(MICCAI 2022)、D2-Former 与 PolypSegTrack(2025)论文的公开报告表,训练协议均为 Kvasir-SEG 900 + CVC-ClinicDB 550 训练、外部库 zero-shot 测试。核心叙事十年未变:Kvasir-SEG 库内高分 ≠ 跨中心泛化能力,外部库测试是该领域的强制动作。
§8 基准性能与生态
§8.1 排行榜
Kvasir-SEG 的排行榜分两条口径呈现——可比组(PraNet 协议,900 train/100 test,可横向比较)与历史基线组(口径各异,仅作演进叙事)。
可比组排行榜(PraNet 协议;mDice / mIoU,数值来自各论文公开报告表):
| 排名 | 模型 | mDice | mIoU | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|
| 1 | PolypSegTrack | 0.947 | 0.910 | 2025 | 统一基础模型,联合检测+分割+追踪 | PolypSegTrack: Unified Foundation Model for Colonoscopy Video Analysis. arXiv:2503.24108 | 论文主页 |
| 2 | PAAN | 0.942 | 0.897 | 2024 | 平行注意力聚合网络 | Yi et al. 2024(D2-Former 引文表) | — |
| 3 | D2-Former | 0.934 | 0.873 | 2024+ | MoE 引导双 Transformer 多尺度融合 | D2-Former: Mixture-Of-Experts Guided Dual Transformer for Multi-Scale Medical Image Segmentation(arXiv) | — |
| 4 | QueryNet | 0.933 | 0.883 | 2024 | 检测-分割联合查询 | Chai et al., MICCAI 2024 | — |
| 5 | SSFormer-L | 0.926 | 0.874 | 2022 | 金字塔 Transformer 编码器 + 渐进局部解码 | Wang et al., MICCAI 2022 | https://github.com/UQWang/SSFormer |
| 6 | Polyp-PVT | 0.917 | 0.864 | 2021/2023 | PVT 编码器 + CFM/CIM/SAM 三模块 | Dong B, Wang W, Fan DP, Li J, Fu H, Shao L. “Polyp Segmentation with Pyramid Vision Transformers.” CAAI AIR 2023. arXiv:2108.06932 | https://github.com/DengPingFan/Polyp-PVT |
| 7 | HSNet | 0.920 | 0.870 | 2023 | 混合语义网络 | sota2 排行榜引文(截至 2026-09) | — |
| 8 | UACANet | 0.914 | 0.861 | 2021 | 不确定性增强上下文注意力 | Kim et al., ACM MM 2021 | https://github.com/tae-mo/UACANet |
| 9 | MEGANet | 0.914 | 0.862 | 2023 | 多尺度边缘引导注意力 | MEGANet(MICCAI 2023) | — |
| 10 | PraNet | 0.898 | 0.840 | 2020 | 并行反向注意力;本协议定义者 | Fan DP, Ji GP, Zhou T, Chen G, Fu H, Shen J, Shao L. “PraNet: Parallel Reverse Attention Network for Polyp Segmentation.” MICCAI 2020 (Oral). DOI: 10.1007/978-3-030-59719-1_23 | https://github.com/DengPingFan/PraNet |
| 11 | U-Net | 0.818 | 0.746 | 2015 | 编码器-解码器基线 | Ronneberger et al., MICCAI 2015 | 各框架官方实现 |
历史基线组(口径各异,不可与上表直接比较):
| 模型 | 指标 | 协议/口径 | 完整引用 |
|---|---|---|---|
| ResUNet(原论文基线) | Dice 0.788 / mIoU 0.778 | 80/10/10,320×320 | Jha D et al. “Kvasir-SEG: A Segmented Polyp Dataset.” MMM 2020: 451-462. DOI: 10.1007/978-3-030-37734-2_37 |
| FCM 聚类(原论文基线) | Dice 0.239 / mIoU 0.314 | 无监督传统方法 | 同上 |
| U-Net (ResNet34) | DSC 0.876 / Jaccard 0.810 @ 35 FPS | IEEE Access 统一实时评测 | Jha D et al. “Real-Time Polyp Detection, Localization and Segmentation in Colonoscopy Using Deep Learning.” IEEE Access 9: 40496-40510 (2021). DOI: 10.1109/ACCESS.2021.3063716 |
| DeepLabv3+ (ResNet101) | DSC 0.864 / Jaccard 0.786 | 同上 | 同上 |
| ColonSegNet | DSC 0.821 / Jaccard 0.724 @ 182.4 FPS | 同上(实时性最优) | 同上 |
| HarDNet-MSEG | mDice 0.904 @ 86.7 FPS | 自有合并训练协议 | Huang et al. 2021. arXiv:2101.07172 |
阅读排行榜的三条军规:(1) 只与同协议数值比较——80/10/10 下的 0.85 可能强于 PraNet 协议下的 0.87;(2) 100 张测试集上 ±2 个 Dice 点常为噪声区间,小差距排名无统计意义(坑点 4);(3) 2024 年后的顶部分数已逼近 0.94-0.95,增量收益递减,研究价值正向跨库泛化(§7.8)与实时性/可解释性迁移。
§8.2 SOTA 总结与选型建议
| 如果你… | 推荐方案 | 为什么 |
|---|---|---|
| 与主流文献对标 | PraNet 协议 + 报告 mDice/mIoU(± 六指标工具箱) | 2020 年后几乎所有 SOTA 论文的统一口径 |
| 快速出基线 | U-Net (ResNet34) / PraNet 官方代码 | 半小时内出 Dice 0.85-0.90 |
| 验证新架构 | Polyp-PVT 或 SSFormer 训练框架改接入 | 社区维护好、协议标准、易替换模块 |
| 实时部署 | ColonSegNet / HarDNet-MSEG 路线 | 87-182 FPS 区间,边缘设备友好 |
| 泛化性研究 | 五库协议(+ETIS/ColonDB/CVC-300 zero-shot) | 当前最有发表价值的问题空间 |
| 教学第一课 | 官方 zip + §6.1 最小代码 | 46 MB、CPU 可跑、结果直观可视 |
§8.3 官方评测协议
原论文建议指标为 Dice 系数 + mean IoU(Jha et al. 2020 §4),未指定固定划分(当时协议为 80/10/10)。社区事实标准分两层:(1) PraNet 协议——900/100 划分 + 联合 CVC-ClinicDB 训练 + mDice/mIoU 主指标 + 六指标工具箱(Dice、IoU、MAE、weighted F-measure、S-measure、E-measure;MATLAB 原版见 PraNet 仓库 eval/main.m);(2) 五库泛化协议——Kvasir-SEG + CVC-ClinicDB 训练,ETIS-Larib / CVC-ColonDB / CVC-300 zero-shot 测试。检测任务另报 mAP@0.5;实时任务报 FPS(注明硬件)。
§8.4 相关数据集
| 数据集 | 关系 | 说明 |
|---|---|---|
| Kvasir v2 | 前身/上游 | 8,000 张 8 类帧级分类(Pogorelov et al., MMM 2017);Kvasir-SEG 为其息肉类加掩膜 |
| Kvasir-Sessile | 官方子集 | 196 张 <10mm Paris 0-Is/0-IIa,临床最难检出亚型专项 |
| HyperKvasir | 姊妹扩展 | 110,079 图像 + 373 视频全消化道(Borgli et al., Scientific Data 2020);阴性帧来源 |
| Kvasir-Instrument | 姊妹集 | 590 张内镜器械分割 |
| Kvasir-Capsule | 姊妹集 | 胶囊内镜大规模数据(480 万帧级) |
| CVC-ClinicDB | 联合训练伙伴 | 612 张;PraNet 协议的另一半 |
| ETIS-Larib / CVC-ColonDB / CVC-300 | 外部验证三件套 | zero-shot 泛化测试标准配置 |
| SUN database | 视频时代后继 | 49,136 帧逐帧掩膜 + 阴性帧(2020,需申请) |
§8.5 关键论文 Top 10
- Jha D, Smedsrud PH, Riegler MA, Halvorsen P, de Lange T, Johansen D, Johansen HD (2020), MMM 2020: 451-462. “Kvasir-SEG: A Segmented Polyp Dataset.” — 数据集本体,权威引用入口。DOI: 10.1007/978-3-030-37734-2_37
- Fan DP, Ji GP, Zhou T, Chen G, Fu H, Shen J, Shao L (2020), MICCAI (Oral). “PraNet: Parallel Reverse Attention Network for Polyp Segmentation.” — 定义主流评测协议;MICCAI 2025 Young Scientist Publication Impact Award 获奖论文。DOI: 10.1007/978-3-030-59719-1_23
- Dong B, Wang W, Fan DP, Li J, Fu H, Shao L (2023), CAAI AIR. “Polyp-PVT: Polyp Segmentation with Pyramid Vision Transformers.” — Transformer 时代标杆,arXiv:2108.06932
- Jha D et al. (2021), IEEE Access 9: 40496-40510. “Real-Time Polyp Detection, Localization and Segmentation in Colonoscopy Using Deep Learning.” — 11 架构统一实时基准 + ColonSegNet。DOI: 10.1109/ACCESS.2021.3063716
- Pogorelov K et al. (2017), MMM 2017. “Kvasir: A Multi-Class Image Dataset for Computer Aided Gastrointestinal Disease Detection.” — Kvasir v2 上游论文,理解数据来源必读。
- Borgli H et al. (2020), Scientific Data 7: 283. “HyperKvasir, a comprehensive multi-class image and video dataset for gastrointestinal endoscopy.” — 姊妹扩展与阴性帧来源。DOI: 10.1038/s41597-020-00622-y
- Wang J et al. (2022), MICCAI. “SSFormer: Stepwise Feature Fusion Transformer for Polyp Segmentation.” — 金字塔 Transformer 路线代表作。
- Huang CH, Wu HY, Lin YL (2021). “HarDNet-MSEG: A Simple Encoder-Decoder Polyp Segmentation Neural Network that Achieves over 0.9 Mean Dice and 86 FPS.” — 实时性标杆。arXiv:2101.07172
- Bernal J et al. (2017), Medical Image Analysis 35. “Comparative validation of polyp detection methods in video colonoscopy.” — CVC 系列数据集与 MICCAI 2015 挑战赛,前 Kvasir 时代格局。DOI: 10.1016/j.media.2017.06.015
- Chang Q et al. (2024), Journal of Imaging 10(8): 191. “ESFPNet: Efficient Stage-Wise Feature Pyramid on Mix Transformer for Deep Learning-Based Cancer Analysis in Endoscopic Video.” — HF 镜像内置划分的出处协议。DOI: 10.3390/jimaging10080191
§8.6 社区活跃度
| 维度 | 数据 |
|---|---|
| Google Scholar 引用(数据集论文) | 2,554 次(截至 2026-09 快照;2025 年单年 +855) |
| ResearchGate 引用 | 1,651 次(截至 2026-09 快照) |
| Springer 章节引用 | 880 项(Springer Nature 引文页,截至 2026-09 快照) |
| HuggingFace 镜像月下载 | 约 2,881 次/月(Angelou0516/kvasir-seg,截至 2026-09 快照) |
| HF 衍生模型 | 13+ 个公开微调模型(UNet 系为主,截至 2026-09 快照) |
| 竞赛采用 | MediaEval 2020 Medico 息肉分割任务指定数据;多个 Kaggle 社区赛 |
| 期刊地位 | LNCS 多媒体建模会议论文集(MMM 2020)中被引最高章节之一;结肠息肉分割领域被引最多的数据集论文 |
| 教学采用 | 全球医学影像分割课程与 Kaggle 入门 Notebook 的事实标准素材 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/Fork(截至 2026-09,约) | 为什么值得关注 |
|---|---|---|---|---|
| DebeshJha/Kvasir-SEG | 官方仓库 | https://github.com/DebeshJha/Kvasir-SEG | 400+ / 150+ | 官方基线、880/120 划分、Terms of Use 权威表述 |
| DengPingFan/PraNet | SOTA 代码 | https://github.com/DengPingFan/PraNet | 1,400+ / 350+ | 协议定义者 + 六指标评测工具箱(eval/main.m);MICCAI 2025 YSPIA 获奖 |
| DengPingFan/Polyp-PVT | SOTA 代码 | https://github.com/DengPingFan/Polyp-PVT | 700+ / 150+ | Transformer 标杆;附五库协议全套训练/评测脚本 |
| DebeshJha/2020-MediaEval-Medico-polyp-segmentation | 竞赛 | https://github.com/DebeshJha/2020-MediaEval-Medico-polyp-segmentation | 活跃 | MediaEval 2020 官方任务仓库,含参赛基线 |
| Angelou0516/kvasir-seg | HF 镜像 | https://www.huggingface.co/datasets/Angelou0516/kvasir-seg | 2,881 下载/月 | load_dataset 一行加载;ESFPNet 划分 |
| sota2 Kvasir-SEG 排行榜 | 排行榜 | https://www.sota2.com/research/sota/polyp-segmentation-on-kvasir-seg-100-random-images | — | 持续追踪最新 SOTA(WEFT/CFANet/MEGANet 等) |
| PraNet-V2 | 模型演进 | https://github.com/DengPingFan/PraNet (V2 分支) | 2025 新发布 | DSRA 模块支持多类别语义分割,向视频与多任务演进 |
§9 相关资源与引用
官方资源
- 数据集主页:https://datasets.simula.no/kvasir-seg/
- 直接下载:https://datasets.simula.no/downloads/kvasir-seg.zip(44.1 MB)
- Kvasir-Sessile 子集:https://datasets.simula.no/downloads/kvasir-sessile.zip(13.7 MB)
- 官方 GitHub:https://github.com/DebeshJha/Kvasir-SEG
- 会议论文(Springer):https://link.springer.com/chapter/10.1007/978-3-030-37734-2_37
- arXiv 全文:https://arxiv.org/abs/1911.07069
- 许可条款:见官方主页 “Terms of use”(研究/教育免费;商用须事先书面许可;出版物强制引用)
BibTeX 引用
% 1) 数据集论文(使用本数据集必须引用 —— Terms of Use 硬性要求)
@inproceedings{jha2020kvasir,
title={Kvasir-SEG: A Segmented Polyp Dataset},
author={Jha, Debesh and Smedsrud, Pia H and Riegler, Michael A and Halvorsen, P{\aa}l and de Lange, Thomas and Johansen, Dag and Johansen, H{\aa}vard D},
booktitle={MultiMedia Modeling: 26th International Conference, MMM 2020, Daejeon, South Korea, January 5--8, 2020, Proceedings, Part II},
pages={451--462},
year={2020},
publisher={Springer},
doi={10.1007/978-3-030-37734-2_37}
}
% 2) 使用 Kvasir-Sessile 子集时同时引用
@article{jha2021sessile,
title={A Comprehensive Study on Colorectal Polyp Segmentation with ResUNet++, Conditional Random Field and Test-Time Augmentation},
author={Jha, Debesh and Smedsrud, Pia H and Johansen, Dag and de Lange, Thomas and Johansen, H{\aa}vard D and Halvorsen, P{\aa}l and Riegler, Michael A},
journal={IEEE Journal of Biomedical and Health Informatics},
volume={25}, number={6}, pages={2029--2040}, year={2021},
doi={10.1109/JBHI.2021.3049304}
}
% 3) 使用 PraNet 协议/评测工具箱时引用
@inproceedings{fan2020pranet,
title={PraNet: Parallel Reverse Attention Network for Polyp Segmentation},
author={Fan, Deng-Ping and Ji, Ge-Peng and Zhou, Tao and Chen, Geng and Fu, Huazhu and Shen, Jianbing and Shao, Ling},
booktitle={Medical Image Computing and Computer Assisted Intervention (MICCAI)},
pages={263--273}, year={2020}, publisher={Springer},
doi={10.1007/978-3-030-59719-1_23}
}
% 4) 引用上游数据来源(Kvasir v2)
@inproceedings{pogorelov2017kvasir,
title={Kvasir: A Multi-Class Image Dataset for Computer Aided Gastrointestinal Disease Detection},
author={Pogorelov, Konstantin and Randel, Kristin R and Griwodz, Carsten and Eskeland, Sigrun L and de Lange, Thomas and Johansen, Dag and Spampinato, Concetto and Dang-Nguyen, Duc-Tien and Lux, Mathias and Schmidt, Peter T and Riegler, Michael and Halvorsen, P{\aa}l},
booktitle={Proceedings of ACM Multimedia Systems (MMSys)},
pages={164--169}, year={2017}
}
引用合规提示:Terms of Use 明确要求"所有使用该数据集或报告其实验结果的文档与出版物"必须引用数据集论文(第 1 条)。这是许可义务而非学术礼节——漏引即违约。
教程与学习资源
- 官方 GitHub 基线与说明:https://github.com/DebeshJha/Kvasir-SEG
- PraNet 训练/评测全流程:https://github.com/DengPingFan/PraNet(含六指标 MATLAB 工具箱)
- Polyp-PVT 五库协议复现:https://github.com/DengPingFan/Polyp-PVT
- HuggingFace 快速原型:https://www.huggingface.co/datasets/Angelou0516/kvasir-seg
- Kaggle 入门 Notebook:搜索 “Kvasir-SEG U-Net”(社区教程数十个)
- 本百科 §6.1 最小可运行 PyTorch 示例(含目录结构约定)
原始论文
- Jha D, Smedsrud PH, Riegler MA, Halvorsen P, de Lange T, Johansen D, Johansen HD (2020). “Kvasir-SEG: A Segmented Polyp Dataset.” MultiMedia Modeling (MMM 2020), LNCS 11962: 451-462. DOI: 10.1007/978-3-030-37734-2_37. arXiv:1911.07069.
- Jha D, Ali S, Tomar NK, Johansen HD, Johansen D, Rittscher J, Riegler MA, Halvorsen P (2021). “Real-Time Polyp Detection, Localization and Segmentation in Colonoscopy Using Deep Learning.” IEEE Access 9: 40496-40510. DOI: 10.1109/ACCESS.2021.3063716.
- Pogorelov K et al. (2017). “Kvasir: A Multi-Class Image Dataset for Computer Aided Gastrointestinal Disease Detection.” ACM MMSys 2017: 164-169.
- Borgli H et al. (2020). “HyperKvasir.” Scientific Data 7: 283. DOI: 10.1038/s41597-020-00622-y.
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-05 | 6 组检索:官方主页与条款、论文引用量快照、基线与 SOTA 数值、Kvasir-Sessile 子集、医学编码映射、社区坑点与生态资源交叉验证 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从 datasets.simula.no 官方页面、Jha et al. MMM 2020 原始论文、IEEE Access 2021 基准论文、PraNet/Polyp-PVT 等 SOTA 论文与社区资源中整理结构化信息;(2) 生成 §6 的 Python/PyTorch/TensorFlow 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。
§10.3 输入来源
- Jha et al. (2020), MMM 2020: 451-462 — Kvasir-SEG 原始论文(DOI: 10.1007/978-3-030-37734-2_37;arXiv:1911.07069)
- datasets.simula.no/kvasir-seg 官方页面(规模、格式、Terms of use、下载链接)
- DebeshJha/Kvasir-SEG GitHub 仓库(官方基线、划分、许可表述)
- Google Scholar 作者主页引用快照(2,554 次,截至 2026-09)与 ResearchGate(1,651 次)
- Jha et al. (2021), IEEE Access 9: 40496-40510(11 架构实时基准表、大小分布口径;DOI: 10.1109/ACCESS.2021.3063716;PMC7968127)
- Fan et al. (2020), PraNet(MICCAI 2020 Oral;协议与五库泛化结果;DengPingFan/PraNet 仓库)
- Dong et al. (2023), Polyp-PVT(CAAI AIR;arXiv:2108.06932;Kvasir-SEG/ETIS/ColonDB 结果表)
- PolypSegTrack(2025, arXiv:2503.24108)跨库联合检测分割结果表
- D2-Former(arXiv)四库对比表(U-Net/PraNet/Polyp-PVT/SSFormer/PAAN/QueryNet 数值复核)
- sota2.com Kvasir-SEG 排行榜(WEFT/HSNet/CFANet/MEGANet 等截至 2026-09 数值快照)
- Kvasir-Sessile 发布说明(196 张 Paris 0-Is/0-IIa;sarah-antillia 镜像文档与 systematic review S10462-023-10621-1 交叉复核)
- ICD-10-CM K63.5 → ICD-11 DB35.Z WHO crosswalk(autoicdapi);SNOMED CT 68496003 / 428054006;巴黎分型文献(UCL Discovery / HL7 FHIR IG)
- Kvasir-SEG 社区审计文章(tsight.io:分辨率尺度、精选偏倚、测试集分布一致性质疑)
- 社区 PraNet 复现实践(MohammadRahmanian98/Polyp-Segmentation-with-PraNet-on-Kvasir-SEG-Dataset:阈值优化与增强配置)
- HuggingFace Angelou0516/kvasir-seg 数据集卡(镜像结构、ESFPNet 划分、月下载量快照)
- openmedlab/Awesome-Medical-Dataset Kvasir-SEG 条目(JSON 结构与下载链接复核)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、流行病学、巴黎分型) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(规模、格式、标注流程) | 千方病案医学编辑部 | 与官方页面及原论文交叉比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与官方 zip 结构及社区文档交叉比对 | ✅ 已验证 |
| §5 数据划分策略(5 套协议对照) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与官方文档及社区复现比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与原文及 Scholar/sota2 快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
