尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 Channel-Adaptive DINO 在 HPA-FoV 上运行蛋白质定位线性评估?

如何用 Channel-Adaptive DINO 在 HPA-FoV 上运行蛋白质定位线性评估? 如何用 Channel-Adaptive DINO 在 HPA-FoV 上运行蛋白质定位线性评估【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2这篇文档介绍如何基于 dinov2 仓库中的 Channel-Adaptive DINOBag of Channels 实现在 HPA-FoV 数据集上完成一次蛋白质定位protein localization线性评估加载预训练 teacher 权重冻结骨干网络在最后一组 transformer 块输出上训练一个线性分类器并用mean_per_class_multilabel_f1指标在验证集上打分。适用前提是你在 Linux 环境、使用 PyTorch 2.0 与 xFormers 0.0.18并且能提交单节点多 GPU 任务评估入口是基于 submitit 的 SLURM launcher。先明确两点边界均来自 Channel-Adaptive DINO 文档本仓库只包含 Bag of Channel--bag-of-channels通道自适应实现不包含论文中的 Hierarchical attention 方案代码与模型权重仅供研究用途CC-BY-NC 代码许可、FAIR Non-Commercial Research 模型许可不得用于临床目的。安装环境与依赖评估代码复用 DINOv2 的主环境。按 README 的说明用 conda 或 pip 二选一# 推荐 conda env create -f conda.yaml conda activate dinov2# 或使用 pip pip install -r requirements.txtChannel-Adaptive DINO 在 DINOv2 依赖之外还需要两个额外包文档明确列出pip install pandas tifffile另外运行训练与评估命令时dinov2包必须在 Python 搜索路径中文档要求直接在仓库根目录用PYTHONPATH.前缀执行命令评估命令实际使用PYTHONPATH.:dinov2/data。准备 HPA-FoV 数据集数据集 root 目录需要包含两个 CSV 文件和一个整幅图像目录whole_images_512_train.csvwhole_images_512_test.csv图像目录文档写作new_512_whole_images而数据集加载代码 hpafov.py 中读取的目录名是512_whole_images。两处文档存在出入以实际代码解析逻辑为准组织你的目录避免加载时抛出FileNotFoundError。加载代码的行为要点都定义在 hpafov.pyHPAFoV:splitTRAIN读whole_images_512_train.csvHPAFoV:splitVAL读whole_images_512_test.csvmodePROTEIN_LOCALIZATION时标签为 25 个亚细胞定位类别nucleoplasm、plasma membrane、cytosol 等的 one-hot 多标签向量没有任何定位标签的样本会被跳过通道数为 4每个样本按通道[0, 1, 2, 3]组织图像按 CSV 中file列的文件名查找找不到.png时会回退尝试.tiff后缀。获取 Channel-Adaptive DINO 的 teacher 权重线性评估需要 teacher 权重文件有两条路径路径 A使用官方预训练权重。文档说明可在 torchhub 上下载在 Extended CHAMMI 数据集五个细胞显微图像数据集的组合上训练的权重对应的 hub 入口是 backbones.py 中的channel_adaptive_dino_vitl16in_channels1、channel_adaptiveTrue。路径 B在 HPA-FoV 上自训。文档给出的示例是在 4 个 A100-80GB 节点32 卡的 SLURM 集群上用 submitit 提交训练配置为 vitl16_boc_hpafov.yaml约需 2 天PYTHONPATH. python dinov2/run/train/train.py \ --nodes 4 \ --config-file dinov2/configs/train/cell_dino/vitl16_boc_hpafov.yaml \ --output-dir PATH/TO/OUTPUT/DIR \ train.dataset_pathHPAFoV:splitTRAIN:rootPATH/TO/DATASET:wildcardSEPARATE_CHANNELS其中PATH/TO/OUTPUT/DIR替换为你的训练输出目录PATH/TO/DATASET替换为上面的数据集 root。训练代码每 12500 次迭代会把 teacher 权重存到输出目录的eval文件夹中供评估使用。无论哪条路径最终你都需要一个本地.pth文件传给后面的--pretrained-weights。运行蛋白质定位线性评估在仓库根目录执行PATH/TO/OUTPUT/DIR与PATH/TO/DATASET替换为实际路径training_359999是文档示例中的 checkpoint 目录名替换为你实际的迭代目录PYTHONPATH.:dinov2/data python dinov2/run/eval/cell_dino/linear.py \ --config-file dinov2/configs/eval/cell_dino/vitl16_channel_adaptive_pretrain.yaml \ --pretrained-weights PATH/TO/OUTPUT/DIR/eval/training_359999/teacher_checkpoint.pth \ --output-dir PATH/TO/OUTPUT/DIR/eval/training_359999/linear \ --train-dataset HPAFoV:splitTRAIN:modePROTEIN_LOCALIZATION:rootPATH/TO/DATASET \ --val-dataset HPAFoV:splitVAL:modePROTEIN_LOCALIZATION:rootPATH/TO/DATASET \ --val-metric-type mean_per_class_multilabel_f1 \ --loss-type binary_cross_entropy \ --bag-of-channels \ --crop-size 384 \ --n-last-blocks 4 \ --batch-size 32 \ --epoch-length 145 \ --epochs 30 \ --avgpool \各关键参数在 评估入口 与 linear 评估实现 中的含义参数用途--config-file模型配置vitl16_channel_adaptive_pretrain.yaml 指定vit_large、patch_size: 16、in_chans: 1、channel_adaptive: true的 student/teacher--bag-of-channels启用 Bag of Channels 通道自适应策略单通道骨干 对每通道分别编码代码中会拼接 patch token 的均值池化输出--loss-type binary_cross_entropy多标签蛋白定位使用BCEWithLogitsLoss而非默认的CrossEntropyLoss--val-metric-type mean_per_class_multilabel_f1验证集指标适配 25 类多标签 one-hot 标签--crop-size 384训练与评估的裁剪尺寸默认值即为 384--n-last-blocks 4线性分类器取骨干最后 4 个块的 class token 拼接作为输入--avgpool在 CLS token 之外追加 patch token 的均值池化--batch-size 32每 GPU 批大小--epoch-length 145/--epochs 30每个 epoch 的迭代数与总 epoch 数均为脚本默认值实现上有两个值得知道的默认行为优化器是 AdamW CosineAnnealingLR另一种调度器是--scheduler one_cycle学习率与 weight decay 是网格搜索默认--learning-rates有 16 个值、--weight_decays为[0.0, 0.0001, 1e-5]即会同时训练多组线性分类器并在验证集上选出 best classifier。脚本默认会从已有 checkpoint 恢复需要从头重跑时加--no-resume。验证评估结果评估在验证集上按迭代周期打分结果以 JSON 追加写入--output-dir下的results_eval_linear.json日志中会输出每个分类器的指标行-- Classifier: ...与选中的best classifier。判断评估是否正常完成看两处输出目录生成了results_eval_linear.json且其中记录的验证指标基于mean_per_class_multilabel_f1日志最后输出了 best classifier 及其对应指标训练达到epochs × epoch_length的总迭代数。文档没有给出固定的分数预期值因此不要以某个固定 F1 数值作为成功标准如需对照论文数值以文档 Evaluation 一节提供的复现表格为参考。限制与注意事项该仓库只实现了 Bag of Channel 通道自适应策略不含 Hierarchical attention评估入口依赖 submitit/SLURM 单节点任务提交没有集群环境时这条命令无法直接运行训练示例要求 4 节点共 32 张 A100-80GB 且约 2 天若显存或算力不足可改用路径 A 的预训练权重做线性评估代码与权重仅可用于研究用途不可用于医疗诊断等临床场景。【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表