❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:VisionFM 能够筛查和诊断多种眼科疾病,并预测疾病的发展趋势。
- 技术:通过大规模预训练和多模态多任务学习,VisionFM 展现出强大的泛化能力。
- 应用:VisionFM 在眼科临床任务、基层医疗环境和教育培训中具有广泛的应用前景。
正文(附运行示例)
VisionFM 是什么
VisionFM(伏羲慧眼)是一个多模态多任务的视觉基础模型,专为通用眼科人工智能而设计。通过预训练 3.4 百万张来自 560,457 个个体的眼科图像,覆盖广泛的眼科疾病、成像模态、设备和人群统计数据。VisionFM 能处理包括眼底摄影、光学相干断层扫描(OCT)、荧光素眼底血管造影(FFA)等在内的八种常见眼科成像模态,应用于眼科疾病识别、疾病进展预测、疾病表型细分以及全身生物标志物和疾病预测等多种眼科 AI 任务。
VisionFM 在诊断 12 种常见眼科疾病方面超越了具有基础和中级水平的眼科医生,在大规模眼科疾病诊断基准数据库上超越了强大的基线深度神经网络。VisionFM 还表现出对新眼科模态、疾病谱系和成像设备的强泛化能力。
VisionFM 的主要功能
- 疾病筛查和诊断:VisionFM 能够筛查和诊断多种眼科疾病,包括糖尿病视网膜病变、青光眼、老年性黄斑变性等。
- 疾病预后:模型还能预测疾病的发展趋势和预后。
- 疾病表型细分:VisionFM 可以进行疾病表型的亚分类,包括病变、血管和层的分割,以及地标检测。
- 全身生物标志物和疾病预测:除了眼部疾病,VisionFM 还能从眼部图像中预测全身的生物标志物和疾病。
- 多模态处理能力:VisionFM 能够处理包括眼底摄影、OCT、FFA 在内的八种常见眼科成像模态。
- 模态无关的诊断:VisionFM 支持模态无关的诊断,即可以用单一解码器诊断不同成像模态中的多种眼科疾病。
- 少样本学习:VisionFM 展现出少样本学习的能力,能够以高准确度诊断新疾病,即使只有少量的标注样本。
- 强大的泛化能力:模型对新的眼科模态、疾病谱系和成像设备展现出强大的泛化能力。
- 合成数据增强学习:VisionFM 还能利用合成的眼科成像数据来增强其表示学习能力,从而在下游眼科 AI 任务上取得显著的性能提升。
VisionFM 的技术原理
- 大规模预训练:VisionFM 是一个基于深度学习的视觉基础模型,它通过预训练 3.4 百万张来自 560,457 个个体的眼科图像,覆盖广泛的眼科疾病、成像模态、成像设备和人口统计学数据。
- 多模态多任务学习:VisionFM 能够处理多种眼科成像模态,包括眼底摄影、OCT、FFA 等,并应用于疾病筛查、诊断、疾病预后、疾病表型细分等多种眼科 AI 任务。
- 专家级智能和准确性:预训练后的 VisionFM 在多个眼科 AI 应用中展现出专家级别的智能性和准确性,其全科智能在联合诊断 12 种常见眼科疾病方面超越了初级和中级眼科医生。
如何运行 VisionFM
1. 安装环境
首先,使用 Conda 创建并激活环境:
conda create -n vfm python=3.8
conda activate vfm
安装依赖项:
git clone https://github.com/ABILab-CUHK/VisionFM.git
cd VisionFM
pip install -r requirements.txt
2. 预训练
2.1. 准备预训练数据集
在研究中,我们使用了 8 种模态:Fundus, OCT, External Eye, UBM, B-Ultrasound, MRI, Silt Lamp, and FFA
。每种模态的数据路径应包含所有图像,例如:
.
├── /dst_dir/Fundus/
│ ├── 1.jpg
│ ├── 2.png
│ └── ....
├── /dst_dir/OCT/
│ ├── 1.png
│ ├── 2.jpg
│ └── ...
└── ...
如果没有眼底摄影图像,可以使用以下命令生成随机图像:
cd evaluation
python random_data.py --task pretrain --dst_dir ../dataset/pretrain_random
2.2. 预训练 VisionFM 编码器
训练 vit-base
编码器:
CUDA_VISIBLE_DEVICES=0,1,2,3 nohup python3 -m torch.distributed.launch --nnodes 1 --node_rank 0 --nproc_per_node=4 --master_addr=127.0.0.1 --master_port=29500 main_pretrain.py \
--local-rank=0 \
--data_path ./dataset/pretrain_random \
--modality Fundus \
--norm_last_layer true \
--epochs 400 \
--batch_size_per_gpu 12 \
--shared_head true \
--out_dim 8192 \
--output_dir ./results \
--global_crops_scale 0.32 1.0 \
--pred_ratio 0 0.3 \
--pred_ratio_var 0 0.2 \
--name Train_Random_Fundus \
--load_pretrain > train_fundus.log 2>&1 &
3. 训练解码器
3.1. 下载预训练权重
根据需要研究的模态下载相应的模型权重:
3.2. 训练分类解码器
训练分类解码器的命令如下:
CUDA_VISIBLE_DEVICES=0 nohup python3 -m torch.distributed.launch --nproc_per_node=1 --master_port=29501 evaluation/train_cls_decoder.py \
--name single_cls_debug \
--pretrained_weights ./pretrain_weights/VFM_Fundus_weights.pth \
--output_dir ./results \
--data_path ./dataset/single_cls_random/FundusClassification/ \
--num_labels 5 \
--batch_size_per_gpu 32 > train_single_cls.log 2>&1 &
资源
- 项目官网:https://github.com/ABILab-CUHK/VisionFM
- GitHub 仓库:https://github.com/ABILab-CUHK/VisionFM
- arXiv 技术论文:https://arxiv.org/pdf/2310.04992
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦