细胞荧光图像不用标?DINOv2 的 Cell-DINO 方案 4 步从零跑通

细胞荧光图像不用标?DINOv2 的 Cell-DINO 方案 4 步从零跑通 细胞荧光图像不用标DINOv2 的 Cell-DINO 方案 4 步从零跑通【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2做细胞成像的朋友大概率被两件事卡过Human Protein Atlas 这类数据集动辄十几万个视野逐张标注成本高到没法看荧光通道有的 4 个有的 5 个实验条件还各不相同通用模型直接搬过来就不灵。这个项目DINOv2 仓库里的 Cell-DINO 与 Channel-Adaptive DINO 就是冲这两个问题去的不花一分钱标注就能在细胞荧光图像上得到能直接用的特征——ViT-L/16 在 32 张 A100 上预训练约 2 天线性评估拿到的蛋白质定位平均每类 F1 是 78.5。先看痛点标注贵、通道乱通用模型水土不服把 12 万个视野交给标注团队是什么概念按常规细胞表型标注的单价算这是一笔说不出口的预算。更麻烦的是数据本身不听话同一张图里 4 个荧光通道分别标记不同细胞器换个实验台通道数就变了。拿 ImageNet 预训练的通用 ViT 硬套输入通道、分布、语义全对不上效果自然打折扣。Cell-DINO 的路线是绕开标注在 HPA 单细胞、HPA 视野、Cell Painting约 850 万个单细胞图像上纯自监督预训练下游任务只用线性探针或 kNN 验证。多通道图像直接作为模型输入不用先拆图再拼特征。原理白话教师出标准答案通道拆开各算各的自蒸馏到底在蒸馏什么可以想成老师出样卷、学生反复对答案教师和学生是同一个 ViT 结构吃同一张图的不同增强视图学生的输出向教师看齐而教师的权重是学生的指数滑动平均只朝学生的方向缓缓挪。学生因此得到一个始终比它自己稳的参照系全程不需要任何标签。损失函数都放在 dinov2/loss/ 下全局 token 用 DINO 损失加 KoLeo 正则局部 patch 用 iBOT 掩码预测。多通道怎么办Channel-Adaptive 变体的做法很直接——把通道维拼进 batch 维相当于让每个荧光通道单独过一遍同一个 ViT各拿各的 patch token 和 cls token再拼回B×C×N×D的形状实现见 vision_transformer.py 的get_intermediate_layersbag_of_channels标志开启。仓库里只包含 Bag-of-Channel 这一种实现没有层级注意力那一套。训练时数据集路径要带wildcardSEPARATE_CHANNELS评估时加--bag-of-channels。最小化验证装环境、拉权重、前向一次拿特征不用集群也能先跑通感知。装环境照 docs/README_CELL_DINO.md 走Python 3.10 加requirements.txtChannel-Adaptive 再多装 pandas 和 tifffile 两个依赖。仓库带 3 张样例图sample_images配合 notebooks/cell_dino/inference.ipynb 就能试推理。权重需要到 Meta 的下载页申请通过后拿到 URL用 wget 下载官方明确提醒别用浏览器import torch model torch.hub.load(REPO_DIR, cell_dino_hpa_vitl16, sourcelocal, pretrained_path本地权重路径) model.eval() features model(hpa_fov_image) # 4 通道 HPA 视野 - 特征权重和模型的对应关系记一下定义在 dinov2/hub/cell_dino/backbones.pyCell Painting 5 通道用cell_dino_cp_vits8HPA 4 通道用cell_dino_hpa_vitl16单细胞与视野是两个不同权重通道自适应用channel_adaptive_dino_vitl16先经 LVD 再在 HPA 上的高分辨率版本是cell_dino_hpa_vitl14。进阶玩法一条命令的线性评估和一张 CHAMMI 成绩单预训练完成后的验证不需要微调训练过程每 9000 步通道自适应是每 12500 步会把教师权重存进eval/目录评估脚本直接吃这个 checkpoint。以 HPAone 蛋白质定位为例一条命令PYTHONPATH.:dinov2/data python dinov2/run/eval/cell_dino/linear.py \ --config-file dinov2/configs/eval/cell_dino/vitl16_pretrain.yaml \ --pretrained-weights 教师权重路径 \ --train-dataset HPAone:splitTRAIN:modePROTEIN_LOCALIZATION:root数据目录 \ --val-dataset HPAone:splitVAL:modePROTEIN_LOCALIZATION:root数据目录 \ --val-metric-type mean_per_class_multilabel_f1 \ --loss-type binary_cross_entropy --avgpool脚本在 dinov2/run/eval/cell_dino/ 下linear 和 knn 两个评估器都支持换HPAFoV、切CELL_TYPE任务模式。通道自适应在 CHAMMIWTC/HPA/Cell Painting 三个子集共 9 个任务上的复现数字如下取自 docs/README_CHANNEL_ADAPTIVE_DINO.md方法WTC-1WTC-2HPA-1HPA-2HPA-3CP-1CP-2CP-3CP-4kNN 复现80.379.391.661.429.089.857.623.418.4kNN 论文79.479.086.659.329.692.657.622.118.5线性复现89.987.992.787.266.289.959.826.632.5线性 论文90.589.288.384.765.090.560.525.832.7两个读表结论kNN 不训练就能到 80-92简单任务说明特征本身已经可用线性探针全面更高困难任务CP-3/CP-4差距最明显。踩坑记录与模型选型命令前缀不能省仓库要求PYTHONPATH.:dinov2/data漏了直接报模块找不到。权重下载用 wget浏览器会被打断官方专门提了这一点。通道自适应训练dataset_path里加wildcardSEPARATE_CHANNELS评估加--bag-of-channels两头都配齐才闭环。输入通道数对号入座5 通道 Cell Painting 选vits84 通道 HPA 选vitl16别串了。许可边界代码是 CC BY-NC权重是 FAIR 非商业研究许可仅限科研不能用于任何临床诊断场景——README.md 里反复强调了这一点商用前务必自查。收尾这条管线还能带走什么这套代码的价值不只在几个预训练权重。数据集注册、加载器、线性/kNN 评估全是配置驱动的接入自己的荧光数据源时照着 dinov2/data/datasets/cell_dino/ 里 hpaone、chammi 那几个文件加一个 dataset 就能挂进现有流程训练配置在 dinov2/configs/train/cell_dino/ 下改数据集路径和分辨率就能起训。仓库里还有 XRay-DINO 这条医学影像分支dinov2/hub/xray_dino/backbones.py可以参考。下一步值得关注的是把这套零标注特征往活细胞时序成像和更多扰动条件上推——管线已经在那儿了。【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考