1. 项目缘起与核心问题拆解
1.1 这个基准到底在解决什么痛点
腹部 CT 的影像报告撰写,是放射科日常工作中最耗时、最容易出不一致结论的环节之一。一个典型的腹部增强 CT 平扫加三期增强,动辄四五百层图像,放射科医生需要逐层浏览,识别肝脏、胰腺、肾脏、脾脏、肾上腺、腹膜后淋巴结以及胃肠道壁的异常,然后把这些发现组织成一段结构化的文字描述。问题在于,不同年资的医生对同一个病灶的测量、定位、定性描述差异极大,而报告的质量又直接决定了后续临床决策的走向。
DeepTumorVQA2026 这个基准想做的事情,是把“影像报告自动化”这个笼统的目标,拆解成一个可量化、可复现、可分层评估的视觉问答任务集合。它不是在做一个端到端的报告生成器,而是在构建一套评测体系——给定一段 3D 腹部 CT 体数据和一组围绕该体数据的临床问题,模型需要输出准确的答案。这些答案最终会被组装成一份结构化报告。换句话说,它把“写报告”这件复杂的事,降解成了“回答一系列关于病灶位置、大小、密度、强化方式、毗邻关系的问题”。
这个思路的价值在于:报告生成如果直接端到端训练,评测时很难定位错误到底出在感知、推理还是语言组织上。而 VQA 的形式天然带有可解释性——模型答错了“病灶位于肝右叶还是肝左叶”,你立刻知道是空间定位出了问题;答错了“动脉期强化还是门脉期强化”,你知道是时序特征提取没做好。这种可诊断性,是纯报告生成评测给不了的。
适合关注这个方向的人包括:做医学影像 AI 的研究生和工程师、放射科里对 AI 工具有兴趣的临床医生、以及做多模态大模型评测的研究者。哪怕你不做腹部 CT,这套分层式评测的设计思路也可以迁移到胸部 CT、脑 MRI 等其他模态。
1.2 为什么是 3D CT 而不是 2D 切片
这里必须解释一个关键选择。很多医学 VQA 数据集是基于 2D 切片或者单张 X 光片的,标注成本低、模型也好处理。但腹部 CT 的核心诊断信息大量存在于三维空间关系和增强时相变化中。举个最直接的例子:一个肝细胞癌的典型表现是“动脉期明显强化、门脉期及延迟期强化减退”,这个“快进快出”的特征必须跨三个时相的 3D 体数据才能判断。如果你只给模型一张动脉期切片,它永远学不会这个逻辑。
再比如病灶的毗邻关系——肿瘤是否侵犯门静脉主干、是否贴近下腔静脉、是否突破肝包膜——这些都需要在 3D 空间里追踪血管走行和病灶边界。2D 切片上看起来“挨着”的结构,在 3D 里可能隔着一层脂肪间隙。所以 DeepTumorVQA2026 坚持用 3D 体数据作为输入单元,这是由腹部 CT 的诊断逻辑决定的,不是赶时髦。
代价也很明显:3D 体数据的内存占用和计算量远大于 2D。一个 512×512×400 的 CT 体数据,如果用 float32 存储,单通道就是约 400MB。如果做多时相,直接翻三到四倍。这就要求模型架构和训练策略必须针对 3D 做专门设计,不能简单把 2D 模型堆叠了事。
1.3 分层式评测的设计哲学
“分层式”这三个字是这个基准的灵魂。它把 VQA 任务按照认知难度和临床相关性分成了若干层级,我理解大致是这样的逻辑:
- 感知层:病灶有没有、在哪、多大。这是最基础的,对应放射科住院医师第一年的训练目标。
- 属性层:病灶的密度、边界、强化方式、内部成分(坏死、出血、钙化)。这需要模型理解 CT 值的物理意义和增强扫描的药代动力学。
- 关系层:病灶与周围结构的关系,比如是否侵犯血管、是否引起胆管扩张、有无淋巴结肿大。
- 推理层:基于上述信息给出鉴别诊断倾向或分期判断。这一层最接近主治医师的思维。
这种分层的好处是,你可以清楚地看到模型在哪一层开始掉链子。如果感知层准确率 95%,属性层掉到 70%,那说明模型的特征提取能力够但医学知识注入不足。如果关系层崩了,那多半是 3D 空间建模有问题。评测报告出来,改进方向一目了然。
2. 数据构建与标注体系的核心细节
2.1 3D CT 体数据的预处理流水线
拿到原始 DICOM 数据只是第一步,真正决定基准质量的是预处理。DeepTumorVQA2026 这类基准在数据准备阶段通常要过以下几道工序,我按实际操作顺序拆开讲。
第一道:层厚归一化与重采样。不同设备的腹部 CT 层厚从 0.625mm 到 5mm 不等。如果不做重采样,模型会学到“层厚越薄病灶越大”这种荒谬的伪相关。常见做法是把所有体数据重采样到各向同性的 1mm 或 1.5mm 体素。这里有个坑:重采样插值方式的选择。对于 CT 值这种有物理意义的连续量,三线性插值通常够用;但如果要做病灶分割掩膜的同步重采样,必须用最近邻插值,否则掩膜边缘会出现灰度过渡,破坏标签的离散性。
第二道:强度归一化。CT 值的单位是 HU,范围大致从 -1000(空气)到 +3000(金属植入物)。直接把原始 HU 喂给网络,梯度会被大数值主导。标准做法是截断到腹部窗宽窗位,比如 WL=50、WW=400,然后线性映射到 [0,1] 或 [-1,1]。但这里有个细节:肝脏窗、胰腺窗、腹膜后窗的窗宽窗位不同,如果统一用一个窗,胰腺的小病灶对比度会损失。我的经验是,在数据增强阶段随机在几个临床常用窗之间切换,让模型学会适应不同窗宽下的表现,这比固定单窗的泛化性好很多。
第三道:多时相对齐。腹部增强 CT 通常有平扫、动脉期、门脉期、延迟期四个时相。患者呼吸运动会导致不同时相之间肝脏位置有偏移。如果不做配准,模型在回答“动脉期强化程度”时,可能取到的体素在门脉期已经跑到病灶外面去了。常用的做法是基于肝脏掩膜做刚性或仿射配准,把各时相拉到同一空间坐标系。这一步的精度直接决定了属性层问题的上限。
注意:配准不要用全身体数据做,先用器官分割掩膜限定范围,否则肠道气体和脊柱的刚性结构会把配准带偏。
2.2 问题-答案对的生成策略
VQA 基准的核心资产是问答对。DeepTumorVQA2026 的问答对生成,我推测采用了“模板+专家校验”的混合路线,而不是纯人工从零写。原因很简单:腹部 CT 的临床问题高度模式化,一个病灶的位置、大小、密度、强化方式,问法就那么几种,纯人工写效率太低且覆盖不全。
模板生成的基本逻辑是:先有病灶的结构化标注(位置、大小、CT 值统计、增强曲线、毗邻结构),然后用模板把标注转成自然语言问题。比如标注显示“肝右叶 S7 段,最大径 32mm,动脉期 CT 值 85HU,门脉期 110HU,延迟期 90HU”,模板可以生成:
- “病灶位于肝脏的哪个叶段?”
- “病灶的最大径是多少?”
- “病灶在动脉期的强化程度如何?”
- “病灶的强化模式是否符合快进快出?”
但纯模板生成的问题太机械,模型容易学到“看到 32mm 就答 32mm”的捷径。所以必须加入负样本和干扰项。比如问“病灶位于肝左叶还是肝右叶”,正确答案是肝右叶,但选项里要有肝左叶。更进一步,可以问“病灶是否侵犯门静脉右支”,这需要模型真正理解空间关系,而不是匹配数字。
专家校验环节主要做两件事:一是剔除临床上无意义或歧义的问题,比如“病灶的 CT 值是多少”这种没有标准答案的问法(因为 ROI 选择不同,CT 值会变);二是补充推理层的问题,比如“根据强化模式,最可能的诊断是什么”,这类问题模板写不出来,必须由有经验的医生根据具体病例撰写。
2.3 标注质量控制中的实操心得
标注质量是基准的生命线。我参与过类似项目,踩过的坑可以列一长串。
坑一:病灶边界的主观性。一个肝转移瘤的边界,不同医生勾出来的体积能差 30%。解决办法不是追求“绝对正确”,而是建立共识协议——比如规定在门脉期图像上、以病灶与正常肝实质交界处最清晰的位置为准。同时,每个病灶至少两人独立标注,Dice 系数低于 0.8 的进入仲裁流程。
坑二:多发病灶的对应关系。一个肝脏有 5 个转移灶,问题问“最大的病灶”,但如果两个病灶大小接近,标注者可能选不同的。必须在标注时就给每个病灶分配唯一 ID,并在问题中明确指向,比如“编号 L1 的病灶”。自然语言里可以用“肝右叶最大的病灶”来指代,但后台必须绑定到具体 ID。
坑三:阴性问题的陷阱。“腹腔内是否有游离气体”这种问题,答案通常是“否”。但如果数据集中 95% 都是“否”,模型全答“否”就能拿 95% 准确率。所以阴性问题的比例要控制,或者用平衡准确率来评测。我的经验是,阴性问题占比不要超过 40%,且要故意混入一些有少量游离气体的困难样本。
3. 模型架构与训练策略的实战解析
3.1 3D 视觉编码器的选型考量
处理 3D 腹部 CT,视觉编码器是第一个要做的决定。目前主流路线有三条,我逐一分析适用场景。
路线一:3D CNN。比如 3D ResNet、3D DenseNet。优点是结构成熟、显存可控,通过调整输入 patch 大小可以适配不同 GPU。缺点是感受野有限,对于需要全局信息的推理层问题(比如“整个腹腔是否有远处转移”),单个 patch 看不到全貌。常见做法是用滑动窗口提取特征,再做特征聚合。
路线二:2.5D 混合。把 3D 体数据沿轴位切成 2D 切片,用 2D CNN 逐层提特征,再用 LSTM 或 Transformer 做层间融合。优点是能复用大量 2D 预训练权重,训练成本低。缺点是层间关系建模是后加的,对于需要精确 3D 空间定位的问题(比如“病灶是否紧贴肝包膜”),2D 特征融合很难恢复出准确的深度信息。
路线三:3D ViT 或 3D Swin Transformer。这是目前性能上限最高的路线,但显存消耗也最恐怖。一个 128×128×128 的 patch,用 Swin-T 的配置,batch size 只能开到 2 到 4。实操中通常要用梯度检查点、混合精度、模型并行等手段才能训起来。
我的建议是:如果目标是刷榜,上 3D Swin 或 3D ViT;如果目标是做可复现的基准,3D CNN 加注意力池化是性价比最高的选择。DeepTumorVQA2026 作为基准,大概率会提供多种编码器的基线结果,让后来者有个参照。
3.2 医学知识注入的几种可行方式
纯视觉模型在属性层和推理层容易翻车,因为它没有医学知识的先验。比如模型可能不知道“动脉期强化、门脉期廓清”这个模式在肝细胞癌和肝血管瘤中的意义完全不同。知识注入有几种做法,我按实现难度排序。
最简单:在问题文本里嵌入知识提示。比如问“病灶的强化模式是否符合快进快出”,而不是问“病灶的强化模式是什么”。前者已经把鉴别诊断的逻辑隐含在问题里了,模型只需要做视觉验证。但这有点作弊的嫌疑,因为基准应该考察模型自己是否知道“快进快出”意味着什么。
中等难度:用医学文本预训练的语言模型做问题编码。比如用 PubMed 摘要预训练的 BERT 变体来编码问题,这样“快进快出”这个词的嵌入就天然靠近“肝细胞癌”的嵌入。视觉特征和文本特征做交叉注意力时,知识就通过文本侧注入了。
较难:构建知识图谱做显式推理。把病灶的视觉属性映射到知识图谱的节点,比如“动脉期强化+门脉期廓清”映射到“快进快出”节点,再通过图谱边推理到“肝细胞癌”节点。这种做法可解释性最强,但知识图谱的构建和维护成本极高,且覆盖度有限。
实操心得:不要一上来就搞知识图谱。先把视觉编码器和问题编码器的交叉注意力做扎实,很多属性层问题靠视觉特征本身就能答对。知识注入是锦上添花,不是雪中送炭。
3.3 训练目标与损失函数的设计
VQA 任务通常被建模成分类问题——从候选答案中选一个。但医学 VQA 有个特殊之处:很多问题的答案是连续值,比如病灶大小、CT 值。如果强行离散化成区间,会损失精度;如果做成回归,又和分类问题的训练目标不统一。
DeepTumorVQA2026 大概率采用了混合目标:分类问题用交叉熵,回归问题用 Smooth L1 或 Huber 损失,多任务联合训练。这里的关键是损失权重的平衡。如果分类损失权重大,回归任务学不好;反之亦然。我的经验是,用不确定性加权(learnable uncertainty weighting)比手工调权重稳得多,让模型自己学习每个任务的噪声水平。
另一个细节是答案空间的构建。开放式 VQA 的答案空间可能上万,直接做分类不现实。常见做法是限制答案词表,比如位置只允许“肝左叶、肝右叶、尾状叶、胆囊、胰腺、脾脏……”这些预定义选项。但这样又限制了模型的表达能力。折中方案是用生成式模型,让模型自由生成答案文本,再用规则或语义匹配来评测。生成式路线更接近真实报告场景,但评测难度大,容易出现“意思对但措辞不同”的误判。
4. 评测指标与常见问题排查
4.1 分层评测指标的设计
评测指标必须和分层设计对齐。感知层可以用准确率、F1;属性层如果涉及连续值,用 MAE 或 RMSE;关系层可以用基于标注的精确匹配;推理层最难评,因为鉴别诊断的答案可能不唯一。
我建议对推理层采用“临床可接受答案集”的方式。比如问“最可能的诊断”,正确答案集可以包含“肝细胞癌、HCC、原发性肝癌”这几个同义表述,只要模型输出其中之一就算对。这需要构建同义词表,工作量不小但值得。
另外,必须报告每层的样本量和置信区间。如果推理层只有 50 个问题,准确率 80% 和 60% 在统计上可能没有显著差异。基准论文里如果不报置信区间,读者很容易被小样本的波动误导。
4.2 典型失败模式与排查思路
在实际跑基线模型时,我遇到过几类高频失败,整理成速查表供参考。
| 失败现象 | 可能原因 | 排查方法 | 解决思路 |
|---|---|---|---|
| 感知层准确率正常,属性层骤降 | 强度归一化不当,CT 值信息丢失 | 可视化输入体数据的 HU 分布 | 改用多窗宽增强,或保留原始 HU 作为额外通道 |
| 关系层空间定位全错 | 3D 位置编码缺失或错误 | 检查位置编码的坐标系定义 | 确保位置编码与体数据的物理坐标系一致 |
| 推理层答案偏向最常见诊断 | 训练集类别不平衡 | 统计各诊断的样本数 | 重采样或使用类别平衡损失 |
| 多时相问题准确率低 | 时相配准误差大 | 叠加不同时相看肝脏边缘是否对齐 | 改进配准算法,或显式输入时相标签 |
| 模型对层厚变化敏感 | 未做重采样或重采样不一致 | 检查预处理流水线 | 统一重采样到各向同性体素 |
4.3 几个容易忽视的实操细节
细节一:CT 值的截断范围。腹部 CT 里金属植入物(比如脊柱内固定)的 HU 值可以到 3000 以上。如果截断到 400,这些高密度影会变成一片白,模型无法区分“金属”和“严重钙化”。建议对高密度区域单独做处理,或者用双窗策略——一个腹部软组织窗,一个骨窗,分别输入。
细节二:呼吸运动伪影。膈肌附近的病灶,比如肝顶部的病灶,在不同时相之间可能有 1-2cm 的位移。如果配准没做好,模型看到的“病灶”在不同时相可能根本不是同一个东西。对于这类病灶,要么在标注时排除,要么在问题设计时避免跨时相比较。
细节三:对比剂浓度差异。不同医院的增强扫描方案不同,对比剂剂量、注射速率、扫描延迟时间都有差异。这会导致同一类病灶的强化程度在不同数据源之间不可比。基准构建时必须记录这些扫描参数,并在评测时做分层分析,否则模型学到的可能是“这家医院的扫描习惯”而不是“病灶的生物学行为”。
细节四:答案的临床等价性。“肝右叶”和“右肝”是同一个意思,“门静脉右支”和“右门静脉”也是。评测时如果不做同义词归一化,会冤枉很多正确答案。建议在评测脚本里内置一个医学同义词表,覆盖解剖名称、病灶名称、强化描述词。
5. 从基准到落地的距离
5.1 基准成绩好不等于临床可用
这是我最想强调的一点。一个模型在 DeepTumorVQA2026 上拿到 90% 的准确率,不代表它能直接写报告。原因有三:第一,基准的问题是预设的,而真实报告需要医生自己决定“该看什么”;第二,基准的答案空间是封闭的,而真实报告的发现可能是基准里没有的罕见表现;第三,基准不考察报告的语言组织能力,而一份好报告需要逻辑连贯、重点突出。
所以这个基准的定位应该是“能力诊断工具”,而不是“产品验收标准”。它告诉你模型在哪个认知层级有短板,但离真正的报告自动化还有工程化、合规化、人机协作流程设计等一大堆事要做。
5.2 后续可以扩展的方向
如果让我在这个基准上继续做工作,我会优先考虑三个方向。一是加入纵向对比问题,比如“与三个月前的 CT 相比,病灶是增大还是缩小”,这需要模型处理时间序列,更接近真实随访场景。二是加入不确定性估计,让模型在不确定时输出“无法判断”而不是瞎猜,这对临床安全至关重要。三是加入多器官联合推理,比如“胰腺病灶合并肝转移,最可能的原发灶是什么”,这需要跨器官的知识整合。
这些扩展都会增加基准的难度,但也会让它更贴近临床实际。基准的价值不在于让模型刷高分,而在于暴露模型的真实短板,推动社区往正确的方向改进。
我个人在实际操作中的体会是,做医学 VQA 基准最难的从来不是模型架构,而是数据标注的一致性和评测指标的科学性。一个标注模糊的基准,会让所有后续工作都建立在流沙上。所以如果你要参与这类项目,我的建议是:把 70% 的精力花在数据治理和评测设计上,30% 花在模型上。模型可以换,数据错了就全错了。