SentZero: An Enhanced Sentence-Centric Vision-Language Pretraining for Multi-Task Zero-Shot Chest X-Ray Analysis
Hangyul Yoon, Hyungyung Lee, Edward Choi, Eunho Yang
cs.CV, cs.AI
2026-09-28
SentZero用LLM把报告压成抽象句扩正对,再用补丁级损失处理跨病人假负对。零样本分类多数超过CoNNs,ChestXDet10定位0.732、比最强基线高7.6点。
胸片图文预训练之后,多数模型还是要按分类、定位再微调。放射报告又长又密,写法因人而异,对齐噪声比通用 caption 大得多。通用域一句「There is a dog」就能零样本认图;胸片上同样短的 prompt,很难直接对上报告里的表述。
CARZero、RadZero 已经用 LLM 把报告拆成临床短句,句子级监督让零样本分类和空间 grounding 能在一个框架里做。放射话语还有一层这些方法没吃到:发现集合很窄,临床上等价的句子会在大量病人之间重复,比如「The lungs are clear」。现有做法把每句只绑在自己那张图上,带来两件事。报告的语义层次(细描述 vs 高层概念)没被当成额外监督;跨检查的相同陈述在对比学习里被当负对推开。描述空间本身就窄,换更好的抽句也躲不开这种假负对。
SentZero 来自 KAIST,句子中心预训练,做完直接零样本多任务,不再按下游任务微调。三条机制。
抽象级句子映射先扩正对。短语抽取沿用 RadZero 的 LLaMA3-70B-Instruct 结果,模板形如「There [Presence] [Finding] of [Location]」。Qwen3-Next-80B 再把每句压成 (Topic, Presence) 元组,Presence 取 Yes / No / Maybe Yes,再写成「There is opacity」这种短句。原句「There is mild opacity in the bilateral lung base」和抽象句一起进对比学习。细粒度和概念层都有监督,跨检查共享的陈述也能对上号。
视觉侧不用单一全局向量。ViT patch 与句子算余弦,softmax(温度 0.1)加权求和,得到这句话对应的视觉特征。两层 FiLM(用条件向量预测逐维缩放和平移)再按句子给出 scale 和 shift,残差加回加权和。句子在改「怎么读这张图」,空间聚合的内容还在。骨干是 RAD-DINO 加 LoRA(rank 16, alpha 48),后面 4 层可训 Transformer;第 3、6、9 层与末层融合。文本侧是 MPNet(all-mpnet-base-v2)。输入 518×518,37×37 共 1369 个 patch。
假负对不改对比配对。batch 里若句子 S 也出现在另一张图的增强句子集合中,这对就算假负。不从 InfoNCE 分母里挖掉,也不改标成正对。只对这句最相似的 top-20% patch 做吸引损失(1 减余弦),权重 0.01。全局仍是图像到文本的 MP-NCE(一张图多个正句,正句只跟其他图的句子竞争)加文本到图像的 InfoNCE。
预训练用 MIMIC-CXR 全量正侧位,约 37.7 万张图、22.7 万次检查、65379 名患者,只用 findings 段。AdamW,学习率 1e-4,batch 256,最多 20 epoch,4 张 NVIDIA H200,大约 5 小时,验证损失早停 patience 3。推理时分类用「There is [Finding]」模板,句子条件视觉特征与文本做余弦再经 sigmoid;定位用 patch 注意力图双线性上采样,峰值当预测位置。
分类报 AUROC,定位报 pointing game:热图最大值落进真值框即算对。对照是能直接零样本的 GLoRIA、BioViL-T、MedKLIP、KAD、CARZero、RadZero、CoNNs、GLINT(ViT-B、512 输入)。
| 方法 | OpenI | CXR14 | PadChest | ChestXDet10分类 | CheXpert | ChestXDet10定位 | MS-CXR |
| CARZero | 0.838 | 0.811 | 0.810 | 0.796 | 0.923 | 0.543 | 0.872 |
| RadZero | 0.847 | 0.804 | 0.841 | 0.787 | 0.900 | 0.622 | 0.886 |
| CoNNs | 0.871 | 0.819 | 0.835 | 0.825 | 0.920 | 0.656 | 未报 |
| GLINT | 0.871 | 0.817 | 0.853 | 0.812 | 0.918 | 0.625 | 未报 |
| SentZero | 0.889 | 0.839 | 0.861 | 0.843 | 0.904 | 0.732 | 0.922 |
ChestXDet10 定位 0.732,比最强的 CoNNs(0.656)高 7.6 点;MS-CXR 0.922,比 RadZero 的 0.886 高 3.6 点。OpenI、ChestXray14、PadChest、ChestXDet10 分类都是第一。CheXpert 500 例,CARZero 的 0.923 更高,SentZero 是 0.904。
消融从「四个模块全关」起加。多层融合主要抬定位(ChestXDet10 定位 0.651→0.666,MS-CXR 0.892→0.922)。抽象映射对分类帮助最大,ChestXDet10 分类从 0.809 到 0.840。只加句子条件残差时 PadChest、CheXpert 更高(CheXpert 0.916),四件套齐装后这两项略回落,定位继续涨到 0.732 / 0.922。完整模型在其余五套任务上以更大分差压过「只加 TC」。
假负策略对照更清楚。不管假负时 ChestXDet10 定位 0.712、MS-CXR 0.904。Masking 多数略降。改标成正对几乎打崩:OpenI 0.886→0.849,PadChest 0.863→0.790,ChestXDet10 定位 0.712→0.514,MS-CXR 0.904→0.707。辅助损失保住原配对,定位收到 0.732 和 0.922。直接改对比图的边,在这个设定里是有害的。
做「一个胸片编码器、多种零样本任务」的人可以记住两件事。放射报告的层次和跨病人重复是能用的监督,不是噪声。假负对问题不能靠把它们改成正对来解决,CoNNs 那类 relabel/mask 在这篇的对照里多数落后于「配对不动、只拉相关 patch」。
训练本身不贵,4×H200 约 5 小时。真正的前置成本是 LLaMA3-70B 抽句加 Qwen3-Next-80B 映射。没有框、没有病种标签时,prompt 分类加 pointing 定位是可落地的路径。
这是 RadZero 句子级路线的增量,不是新范式。骨干、抽句、多正对对比都是现成零件。可复用的结论是:抽象句能扩正对;FiLM 残差让视觉跟着句子偏;假负对不要改标签。
正文没有独立局限节。数字自己露出几条缝。
CheXpert 输给 CARZero 0.019 AUROC。完整模型在 PadChest、CheXpert 上也低于「只加 TC」的消融。论文用「CheXpert 只有 500 例」解释第一件事,没解释模块加齐后这两项为何回落。有可能完整目标更偏定位,分类小集上过拟合惩罚被平均掉了,但没有分开验证。
假负识别靠增强句子集合的成员关系,模板对齐之后的字面共享。同义不同句、没压到同一 Topic 的,仍当硬负对。这篇证明「改配对有害」,没有证明概念级匹配一定没用,只是 CoNNs 的整套 relabel/mask 在他们的实现里更差。
定位指标是 pointing game,峰值进框就算对,大框很容易得分,热图散不散、有没有多发病灶,这个数看不出来。Fig. 2 是小病灶个例。CoNNs 和 GLINT 的 MS-CXR 是空格,3.6 点只对得上 RadZero 和 CARZero。
预训练只有 MIMIC-CXR 英文 findings。Maybe Yes 如何进损失几乎没写。推理仍用「There is [Finding]」模板,非英语、非模板报告没有实验。