ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DINOv2 细胞图像分析实战:零标注自监督特征,10行代码跑通评估

DINOv2 细胞图像分析实战:零标注自监督特征,10行代码跑通评估 DINOv2 细胞图像分析实战零标注自监督特征10行代码跑通评估【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2DINOv2 是一个 PyTorch 实现的自监督学习框架其 Cell-DINO 变体能在无标签的细胞荧光图像上完成细胞图像分析所需的特征学习下游蛋白质定位与细胞类型分类只需线性评估。本文讲清教师-学生的自监督机制、最小可跑流程以及安装选型提速要点。标注为什么先卡住细胞影像研究假设你接手一个细胞成像项目显微镜拍出来的是 4 通道荧光图每个视野都要病理人员确认——这个蛋白质定位在哪个亚细胞区域细胞核、细胞质、细胞膜还是同时命中好几个后者是多标签任务一张图可能对应多个标签。麻烦还不止于此。项目使用的 Human Protein AtlasHPA数据横跨 35 条细胞系同一个蛋白质在不同细胞系里亮度、背景、形态都不一样标注标准难以统一。而仓库里 CHAMMI 评估集把 5 个通道数各不相同的细胞显微数据集拼在一起监督训练意味着要为每个数据集维护一套标注流程。数据天然异质标注成本不随规模下降——无标签自监督学习就是为了解开这个死结没人给标签模型直接从细胞荧光图像本身学结构。自蒸馏模型怎么在零标签下自己教自己自蒸馏有点像徒弟临摹师傅的字师傅教师网络先写徒弟学生网络盯着师傅的笔迹去模仿但全程没有标准答案——唯一的监督信号就是教师自己的输出。教师的参数用 EMA 缓慢更新目标不会随着训练乱漂。落到 DINOv2 的框架上同一张无标签图像经数据增强产生全局视图整图和局部视图随机裁剪学生网络对两个视图分别提特征与教师网络给出的目标表示对齐IBoT 损失进一步约束局部视图的 patch 特征要和全局视图对应区域一致。实现都在 dinov2/loss/ 下的 ibot_patch_loss.py 与 dino_clstoken_loss.py想看前向链路可以从这里入手。选 ViT 而不是卷积来处理这类图像有三个实在的好处。自注意力让图中任意两个 patch 直接对话细胞核与内质网这类远距离结构关系不依赖感受野堆叠输入就是多通道张量4 通道 HPA 与 5 通道 Cell Painting 只体现在in_chans取值上代码见 dinov2/hub/cell_dino/backbones.py注意力权重本身可画成图能检查模型到底在看细胞哪个区域。10行代码跑通从加载权重到拿到1024维特征场景一HPA 蛋白质定位特征提取下面这段复刻了 notebooks/cell_dino/inference.ipynb 的最小推理链路加载 HPA 预训练的 ViT-L/16做逐图自归一化前向一次得到 1024 维全局向量。数据集目录里自带 3 张示例图HPA FoV、Cell Painting、HPA 单细胞各一不下载全量数据也能跑起来。import torch, torchvision model torch.hub.load(path/to/dinov2, cell_dino_hpa_vitl16, sourcelocal, pretrained_urlCHECKPOINT_URL) model model.cuda().eval() img torchvision.io.read_image(HPA_FoV_sample.png).float().unsqueeze(0) / 255 img (img - img.mean((-2, -1), keepdimTrue)) / (img.std((-2, -1), keepdimTrue) 1e-7) with torch.no_grad(): features model(img.cuda()) # (1, 1024) 全局向量场景二Cell Painting 药物扰动的下游评估如果手上只有少量带标签样本不用写任何网络代码。冻结预训练权重、只训一个线性头直接度量多标签 F1文档里给出的复现结果见 docs/README_CHANNEL_ADAPTIVE_DINO.md 末尾的 9 任务表格HPAone 上线性评估达到 78.5 的蛋白质定位 F1 出自 docs/README_CELL_DINO.md。PYTHONPATH.:dinov2/data python dinov2/run/eval/cell_dino/linear.py \ --config-file dinov2/configs/eval/cell_dino/vitl16_pretrain.yaml \ --pretrained-weights TEACHER_CHECKPOINT \ --output-dir ./output/linear \ --train-dataset HPAone:splitTRAIN:modePROTEIN_LOCALIZATION:rootDATA \ --val-dataset HPAone:splitVAL:modePROTEIN_LOCALIZATION:rootDATA \ --val-metric-type mean_per_class_multilabel_f1 \ --loss-type binary_cross_entropy --avgpool三种训练路线什么情况下哪种更划算对比维度从头监督训练自然图像迁移学习DINOv2 无标签自监督Cell-DINO预训练阶段标注需全量人工标注0用公开 ImageNet 权重0教师-学生从图像本身学下游任务标注整个数据集训练集标注仅少量样本做线性评估蛋白质定位HPA多标签 F1随标注量波动域差距大表现受限78.5线性评估HPAone换细胞系/通道数的适配需重训需微调直接推理或继续自监督一次性成本算力低、人力高低32 张 A1004 节点约 2 天一句话结论标注预算充足、任务固定监督训练当然能做标注只有小批量、数据域又远离自然图像时自监督加线性评估更省——78.5 的 F1 是在最轻量的评估协议下拿到的。要覆盖通道数不定的多数据集就选通道自适应变体Bag of Channels在 Extended CHAMMI 上训练。部署要点安装、选型与提速一页讲完先装环境两条额外依赖是通道自适应变体需要的git clone https://gitcode.com/GitHub_Trending/di/dinov2 cd dinov2 pip install -r requirements.txt pip install -U scikit-learn pandas tifffile 模型选型看输入通道和规格需求cell_dino_cp_vits8是 5 通道 Cell Painting 的 ViT-S/8128 输入最轻量cell_dino_hpa_vitl16对应 4 通道 HPA224 输入cell_dino_hpa_vitl14是 518 高分辨率版通道数不定用channel_adaptive_dino_vitl16做 X 光影像则直接加载xray_dino_vitl16。四个入口都注册在 hubconf.py 里。提速方面有几处现成的做法backbones 默认带block_chunks4分块计算显存更友好推理可用torch.cuda.amp.autocast混合精度notebook 里的ModelWithIntermediateLayers一次前向同时拿到中间层特征线性评估时不用再算第二遍大规模预训练走dinov2/run/train/train.py配 submitit 多节点提交官方配方是 4 节点 32 张 A100 约 2 天。下游评估建议先把特征前向缓存成文件再跑线性或 KNN避免重复计算。接下来值得跟进的几件事从静态视野扩展到活细胞时序与 3D 切片图像特征与基因、扰动元数据的多模态融合在 dinov2/data/datasets/cell_dino/ 下扩展自己的数据集类在 dinov2/run/eval/ 下加新任务复用现有 F1 指标建议你先拿自带示例图把 inference.ipynb 跑一遍确认环境无误然后冻结权重在自己的小标注集上跑一次线性评估和从头监督的基线对一下数。若数据通道数不固定优先试通道自适应变体仓库代码为 CC-by-NC、模型权重限非商业研究临床相关场景请先确认许可边界。【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表