🚀 Virchow模型
Virchow是一个自监督视觉变换器,使用150万张全切片病理图像进行预训练。该模型可用作图块级特征提取器(冻结或微调),在各种下游计算病理学应用中实现了最先进的效果。
🚀 快速开始
⚠️ 重要提示
🎉 点击此处查看Virchow的最新版本:Virchow2
✨ 主要特性
Virchow模型具有以下显著特性:
- 基于自监督学习,使用大规模全切片病理图像进行预训练。
- 可作为图块级特征提取器,支持冻结或微调操作。
- 在多种下游计算病理学应用中取得了最先进的成果。
📦 安装指南
环境要求
- 推荐使用PyTorch(2.0及以上版本)
- 要求timm(版本 >= 0.9.11)
- 需要huggingface_hub
登录操作
在获得模型访问权限后,你需要在使用模型的环境中登录Hugging Face。可以通过以下两种方式进行登录:
命令行登录
huggingface-cli login
Python代码登录
from huggingface_hub import login
login()
更多详细信息,请参考Hugging Face官方 文档。
💻 使用示例
基础用法
import timm
import torch
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform
from timm.layers import SwiGLUPacked
from PIL import Image
model = timm.create_model("hf-hub:paige-ai/Virchow", pretrained=True, mlp_layer=SwiGLUPacked, act_layer=torch.nn.SiLU)
model = model.eval()
transforms = create_transform(**resolve_data_config(model.pretrained_cfg, model=model))
image = Image.open("/path/to/your/image.png")
image = transforms(image).unsqueeze(0)
output = model(image)
class_token = output[:, 0]
patch_tokens = output[:, 1:]
embedding = torch.cat([class_token, patch_tokens.mean(1)], dim=-1)
我们将类别标记和平均图块标记进行拼接,以创建最终的图块嵌入。在资源受限的环境中,你可以尝试仅使用类别标记或平均图块标记。对于具有密集输出的下游任务(如分割任务),可以使用大小为 256 x 1280
的图块标记张量。
高级用法
我们强烈建议在GPU上使用混合精度(fp16
)运行模型,可通过 torch.autocast
实现:
model = model.to("cuda")
image = image.to("cuda")
with torch.inference_mode(), torch.autocast(device_type="cuda", dtype=torch.float16):
output = model(image)
class_token = output[:, 0]
patch_tokens = output[:, 1:]
embedding = torch.cat([class_token, patch_tokens.mean(1)], dim=-1)
embedding = embedding.to(torch.float16)
📚 详细文档
模型详情
- 开发者:美国纽约市的Paige公司和美国马萨诸塞州剑桥市的微软研究院
- 模型类型:图像特征骨干网络
- 模型统计信息:
- 参数数量(百万):632
- 图像尺寸:224 x 224
- 模型架构:
- 架构:ViT - H/14
- 补丁大小:14
- 层数:32
- 嵌入维度:1280
- 激活函数:SwiGLU
- 注意力头数:16
- LayerScale:启用
- 训练详情:
- 精度:混合精度(
fp16
)
- 目标:DINOv2(https://doi.org/10.48550/arXiv.2304.07193)
- 论文:
- 临床级计算病理学和罕见癌症检测的基础模型:https://www.nature.com/articles/s41591 - 024 - 03141 - 0
- 预训练数据集:纪念斯隆凯特琳癌症中心的150万张全切片图像的内部数据集,图块采样分辨率为每像素0.5微米(20倍放大)。
- 许可证:Apache 2.0
模型使用方式
直接使用
Virchow旨在作为冻结特征提取器,为图块级和全切片级分类器提供基础。
下游使用
Virchow可以进行微调,以适应特定任务和/或数据集。
📄 许可证
Virchow模型及相关代码遵循Apache许可证2.0版本(以下简称“许可证”)。你可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE - 2.0
除非适用法律要求或书面同意,否则根据本许可证分发的软件按“原样”分发,不提供任何形式的明示或暗示保证。有关许可证规定的权限和限制的具体语言,请参阅许可证。
附加条款
请注意,用于注册Hugging Face账户的主要电子邮件必须与你的机构电子邮件一致,才能获得批准。下载Virchow模型即表示你声明所有信息(所属机构、研究用途)均正确且最新。下载Virchow模型需要事先在Hugging Face上注册并同意使用条款。
虽然Apache 2.0许可证授予了广泛的权限,但我们恳请用户遵守以下准则:
- 归属声明:在使用或重新分发Virchow模型或其衍生产品时,我们鼓励进行适当的归属声明。请包含对原始来源和创作者的引用。
- 负责任使用:用户应负责任且合乎道德地使用Virchow模型。请考虑你的使用对个人和社会的潜在影响。
- 医疗或临床使用:Virchow模型不用于实际患者的医学诊断、治疗或疾病预防。它不应作为专业医疗建议的替代品。
- 隐私和数据保护:使用Virchow模型时,用户应尊重隐私权并遵守适用的数据保护法律。
- 无恶意使用:Virchow模型不得用于创建恶意代码、恶意软件或干扰计算机系统的正常运行。
- 透明度:如果你在产品或服务中使用了Virchow模型,我们鼓励你向最终用户披露这一事实。
- 反馈和贡献:我们欢迎用户提供反馈和贡献,以改进Virchow模型。请考虑与社区分享你的改进成果。
这些附加条款并非旨在限制你在Apache 2.0许可证下的权利,而是为了促进对Virchow模型的负责任和道德使用。
使用Virchow模型即表示你确认已阅读并理解这些条款。
🔖 引用
如果您在研究中使用了此模型,请引用以下论文:
Vorontsov, E., Bozkurt, A., Casson, A. 等。临床级计算病理学和罕见癌症检测的基础模型。Nat Med (2024). https://doi.org/10.1038/s41591 - 024 - 03141 - 0
@article{vorontsov2024virchow,
title={A foundation model for clinical-grade computational pathology and rare cancers detection},
author={Vorontsov, Eugene and Bozkurt, Alican and Casson, Adam and Shaikovski, George and Zelechowski, Michal and Severson, Kristen and Zimmermann, Eric and Hall, James and Tenenholtz, Neil and Fusi, Nicolo and Yang, Ellen and Mathieu, Philippe and van Eck, Alexander and Lee, Donghun and Viret, Julian and Robert, Eric and Wang, Yi Kan and Kunz, Jeremy D. and Lee, Matthew C. H. and Bernhard, Jan H. and Godrich, Ran A. and Oakley, Gerard and Millar, Ewan and Hanna, Matthew and Wen, Hannah and Retamero, Juan A. and Moye, William A. and Yousfi, Razik and Kanan, Christopher and Klimstra, David S. and Rothrock, Brandon and Liu, Siqi and Fuchs, Thomas J.},
journal={Nature Medicine},
year={2024},
publisher={Nature Publishing Group}
}