许可证:Apache-2.0
标签:
额外授权提示:
Virchow模型及相关代码依据Apache License, Version 2.0("许可证")发布。您可通过以下链接获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,依据许可证分发的软件均按"原样"提供,无任何明示或暗示的担保或条件。详见许可证中关于权限和限制的具体条款。
附加条款
请注意,注册Hugging Face账户的主邮箱必须与机构邮箱匹配以获得批准。下载Virchow模型即表示您确认所有信息(所属机构、研究用途)正确且最新。下载前需先在Hugging Face注册并同意使用条款。
虽然Apache 2.0许可证授予广泛权限,但我们恳请用户遵守以下准则:
- 署名:使用或再分发Virchow模型及其衍生作品时请规范署名。请注明原始来源和创作者。
- 责任使用:用户应以负责任且符合伦理的方式使用Virchow模型。请考量使用行为对个体及社会的潜在影响。
- 医疗/临床用途:Virchow模型不应用于真实患者的疾病诊断、治疗或预防,不可替代专业医疗建议。
- 隐私与数据保护:使用模型时请尊重隐私权并遵守适用的数据保护法规。
- 禁止恶意使用:不得用于创建恶意代码、恶意软件或干扰计算机系统正常运行。
- 透明度:若将模型用于产品或服务,建议向终端用户披露该事实。
- 反馈与贡献:欢迎通过反馈和贡献改进模型,建议将优化成果分享给社区。
这些附加条款并非限制您在Apache 2.0许可证下的权利,而是为促进模型的负责任和符合伦理的使用。
使用Virchow模型即表示您已阅读并理解上述条款。
额外授权字段:
- 姓名:文本
- 机构邮箱(须与HuggingFace主邮箱一致):文本
- 我同意上述许可证及使用条款:复选框
[!重要提示]
🎉 最新版Virchow请访问:Virchow2
Virchow模型卡
Virchow是基于150万张全切片组织病理学图像的自监督视觉Transformer预训练模型。该模型可作为切片级特征提取器(冻结或微调)用于各类计算病理学下游任务,达到最先进效果。
模型详情
- 开发机构: 美国纽约Paige公司与美国剑桥微软研究院
- 模型类型: 图像特征骨干网络
- 模型参数:
- 参数量(百万):632
- 图像尺寸:224×224像素
- 架构细节:
- 架构:ViT-H/14
- 分块尺寸:14
- 层数:32
- 嵌入维度:1280
- 激活函数:SwiGLU
- 注意力头数:16
- 层缩放:启用
- 训练细节:
- 精度:混合精度(fp16)
- 目标函数:DINOv2(论文编号arXiv:2304.07193)
- 论文:
《临床级计算病理学与罕见癌症检测的基础模型》
https://www.nature.com/articles/s41591-024-03141-0
- 预训练数据集: 来自纪念斯隆-凯特琳癌症中心的150万张全切片图像,采样分辨率0.5微米/像素(20倍放大)
- 许可证: Apache 2.0
使用指南
环境要求
- PyTorch(推荐2.0+版本)
- timm(需≥0.9.11版本)
- huggingface_hub库
登录验证
获取模型访问权限后,需在运行环境通过以下方式登录HuggingFace:
命令行方式:
huggingface-cli login
或Python代码:
from huggingface_hub import login
login()
详见HuggingFace官方认证文档。
图像嵌入示例
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.eval()
transforms = create_transform(**resolve_data_config(model.pretrained_cfg, model=model))
img = Image.open("/路径/图像.png")
img_tensor = transforms(img).unsqueeze(0)
output = model(img_tensor)
cls_token = output[:, 0]
patch_tokens = output[:, 1:]
embedding = torch.cat([cls_token, patch_tokens.mean(1)], dim=-1)
建议将分类标记与分块标记均值拼接作为最终切片嵌入。在资源受限场景中,可尝试仅使用分类标记或分块标记均值。对于密集输出任务(如分割),可直接使用256×1280维的分块标记张量。
推荐在GPU上使用混合精度(fp16)运行:
model = model.cuda()
img_tensor = img_tensor.cuda()
with torch.inference_mode(), torch.autocast(device_type="cuda", dtype=torch.float16):
output = model(img_tensor)
embedding = embedding.to(torch.float16)
应用场景
直接使用
建议作为冻结特征提取器,用于构建切片级或全切片级分类器的基础。
下游微调
可根据特定任务或数据集进行微调适配。
引用规范
若在研究中使用本模型,请引用以下文献:
Vorontsov等.《临床级计算病理学与罕见癌症检测的基础模型》。《自然·医学》2024。DOI:10.1038/s41591-024-03141-0
@article{vorontsov2024virchow,
title={临床级计算病理学与罕见癌症检测的基础模型},
author={Vorontsov, Eugene等},
journal={自然·医学},
year={2024},
publisher={自然出版集团}
}