VisionFM:通用眼科 AI 大模型,具备眼科疾病诊断能力,展现出专家级别的准确性

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:VisionFM 能够筛查和诊断多种眼科疾病,并预测疾病的发展趋势。
  2. 技术:通过大规模预训练和多模态多任务学习,VisionFM 展现出强大的泛化能力。
  3. 应用: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. 下载预训练权重

根据需要研究的模态下载相应的模型权重:

ModalityGoogle Drive
Fundushttps://drive.google.com/file/d/13uWm0a02dCWyARUcrCdHZIcEgRfBmVA4/view?usp=sharing
OCThttps://drive.google.com/file/d/1o6E-ine2QLx2pxap-c77u-SU0FjxwypA/view?usp=sharing
FFAhttps://drive.google.com/file/d/128izBUNV00Ojb9w9Dq3GhBvhWqzU-mla/view?usp=sharing
Ultrasoundhttps://drive.google.com/file/d/1IlD0snowxdEVvxmiIBZGR0D9uOcrCT2D/view?usp=sharing
External Eyehttps://drive.google.com/file/d/16zGHTD4ZcGAYW382kKHBw3TU6D1OtvTD/view?usp=sharing
Silt Lamphttps://drive.google.com/file/d/1pemWDkGoZYlqLQ6ooFINktyk8xnv9wY_/view?usp=sharing
MRIhttps://drive.google.com/file/d/1fcfylnOWhfnZHBAKT9pQPufyS5ZYCXu0/view?usp=sharing
UBMhttps://drive.google.com/file/d/1q2fVOgFBnWNu1BsXaza1A-OIcCiifNUQ/view?usp=sharing
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 &

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

### 使用深度学习开发眼睛疾病检测应用程序的方法 #### 数据收集与预处理 构建有效的眼睛疾病检测系统的第一步是获取高质量的数据集。数据应包括不同类型的视网膜图像,这些图像是由眼底相机拍摄的,并且最好经过医学专家标注。常见的公开数据集有: - **DRISHTI-GS**: 提供了详细的视盘分割和血管结构标记。 - **IDRID**: 包含糖尿病视网膜病变分级以及黄斑水肿等疾病的标签。 为了提高模型性能,通常还需要对原始图片做标准化处理,比如调整大小、裁剪中心区域、增强对比度等操作[^1]。 #### 模型选择与训练 对于此类医疗影像分析任务,卷积神经网络(CNNs)是非常有效的工具之一。可以考虑采用迁移学习的方式,即使用已经在大规模自然场景下训练好的CNN作为基础架构,再针对特定的眼科问题微调参数。具体来说: - 利用ResNet、VGG或Inception系列预训练权重初始化新建立的分类器层; - 如果有足够的专用样本,则可以直接端到端地重新训练整个网络; - 对于某些特殊病症识别,还可以探索更复杂的架构设计,如U-Net用于语义分割,有助于精确定位病灶位置[^2]。 ```python import torch from torchvision import models, transforms model = models.resnet50(pretrained=True) num_ftrs = model.fc.in_features model.fc = nn.Linear(num_ftrs, num_classes) transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), ]) ``` #### 验证评估 完成初步建模之后,应当通过交叉验证方法仔细检验系统的泛化能力。这不仅涉及计算标准指标(准确率、召回率),还应该关注临床意义更大的统计量——AUC曲线下面积(Area Under Curve),因为它能更好地反映诊断测试的整体表现。此外,考虑到实际应用场景下的误诊成本差异,建议同时报告特异性(Specificity) 和敏感性(Sensitivity)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值