license: mit
widget:
- src: >-
https://prod-images-static.radiopaedia.org/images/566180/d527ff6fc1482161c9225345c4ab42_big_gallery.jpg
candidate_labels: 心脏增大, 胸腔积液
example_title: 心脏增大的X光片
library_name: open_clip
pipeline_tag: zero-shot-image-classification
WhyXrayCLIP模型卡片 🩻
目录
- 模型详情
- 快速开始
- 用途
- 训练详情
- 评估
- 引用
模型详情
WhyXrayCLIP能够将X光图像与文本描述对齐。该模型基于OpenCLIP (ViT-L/14)在MIMIC-CXR数据集上微调,临床报告由GPT-4处理。WhyXrayCLIP在多种胸部X光数据集的零样本和线性探测任务中显著优于PubMedCLIP、BioMedCLIP等模型。(详见评估部分)虽然我们的CLIP模型在精心策划的数据上表现优异,但训练收敛迅速,表明当前的对比目标可能未能充分利用数据信息,可能采取了捷径,例如比较不同患者的图像而非聚焦于疾病本身。未来研究应探索更合适的目标和大规模数据收集,以开发更稳健的医学基础模型。
- 论文: https://arxiv.org/pdf/2405.14839
- 网站: https://yueyang1996.github.io/knobo/
- 代码库: https://github.com/YueYANG1996/KnoBo
如何开始使用该模型
使用以下代码开始使用该模型。
pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms("hf-hub:yyupenn/whyxrayclip")
model.eval()
tokenizer = open_clip.get_tokenizer("ViT-L-14")
image = preprocess(Image.open("test_xray.jpg")).unsqueeze(0)
text = tokenizer(["心脏增大", "胸腔积液"])
with torch.no_grad(), torch.cuda.amp.autocast():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print("标签概率:", text_probs)
用途
根据原始OpenAI CLIP模型卡片,该模型旨在作为研究社区的研究输出。我们希望该模型能帮助研究人员更好地理解和探索零样本医学图像(X光)分类。我们也希望它能用于跨学科研究,探讨此类模型的潜在影响。
直接使用
WhyXrayCLIP可用于零样本X光分类。您可以使用它计算X光图像与文本描述之间的相似度。
下游使用
WhyXrayCLIP可作为特征提取器用于下游任务。您可以使用它从X光图像和文本描述中提取特征,用于其他下游任务。
超出范围的使用
WhyXrayCLIP不应用于临床诊断或治疗。它不适用于任何临床决策。用户(包括直接和下游用户)应了解该模型的风险、偏见和局限性。
训练详情
训练数据
我们使用MIMIC-CXR数据集,特别选择了仅包含PA和AP位X光的243,334张图像,每张图像配有医生撰写的临床报告。我们通过提取医学相关发现预处理这些报告,每个发现以简短准确的术语描述。总共,我们为训练WhyXrayCLIP准备了953K个图像-文本对。
训练详情
我们使用OpenCLIP的训练脚本,并选择ViT-L/14作为主干。训练在4块RTX A6000 GPU上进行,共10个epoch,批量大小为128,学习率为1e−5。我们根据验证集上最低的对比损失选择检查点。
评估
测试数据
我们在5个X光分类数据集上评估:Pneumonia、COVID-QU、NIH-CXR、Open-i和VinDr-CXR。我们报告了上述5个数据集的零样本和线性探测准确率。
基线
我们比较了多种CLIP模型,包括OpenAI-CLIP、OpenCLIP、PubMedCLIP、BioMedCLIP、PMC-CLIP和MedCLIP。我们在零样本和线性探测场景下评估这些模型。在零样本中,GPT-4为每个类别生成提示,我们使用图像与提示之间余弦相似度的集合作为每个类别的得分。在线性探测中,我们使用CLIP模型作为图像编码器提取特征用于逻辑回归。此外,我们还包含DenseNet-121(在预训练数据集上使用交叉熵损失微调)作为线性探测的基线。
结果
下图展示了不同模型在五个胸部X光数据集上的平均零样本和线性探测性能。

引用
如果您在工作中使用此模型,请引用我们的论文:
@article{yang2024textbook,
title={A Textbook Remedy for Domain Shifts: Knowledge Priors for Medical Image Analysis},
author={Yue Yang and Mona Gandhi and Yufei Wang and Yifan Wu and Michael S. Yao and Chris Callison-Burch and James C. Gee and Mark Yatskar},
journal={arXiv preprint arXiv:2405.14839},
year={2024}
}