news 2026/9/13 3:24:10

DINOv2 细胞图像分析指南:从 0 标注荧光图到蛋白质定位,三步跑通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DINOv2 细胞图像分析指南:从 0 标注荧光图到蛋白质定位,三步跑通

DINOv2 细胞图像分析指南:从 0 标注荧光图到蛋白质定位,三步跑通

【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2

DINOv2 是 Meta 在 1.42 亿张无标注图片上预训练的视觉 Transformer 自监督学习框架。本指南带你用它的 Cell-DINO 与 XRay-DINO 扩展,把细胞图像分析、蛋白质亚细胞定位、药物扰动筛选、医学影像变成"加载权重就能推理"的事。适合有 Python 基础、刚接触无标签预训练的生物医学新手和普通开发者。

先看用途:三个能直接上手的应用场景

🔬 蛋白质亚细胞定位(Human Protein Atlas)痛点:亚细胞定位标签要靠生物学家一张张看,标几万张视野成本高。 做法:加载cell_dino_hpa_vitl16(4 通道输入)提特征,上面只训练一个线性探针。 收益:多标签 F1 78.5,骨干网络完全不用重训。

药物扰动筛选(Cell Painting)痛点:5 通道、128×128 的单细胞图动辄数万张,肉眼分群不现实。 做法:用cell_dino_cp_vits8提特征,直接接 kNN 或聚类。 收益:CHAMMI 基准 CP Task1 上,线性探针做到 89.9。

X 光医学影像痛点:灰度 X 光图尺寸大、偏灰,通用自然图像模型适配差。 做法:xray_dino_vitl16按 512×512 输入加载,零样本提特征。 收益:面向 X 光场景专门自监督预训练,省去迁移成本。

安装到第一次推理

三步装环境:先克隆仓库git clone https://gitcode.com/GitHub_Trending/di/dinov2,然后执行conda env create -f conda.yaml,再conda activate dinov2。只想跑推理的话,装好 PyTorch 也能直接走torch.hub

最短可跑示例(标准 DINOv2 骨干):

import torch model = torch.hub.load('facebookresearch/dinov2', 'dinov2_vitb14') img = torch.randn(1, 3, 224, 224) # 换成你的真实图片张量 with torch.no_grad(): out = model(img) # 输出 patch 级特征 print(out.shape)

细胞权重(Cell-DINO / XRay-DINO)需要先申请下载链接,再用pretrained_url参数加载,流程见 docs/README_CELL_DINO.md。

自蒸馏原理 30 秒版

一句话:学生模型做题,老师模型给参考答案,答案不需要人工标。

打个比方:老师像一位"慢慢更新均分的班主任"——他的参数就是学生模型的指数滑动平均,更新得很慢、因此稳定。同一张细胞图被裁剪增广成大小两个视图(全局视图和局部视图),学生要让自己的输出对得上老师在局部区域的输出。没有标签参与,监督信号全部来自"两张图其实是同一张图"这件事。ViT 把图切成 patch 做全局注意力,顺带捕捉了细胞器之间的长距离关系。

三个实测任务:数据规模 → 做法 → 关键指标

任务一:HPA 蛋白质定位

  • 数据规模:HPA 单细胞与 HPA-FoV 两套 4 通道荧光数据,数据加载入口在 dinov2/data/datasets/cell_dino/。
  • 做法:ViT-L/16 自监督预训练(官方参考配置:4 节点 32 张 A100,约 2 天),评估用线性探针 +mean_per_class_multilabel_f1指标。
  • 关键指标:蛋白质定位多标签 F178.5;仓库共放出 4 套权重——单细胞、FoV、高分辨率 FoV、Cell Painting 合并版。

任务二:Cell Painting 药物扰动(CHAMMI 基准)

  • 数据规模:CHAMMI 合并了 WTC / HPA / CP 共 5 个显微数据集,CP 子集元数据为morphem70k_v2.csv,属 7 万+ 样本量级。
  • 做法:cell_dino_cp_vits8(ViT-S/8,5 通道,128×128)提特征,再跑 kNN 或线性分类。
  • 关键指标:CP Task1 线性89.9、kNN89.8;WTC Task1 线性89.9

任务三:XRay 医学影像

  • 数据规模:灰度 X 光图,模型按 512×512 输入、16 像素 patch 设计。
  • 做法:申请权重 URL 后torch.hub.load(REPO_DIR, 'xray_dino_vitl16', source='local', weights=<URL>),零样本提特征。
  • 关键指标:仓库未附统一指标表(以原论文为准);注意权重为非商用研究许可,见LICENSE_XRAY_DINO_MODEL

效果对比一张表

对比维度从零监督训练ImageNet 监督迁移DINOv2 系自监督特征
标注投入数千张起,人工逐张0(但依赖 ImageNet 标签)0,完全无标签预训练
见效周期天~周小时~天线性探针数小时;ViT-B/14 ImageNet 线性 84.5%
域适配成本细胞图上需全量重训域差距大,需重训头部与骨干直接迁移;HPA 定位 F1 78.5,零重训
硬件参考单卡~多卡单卡预训练参考:32 张 A100 约 2 天(细胞任务)

按场景选变体

  • 通用自然图 / 跨域基线dinov2_vits14(21M 参数)到dinov2_vitg14(1100M),ImageNet 线性 81.1%~87.0%,另有一批带 registers 的版本。
  • HPA 4 通道荧光cell_dino_hpa_vitl16(224 输入)。
  • Cell Painting 5 通道、128pxcell_dino_cp_vits8,小模型小输入,批量推理最省资源。
  • 通道数不定 / 多数据集混训channel_adaptive_dino_vitl16,bag-of-channels 结构,通道数可变。
  • X 光影像xray_dino_vitl16(512 输入,非商用许可)。
  • 算力紧张:优先 ViT-S 系,21M 参数,单卡轻松跑。

⚡ 提速与部署清单

  • 批处理:评估脚本支持--batch-size(kNN 示例用 256),按显存调大即可线性提速。
  • FP16 混合精度:推理 notebook 在取中间层特征时已开autocast,显存占用近乎减半:
model = model.half().cuda() with torch.cuda.amp.autocast(), torch.no_grad(): feat = model(img) # FP16 前向 torch.save(feat.cpu().float(), "feat.pt") # 缓存特征
  • 多卡:官方参考训练为 4 节点 × 8 张 A100(32 卡)约 2 天;ViT-L/14 在 ImageNet-22k 上用 96 卡约 3.3 天。
  • 特征缓存:先一次性提取特征存盘,kNN / 线性 / 逻辑回归探针全部复用这份缓存,避免重复前向。

FAQ

Q:我需要自己标数据吗?A:不需要。预训练是纯无标签的,增广即"伪监督";下游只需要少量标签训一个线性探针。完全没有标签也可以走 kNN 检索,入口在 dinov2/run/eval/cell_dino/knn.py。

Q:几个细胞权重怎么区分?A:前三套是固定通道(HPA 4 通道 / Cell Painting 5 通道,另有 ViT-L/14 高配版);channel_adaptive_dino_vitl16用 bag-of-channels 结构,通道数任意。

Q:权重能商用吗?A:DINOv2 主体是 Apache 2.0;Cell-DINO 代码为 CC BY-NC、XRay-DINO 权重限非商用研究,三个许可文件在仓库根目录。

Q:没有大数据集,怎么先验证流程?A:HPA 数据目录附了 3 张 sample_images,notebooks/cell_dino/inference.ipynb 给出完整链路:自归一化 → 加载模型 → 出特征,十几行代码跑通。

这套框架的能力边界要清楚:生物学代码与权重仅限研究用途,不能替代临床判断;灰度医学影像、时序活细胞成像等任务在落地前仍需你自己在小样本上验证。好消息是扩展成本很低——仓库已内置 dino.txt 视觉-语言对齐推理代码(notebooks/dinotxt.ipynb),把文本指令接进细胞图像管线,是目前最值得先试的方向。

【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 3:22:48

Java+DDD复刻Deepseek Harness:大模型工具调用与Agent编排实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 3:17:39

SVM支持向量机原理与实战:从鸢尾花理解决策边界与核函数

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 3:12:46

嵌入式最小硬件系统全解析:从电源时钟到PCB调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华