使用 DINOv2 方法训练的 Vision Transformer (ViT) 模型。该模型由 Oquab 等人在论文 DINOv2: Learning Robust Visual Features without Supervision 中提出,并首次在 此仓库 发布。
免责声明:发布 DINOv2 的团队未为此模型编写模型卡片,因此本模型卡片由 Hugging Face 团队编写。
Vision Transformer (ViT) 是一种 transformer 编码器模型(类 BERT),在大量图像集合上以自监督方式进行预训练。
图像以固定大小的 patch 序列形式输入模型,这些 patch 经过线性嵌入处理。在序列开头还会添加一个 [CLS] 标记,用于分类任务。在将序列输入到 Transformer 编码器层之前,还会添加绝对位置嵌入。
请注意,此模型不包含任何微调头。
通过预训练模型,它学习图像的内部表示,然后可用于提取对下游任务有用的特征:例如,如果您有一个带标签的图像数据集,可以在预训练编码器之上放置一个线性层来训练标准分类器。通常会在 [CLS] 标记之上放置一个线性层,因为该标记的最后一个隐藏状态可被视为整个图像的表示。
您可以使用原始模型进行特征提取。请参阅 模型中心,查找您感兴趣的特定任务的微调版本。
以下是使用此模型的方法:
from transformers import AutoImageProcessor, AutoModel
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = AutoImageProcessor.from_pretrained('facebook/dinov2-large')
model = AutoModel.from_pretrained('facebook/dinov2-large')
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_statemisc{oquab2023dinov2,
title={DINOv2: Learning Robust Visual Features without Supervision},
author={Maxime Oquab and Timothée Darcet and Théo Moutakanni and Huy Vo and Marc Szafraniec and Vasil Khalidov and Pierre Fernandez and Daniel Haziza and Francisco Massa and Alaaeldin El-Nouby and Mahmoud Assran and Nicolas Ballas and Wojciech Galuba and Russell Howes and Po-Yao Huang and Shang-Wen Li and Ishan Misra and Michael Rabbat and Vasu Sharma and Gabriel Synnaeve and Hu Xu and Hervé Jegou and Julien Mairal and Patrick Labatut and Armand Joulin and Piotr Bojanowski},
year={2023},
eprint={2304.07193},
archivePrefix={arXiv},
primaryClass={cs.CV}
}