DICOM 与多模态证据
把一张胸部 CT 截图拖给模型,确实可能得到一段像样的描述。但这张图属于哪次检查、来自哪组序列、是否按正确方向和 spacing 处理,往往没有写进那段描述。没有这些信息,输出无法被定位、复核或重放。
一张 CT 截图不是完整影像证据。DICOM 用 Patient-Study-Series-Instance 层次组织对象,图像解释还依赖空间方向、像素间距、层厚、窗宽窗位、设备和重建信息。DICOMweb 提供 QIDO-RS 查询、WADO-RS 取回、STOW-RS 存储等 Web 接口。S04
为什么文本 Agent 不够
Section titled “为什么文本 Agent 不够”临床试验条件可能依赖可测量病灶、既往影像日期或病理结果。只把报告切片进向量库会丢失“报告对应哪次检查、哪组序列、哪一处病灶”;只给模型几张 PNG 又可能丢失三维连续性和定量标尺。
多模态 Agent 因此不应“自己看所有像素”,而应调用受版本管理的影像工具,返回结构化 Evidence:Study/Series/SOP UID、帧/切片、区域、测量、处理参数、模型版本和限制。原图保留在受控影像系统,Agent 状态只保存最小引用。
- 报告链:DiagnosticReport/报告文本 → 提及/测量 → 原始句段。
- 像素链:DICOM 对象 → 预处理 → 模型/算法输出 → 区域与测量。
两条链不一致时输出 conflict,不能让模型静默选择一个。预处理是模型的一部分:重采样、窗口、方向和 series 选择必须进入版本与哈希。
| 方案 | 强项 | 风险 |
|---|---|---|
| DICOMweb | 标准化查询/取回/存储 S04 | 网络接口不保证图像语义已选对 |
| TCIA | 癌症影像研究 collection S11 | collection 许可、模态和标签不同 |
| MedGemma 4B 多模态 | 医疗图像/文本开发基线 S14S15 | 必须针对任务适配、验证,不能直接诊断 |
| HealthAgentBench | 2D、3D、病理执行任务 S33 | benchmark 成功不等于临床有效 |
python3 labs/run_lab.py --lab 07实验不处理真实图像,而是验证一份影像 manifest:UID 层次、像素 spacing、处理版本和内容哈希必须齐全;再把模型发现写成带 region locator 的 Evidence。这样在没有大模型和 DICOM 文件时仍能测试证据合同。
先用完整 manifest 跑出基线,接着一次只删 spacing 或处理版本,最后检查验证器是否在模型调用之前就拒绝输入。这个实验要证明的是输入链可审计,不是图像模型的诊断能力。
从一次胸部 CT 到一条可复核 Evidence
Section titled “从一次胸部 CT 到一条可复核 Evidence”Imaging Agent 首先用 QIDO-RS 按患者 scope 和检查日期查询 Study,不直接下载全院影像。根据模态、body part、SeriesDescription 和协议选择候选 Series,选择本身要记录规则与候选列表。WADO-RS 取回所需实例后,预处理器验证方向与 spacing,按固定版本重采样和窗口化,再交给适配的影像工具。
工具不返回“患者符合试验”,只返回受限发现,例如 lesion measurement、region locator、置信/质量标记和不能判断的原因。Eligibility Agent 将其与报告 Evidence 和 TrialCriterion 合并。若影像测量与报告不一致,状态为 conflict,工作台同时展示报告句段和切片区域,最终由人工判断。
这条链的每一步都有版本:DICOM instance、series selection policy、预处理、模型权重、后处理和 Evidence schema。只记模型版本会让结果不可重放。输入 hash 还应包含所选实例 UID 顺序和关键 tag,而不是只哈希 PNG 缩略图。
2D、2.5D、3D 并不是同一输入
Section titled “2D、2.5D、3D 并不是同一输入”2D 模型看单张图,部署容易,但可能丢失病灶跨层连续性;2.5D 把邻近切片组成通道,是折中;3D 模型处理体积,显存和预处理更重。选择取决于具体任务和验证证据,不能因为模型支持图片就把 CT 随机截屏。
whole-slide pathology 的数量级又不同:单张巨幅图需要切 tile、组织检测、坐标汇聚和 slide-level 结果。HealthAgentBench 将 2D、3D 和病理作为不同环境是合理的提醒。S33 MedAgent Forge 的多模型工具箱应为每种模态定义独立 adapter 和 TaskPackage,而不是一个“vision_agent”包打天下。
去标识与数据最小化
Section titled “去标识与数据最小化”DICOM PHI 可能存在标准 tag、私有 tag、文件名、附件和像素烧录文本。去标识策略必须基于 collection/机构和用途验证;删除 PatientName 远远不够。UID 是否重映射也影响跨模态关联,需在可追溯与隐私之间设计映射服务。日志与截图同样可能泄露信息。
公开教程最安全的路径是用完全合成的 manifest 和无患者来源的公开小样例;真实 TCIA collection 仅在许可、引用和使用条款逐项确认后由用户本地下载。S11 不把影像复制到教程仓库,也不把临时缓存提交 Git。
模型质量之外的影像失败
Section titled “模型质量之外的影像失败”模型可能在正确像素上预测错,但系统还可能在模型之前就选错 Study、错 Series、方向翻转、spacing 丢失、窗设置错或把旧检查当新检查。评测因此要分层:输入选择、预处理不变量、模型任务指标、Evidence 引用和端到端判断。只报告模型 AUROC 无法覆盖工程链。
工作台默认不把数百切片塞满页面。criterion 行显示结论与影像证据摘要,展开后呈现检查日期、Series、关键切片/区域、测量、模型与限制,并提供在受控 viewer 中打开原检查的链接。机器 overlay 与原图可切换,避免用户把热图误当确诊依据。
影像 adapter 验收要确认:给定 Study UID 可重复得到相同候选 Series/instance 清单,方向、spacing、像素类型和单位都经过验证,不支持的 transfer syntax/模态明确失败,预处理 manifest 可重放,模型 output locator 能回到原实例,patient scope 和下载上限受控,临时文件在任务结束按政策清理。任何一项只在 notebook 里隐式完成,都不算生产合同。
章末练习是故意交换两组 SeriesDescription、删除 spacing、把旧 Study 日期改新,观察哪个验证层应最先拒绝。答案不应是“让视觉模型自己判断”,而是输入质量门先阻止错误传播。
延伸实践可以使用许可明确的公开无患者样例在本地验证 QIDO/WADO 客户端,但结果只写接口兼容;在没有任务金标和影像专家评估前,不写模型诊断能力。
所有示例截图也要登记来源、许可、处理步骤与生成日期,禁止包含患者或账户标识。这同样适用于视频录屏与终端输出。
- DICOM header 去标识不代表像素无烧录姓名,也不代表私有 tag 安全。
- 2D 模型不能自动理解 3D 体积;抽帧策略会改变结果。
- 图像模型的 benchmark 指标不能替代具体设备、协议、亚组的外部验证。
- 教材不提供影像诊断建议,输出只进入候选筛选的人审工作单。
完整的来源类型、用途与边界见教材来源注册表。
资料与延伸阅读
Section titled “资料与延伸阅读”- DICOMweb:从 QIDO-RS、WADO-RS、STOW-RS 的职责划分理解影像 Web 接口。
- The Cancer Imaging Archive:公开影像也需要按具体 collection 核对许可、标签和引用要求。
- MedGemma 与 官方开发文档:把它们当作模型与适配的起点,不把模型卡当作临床验证。
- HealthAgentBench:观察 2D、3D、病理任务为什么需要不同的环境和评测。