计算机视觉

DINOv2:用于分类与检索的视觉特征模型

facebookresearch/dinov2

Meta 的自监督视觉模型,提供多种预训练骨干与任务头,可用于图像特征提取、相似图片检索和视觉任务迁移。

★ 13.3K星级
⑂ 1.3KFork 数
300未解决的问题
Python语言
Apache-2.0许可证
Q84编辑评分

概览

DINOv2 将图片编码为视觉特征,核心价值是利用预训练表示支持下游任务。可以先冻结骨干提取向量,再用少量标注训练分类器,或对一批图片建立相似度检索。仓库同时提供深度估计、语义分割等任务相关资源。它适合已有图像数据的开发者构建可比较的视觉基线,特征的效果仍应在实际业务图片上验证。

主要功能

  • 通过自监督学习获得通用视觉表示。
  • 提供 ViT-S、B、L、g 等骨干选择。
  • 提供带 registers 的模型变体。
  • 可通过 PyTorch Hub 加载预训练模型。
  • 适用于分类、相似度与特征提取流程。
  • 提供深度估计和语义分割任务资源。

要求、安装和快速入门

1. 建立 Python 与 PyTorch 环境,按设备选择兼容版本。
2. 简单特征提取可从 PyTorch Hub 入手。
3. 执行 torch.hub.load("facebookresearch/dinov2", "dinov2_vits14") 加载小型骨干。
4. 参照官方示例统一图像尺寸与归一化,把模型切换为评估模式。
5. 在关闭梯度的推理流程中提取一小批图片特征。
6. 需要训练或专用任务头时,再安装仓库对应依赖并遵循相应任务说明。

用法

例如建立商品图片相似检索,可为每张图片记录商品编号并提取向量,对向量做一致的归一化后建立检索索引。用同款不同角度、不同款但背景相近的图片分别测试,检查模型关注的是商品还是背景。若分类边界需要更强业务语义,可在冻结特征上训练一个小分类器,并用独立验证集比较结果。

实施要点
应记录图片裁剪、归一化、骨干版本与向量维度,避免索引和查询使用不同处理方式。医学与细胞等专用扩展拥有独立模型说明,不能直接套用通用图像模型的用途和许可。

模型兼容性与使用场景

需要 PyTorch、图片预处理和模型权重;大型骨干占用更多资源。通用视觉向量的相似度与业务语义并不完全相同,选择模型时要结合实际检索或分类指标。

许可证与风险说明

DINOv2 主仓库采用 Apache-2.0。README 中另列的 XRay-DINO 权重采用 FAIR Noncommercial Research License,不能把主仓库许可直接套用到该权重。

opencv

opencv/opencv

★ 90.7KC++

tesseract

tesseract-ocr/tesseract

★ 76.3KC++

yolov5

ultralytics/yolov5

★ 58KPython

faceswap

deepfakes/faceswap

★ 57.5KPython