fvlm
ICLR 2025 Spotlight:阿里达摩院出品,细粒度对齐 CT 影像与医学文本的多模态预训练模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ICLR 2025 Spotlight:阿里达摩院出品,细粒度对齐 CT 影像与医学文本的多模态预训练模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个放射科医生,每天要审阅上百份 CT 扫描影像。传统的 AI 模型只能告诉她「这张片子里有异常」,但她真正需要知道的是:异常在哪里?是哪种器官出了问题?严重程度如何? 阿里巴巴达摩院推出的 FVLM(Fine-grained Vision-language Pre-training),正是为了解决这个痛点而生——它不仅能识别 CT 中的异常,还能像医生一样精确到「左肺上叶有 2cm 磨玻璃结节」这样的细粒度描述。该论文被 ICLR 2025 评选为 Spotlight(亮点论文),标志着医学影像+多模态大模型方向的重要突破。
FVLM 基于 BLIP 框架,联合预训练视觉编码器(ViT)和医学文本编码器,实现细粒度 CT 图像理解
CT(电子计算机断层扫描)影像与自然图像有本质不同:一张胸腔 CT 包含数十到数百个切片(slice),每个切片中往往同时包含肺、心脏、食道、主动脉等多个器官,而每个器官又可能同时存在正常区域和多种异常区域。 传统 VLM(视觉-语言模型)在自然图像上表现优秀(如描述图片中有哪些物体),但直接迁移到 CT 影像面临三大挑战:
FVLM 基于 Salesforce 的 BLIP 框架构建,核心组件为:
视觉编码器:自定义 3D ViT(Video Transformer),输入为 (1, 112, 256, 352) 的 CT 切片 tensor,patch size 为 (16, 16, 32),利用 ImageNet MAE 预训练权重初始化。代码中硬编码了肺(lung)、心脏(heart)、食道(esophagus)、主动脉(aorta)四个器官的 ID,用于器官级特征提取。
文本编码器:使用 BiomedVLP-CXR-BERT,这是微软专门为胸部 X 光/CT 训练的专业医学语言模型,词表针对医学术语优化。
器官级注意力机制:通过 MultiheadAttention(4 头)从 ViT 的多层级隐状态中提取目标器官区域特征,而非整张图像的全局特征。每个器官有独立的 vision_proj 投影层和 query_token 可学习查询向量。
FVLM 在 CT-RATE 数据集(约 25 万张 CT 与医生撰写的详细描述)上进行预训练。关键创新在于损失函数设计:
[0.001, 0.5] 范围动态调整,防止过度自信的预测使用 eval.py 在验证集上评估,生成 CSV 后通过 calc_metrics.py 计算专用指标。论文报告了在 CT-RATE 上显著优于 CT-CLIP 等基线的结果。
fvlm/
├── train.py # 分布式训练入口(torchrun --nproc_per_node=4)
├── eval.py # 评估脚本
├── calc_metrics.py # 指标计算
├── blip_pretrain.py # ★ 核心模型实现(BLIP 预训练变体,器官级注意力)
├── lavis/ # 基于 Salesforce LAVIS 框架
│ ├── models/
│ │ ├── blip_models/ # BLIP 模型基类
│ │ ├── vit.py # 3D ViT 视觉编码器
│ │ └── med.py # Medical Encoder(XBertEncoder)
│ ├── configs/ # 训练配置文件
│ └── processors/ # 数据预处理
└── data/ # CT-RATE 数据处理脚本
├── fix_data.py # 数据清洗
├── generate_mask.py # 生成器官分割掩码
├── resize.py # 图像 resize
└── preprocess.py # 预处理
依赖覆盖 100+ 主流 ML 库,包括 PyTorch 2.3.1、Transformers 4.25、MONAI 1.3(医学影像)、nnUNet 2.5(医学分割)等重量级库。
/storage/guoruizhe/cache/...),需手动适配self.organs = ['lung', 'heart', 'esophagus', 'aorta'] 硬编码,扩展到其他器官需修改源码FVLM 代表了医疗 AI 从「单任务检测」向「多模态细粒度理解」演进的重要趋势。随着 CT-RATE 等大规模医学影像-文本配对数据集的发布,类似 FVLM 的模型将推动: