DINOv2 with Registers 系列模型详解:Giant 版本规格、Register Token 机制与使用指南

DINOv2 with registers(即"带寄存器的DINOv2")系列,是在原有DINOv2架构基础上引入"寄存器"标记(register token)改进而来的视觉Transformer(ViT)模型。这个系列的核心是包含四个不同尺寸 的模型,Giant(巨型)是这个系列中参数规模最大、性能最强的版本

  • Small (ViT-S/14) :约 2100万 参数。
  • Base (ViT-B/14) :约 8600万 参数。
  • Large (ViT-L/14) :约 3.01亿 参数。
  • Giant (ViT-g/14) :约 11亿 参数。

这几个尺寸的模型都采用了相同的创新设计 :在预训练过程中额外添加了 4个可学习的"寄存器"标记,用于吸收和分担注意力图中的异常值,从而消除伪影,使注意力图更清晰可解释,并能提升在下游任务中的性能。

📈 Giant模型的详细规格:满配的性能之王

Giant (ViT-g/14) 版本的详细规格如下:

  • 参数量 (Parameters) :约 11亿 (1,100M)。
  • 模型深度 (Layers)40层 Transformer 模块。
  • 特征维度 (Embedding Dimension)1536 维。
  • 注意力头数 (Attention Heads)24个
  • 补丁大小 (Patch Size) :将图像分割为 14x14 像素的补丁。

💡 Register Token 的作用

引入"寄存器"标记是为了解决视觉Transformer中一个有趣的问题:研究发现,模型有时会将图像中的某些背景区域错误地当作"寄存器"来使用,这导致了注意力图上的伪影,并可能降低性能。为了解决这个问题,研究者直接为模型加入了专用的寄存器标记,其优势在于:

  • 无伪影:产生干净、无伪影的注意力图。
  • 可解释性:注意力图变得更清晰,易于理解。
  • 性能提升:通过避免模型误用图像块,寄存器标记带来了更稳定和更强的特征表示。

🛠️ 如何使用这些模型

你可以通过以下方式轻松调用这些模型:

  • 方法一:使用 Hugging Face Transformers 库

    python 复制代码
    from transformers import AutoImageProcessor, AutoModel
    import torch
    from PIL import Image
    
    # 加载处理器和模型(将 'facebook/dinov2-with-registers-giant' 替换为相应模型ID)
    processor = AutoImageProcessor.from_pretrained('facebook/dinov2-with-registers-giant')
    model = AutoModel.from_pretrained('facebook/dinov2-with-registers-giant')
    
    # 处理图像
    image = Image.open(...)
    inputs = processor(images=image, return_tensors="pt")
    with torch.no_grad():
        outputs = model(**inputs)
    
    # 获取特征,shape: (batch_size, num_tokens, hidden_size)
    last_hidden_states = outputs.last_hidden_state 
  • 方法二:使用 timm 库 (PyTorch Image Models)

    python 复制代码
    import timm
    from PIL import Image
    
    # 加载预训练模型(模型ID: 'vit_giant_patch14_reg4_dinov2.lvd142m')
    model = timm.create_model('vit_giant_patch14_reg4_dinov2.lvd142m', pretrained=True)
    model = model.eval()
    
    # 获取模型配置并创建预处理 pipeline
    data_config = timm.data.resolve_model_data_config(model)
    transforms = timm.data.create_transform(**data_config, is_training=False)
    
    # 处理图像并进行推理
    image = Image.open(...)
    output = model(transforms(image).unsqueeze(0))

🎯 性能评估

引入寄存器标记后,各尺寸模型的性能均有小幅提升,尤其是在作为特征提取器进行线性评估时。Giant (ViT-g/14) 模型的线性评估准确率为 87.1% ,比不使用寄存器时的 86.5% 提高了 0.6 个百分点。

💎 总结与补充

  • 模型命名 :带寄存器的版本通常命名为 dinov2_vitg14_regvit_giant_patch14_reg4_dinov2.lvd142m,清晰表明其架构和特性。
  • 预训练数据 :所有DINOv2模型(包括带寄存器版本)均在包含 1.42 亿张图像的 LVD-142M 数据集上进行预训练。
  • 子系列说明 :你的问题中提到的 dinov2-with-registers 系列(包括Giant)是Facebook Research发布的官方核心模型系列 。此外,社区中还衍生出针对特定领域的变体,如医疗影像的 XRay-DINO 或显微图像的 Cell-DINO 等,它们是在核心系列的基础上进一步微调或改造的。
相关推荐
天佑木枫10 小时前
第2天:变量与数据类型 —— 让程序记住信息
python
Dust-Chasing11 小时前
Claude Code源码剖析 - Claude Code 上下文压缩机制
人工智能·python·ai
Cloud_Shy61812 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
abcy07121313 小时前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
颜酱13 小时前
LangChain使用RAG 入门:让大模型读懂你的私有文档
python·langchain
天天进步201514 小时前
Python全栈项目--校园智能宿舍管理系统
开发语言·python
测试员周周14 小时前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例
用户83562907805114 小时前
使用 Python 操作 Word 评论和回复
后端·python
Zella折耳根15 小时前
复习篇-继承和接口
java·开发语言·python
诗词在线15 小时前
求推荐飞花令
大数据·人工智能·python