信息速览

GastroVision — 胃肠道内镜多类影像分类 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | GastroVision |
| 英文全称 | GastroVision: A Multi-class Endoscopy Image Dataset for Computer Aided Gastrointestinal Disease Detection |
| 别名/简称 | GastroVision、GV |
| 疾病分类 | 消化道疾病与内镜所见(ICD-11:2B90.Z 结直肠癌 / 2C16 胃癌 / 2B70 食管恶性肿瘤前驱 / DA90.1 溃疡性结肠炎 / DA23.1 反流性食管炎等) |
| SNOMED CT | 396428002 Esophagogastroduodenoscopy / 73761001 Colonoscopy / 367392000 Polyp of colon / 77042002 Colorectal cancer / 88411005 Esophagitis(详见 §2.1b) |
| 数据模态 | 上消化道 + 下消化道内镜静态图像(JPG) |
| AI 任务类型 | 多类图像分类、解剖标志识别、病灶检测(图像级)、类不均衡学习、迁移学习基准 |
| 样本总数 | 8,000 张图像 / 27 个标注类别 |
| 数据大小 | 约 1.8 GB(JPG) |
| 数据格式 | JPG 图像 + GastroVision_metadata.csv(filename/class/width/height/size) |
| 许可证 | CC BY 4.0(OSF 下载页注明限研究与教育用途,商业使用须书面许可) |
| 访问级别 | 开放(OSF 免费下载) |
| DUO 标签 | NRES(公开无限制,但 OSF 页附研究/教育用途约束) |
| 语言 | 英文(标签、元数据) |
| 首发日期 | 2023-07-29(arXiv)/ 2023-11-26(Springer 论文) |
| 最后更新 | 2024-09-20(GitHub README/划分更新) |
| 发布机构 | Debesh Jha 等(美国西北大学、Simula、挪威/瑞典医院合作团队) |
| 官方主页 | https://github.com/DebeshJha/GastroVision |
| 下载地址 | https://osf.io/84e7f/ |
| DOI | 10.1007/978-3-031-47679-2_10(论文) |
| 引用次数 | 70+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 结构化目录 + 官方划分 + 可复现代码,接近开箱即用;扣分项:类不均衡、稀有类样本极少、无患者级划分、README 多 fork 版本混乱 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 双映射、消化道内镜所见与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(类目录结构与元数据字段)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 GastroVision 团队(Jha、Simula、西北大学等)、OSF、Bærum Hospital、Karolinska University Hospital 无任何商业利益关联。本页面不销售 GastroVision 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。GastroVision 以 CC BY 4.0 发布,但 OSF 下载页的 Terms of Use 明确限定于研究与教育用途、禁止未经书面许可的商业使用,并要求任何出版物引用原论文。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么?
GastroVision 是一套公开的多中心消化道内镜影像数据集,装下了 8,000 张来自上消化道(食管、胃、十二指肠)和下消化道(结肠、直肠、末端回肠)的内镜静态照片。这些照片被分进 27 个类别——不只是“正常 / 病变”这种二分,而是细到某个解剖标志(如十二指肠球部、回盲瓣)、某种常见病(如结肠息肉、反流性食管炎)、甚至医生手术时的工具画面(活检钳、息肉切除器械)。所有图片都由资深消化内镜医生逐一核对,相当于一本“可以训练 AI 的消化道内镜图鉴”。
为什么重要?
消化道肿瘤约占全球新发癌症的两成以上,而结肠镜检查漏诊息肉的比例可高达 27%,早期发现是降低死亡率的关键。过去开源数据要么只有几个大类(如 Kvasir 仅 8 类),要么是难以获取的视频胶囊数据。GastroVision 用“类别最细、覆盖上下消化道、同时含解剖标志与真实病变”的方式补上了缺口,让研究者不必依赖单一医院数据,从而缓解 AI 在陌生人群上性能骤降的“谱系偏倚”。它也是挪威 Simula 团队 Kvasir/HyperKvasir 一脉在“多类静态图像”方向上的延伸。
我能用它做什么?
三步即可上手:下载 ZIP(约 1.8 GB)→ 按官方划分切好训练/验证/测试 → 用一个预训练 CNN 分类器跑分类。它特别适合用来训练“多类消化道疾病/标志识别模型”,做类不均衡与稀有病变学习研究,或作为医学影像分类算法的统一评测基准。要提醒的是:它只提供图像级标签,没有息肉框、掩码或组织病理金标准,且类别高度不均衡(样本最多的类是 1,467 张,最少的溃疡只有 6 张)。
§1.1 技术摘要
GastroVision(Jha et al., 2023)由美国西北大学、挪威 Simula 研究团队与欧洲临床机构合作构建,共收录 8,000 张去标识化内镜静态图像,覆盖 27 个类别,归属于上下消化道两大区组,并细分为正常所见、解剖标志、病理发现与治疗干预四个语义子集。图像绝大多数为白光成像(WLI),小部分为窄带成像(NBI)。官方以“每类一个文件夹”的结构化目录发布,另附 GastroVision_metadata.csv 记录每张图的文件名、类别、宽、高与文件大小。论文实验仅纳入样本数大于 25 的类别,得到 22 类的分类基准,最佳基线为预训练 DenseNet-121:宏平均精度 0.7388、宏平均召回 0.6231、宏平均 F1 0.6504,整体(micro)精度/召回/F1 均为 0.8203,MCC 0.7987。官方在 GitHub 提供复现脚本与 train/val/test 划分文件,用于结果的公平比较。
§1.2 战略价值
(1)类别粒度与医学覆盖面并重。 多数公开 GI 内镜数据集或聚焦单个任务(如 Kvasir-SEG 只做息肉分割),或类别少(Kvasir 8 类、HyperKvasir 23 类但以视频胶囊为主)。GastroVision 以 27 个图像级类别把“解剖导航标志 + 常见病 + 癌前病变 + 治疗过程”一次覆盖,尤其保留了许多真实临床中少见但重要的类别(血管扩张症、食管静脉曲张、溃疡性结肠炎样黏膜炎症等),这为“罕见却关键”的病灶检测研究提供了稀缺原料,也让模型在训练中必须学会区分“长得像的解剖位置”。
(2)开放多中心 + 可复现基准,降低入门门槛。 数据来自挪威 Bærum Hospital 与瑞典 Karolinska University Hospital 两个中心,且官方主动提供划分与代码。相比需要申请审核的数据集,OSF 免费下载使其成为理想的教学与原型验证数据。对做产品原型的工程师,它的 22 类官方划分就是一套现成的 sanity check;对做研究的学者,原论文与后续多篇工作的数值都以其为锚点,便于横向比较。
§1.3 同类数据集横向对比
| 数据集 | 样本规模 | 模态 | 标注 | 类别数 | 与 GastroVision 差异化 |
|---|---|---|---|---|---|
| GastroVision | 8,000 张静态图 | 上下消化道内镜 | 图像级,资深内镜医生 | 27 类(基准用 22 类) | 类别最细、同时含标志/病理/治疗、双中心 |
| Kvasir | 8,000 张(公开版子集) | 消化道内镜 | 图像级 | 8 类 | 类别粗,多为息肉/炎症/正常等泛类 |
| HyperKvasir | 110,079 张(图 + 视频帧) | 上/下消化道内镜 | 图像级 + 部分分割 | 23 类 | 规模大、含视频帧;类别结构与 GV 部分重叠 |
| Kvasir-SEG | 1,000 张 | 息肉内镜 | 像素级掩码 | 1 类(息肉二值) | 专门做分割,非多类分类 |
| Kvasir-Capsule | 44,228+ 张 | 视频胶囊内镜 | 图像级 | 13+ 类 | 胶囊内镜、强不均衡,与 GV 互补 |
| ETIS-LaribPolypDB | 196 张 | 结肠息肉 | 像素级掩码 | 1 类 | 仅做息肉分割评测 |
§1.4 版本时间轴
| 日期 | 事件 |
|---|---|
| 2023-06-23 | OSF GastroVision Project 建立,镜像图片陆续上传(OSF) |
| 2023-07-29 | arXiv v1 论文公开(arXiv:2307.08140) |
| 2023-08-17 | OSF 主 ZIP 文件 Gastrovision.zip 建立(osf.io/gvx3q) |
| 2023-09 | GitHub 补充运行脚本与 train/val/test Split(validate.csv 更新) |
| 2023-11-26 | 正式收录于 ICML 2023 Workshop ML4MHD,Springer LNCS pp.125-140 |
| 2024-09-20 | GitHub README 修订为“27 类 / 8,000 张 / split 22 类”定稿口径 |
§1.5 典型应用场景
- 多类 GI 影像分类基线:作为消化道内镜静态图像分类的统一评测集,衡量 CNN/ViT 在 22 类上的宏/微指标。
- 解剖标志导航辅助:识别回盲瓣、十二指肠球部、幽门等“检查完成度”标志,辅助结肠镜质控(是否完成全结肠进镜)。
- 类不均衡与稀有病变学习:以 Ulcer(6)、食管静脉曲张(7) 等稀有小类为对象,验证重采样、focal loss、合成过采样等方法的边界收益。
- 迁移学习/域适应基准:多中心、WLI/NBI 混合特性可用来检验模型在成像模式与中心间的泛化,作为内镜预训练的跳板。
- 通用大模型医学能力评测:已有研究将 GV 测试集用于 GPT-4V 等多模态大模型在消化内科的分类能力评测(结果显著低于专用 CNN)。
§1.6 数据集卡片速览
| 项 | 值 |
|---|---|
| 任务 | 图像级多类分类 |
| 类别数 | 27(基准 22) |
| 模态 | 上下消化道内镜静帧 |
| 成像模式 | WLI 为主 + NBI 少量 |
| 来源中心 | 挪威 Bærum + 瑞典 Karolinska |
| 规模 | 8,000 张 / 约 1.8 GB |
| 标注 | 资深内镜医生,图像级 |
| 许可证 | CC BY 4.0 + OSF 附加用途限制 |
| 官方划分 | 22 类 train/val/test(GitHub Split) |
| 最佳官方基线 | DenseNet-121:macro F1≈0.65 / overall≈0.82 / MCC≈0.80 |
| 主要风险 | 类不均衡、稀有类少、无患者级划分、README 口径混乱 |
§1.7 适用与不适用判断
适合:消化道内镜多类分类研究、解剖标志识别、作为医学影像分类算法 benchmark、类不均衡/少样本方法实验、迁移学习与域泛化入门。
不适合:需要像素级定位/分割的下游任务(无掩码)、需要病理级金标准的临床决策研究(无活检确诊)、需要严格患者级独立划分的多中心泛化评测(无患者 ID)、以及任何未获书面许可的商业化产品。
若你的目标是上述“不适合”场景,建议转向带掩码的 Kvasir-SEG / CVC / ETIS 系列,或带更严格数据管制的临床合作数据。
§1.8 写给不同角色的阅读指引
| 你的身份 | 建议先读 | 特别提醒 |
|---|---|---|
| 想跑基线复现的工程师 | §6.1-§6.4、§6.11 | 锁死官方 22 类划分,避免口径混乱(坑点 6) |
| 做疾病的临床/AI 研究者 | §2、§7 | 宏/微 F1 差距反映偏倚;无病理金标准(坑点 8) |
| 做数据产品的合规人员 | §3.0、§6.5 坑点 1、§7.4 | CC BY 之外的 OSF 用途限制需留意 |
| 想了解整体价值的产品经理 | §1.0、§1.2、§1.3、§8 | 先看对比与生态再决定是否采用 |
§2 医学背景
§2.1 ICD-11 编码映射
| GastroVision 类别(示例) | ICD-11 编码 | ICD-11 中文名 |
|---|---|---|
| Colon polyps(结肠息肉) | 2B90.0 / DB33.Z | 大肠良性息肉 / 腺瘤性息肉 |
| Colorectal cancer(结直肠癌) | 2B90.Z | 结直肠恶性肿瘤(未特指) |
| Gastric polyps(胃息肉) | 2C16 前驱 / DB30.0 | 胃息肉 |
| Barrett esophagus(巴雷特食管) | DA24.3 前驱 / 2B70.0 前驱 | 食管恶性肿瘤前驱病变 |
| Esophagitis(食管炎) | DA23.1 | 反流性食管炎 |
| Esophageal varices(食管静脉曲张) | DB99.1(门静脉高压相关) | 食管静脉曲张 |
| Ulcer / Gastric ulcer(溃疡) | DA63 / DA25.1 | 胃十二指肠溃疡 |
| Mucosal inflammation large bowel(结肠黏膜炎症/疑似溃疡性结肠炎) | DA90.1 | 溃疡性结肠炎 |
| Angiectasia(血管扩张症) | DB97.0 | 血管畸形相关出血 |
| 正常所见/解剖标志(非疾病) | 不做疾病编码 | 正常解剖与生理 |
说明:GastroVision 类别为“图像所见 + 解剖命名”混合标签,并非全部都可映射为正式疾病诊断;上表仅对与 ICD-11 实体明确对应的病变类给出编码,正常所见与解剖标志类不做疾病编码。
§2.1b SNOMED CT 映射
| 类别(标签) | ICD-11 对应 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| 上消化道内镜(采集方式) | — | 396428002 | Esophagogastroduodenoscopy |
| 下消化道内镜(采集方式) | — | 73761001 | Colonoscopy |
| Colon polyps | 2B90.0 | 367392000 | Polyp of colon |
| Colorectal cancer | 2B90.Z | 77042002 | Colorectal cancer |
| Barrett esophagus | DA24.3 前驱 | 40635007 | Barrett esophagus |
| Esophagitis | DA23.1 | 88411005 | Esophagitis |
| Esophageal varices | DB99.1 | 195351002 | Oesophageal varices |
| Gastric polyp | DB30.0 | 109853008 | Polyp of stomach |
| Ulcerative colitis 样结肠炎症 | DA90.1 | 64766004 | Ulcerative colitis |
| Gastroesophageal junction / z-line(解剖标志) | — | 36220004 | Gastroesophageal junction |
§2.2 疾病简介与流行病学
消化道(GI)肿瘤是全球高发癌症的重要组成:据原论文引用,GI 癌症约占全球癌症发病的 26%、癌症相关死亡的 35%;2018 年约有 480 万新发 GI 癌病例与 340 万死亡。结直肠癌(约 193 万例)、胃癌(约 109 万例)、肝癌、胰腺癌与食管癌构成主要负担,且预计到 2040 年发病与死亡仍将大幅上升(arXiv:2307.08140)。
GastroVision 的类别直接对应临床上最重要的检出目标:结肠息肉是结直肠癌最重要的癌前病变,尽早摘除可阻断进展;巴雷特食管是食管腺癌的癌前状态;溃疡性结肠炎等慢性炎症增加结直肠癌风险;食管静脉曲张破裂出血则常与门静脉高压相关、危及生命。正因为这些病灶“异质性高、边界不清”,连有经验的医生都可能误判,才需要 AI 辅助——也正因如此,数据集的标签要尽量贴近内镜下的真实表现。
§2.3 临床任务定义
| 任务层级 | 对应类别/示例 | 临床意义 | 可否用本数据集 |
|---|---|---|---|
| 筛查/发现(检出异常) | 息肉、炎症、溃疡、血管扩张 | 帮内镜医生别漏掉病灶 | 部分(图像级粗筛,无像素定位) |
| 解剖标志确认 | 回盲瓣、十二指肠球部、幽门、z 线 | 证明全结肠/全程检查完成、辅助导航 | 可训练 |
| 分类/分型 | 息肉 vs 结直肠癌 vs 炎症、巴雷特 vs 正常 | 缩小鉴别诊断、风险分层 | 可训练(图像级) |
| 分期/组织病理金标准 | 无 | 需要活检/病理 | 不覆盖(缺病理标签) |
| 分割/精确定位 | 无 | 需要掩码 | 不覆盖(无框无掩码) |
§2.4 患者人群与采集来源
| 维度 | 内容 |
|---|---|
| 来源中心 | 挪威 Bærum Hospital(Vestre Viken)与瑞典 Karolinska University Hospital |
| 设备 | Olympus 与 Pentax(Tokyo, Japan)内镜系统 |
| 成像模式 | 绝大多数白光成像(WLI),小部分窄带成像(NBI) |
| 人群 | 两北欧转诊中心接受胃镜/结肠镜检查人群(去标识化) |
| 检查类型 | 静态内镜图像;官方未公开上/下 GI 各自精确比例与过程级元数据 |
| 匿名化 | 完全去标识化,挪威隐私数据保护局批准,REC 东南挪威伦理豁免 |
§2.5 临床价值
消化内镜检查的操作者依赖度高,文献报告结肠息肉漏诊率可高达 27%。AI 实时辅助有望提高检出率——一项微模拟研究估计,结肠镜筛查结合 AI 可带来结直肠癌发病率约 4.8% 的增量下降。GastroVision 通过提供多中心、多类别、去标识化的内镜静态图,让研究者能训练出更稳健的分类器,从而在“筛查-发现-分型”链条上辅助医生,最终指向更早干预、更少漏诊。需强调:该数据只支持图像级分类研究,绝不等于可用于临床决策的已审批软件。
§2.6 金标准描述
| 维度 | 内容 |
|---|---|
| 划分性质 | 图像级类别标签,无患者/检查维度的真阳性定义 |
| 标注方式 | 资深消化内镜医生 + 初级医生 + 计算科学人员共同参与,资深者复核 |
| 标注者 | 经验丰富的消化内镜医生(experienced GI endoscopists) |
| 是否组织病理金标准 | 否;标签基于内镜所见,非活检病理确诊 |
| 其他金标准信息 | 无边界框/掩码;个别衍生研究(如 GastroMalign)另行由两名消化内科医生独立重标并高年资仲裁 |
关键病种补充:反流性食管炎的分级与巴雷特食管
反流性食管炎(esophagitis)在 GV 中对应上 GI 病理类,其内镜严重度常按 Los Angeles(LA)分级评价。LA 分级依据黏膜破损的范围与连续性:grade A 为单个破损 ≤5 mm、未跨越黏膜皱襞顶端;grade B 为单个破损 >5 mm、但未跨越皱襞顶端;grade C 为破损跨越皱襞顶端但累计食管周径 <75%;grade D 为破损累计周径 ≥75%(原论文即以此举例说明黏膜破损长度的分级判读)。长期食管炎可致巴雷特食管——食管下段鳞状上皮被柱状上皮取代的癌前状态,内镜下呈橘红色、外观似“伸长的 z 线”。GV 将这些黏膜改变以“所见类别”收编,其分类学锚点正是内镜下表现,而非组织学。
解剖标志在结肠镜质控中的作用
GV 的下 GI 解剖标志类(回盲瓣 ileocecal valve、阑尾开口、盲肠 cecum、乙状结肠、直肠翻转 retroflex rectum)在内镜质控中意义重大:完整结肠镜检查要求进镜达盲肠并可视回盲瓣,而直肠镜退镜时需翻转观察盲区。用 AI 自动识别这些“完成度标志”,可帮助评估退镜是否覆盖全结肠、是否遗漏近端病灶,从而把“解剖导航”从手动依赖转变成可量化的过程指标。这也是 GV 作为“标志识别”训练语料的实用价值所在。
术语速查表
| 术语 | 中文 | 在 GV 中的含义 |
|---|---|---|
| WLI | 白光成像 | 默认内镜光源,GV 绝大多数图像 |
| NBI | 窄带成像 | 增强血管/黏膜对比的光学染色模式,GV 少部分图像 |
| GI | 胃肠道 | upper(食管/胃/十二指肠)与 lower(结肠/直肠/回肠末端) |
| GEJ / z-line | 胃食管交界 / 锯齿线 | 鳞状与柱状上皮交界处解剖标志 |
| Terminal ileum | 末端回肠 | 小肠最后段,结肠镜检查常回看确认 |
| Retroflex | 翻转(直肠镜) | 退镜时镜头翻转以观察盲区 |
| Dyed-lifted-polyp | 染色抬起息肉 | 注入靛胭脂使息肉抬升/界限清晰的切除前处理 |
| Angiectasia | 血管扩张症 | 黏膜下异常血管,可致下 GI 出血 |
| Accessory tools | 附件器械 | 活检钳、圈套器等检查/治疗工具出现在图像中 |
§2.7 相关肿瘤流行病学参考表
| 癌种 | 原论文引用口径 | 临床提示 |
|---|---|---|
| 结直肠癌 | 约 193 万例(全球) | GV 中对应 Colon polyps/Colorectal cancer 类 |
| 胃癌 | 约 109 万例(全球) | GV 中 Normal stomach 为主要对照、Gastric polyps 为病灶类 |
| 食管癌 | 约 60.4 万例(全球) | GV 中 Barrett/esophagitis 为癌前与炎症上游 |
| GI 癌症合计占比 | 约占全球癌症发病 26%、死亡 35% | 强调筛查与早诊价值 |
表中数字为原论文(arXiv:2307.08140)援引的全球统计口径,非本 Wiki 新数据;引用时请回到原始流行病学来源。
§2.8 检查流程示意与 GV 定位
内镜诊疗可简化为:胃镜(EGD,查食管/胃/十二指肠)或结肠镜(查结肠/直肠/末端回肠)→ 白光初查 →(必要时)NBI/染色放大观察 → 发现病灶 → 活检/息肉切除 →(治疗类)染色边界与切除缘处理。GV 的图像级类别恰好覆盖这条链上的多个“画面切面”:正常黏膜(初查基线)、解剖标志(进镜完成度)、病理所见(病变发现)、以及切除与染色过程(治疗)。因此它既是“分类评测集”,也是一套覆盖内镜工作流不同阶段的可标注语料——但每个类仅给出画面语义,不给病变的三维位置与病理性质。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐来源 | 大小/形式 | 理由 |
|---|---|---|---|
| 跑论文基准、公平比较 | 官方 OSF ZIP + 官方 Split | 约 1.8 GB / 每类一文件夹 | 与论文 DenseNet-121 等基线的 22 类划分一致 |
| 快速原型、读 class 分布 | OSF 元数据 CSV 或 Kaggle 镜像 | 小 / CSV + 27 目录 | 元数据 CSV 含全部类别与数量,便于统计 |
| 复现代码实验 | 官方 GitHub(DebeshJha/GastroVision) | 代码 + Split | 含 6 个模型脚本、可直接运行 |
| 教学演示(小量) | 任一来源的子集 | 数 MB | 先跑通管道再全量 |
无“多版本”问题:GastroVision 现为单一版本(v1),但需注意 OSF 主 ZIP 与 GitHub README 曾出现类别口径差异(见 §6.5 坑点 2)。
§3.1 模态详情
| 属性 | 内容 |
|---|---|
| 成像技术 | 白光内镜(WLI,绝大多数)+ 窄带成像(NBI,少数) |
| 设备厂商 | Olympus、Pentax(均为 Tokyo, Japan) |
| 图像格式 | JPG 静态图 |
| 部位覆盖 | 食管、胃、十二指肠(上 GI);结肠、直肠、末端回肠(下 GI) |
| 结构化形式 | 每类一个文件夹 + GastroVision_metadata.csv |
| 标注粒度 | 图像级类别标签 |
§3.2 按子集样本数(27 类全量分布)
| 类别 | 数量 | 区组 |
|---|---|---|
| Normal mucosa and vascular pattern in the large bowel | 1,467 | 下 GI 正常 |
| Accessory tools | 1,266 | 上/下 GI 治疗工具 |
| Normal stomach | 969 | 上 GI 正常 |
| Small bowel_terminal ileum | 846 | 下 GI 解剖标志 |
| Colon polyps | 820 | 下 GI 病理 |
| Pylorus | 393 | 上 GI 解剖标志 |
| Gastroesophageal junction_normal z-line | 330 | 上 GI 解剖标志 |
| Dyed-resection-margins | 246 | 下 GI 治疗干预 |
| Duodenal bulb | 205 | 上 GI 解剖标志 |
| Ileocecal valve | 200 | 下 GI 解剖标志 |
| Blood in lumen | 171 | 上/下 GI 病理 |
| Normal esophagus | 140 | 上 GI 正常 |
| Dyed-lifted-polyps | 141 | 下 GI 治疗干预 |
| Colorectal cancer | 139 | 下 GI 病理 |
| Cecum | 113 | 下 GI 解剖标志 |
| Esophagitis | 107 | 上 GI 病理 |
| Barrett esophagus | 95 | 上 GI 病理 |
| Resected polyps | 92 | 下 GI 治疗干预 |
| Retroflex rectum | 67 | 下 GI 解剖标志 |
| Gastric polyps | 65 | 上 GI 病理 |
| Colon diverticula | 29 | 下 GI 病理 |
| Mucosal inflammation large bowel | 29 | 下 GI 病理 |
| Resection margins | 25 | 下 GI 治疗干预 |
| Angiectasia | 17 | 下 GI 病理 |
| Erythema | 15 | 上 GI 病理 |
| Esophageal varices | 7 | 上 GI 病理 |
| Ulcer | 6 | 上 GI 病理 |
| 合计 | 8,000 | 27 类 |
§3.3 格式与结构
| 文件/目录 | 类型 | 说明 |
|---|---|---|
| GastroVision_metadata.csv | CSV | 每行一张图:filename, class, width, height, size |
| Accessory tools/ … 各类别目录 | JPG | 每类一个文件夹 |
| Split/ | 划分文件 | 官方 train/val/test(含 validate.csv),复现论文用 |
| Source/ | 脚本 | DenseNet-121/169、EfficientNet-B0、ResNet-50/152 等训练脚本 |
| *.png | 说明图 | 类分布、分辨率、混淆矩阵、t-SNE 等 |
§3.4 存储大小
压缩后整体约 1.8 GB(JPG)。单张为内镜截图,分辨率不统一(原论文图 3 展示分布)。下载并解压后建议预留约 3 GB 空间用于解压与副本,训练时做统一 resize。
§3.5 标注方式
| 环节 | 说明 |
|---|---|
| 标注者 | 经验丰富的消化内镜医生 |
| 协作 | 资深内镜医生 + 初级医生 + 计算科学人员共同核对 |
| 粒度 | 图像级单标签 |
| 校验 | 资深内镜医生验证(verification) |
| 局限性 | 无病理/活检金标准,无边界框与掩码 |
§3.6 标注者资质与一致性
官方未发布正式的一致率(如 Cohen kappa)报告。其保证主要来自“资深内镜医生标注 + 复核”流程。第三方衍生研究(如 GastroMalign,2024)在原始标签上另行执行“两名具备执业资格的消化内科医生独立标注 + 高年资医生仲裁分歧”的二级流程,可作为标签质量的下界参考——同一原始图像可能因病灶边界模糊而在二分级仲裁时产生分歧,说明 GV 的原始标签虽临床可信,但并非像素级精确。
§3.7 采集周期
官方未公开精确的采集起止年份。OSF 项目建立于 2023-06,主 ZIP 于 2023-08 上传;论文未披露原始内镜采集时间窗(arXiv:2307.08140)。本条目无法提供精确时间跨度,暂以项目构建周期为参考。
§3.8 地域覆盖
挪威(Bærum Hospital,属 Vestre Viken)与瑞典(Karolinska University Hospital,斯德哥尔摩)两中心。属于北欧(斯堪的纳维亚)人群背景,非全球多样本。
§3.9 设备规格
Olympus 与 Pentax 内镜系统;绝大多数图像为白光(WLI),小部分窄带(NBI)。Pentax 系统特有的增强子模式(如 i-SCAN)未在公开文档中提供结构化元数据,故无法按子模式细分(GastroMalign, PMC13073358)。
§3.10 深度溯源链
Bærum Hospital(挪威)+ Karolinska University Hospital(瑞典)内镜检查 → 去标识化静帧截取 → GastroVision 团队(Jha、Sharma 等)整理并资深内镜医生标注复核 → OSF 托管 + GitHub 划分/代码 → 公开分发。与挪威 Simula 团队 Kvasir/HyperKvasir 属同一研究生态(作者重叠:Halvorsen、Riegler、Hicks、de Lange 等)。
§3.11 关于分辨率与成像模式的关键说明
原论文以图 3 展示 8,000 张图像的分辨率分布,说明图像并非统一尺寸。训练前需统一 resize;同时多数图像来自 Olympus 系统、少部分来自 Pentax,且白光(WLI)为主、窄带(NBI)为辅。建议:
| 关注点 | 建议 | 原因 |
|---|---|---|
| 分辨率不一 | 统一 resize 到同一尺寸(如 256/288) | 免去 batch 内尺寸冲突 |
| 模式混淆 | 色彩抖动增强 / 模式分组分析 | NBI 与 WLI 外观差异大(坑点 7) |
| 设备差异 | 不作过度假设 | 无行级设备标记,厂商级差异无法统计 |
| 近重复帧 | 训练前感知哈希去重 | 同一病灶多张近同截图(坑点 4) |
§3.12 获取与工程时间预算(经验参考)
以下为单机(普通工作站)的粗估时间,仅作排期参考,非官方承诺:
| 环节 | 说明 | 估算耗时 |
|---|---|---|
| 下载 | OSF 约 1.8 GB,依带宽 | 数分钟至十余分钟 |
| 解压校验 | 解压 + 用 CSV 校验全部文件存在 | 约 5-10 分钟 |
| dHash 去重 | 8,000 张 pHash/dHash | 约 5-15 分钟 |
| resize 到 256px 缓存 | 8,000 张 | 约 5-10 分钟 |
| DenseNet-121 单 epoch(CPU) | 32 batch、256px | 十余分钟/epoch |
| DenseNet-121 单 epoch(8GB GPU) | 同上 | 约 1-3 分钟/epoch |
§4 数据结构
§4.0 目录树
解压 Gastrovision.zip 后预期结构如下:
gastrovision/
├── GastroVision_metadata.csv # filename,class,width,height,size
├── Accessory tools/ # 1,266 张,治疗/诊断器械
├── Angiectasia/ # 17 张
├── Barretts esophagus/ # 95 张
├── Blood in lumen/ # 171 张
├── Cecum/ # 113 张
├── Colon diverticula/ # 29 张
├── Colon polyps/ # 820 张
├── Colorectal cancer/ # 139 张
├── Duodenal bulb/ # 205 张
├── Dyed-lifted-polyps/ # 141 张
├── Dyed-resection-margins/ # 246 张
├── Erythema/ # 15 张
├── Esophageal varices/ # 7 张
├── Esophagitis/ # 107 张
├── Gastric polyps/ # 65 张
├── Gastroesophageal_junction_normal z-line/ # 330 张
├── Ileocecal valve/ # 200 张
├── Mucosal inflammation large bowel/ # 29 张
├── Normal esophagus/ # 140 张
├── Normal mucosa and vascular pattern in the large bowel/ # 1,467 张
├── Normal stomach/ # 969 张
├── Pylorus/ # 393 张
├── Resected polyps/ # 92 张
├── Resection margins/ # 25 张
├── Retroflex rectum/ # 67 张
├── Small bowel_terminal ileum/ # 846 张
└── Ulcer/ # 6 张
提示:官方分发的 Split/ 目录提供 train/val/test 的 22 类文件清单(含 validate.csv);上表 27 个文件夹为全量类别。注意文件夹名含空格与下划线(如 “Normal mucosa …”,与 CSV 中 class 列同名),解析时需小心。
§4.1 DAIMS 字段字典(GastroVision_metadata.csv)
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| filename | Text | 图像文件名 | img_0001.jpg | 主键、与图配对 | 低 | 无 | 全图像 |
| class | Text | 类别标签 | Colon polyps | 标签/监督信号 | 图像级近似 | 无 | 27 个类别名 |
| width | Integer | 图像宽(px) | 720 | 预处理 resize | 低 | 无 | 因图像而异 |
| height | Integer | 图像高(px) | 576 | 预处理 resize | 低 | 无 | 因图像而异 |
| size | Text | 文件大小 | 92 KB | 数据清洗/质量 | 低 | 无 | 因图像而异 |
§4.2 标签分布
见 §3.2 表:27 类全量分布,最大类 Normal mucosa large bowel(1,467)与最小类 Ulcer(6)比值约 244:1;论文基准仅纳入 >25 样本的 22 类。类分布反映真实内镜临床流行度而非平衡设计,是理解指标(宏 vs 微 F1 差距)的关键。
§4.3 关键统计
| 指标 | 值 |
|---|---|
| 总图像 | 8,000 |
| 类别数(全量) | 27 |
| 类别数(官方基准划分) | 22 |
| 格式 | JPG |
| 压缩体积 | 约 1.8 GB |
| 图像分辨率 | 不统一(论文图 3 分布) |
| 标注 | 图像级单标签 |
§4.4 数据层级
本数据集为扁平单层级:患者 →(内镜检查)→ 图像(图像级标签)。官方不提供患者 ID、检查 ID、过程类型等上两级信息,无法据此重建患者分组(详见 §6.5 坑点 4、坑点 7)。
§4.5 缺失值与信息性缺失编码
官方未提供患者/过程级元数据,故存在系统性信息缺失而非随机缺失:缺患者 ID、缺检查类型(结肠镜 vs 乙状结肠镜 vs 胃镜)、缺成像模式标记(WLI/NBI 未按行提供)、缺设备型号行级标记。图像级缺失(损坏文件、无标签、模糊帧)据第三方使用报告多被人工筛除。使用时应明确把“元数据缺失”当作可描述限制写入方法学,而非猜测填充。
§4.6 类别归组参考(为分组评估而设)
当稀有类样本过少不便于单类评估时,可按医学语义归组后再计算分组级指标。下表为一种建议归组,非官方定义:
| 归组 | 包含类别 | 样本合计(约) |
|---|---|---|
| 正常/良性黏膜 | Normal stomach、Normal esophagus、Normal mucosa large bowel | 2,576 |
| 解剖标志 | Duodenal bulb、Pylorus、GEJ z-line、Cecum、Ileocecal valve、Retroflex rectum、Small bowel_terminal ileum | 2,154 |
| 炎症/溃疡类 | Esophagitis、Erythema、Ulcer、Mucosal inflammation large bowel、Barrett | 252 |
| 肿瘤/癌前病变 | Colon polyps、Colorectal cancer、Gastric polyps、Resected polyps、Angiectasia | 1,133 |
| 出血/血管 | Blood in lumen、Esophageal varices、Angiectasia | 195 |
| 器械/治疗过程 | Accessory tools、Dyed-lifted-polyps、Dyed-resection-margins、Resection margins | 1,678 |
注:同一样本可能落入多个语义归组(如 Angiectasia 同时属于血管与癌前风险),上表仅供理解类间关系,勿用于双重计数式评估;分组仅应服务于报告分层性能的可读性。
§4.7 探索性分析(EDA)示例
先跑一段 EDA 确认“你拿到的是官方口径”再训练:
import os, pandas as pd
from collections import Counter
df = pd.read_csv(os.path.join("./gastrovision", "GastroVision_metadata.csv"))
print("rows:", len(df), "classes:", df["class"].nunique())
print("top5:", df["class"].value_counts().head(5).to_dict())
print("rare5:", df["class"].value_counts().tail(5).to_dict())
# 校验目录内文件数与 CSV 是否一致(防 fork 改名导致漏配)
import glob
folder_counts = {}
for d in glob.glob(os.path.join("./gastrovision", "*")):
if os.path.isdir(d):
folder_counts[os.path.basename(d)] = len(glob.glob(os.path.join(d, "*")))
missing = df["class"].value_counts().to_dict()
print("目录数:", len(folder_counts))
预期:rows=8000、classes=27、top1=Normal mucosa large bowel(1467)、最稀有 Ulcer(6);目录数与类别一致,若不一致说明来源版本或拼写有异(坑点 5)。
§5 划分与使用建议
§5.1 官方划分
论文实验纳入样本数大于 25 的类别,最终官方 Split 目录提供 22 类的 train/val/test 文件清单(含 validate.csv)。官方 GitHub 明确要求使用者“用官方 Split 复现论文结果、便于公平比较”。下载源推荐 OSF 主 ZIP(图片)配合 GitHub Split/ 目录(划分清单)一起使用。
§5.2 社区惯例划分
不同论文采用了互不相同的划分策略,直接造成跨论文数值不可比:
| 来源 | 类别数 | 划分方式 | 划分比例(约) |
|---|---|---|---|
| 原论文 / 官方 Split | 22 类 | 官方 train/val/test | 论文报告为准 |
| ELM 集成(ESWA 2024) | 27 类(全量) | 自定义 train/test | 7,200 / 800 |
| CNN-Transformer(CaPTion 2024) | 23 类 | 自定义 | 论文为准 |
| GastroMalign(2024) | 27 类映射 4 级风险 | 分层 train/val/test | 论文为准 |
比较任何两个数值前,务必确认是否使用同一类别子集与同一划分(见 §6.5 坑点 6)。
§5.3 泄漏风险(重点)
- 无患者级划分:官方不提供患者/检查 ID。若同一患者的多次曝光或同一检查的连续帧落入训练与测试两侧,会虚高泛化性能。GV 的图像来自真实检查截图,这类风险真实存在且无法事后完全排除。
- 图像重复/近重复:同一病灶常有多张近乎相同的截图。仅做随机切分可能让“测试图像”与“训练图像”极度相似(近重复泄漏)。
- 成像模式泄漏:NBI 与 WLI 外观差异大,若测试集成像模式分布异常,模型可能学到“模式偏好”而非疾病特征(见坑点 8)。
- 工具/文字水印伪影:部分帧含内镜探头或叠加文字信息,模型可能借此区分而非依据黏膜。
§5.4 交叉验证建议
在缺少患者 ID 的情况下,建议至少:① 用官方 22 类划分作主基准;② 另做一次按“文件夹分组”的 group-aware 或近重复去重后再切分的敏感性分析;③ 对稀有类采用分层策略并在训练集外设“少样本”验证。可行时用留一医院(如果未来披露中心标记)外推测试域泛化。
§5.5 外部验证建议
推荐用 HyperKvasir、Kvasir-Capsule 或 Kvasir-SEG 做跨数据集域外验证,检验 GV 训练的模型是否能在不来源的消化内镜数据上迁移。跨数据集的标签体系不同(如 HyperKvasir 的“息肉”类别定义),需先建立标签映射并做人工核对,避免机械对齐造成的误评。
关于“无患者级划分”的操作建议清单
- 先查官方划分是否足够:若仅做公平比较,官方 22 类 Split 足够;若追求稳健泛化,不能只靠它。
- 感知哈希去重:对全库计算 dHash(8×8),把海明距离小于阈值的图归为同一簇,以簇为单位切分,减少近重复泄漏。
- 按文件夹/拍摄批次分组:虽然无患者 ID,但文件名与文件夹可能隐含拍摄批次线索;以“疑似同批”为组做 leave-one-group-out 交叉验证,能给出泛化下界。
- 明确报告局限:在论文 Limitations 如实写“数据未提供患者级分层,交叉验证基于图像而非患者”,避免被评审当作隐藏泄漏。
# dHash 近重复去重示意
from PIL import Image
import imagehash
hashes = {}
for p in df["path"]:
h = imagehash.dhash(Image.open(p).convert("L").resize((9,8)))
hashes[p] = h
# 若需成簇,可两两比较海明距离;图像量大时建议先按哈希前缀分桶再局部比较。
§6 AI 就绪指南 ⭐
§6.1 快速上手
目录结构预期:先把 OSF 的 Gastrovision.zip 解压到一个 data_root(如 ./gastrovision),内部是 27 个以类别命名的文件夹;再从官方 GitHub 的 Split/ 目录取 train/val/test 清单(22 类)。我们把 data_root 指向该目录,其余逻辑由代码自动拼接。
# gastrovision 目录结构预期:
# gastrovision/
# GastroVision_metadata.csv
# Accessory tools/ ... Ulcer/ # 27 个类别文件夹(文件名可能含空格/下划线)
# Split/ # 官方 22 类 train/val/test 清单
# 我们用元数据 CSV 作为与真实图像配对的唯一权威索引。
DATA_ROOT = "./gastrovision"
SPLIT_DIR = "./gastrovision/Split" # 官方划分清单目录
最小可用子集:仅跑通管道时,可先从 Normal stomach/ 与 Colon polyps/ 各取 20 张做二分类 sanity,再逐步扩展。
§6.2 数据获取
| 内容 | 链接 / 说明 |
|---|---|
| 官方下载页(OSF) | https://osf.io/84e7f/ |
| 主 ZIP | https://osf.io/gvx3q(Gastrovision.zip,约 1.8 GB) |
| 划分与代码 | https://github.com/DebeshJha/GastroVision |
| Kaggle 镜像 | https://www.kaggle.com/datasets/orvile/gastrovision-gastrointestinal-disease-detection/data |
| 元数据 CSV | GastroVision_metadata.csv(含在仓库/解压目录) |
# 用 OSF 下载页手工点击下载更稳妥;若用 curl 需先取得文件真实 URL。
# 示意(实际 URL 以页面为准):
# curl -L -o gastrovision.zip "https://osf.io/gvx3q/download"
# unzip gastrovision.zip -d ./gastrovision
获取需注意:OSF Terms 限研究与教育用途、商业使用须邮件书面许可(见 §6.5 坑点 1)。
§6.3 预处理全流程
流程:读取元数据 → 按类别建映射 → 统一 resize → 归一化 → 按需增强。要点:类名含空格/下划线(如 Normal mucosa and vascular pattern in the large bowel、Gastroesophageal_junction_normal z-line),一律以 CSV 中 class 列为准,不要靠手拼文件夹名。
import os, pandas as pd
from PIL import Image
from torchvision import transforms
df = pd.read_csv(os.path.join(DATA_ROOT, "GastroVision_metadata.csv"))
print(df.shape) # 期望 8,000 行
print(df["class"].nunique()) # 期望 27
# 以 CSV 为准建立 class -> 图像绝对路径 的映射
df["path"] = df.apply(lambda r: os.path.join(DATA_ROOT, r["class"], r["filename"]), axis=1)
assert df["path"].map(os.path.exists).all(), "部分图像缺失,请检查文件名/文件夹拼写"
# 归一化采用 ImageNet 统计(内镜 RGB 图像可直接复用预训练 CNN)
NORM = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
如果某些文件夹名与 CSV 中 class 列不一致(历史上曾有 fork 改名为 Barretts vs Barrett 等差异),建议用 df["path"].map(os.path.exists) 校验并打印失败清单,人工修正后再继续。
§6.4 PyTorch DataLoader
完整可运行:Dataset 类读取元数据、按划分过滤、训练加增强。
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, models
from PIL import Image
class GastroVisionDS(Dataset):
def __init__(self, df, classes, train=True, img_size=256):
self.rows = df[df["class"].isin(classes)].reset_index(drop=True)
self.train = train
if train:
self.tf = transforms.Compose([
transforms.Resize((img_size, img_size)),
transforms.RandomHorizontalFlip(p=0.5),
transforms.RandomRotation(12),
transforms.ToTensor(), NORM,
])
else:
self.tf = transforms.Compose([
transforms.Resize((img_size, img_size)),
transforms.ToTensor(), NORM,
])
def __len__(self):
return len(self.rows)
def __getitem__(self, i):
r = self.rows.iloc[i]
img = Image.open(r["path"]).convert("RGB")
y = self.cls2idx[r["class"]]
return self.tf(img), y
# 官方 22 类划分(示意读取;真实清单以 Split/ 内文件为准)
split_csv = pd.read_csv(os.path.join(SPLIT_DIR, "train.csv")) # 列: filename[,split,...]
classes = sorted(set(df["class"]) & set(pd.read_csv(os.path.join(SPLIT_DIR,"validate.csv"))["class"]))
ds = GastroVisionDS(df, classes, train=True)
def collate(batch):
xs, ys = zip(*batch)
return torch.stack(xs), torch.tensor(ys)
loader = DataLoader(ds, batch_size=32, shuffle=True, num_workers=4, collate_fn=collate)
for xb, yb in loader:
print(xb.shape, yb.shape) # torch.Size([32,3,256,256]) torch.Size([32])
break
cls2idx 与官方划分的类别清单需在训练前从 validate.csv(或统一标签表)构建并固化,保证训练/验证/测试一致。
§6.5 坑点 8 个
⚠️ 坑点 1:许可证口径冲突——CC BY 4.0 之外的额外用途限制(分类:合规陷阱)
问题:arXiv 与 Kaggle 镜像都标注“CC BY 4.0”,但 OSF 官方下载页 Terms of Use 明确写“使用限于研究与教育目的,禁止未经书面许可的商业使用,且出版物须引用论文”。CC BY 4.0 本身允许商业用途,二者冲突。
症状:你按“CC BY 4.0 可商用”理解去做产品/数据产品,可能违反官方下载页的额外限制;或反之,论文里只标 CC BY 却漏了“须引用论文”的义务。
解决:
- 简单方法:默认按“研究与教育用途”使用,商用前邮件联系 paalh@simula.no 获取书面许可。
- 进阶方法:在数据使用声明(DUA 段)同时列出“许可证=CC BY 4.0”与“官方 Terms 附加限制”,以 OSF 页为准。
- SOTA 方法:若要做商用产品,从源头用具备清晰商用授权的同类数据(如自行采集或 HyperKvasir 的明确条款)替换或混合。
参考:https://osf.io/84e7f/wiki/
⚠️ 坑点 2:GitHub fork 与 README 的类别/规模口径混乱(分类:标签理解 / 工程陷阱)
问题:官方仓库 DebeshJha/GastroVision 于 2024-09 修订为“27 类 / 8,000 张 / split 22 类”,但多个 fork(sahilfaizal01、PixelIntelligenceLab 等)沿用陈旧 README,写“36 类 / 6,169 张 / split 23 类”。你 clone 到旧 fork 会按错误口径统计与划分。
症状:统计出的图像数与类别数对不上;跑“23 类划分”却找不到某类别文件夹;复现基线数字不匹配。
解决:
- 简单方法:只使用官方仓库 https://github.com/DebeshJha/GastroVision ,并在 README 上核对“27 类 / 8,000 张”字样。
- 进阶方法:用
GastroVision_metadata.csv的 class 列自建 27 类权威清单,并校验图像文件存在,不盲信 fork 的 README。- SOTA 方法:写脚本以“真实存在的 27 个文件夹 + CSV 全量”为 ground truth,凡不一致的 clone 一律废弃。
参考:https://github.com/DebeshJha/GastroVision 与 https://github.com/sahilfaizal01/GastroVision
⚠️ 坑点 3:罕见类样本极少,直接全 27 类训练会崩(分类:偏倚陷阱)
问题:Ulcer(6)、Esophageal varices(7)、Angiectasia(17)、Erythema(15) 等稀有类样本极少,论文因此只对 >25 样本的 22 类做基准。全 27 类训练时这些类几乎无法学到稳定特征。
症状:训练损失波动、稀有类召回为 0;宏平均 F1 远低于微平均(被少数类的“全错”拉低);稀有类被多数类吞并。
解决:
- 简单方法:先按官方 22 类划分跑主实验,把稀有类单列作 ablation,不要混进主指标。
- 进阶方法:对稀有类用加权采样 / focal loss / SMOTE 类合成,并做数据增强;在报告里明确区分宏/微指标。
- SOTA 方法:将稀有类视为 open-set/少样本问题,用元学习或检索式分类,或将其合并为高层级“血管/黏膜异常”类。
参考:https://ar5iv.arxiv.org/html/2307.08140(Figure 2 类分布)
⚠️ 坑点 4:没有患者/检查 ID——无法做患者级切分,泛化估计可能虚高(分类:数据泄漏)
问题:官方不提供患者或检查维度标识,同一病灶往往有多张近重复截图。随机切分时,近重复图像可能同时出现在训练与测试,导致指标虚高。
症状:测试 F1 很高但模型在真实独立数据上明显掉点;你怀疑“测试太好”却无法用患者分组验证。
解决:
- 简单方法:至少在报告里声明“无患者级划分”,并做一次“按文件名哈希分桶去重”后的敏感性测试。
- 进阶方法:用感知哈希(pHash/dHash)做近重复聚类,以聚类为单位切分 train/test。
- SOTA 方法:联系作者在匿名协议下获得分层线索,或在论文中把“潜在泄漏”列为明确的泛化局限。
参考:https://pmc.ncbi.nlm.nih.gov/articles/PMC13073358/(GastroMalign 以过程元数据缺失作为局限)
⚠️ 坑点 5:类名拼写/格式不统一,直接按名匹配会漏配(分类:标签理解 / 预处理陷阱)
问题:类别名存在下划线与空格混排(
Gastroesophageal_junction_normal z-line)、拼写差异(fork 里BarrettsvsBarett/Barrett、Small bowlvsSmall bowel_terminal ileum),跨源引用同一类别时极易失配。
症状:df["class"].isin(classes)匹配数少于预期;图像“找不到”或错配到别的类;标签统计对不上 8,000。
解决:
- 简单方法:以官方
GastroVision_metadata.csv的 class 列为唯一事实来源,用其value_counts()核对分布。- 进阶方法:写一个归一化函数(strip + 大小写折叠 + 统一空白),把外部清单也走同一归一化再
isin匹配。- SOTA 方法:把类名映射成整数 idx 的对照表(
class_map.json)固化到仓库,训练/评测全程引用该表,杜绝字符串漂移。
参考:https://github.com/DebeshJha/GastroVision(metadata.csv 与目录名)
⚠️ 坑点 6:各论文用不同类别子集与划分,数值不可直接比较(分类:评估误用)
问题:原论文 22 类/官方 Split、CaPTion 用 23 类、ELM 用全 27 类 + 自定义 7200/800 划分。把不同论文的 F1 直接做表格比较是无效的。
症状:你的 DenseNet-121 宏 F1 比某论文高 0.1,却只是因为它只算了几个好分的类;下游审稿要求解释差异。
解决:
- 简单方法:只把“同样用官方 22 类 + 官方 Split”的论文数值列入可比表格,其余标注“口径不同,仅供参考”。
- 进阶方法:逐篇记录其类别数、样本过滤阈值、划分比例,在比较表中显式列出这些列。
- SOTA 方法:建立统一的复现脚本(官方 Split + 固定随机种子),用同一评测协议重跑各家代表模型,产出可控对比。
参考:https://arxiv-vanity.com/papers/2307.08140 与 https://www.sciencedirect.com/science/article/pii/S0957417424017755
⚠️ 坑点 7:WLI/NBI 成像模式无行级标记,且分布不平衡(分类:偏倚陷阱 / 标签理解)
问题:绝大多数图像是白光(WLI),只有小部分窄带(NBI),且公开元数据不按行标注模式。模型可能学到“是否 NBI”的伪特征而非真实病灶特征。
症状:测试集若混入较多 NBI 图,模型整体掉点;混淆矩阵在息肉 vs 血管类上呈现奇怪的“亮度”模式。
解决:
- 简单方法:先做亮度/色调直方图聚类,粗略把疑似 NBI 子集在训练中标记为独立 group 或做域正则。
- 进阶方法:在预处理里加随机色彩抖动,弱化“模式指纹”,或对 NBI 图做专门的归一化增强。
- SOTA 方法:视 WLI/NBI 为两域,做域自适应/域泛化;在方法学里把“成像模式不平衡”写为已知偏倚与局限。
参考:https://pmc.ncbi.nlm.nih.gov/articles/PMC13073358/(i-SCAN/NBI 元数据缺失)
⚠️ 坑点 8:标签基于内镜外观、无病理金标准,类别边界主观(分类:标签理解 / 偏倚陷阱)
问题:Colorectal cancer、Mucosal inflammation 等类基于内镜所见而非活检病理,资深医生间也可能分歧。第三方重标时分歧需高年资仲裁(GastroMalign),说明原始标签存在边界主观性。
症状:某图像在两个模型/两个重标版本间标签不一致;把模型当“确诊器”会造成误诊级风险。
解决:
- 简单方法:明确只做“内镜所见分类”,不在论文里暗示组织病理级确诊。
- 进阶方法:做标签清洗时由两名临床人员抽样复核并报告一致率,将不确定样本排除出关键评测。
- SOTA 方法:把软标签/多医生标签用于训练,用不确定性估计输出风险分层,而非硬二值“良性/恶性”。
参考:https://pmc.ncbi.nlm.nih.gov/articles/PMC13073358/ 与 https://osf.io/84e7f/
§6.6 数据增强
安全 ✅:随机水平翻转、小幅旋转(12° 内)、轻微平移/缩放、亮度与对比度微调、随机裁剪中心化。这些不改变黏膜语义。
危险 ❌:强烈旋转(内镜有方向提示)、翻转轴向错乱、极端色相偏移(会把 NBI/WLI 混洗成假模式)、加文字/方框伪影、将 Normal 与疑似病灶的邻近帧机械复制造成标签污染。
§6.7 模型推荐表
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 复现官方基线 | DenseNet-121(预训练) | 官方最佳基线,宏 P 0.7388 |
| 通用分类 | EfficientNet-B0 / ResNet-50 | 轻量、易调、可作骨干 |
| 高精度 + 强预训练 | DenseNet-169 / 更大骨干 | 类多时容量更足,但需防过拟合 |
| 全局-局部融合 | CNN + Swin/ViT 混合 | CaPTion 2024 显示可提升不均衡下的指标 |
| 可解释辅助 | 附加 Grad-CAM / SHAP | 帮助临床核验关注区域 |
§6.8 硬件需求
| 阶段 | 建议配置 | 说明 |
|---|---|---|
| 最小实验 | CPU + 8 GB RAM | 可跑 DenseNet-121 数 epoch 到收敛困难 |
| 推荐训练 | 单张 8-12 GB GPU(如 RTX 3060/3080) | 32 batch、256px、DenseNet-121 可跑 |
| 快速迭代/大模型 | 24 GB+ 或 A100 | ViT/CNN-Transformer 混合与大 batch 需要 |
| 数据预处理 | 任何 | 主要为 resize + CSV 读取,轻量 |
§6.9 评估指标代码
from sklearn.metrics import (classification_report, accuracy_score,
precision_recall_fscore_support, matthews_corrcoef)
def evaluate(y_true, y_pred, labels):
acc = accuracy_score(y_true, y_pred)
P, R, F1, _ = precision_recall_fscore_support(y_true, y_pred, average="macro", zero_division=0)
mcc = matthews_corrcoef(y_true, y_pred)
print(f"accuracy={acc:.4f} macroP={P:.4f} macroR={R:.4f} macroF1={F1:.4f} MCC={mcc:.4f}")
print(classification_report(y_true, y_pred, labels=labels, zero_division=0))
return dict(acc=acc, macroP=P, macroR=R, macroF1=F1, mcc=mcc)
建议同时报告 macro 与 micro(overall)两组指标——GV 类不均衡下二者差异本身就反映偏倚(macro 低、micro 高 ≈ 稀有类被牺牲)。
§6.10 MLOps 笔记
- 版本固化:把类别→idx 映射、图像哈希清单、官方 Split 快照一并提交 git,防止日后 OSF 或 fork 改动导致不可复现。
- 划分元数据:训练前生成一份
manifest.csv(filename,split,class,hash),作为一切的单一事实来源。 - 监控漂移:上线前用 GV 测试集 + 一套内部真实数据做双通道验证;记录预测分数直方图,出现“罕见类突然不出现”多为临床漂移信号。
- 合规留痕:下载时保存 OSF 页面截图与 Terms、记录许可邮件往来,作为数据来源与授权证据。
§6.11 复现官方基线:端到端训练脚本
下方脚本给出“读取官方 22 类划分 → 训练 DenseNet-121 → 输出 macro/micro/MCC”的最小闭环。真实环境请先落实下载与路径(§6.2、§6.4),并锁定类别索引表。
import os, random, json, torch, pandas as pd
import numpy as np
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, models
torch.manual_seed(0); random.seed(0); np.random.seed(0)
DEV = "cuda" if torch.cuda.is_available() else "cpu"
DATA_ROOT = "./gastrovision"
SPLIT_DIR = os.path.join(DATA_ROOT, "Split")
class GVDataset(Dataset):
def __init__(self, rows, train=True, size=256):
self.rows = rows.reset_index(drop=True); self.train = train
self.tf = (transforms.Compose([transforms.Resize((size, size)),
transforms.RandomHorizontalFlip(), transforms.ToTensor(),
transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])])
if train else
transforms.Compose([transforms.Resize((size, size)),
transforms.ToTensor(),
transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])]))
def __len__(self): return len(self.rows)
def __getitem__(self, i):
r = self.rows.iloc[i]
return self.tf(__import__("PIL.Image", fromlist=["Image"]).Image.open(r["path"]).convert("RGB")), r["idx"]
df = pd.read_csv(os.path.join(DATA_ROOT, "GastroVision_metadata.csv"))
# 用官方 validate.csv 的类别集合定义 22 类;class_map.json 固化类别->idx
cls_set = set(pd.read_csv(os.path.join(SPLIT_DIR, "validate.csv"))["class"])
cls_map = {c: i for i, c in enumerate(sorted(cls_set))}
df["idx"] = df["class"].map(cls_map)
df["path"] = df.apply(lambda r: os.path.join(DATA_ROOT, r["class"], r["filename"]), axis=1)
df = df[df["class"].isin(cls_set)].copy()
# 简化的按文件名单名切分示意(真实划分请读官方 train.csv/val.csv/test.csv)
def load(name):
cs = pd.read_csv(os.path.join(SPLIT_DIR, name))
cols = cs.columns
fcol = "filename" if "filename" in cols else cols[0]
return set(cs[fcol].astype(str))
train_f, val_f, test_f = load("train.csv"), load("validate.csv"), set()
# 若官方未提供独立 test,可将 validate 再拆;此处示范 train/val 两个集合
tr = df[df["filename"].astype(str).isin(train_f)]
va = df[df["filename"].astype(str).isin(val_f)]
model = models.densenet121(weights=models.DenseNet121_Weights.IMAGENET1K_V1)
model.classifier = torch.nn.Linear(model.classifier.in_features, len(cls_map))
model = model.to(DEV)
opt = torch.optim.Adam(model.parameters(), lr=1e-4)
lossf = torch.nn.CrossEntropyLoss()
def dl(rows, sh): return DataLoader(GVDataset(rows, sh), batch_size=32, shuffle=sh, num_workers=2)
for epoch in range(10):
model.train()
for xb, yb in dl(tr, True):
opt.zero_grad(); lossf(model(xb.to(DEV)), yb.to(DEV)).backward(); opt.step()
model.eval(); tot = cor = 0
with torch.no_grad():
for xb, yb in dl(va, False):
p = model(xb.to(DEV)).argmax(1)
cor += (p.cpu() == yb).sum().item(); tot += len(yb)
print(f"epoch {epoch}: val acc {cor/tot:.4f}")
要点:① 类索引必须由 class_map.json 统一固化;② 官方历史拆分可能用 train.csv/validate.csv,并无统一命名的独立 test,务必读官方 Split/ 目录实际文件名核对;③ 想要复现论文的 DenseNet-121 数字,请用论文训练协议与图片尺寸,本脚本仅作结构示范。
复现预期结果对照
| 来源 | 说明 | 建议达到量级(官方口径) |
|---|---|---|
| 官方 DenseNet-121 基线 | 22 类、官方 Split | macro F1 ≈ 0.65,overall ≈ 0.82,MCC ≈ 0.80 |
| 本脚本 sanity | 10 epoch 快速验证 | 主要确认管道正确、能收敛到非随机水平即可 |
切勿把本脚本 10 epoch 的结果当作与官方基线的严格对比——收敛 epoch、超参、图像尺寸不一致都会改变数值(见坑点 6)。
§6.12 类名归一化实用函数
import re
def norm(s):
# 折叠大小写、统一空白与下划线、去多余分隔
s = str(s).strip().lower()
s = s.replace("_", " ").replace("-", " ")
s = re.sub(r"\s+", " ", s).strip()
return s
# 用法:把 CSV 的 class 与外部清单都过 norm() 再匹配,规避坑点 5 的拼写/空格差异
df["cls_norm"] = df["class"].map(norm)
external["cls_norm"] = external["cls"].map(norm)
joined = df.merge(external[["cls_norm","cls"]], on="cls_norm", how="left")
§6.13 从数据到可复现论文的检查清单
交付模型与论文前,逐项核对:
- [ ] 使用官方 22 类划分(或清晰声明自建划分)
- [ ] class_map.json 固化类别到索引,训练/评测同表
- [ ] 报告 macro 与 micro 双套指标 + MCC
- [ ] 说明图像分辨率/resize 协议与增强
- [ ] 说明无患者级划分,并给出近重复去重敏感性
- [ ] 记录随机种子、超参与硬件
- [ ] 引用 GastroVision 原论文(OSF Terms 强制)
- [ ] 商用场景确认已获 OSF 书面许可
- [ ] 指出“图像级分类 ≠ 临床病理诊断”的边界
一键自检脚本示意:可将上述勾选做成 checklist.json 并在 CI 中要求“发布前全勾”,防止把半成品当终稿。
§7 质量评估与局限性
§7.1 已知偏倚表
| 类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 类不均衡偏倚 | 最大类/最小类约 244:1,稀有类样本极少 | 高 | 官方只对 >25 样本的 22 类做基准;重采样/合成/少样本方法 |
| 中心/谱系偏倚 | 仅挪威+瑞典两北欧中心,人群单一 | 中-高 | 需跨数据集域外验证(HyperKvasir 等) |
| 成像模式偏倚 | WLI 为主、NBI 少量且无行级标记 | 中 | 色彩抖动、域自适应、在报告标注局限 |
| 标注主观性 | 无病理金标准,类别边界基于内镜外观 | 中 | 双医生抽样复核 + 高年资仲裁(参考 GastroMalign) |
| 采样偏倚 | 采集自转诊中心,重症/复杂比例偏高 | 中 | 明确应用范围,勿外推到基层筛查人群 |
§7.2 标注质量
标签由经验丰富的消化内镜医生标注并复核,协作方含初级医生与计算科学人员。官方未发布逐类一致率;第三方 GastroMalign(PMC13073358)以“双医生独立标注 + 高年资仲裁”方式重标子集,其存在仲裁步骤本身提示原始图像存在临床边界分歧。总体判断:标签临床可信、适合图像级分类训练,但不可当作组织病理级真值。
§7.3 泛化性表
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨中心(非北欧人群) | 高 | 未提供多族裔/多国样本 |
| 跨成像模式(NBI 占比变化) | 中-高 | NBI 子集小且不平衡(坑点 7) |
| 从静帧到真实视频流 | 高 | 官方为精选静帧,非连续视频 |
| 稀有病变(<25 样本) | 高 | 直接训练难收敛(坑点 3) |
| 面向临床确诊决策 | 高 | 无病理金标准,仅图像级所见(坑点 8) |
§7.4 伦理
数据经挪威隐私数据保护局批准、REC 东南挪威伦理豁免、符合 GDPR;图像完全去标识化,无患者标识或再识别密钥。使用方仍应遵守许可条款(坑点 1),并在面向患者/临床的任何产出中遵循独立临床验证与监管审批。
§7.5 公平性
数据集未提供人口学字段(年龄/性别/族裔),无法直接做亚组公平性分析;两中心人群同质化程度较高,作为泛化证据时需谨慎。做公平性研究时应组合多源数据并显式声明这一局限。
§7.6 数据漂移
内镜设备更新、NBI 普及率提升、以及现实临床中心队列构成变化都会使训练分布漂移。建议对影像亮度分布、类别频次、成像模式占比做周期监测;GV 静态快照无法反映未来设备更替。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式数据 | ✅ | 每行一图 + class 标签,属整洁图像清单 |
| 2 | 唯一标识 | ✅ | filename 可作唯一主键 |
| 3 | 特殊字符 | ⚠️ | 类名含下划线/空格/复合拼接,需归一化(坑点 5) |
| 4 | 重复行 | ⚠️ | 可能存在近重复图像帧,需去重/分组 |
| 5 | 缺失编码 | ⚠️ | 患者/过程/模式级元数据系统性缺失,需如实声明 |
| 6 | 标签标识 | ✅ | CSV class 列 + 文件夹目录双重标识 |
| 7 | 罕见类分组 | ⚠️ | 罕见类存在但未官方分组;建议按 >25 样本分组 |
| 8 | 偏倚评估 | ✅ | 类不均衡/中心/模式偏倚已在 §7.1 讨论 |
| 9 | 数据字典 | ✅ | §4.1 提供字段字典 |
| 10 | 信息性缺失解释 | ✅ | §4.5 说明系统性元数据缺失 |
| 11 | 设备记录 | ⚠️ | 仅厂商级(Olympus/Pentax),无行级型号/子模式 |
| 12 | 共线性 | ⚠️ | 解剖标志与病灶可能视觉相关(如 GEJ 与 z-line 复合类) |
| 13 | 编码映射 | ✅ | §2.1/§2.1b 提供 ICD-11/SNOMED 映射 |
| 14 | 时间戳处理 | ❌ | 无时间戳/时间元数据 |
| 15 | 划分建议 | ✅ | §5 给出官方划分与策略 |
| 16 | 泄漏讨论 | ✅ | §5.3/坑点 4 讨论患者级与近重复泄漏 |
| 17 | 标签分布 | ✅ | §3.2 完整 27 类分布 |
| 18 | 测量偏倚 | ⚠️ | WLI/NBI、转诊人群成像差异(§7.1) |
| 19 | 外部验证建议 | ✅ | §5.5 跨 HyperKvasir 等外推建议 |
| 20 | 版本记录 | ⚠️ | OSF/GitHub 有更新时间线,但无正式语义版本号 |
| 21 | 预处理脚本 | ✅ | 官方提供训练脚本,本 Wiki 提供 DataLoader/清洗代码 |
| 22 | 合规要求 | ✅ | §6.5 坑点 1 详述许可证附加限制 |
| 23 | 多模态对齐 | ✅ | 本数据集为单一图像模态,无跨模态对齐问题 |
| 24 | 去标识化 | ✅ | 完全去标识化,伦理豁免公开可查 |
DAIMS 评分:19.5 / 24
评分解读:GastroVision 在图像级“标签标识、分布公开、偏倚讨论、合规留痕、去标识化”等维度做得扎实,公开给出类分布图、官方划分与复现代码,伦理文件可查,是少见的“几乎开箱即用”的图像分类数据集。扣分主要落在结构性元数据缺失:无患者/检查/时间戳(3 项)、类名格式不规范与可能近重复(2 项)需要使用方自行归一化与去重、设备/成像模式仅有粗粒度记录。
对你意味着什么:若你追求“公平比较”,务必锁死官方 22 类划分与官方 Split,并做近重复去重敏感性分析;若你把 macro F1 当主指标,先接受稀有类带来的偏低值,别误读为模型失败;若你要上线商用/临床,先解决许可证附加限制,再用外部数据集 + 内部数据做双通道验证,切勿把“图像级内镜分类”拔高为“组织病理确诊”。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| HyperKvasir / Kvasir-Capsule | Simula | 多类 GI 分类(迁移/域外) | 论文为准 | 未提供统一的标准化跨集评测 | 标签体系不同需先映射,不能直接对齐比较 |
| GPT-4V 评测集 | medRxiv 2024 第三方 | GV 测试集多类分类 | macro F1 6.81% | 远低于 CNN 基线 | 通用大模型在消化内镜分类上显著弱于专用 CNN |
| GastroMalign 重标 | PMC 2024 第三方 | 27 类映射 4 级风险分层 | 论文为准 | 自定义协议 | 需双医生独立标注 + 高年资仲裁处理主观标签 |
说明:GastroVision 属较新数据集(2023),尚无大规模“跨数据集标准化排行榜”;上表列出的是已发表的第三方程应用。表格内“性能指标/相对变化”栏以论文原文口径为准,因各家评测协议不同,不宜跨行直接对比。
进一步解读:宏平均与微平均为何差距明显
GV 类不均衡下,模型常把“好分的多数类”(normal mucosa、normal stomach、accessory tools)识别得很好,却牺牲“样本少但难分”的病灶类,导致:
- micro(overall):把所有预测累计后算——被多数类主导,往往偏高;
- macro:对每类先算再取平均——稀有类每错都按比例拖累,往往偏低。
官方 DenseNet-121 的 overall≈0.82 而 macro F1≈0.65 的落差,正说明偏倚主要落在少样本/难分病灶上。因此评估报告应两套都报,并用 MCC 作为不受类别先验支配的综合指标。
与第三方子集重标的差异说明
GastroMalign 等第三方研究并非逐像素重画 GV 标签,而是在“GV 原始 27 类”之上按恶性风险再分组/由两名消化内科医生重判存在歧义的图像,并交给高年资医生仲裁。这类衍生标签协议与 GV 官方图像级标签不同,不能当作 GV 自身的标注一致率数据引用。想评估原始标注的可重复性,需要自行抽样做双医生复标并报告 kappa。
伦理与使用边界速记
- 允许:研究、教学、模型评测、论文复现。
- 受限:商业用途需 OSF 书面许可(坑点 1)。
- 边界:数据不替代病理确诊;任何“AI 诊断消化道疾病”的对外宣称都需监管验证。
- 引用:任何出版物须引用原论文(OSF Terms)。
§8 基准性能与生态
§8.1 排行榜
下表数值口径差异显著(类别子集、划分、预处理各不相同),不能直接横向比较;逐行核实口径后仅作趋势参考。
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| — | DenseNet-121(预训练) | macro P 0.7388 / macro R 0.6231 / macro F1 0.6504;overall 0.8203;MCC 0.7987 | 2023 | 预训练 + 官方 22 类划分 | Jha et al., 2023, ICML ML4MHD Workshop, DOI:10.1007/978-3-031-47679-2_10 | https://github.com/DebeshJha/GastroVision |
| — | CNN-Transformer(DenseNet201+Swin) | acc 0.8386 / macro F1 0.8324 / MCC 0.8191 | 2024 | 局部 CNN + 全局 Swin 融合 | Subedi et al., 2024, CaPTion @ MICCAI 2024, Springer | 论文附录 |
| — | GPT-4V | macro F1 6.81%(macro P 11.15% / macro R 9.12%);micro 20.30%;MCC 0.1478 | 2024 | 多模态大模型零样本/少样本 | Evaluating General VLMs for Clinical Medicine, medRxiv 2024, DOI:10.1101/2024.04.12.24305744 | — |
| — | Model soup(DenseNet-121) | 较基线 macro P +2.4 个百分点 | 2025 | 多超参权重平均 + GAN/增强缓解不均衡 | Fahad et al., 2025, Biomedical Signal Processing and Control, DOI:10.1016/j.bspc.2024.107260 | — |
可比性警示:原论文仅对 22 类(>25 样本)做官方划分基准;CNN-Transformer 声称的 macro F1 0.83 明显高于官方 DenseNet-121 的 0.65,差异很可能来自不同类别子集/划分/评测协议(见坑点 6),引用时应指出这一口径差异,不得简单断言“SOTA 已超越基线”。
§8.2 SOTA 总结与选型建议
在“官方 22 类、可比口径”下,预训练 DenseNet-121 的 macro F1≈0.65、overall≈0.82 是最稳健的可对照锚点。若你关注高准确率的整体分类(多数类),overall 指标已接近 0.82;若你关注对稀有且关键病变的识别,macro F1 约 0.65 说明还有大量空间——这正是不均衡方法(重采样、focal、model soup、GAN 合成)能带来实际提升的切入点。选型建议:以 DenseNet-121/EfficientNet-B0 为骨干起步,需要更高稀有类表现时再引入不均衡专项技术,最后用可解释模块(Grad-CAM/SHAP)做临床核验。
§8.3 评测协议
推荐协议:① 锁死官方 Split 的 22 类 train/val/test;② 统一 resize(如 256×256)与 ImageNet 归一化;③ 报告 macro P/R/F1 与 micro(overall)/acc 与 MCC 三组;④ 随机种子固定并在多次重复中给均值和方差;⑤ 做近重复去重敏感性分析。禁止把不同划分/类子集的数值并排比较。
§8.4 相关数据集
| 数据集 | 关系 | 用途 |
|---|---|---|
| Kvasir | GV 生态前驱,8 类 | 泛类对照、迁移 |
| HyperKvasir | 同团队大库,23 类 + 视频帧 | 域外验证、类别映射 |
| Kvasir-Capsule | 视频胶囊,13+ 类 | 与 GV 互补覆盖胶囊端 |
| Kvasir-SEG | 息肉分割 | 分割任务迁移,与 GV 互补 |
| GastroMalign | 由 GV 衍生出的风险分层工作 | 恶性风险评估方法参考 |
| ETIS-LaribPolypDB / CVC 系列 | 息肉分割评测 | 单独分割验证 |
§8.5 关键论文 Top5-10
- Jha, Sharma, Dasu, Tomar, Hicks, Bhuyan, Das, Riegler, Halvorsen, Bagci, de Lange. GastroVision: A Multi-class Endoscopy Image Dataset for Computer Aided Gastrointestinal Disease Detection. ICML 2023 Workshop ML4MHD, Springer LNCS, pp.125-140, 2023. DOI: 10.1007/978-3-031-47679-2_10 — 首次发布 8,000 张 / 27 类数据集与官方 22 类基线。
- Subedi, Regmi S., Regmi N., Bhusal, Bagci, Jha. Classification of Endoscopy and Video Capsule Images Using CNN-Transformer Model. CaPTion @ MICCAI 2024, Springer, 2024. DOI: 10.1007/978-3-031-73376-5_3 — DenseNet201+Swin 混合在 GV 与 Kvasir-Capsule 上的应用。
- Evaluating General Vision-Language Models for Clinical Medicine. medRxiv, 2024. DOI: 10.1101/2024.04.12.24305744 — 用 GV 测试集评估 GPT-4V,显示通用大模型显著弱于专用 CNN。
- Fahad, Mobeen, Imran, Daudpota, Kastrati, Cheikh, Ullah. Deep insights into gastrointestinal health: A comprehensive analysis of GastroVision dataset using CNNs and explainable AI. Biomedical Signal Processing and Control, vol.102, 2025. DOI: 10.1016/j.bspc.2024.107260 — Model soup + XAI,较基线 macro P +2.4 个百分点。
- GastroMalign: Vision Transformer-Based Framework for Early Detection and Malignancy-Risk Stratification. PMC, 2024. PMC13073358 — 将 GV 27 类映射为 4 级恶性风险,双医生重标 + 仲裁。
- Detection of various gastrointestinal tract diseases through a deep learning method with ensemble ELM and explainable AI. Expert Systems with Applications, 2024. (Elsevier/ESWA,2024;见 ScienceDirect 页 S0957417424017755)— ELM 集成 + 全 27 类自定义划分(7200/800)。
注:第 6 条卷号/DOI 以出版社页为准,引用前请复核。
§8.6 社区活跃度
GastroVision 自 2023 年发布后快速进入 GI-AI 研究引文网络(Google Scholar 引用快照 70+,检索于 2026-09),作为“多类内镜分类”基准被 CaPTion、BSPC、ESWA、PMC 等多篇工作采用。GitHub 主仓库持续维护(2024-09 仍更新 README),OSF 页有更新记录,属于活跃度中上的医学影像数据集。
§8.7 生态快照表
| 资源 | 类型 | 链接 | 备注 |
|---|---|---|---|
| OSF 项目页 | 数据托管 | https://osf.io/84e7f/ | 官方下载、Terms |
| OSF 主 ZIP | 数据文件 | https://osf.io/gvx3q | 约 1.8 GB |
| GitHub 主仓库 | 代码/划分 | https://github.com/DebeshJha/GastroVision | 训练脚本 + Split |
| arXiv 论文 | 论文 | https://arxiv.org/abs/2307.08140 | 开放获取 |
| Kaggle 镜像 | 第三方镜像 | https://www.kaggle.com/datasets/orvile/gastrovision-gastrointestinal-disease-detection/data | CC BY 4.0 标注 |
| PMC 衍生工作 | 论文 | https://pmc.ncbi.nlm.nih.gov/articles/PMC13073358/ | GastroMalign |
官方基线的逐类表现(DenseNet-121,测试支持量)
下列为官方最佳基线在部分类别上的类级指标与测试支持量,反映“少数难分病灶”的识别瓶颈:
| 类别 | Precision | Recall | F1-score | 测试支持量 |
|---|---|---|---|---|
| Accessory tools | 0.93 | 0.96 | 0.95 | 253 |
| Normal mucosa large bowel | 0.81 | 0.87 | 0.84 | 293 |
| Normal stomach | 0.90 | 0.86 | 0.88 | 194 |
| Small bowel_terminal ileum | 0.86 | 0.85 | 0.85 | 169 |
| Colon polyps | 0.78 | 0.87 | 0.82 | 163 |
| Pylorus | 0.80 | 0.92 | 0.86 | 78 |
| Duodenal bulb | 0.72 | 0.76 | 0.74 | 41 |
| Barrett esophagus | 0.55 | 0.32 | 0.40 | 19 |
| Resected polyps | 0.33 | 0.11 | 0.17 | 18 |
| Retroflex rectum | 0.75 | 0.43 | 0.55 | 14 |
数据来源:arXiv:2307.08140 表 3。注意支持量基于其测试划分,与你复现时若采用不同划分会有差异(坑点 6)。
与 Kvasir 生态的标签对齐难点
跨数据集评测时(§5.5),GV 与 HyperKvasir 标签体系并不一一对应:
| GV 类别 | HyperKvasir 对应类 | 是否等价 |
|---|---|---|
| Colon polyps | Polyps | 接近,但 GV 为静态精选图 |
| Barrett esophagus | Barrett’s | 拼写不同、需归一大写 |
| Small bowel_terminal ileum | Terminal ileum | 命名不同需映射 |
| Pylorus | Pylorus | 可直接对齐 |
| Gastroesophageal junction_normal z-line | Z-line | 复合命名需拆分对齐 |
对齐时一律先做类名归一化(§6.12)再人工核对语义,否则“漏对齐/错对齐”会污染跨数据集指标。
§9 相关资源与引用
§9.1 官方资源
- 数据下载:https://osf.io/84e7f/
- 划分与代码:https://github.com/DebeshJha/GastroVision
- 论文(arXiv):https://arxiv.org/abs/2307.08140
- 论文(Springer):DOI 10.1007/978-3-031-47679-2_10
- 数据托管组织:OSF(Center for Open Science)
§9.2 BibTeX 完整引用
@inproceedings{jha2023gastrovision,
title = {GastroVision: A Multi-class Endoscopy Image Dataset for Computer Aided Gastrointestinal Disease Detection},
author = {Jha, Debesh and Sharma, Vanshali and Dasu, Neethi and Tomar, Nikhil Kumar and Hicks, Steven and Bhuyan, Manas Kamal and Das, Pradip K and Riegler, Michael A and Halvorsen, P{\aa}l and Bagci, Ulas and de Lange, Thomas},
booktitle = {ICML Workshop on Machine Learning for Multimodal Healthcare Data (ML4MHD)},
pages = {125--140},
publisher = {Springer},
year = {2023},
doi = {10.1007/978-3-031-47679-2_10}
}
提示:本 BibTeX 仅作学术排版引用;OSF 页 Terms 要求任何使用该数据的出版物均须引用原论文。
§9.3 引用指南
引用该数据集优先使用上节 BibTeX;正文行文可用“GastroVision(Jha et al., 2023)”。若你同时使用 GitHub 代码与划分,建议在脚注补充 GitHub 仓库链接与访问日期,确保可复现。
§9.4 常见问题(FAQ)
Q1:GastroVision 到底有多少类别、多少张图?
全量发布为 27 类 / 8,000 张;官方基准实验只用了样本数大于 25 的 22 类。不同 fork 的 README 曾写“36 类 / 6,169 张”(见坑点 2),以 OSF ZIP 实际内容与论文为准。
Q2:能下载到哪里?
OSF 官方页(https://osf.io/84e7f/)下载主 ZIP;划分与代码在 GitHub(DebeshJha/GastroVision);另有 Kaggle 第三方镜像(标注 CC BY 4.0)。
Q3:能用于商业产品吗?
官方 OSF Terms 限定研究与教育用途,商业使用须先邮件取得书面许可(paalh@simula.no),详见坑点 1。
Q4:有分割掩码或病灶框吗?
没有。GastroVision 是图像级分类数据集,无边界框/掩码,也不含组织病理金标准(坑点 8)。
Q5:为什么我的 macro F1 比官方低/高?
很可能因为类别子集或划分不同(22/23/27 类、官方或自定义划分)。务必锁死官方 Split + 官方 22 类再做对比(坑点 6)。
Q6:有没有患者级划分防止泄漏?
官方不提供患者/检查 ID。需要自行做近重复去重与 group-aware 切分来降低泄漏(坑点 4、§5.3)。
Q7:如何复现论文最佳基线 DenseNet-121?
用官方 22 类划分 + 预训练 DenseNet-121 + 论文训练协议;§6.11 提供可运行骨架,达到量级参考 macro F1≈0.65、overall≈0.82。
Q8:数据在 WLI/NBI 上平衡吗?
不平衡且无行级模式标记。绝大多数是 WLI,少量 NBI;训练需注意“模式伪影”(坑点 7)。
§9.5 版权与致谢速记
- GastroVision 数据版权归其发布团队与机构所有,按 OSF 下载页条款授权使用。
- 使用即表示同意:仅用于研究/教育、商用需书面许可、出版物须引用原论文。
- 若你的项目基于本数据集产出工具或论文,请按 §9.2 BibTeX 引用并保留数据溯源(中心、设备、许可)。
- 遇到图像质量或类别疑问,优先查看官方 GitHub Issues/讨论,而非第三方 fork 的说明。
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面为人工撰写 + 生成式 AI 辅助编辑而成。涉及的模型包括:LLM(用于信息结构化与文本草拟)、代码生成模型(用于 §6 的预处理/DataLoader/评估代码示例)。所有医学背景、规模数字、基准与许可事实均由人工依据公开来源核对。
§10.2 AI 参与范围
AI 用于:将研究笔记组织成章节、生成可复现代码骨架、草拟对比表格文案。AI 不参与:ICD-11/SNOMED 编码判定、临床任务定义、数据集规模与基准数字的最终裁决、许可合规结论——这些均由具有领域背景的编辑依据可查来源复核。
§10.3 输入来源列表
本页面核心事实依据以下公开来源(非穷尽):
- Jha et al., GastroVision 论文(arXiv:2307.08140):https://arxiv.org/abs/2307.08140
- Springer LNCS 正式版:DOI 10.1007/978-3-031-47679-2_10
- OSF 官方项目页与 Terms:https://osf.io/84e7f/wiki/
- OSF GastroVision Project(作者页):https://osf.io/z82ca/
- 官方 GitHub 仓库:https://github.com/DebeshJha/GastroVision
- Kaggle 官方镜像页:https://www.kaggle.com/datasets/orvile/gastrovision-gastrointestinal-disease-detection/data
- GastroMalign(PMC):https://pmc.ncbi.nlm.nih.gov/articles/PMC13073358/
- Subedi et al., CaPTion 2024(arXiv:2408.10733)
- Fahad et al., BSPC 2025:https://www.sciencedirect.com/science/article/pii/S1746809424013181
- ELM 集成研究(ESWA 2024):https://www.sciencedirect.com/science/article/pii/S0957417424017755
- Evaluating General VLMs for Clinical Medicine(medRxiv 2024)
- Google Scholar 引用页(GastroVision):引用快照检索于 2026-09
- dblp 记录:https://dblp.org/pid/352/6774.html
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 医学背景与编码映射 | 医学编辑部(消化内镜方向) | 核对 ICD-11/SNOMED 与类别的临床对应 | ✅ 已通过 |
| 规模数字与类分布 | 数据工程编辑部 | 与 OSF/GitHub/Kaggle 交叉核对 | ✅ 已通过 |
| 许可证与合规 | 数据工程编辑部 | 核对 OSF Terms of Use | ✅ 已通过 |
| 代码示例 | 数据工程编辑部 | 逻辑走查(未连接真实下载执行) | ✅ 已通过 |
| 基准与引用 | 医学编辑部 | 与论文原文比对 | ✅ 已通过 |
§10.5 AI 生成章节标注
正文所有章节均在 AI 草稿基础上经人工审校修订;§6 代码与坑点由数据工程师逐条核对后定稿,无未经人工复核的整段机械输出。
§10.6 最后人工审核日期
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
