资讯动态

免标注训练细胞特征:Cell-DINO 自监督学习 3 步跑通指南

发布时间:2026/9/13 18:59:36 来源:尧图企业网站定制
免标注训练细胞特征Cell-DINO 自监督学习 3 步跑通指南【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2如果你手上有一堆荧光显微镜拍出来的细胞图但没有标注预算这篇给你一条能直接落地的路。DINOv2 是 Meta 出的自监督视觉模型这个仓库在它基础上专门加了细胞分支 Cell-DINO不靠任何人工标签就能从单细胞和多通道荧光图里学出可用的特征向量再接一层线性分类器就能做蛋白质定位、细胞系分类这些下游任务。从一张 512×512 荧光切片说起细胞图到底难在哪这节帮你看清为什么通用模型在这里不够用。你拍一张荧光图蓝色是细胞核、红色是微管、绿色是目标蛋白——每个通道承载不同语义而同一批细胞在不同状态下形态差异极大。更麻烦的是数据源本身不统一仓库覆盖的 Human Protein AtlasHPA单细胞集有 1.3M 张、29 条细胞系而 Cell Painting 扰动集有 8.5M 张图、通道数和内容又不一样。换句话说你很少能用一个固定输入规格通吃所有数据。Cell-DINO 的思路不是去适配每一种图而是先在一批无标注细胞图上把看得懂结构这件事学扎实剩下的交给轻量下游模型。仓库在 docs/README_CELL_DINO.md 里写明了预训练用的三套数据规模你可以按自己的通道数去对号入座。自蒸馏让模型自己给自己出题这节帮你弄懂没有标签它学的是什么。核心机制叫自蒸馏self-distillation白话就是模型分一个教师网络和一个学生网络教师负责给同一张图的不同裁剪视角出题打分学生负责去拟合教师的输出两者反复对齐特征就被迫学到稳定、和视角无关的表示。你全程不需要一张标注图。下面这张仓库里的框架图把三件事画在一起了左侧是无标签自蒸馏流程中间是 ViT视觉 Transformer靠注意力建模整图关系如何把一张图切成 patch 序列底部则是 HPA 4 通道和 Cell Painting 5 通道的实际样本。3 步跑通最小推理流程这节帮你把拿到特征这件事变成几行代码你只需要确认自己的通道数。仓库把四种预训练模型都注册进了 dinov2/hub/cell_dino/backbones.py选型的唯一依据是输入通道数。from dinov2.hub.cell_dino.backbones import cell_dino_hpa_vitl16 # 4 通道的 HPA 单细胞 / 视野图 model cell_dino_hpa_vitl16(pretrainedTrue, in_channels4).eval() # 5 通道的 Cell Painting 图改用 cell_dino_cp_vits8(in_channels5)第二步把图按 ImageNet 均值方差归一化后送进模型每个细胞得到一条特征向量第三步这条向量接线性分类器或 KNN 就能用。仓库自带一个推理 notebooknotebooks/cell_dino/inference.ipynb里面配了样例图你不用准备数据就能先试跑一遍确认环境没问题再上自己的图。这里还有个值得知道的变体如果不同数据集的通道数本身不稳定可以用通道自适应模型它对每个通道单独编码再组合不要求输入通道数固定from dinov2.hub.cell_dino.backbones import channel_adaptive_dino_vitl16 model channel_adaptive_dino_vitl16(pretrainedTrue, in_channels1)想换更强的特征从头训一个 Cell-DINO这节帮你在现成权重不够用时自己训一版。前提是你能拿到 HPAone 数据单细胞集fixed_size_masked_single_cells_HPA加几张 csv文档列了完整清单并把dinov2加进PYTHONPATH。官方给的最快配置是 ViT-L/16 在 HPAone 上训跑在 4 台 A100-80G 节点32 卡上大约 2 天线性评估能到 78.5 的蛋白质定位 F1。python dinov2/run/train/train.py \ --nodes 4 \ --config-file dinov2/configs/train/cell_dino/vitl16_hpaone.yaml \ --output-dir OUTPUT_DIR \ train.dataset_pathHPAone:splitALL:rootDATASET_PATH配置文件就是上面那行里的 yamldinov2/configs/train/cell_dino/vitl16_hpaone.yaml增广、教师更新频率都在这里调。训练代码每 9000 步会把教师权重存进eval文件夹你后面评估直接取这个 checkpoint 就行。用线性探针和 KNN 给特征打个分这节帮你判断学到的特征到底行不行。最省事的验证是冻结特征、只训一层分类器线性探针linear probe或者直接 KNN两种入口都在 dinov2/run/eval/cell_dino/ 下。以蛋白质定位为例子PYTHONPATH.:dinov2/data python dinov2/run/eval/cell_dino/linear.py \ --config-file dinov2/configs/eval/cell_dino/vitl16_pretrain.yaml \ --pretrained-weights OUTPUT_DIR/eval/training_44999/teacher_checkpoint.pth \ --output-dir OUTPUT_DIR/eval \ --train-dataset HPAone:splitTRAIN:modePROTEIN_LOCALIZATION:rootDATASET_PATH \ --val-dataset HPAone:splitVAL:modePROTEIN_LOCALIZATION:rootDATASET_PATH \ --val-metric-type mean_per_class_multilabel_f1 --avgpool通道自适应版本在跨数据源上的线性探针 F1复现值如下三个来源各取一个任务列数据源任务线性探针 F1复现WTC 细胞周期Task 189.9HPA 蛋白质定位Task 192.7Cell PaintingTask 189.9复现数字和论文原表基本对齐说明这套特征对通道数不同的数据源都稳不是只在一个集上好看。它适合谁、不适合谁这节帮你做取舍免得白花时间。适合的场景无标注细胞图做表征、小样本下游分类、跨数据集迁移、需要解释的注意力可视化。它的边界也很明确仓库声明代码和权重仅用于研究不能进临床诊断从头训一版要 32 卡跑两天算力不够就别硬训直接用现成权重更划算模型按通道数分了四档通道数对不上就得换对应权重不能拿 4 通道权重硬喂 5 通道图。你的下一步先确认你的图是几通道去 docs/README_CELL_DINO.md 对出该用哪个权重然后跑一遍推理 notebook 验证环境特征够用就直接接线性分类器不够再去train/cell_dino那套配置里改增广和教师更新频率重训一版。【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价