🚀 基于DINOv2训练的视觉变换器(小型模型)
本项目是使用DINOv2方法训练的视觉变换器(ViT)模型。该方法由Oquab等人在论文 DINOv2: Learning Robust Visual Features without Supervision 中提出,并首次在 此仓库 中发布。
⚠️ 重要提示
本模型的模型卡片由Hugging Face团队编写,因为发布DINOv2的团队并未为此模型编写模型卡片。
📚 详细文档
模型描述
视觉变换器(ViT)是一种基于自监督方式在大量图像上进行预训练的Transformer编码器模型(类似BERT)。
图像以固定大小的图像块序列形式输入到模型中,这些图像块会经过线性嵌入处理。同时,在序列开头添加一个 [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-small')
model = AutoModel.from_pretrained('facebook/dinov2-small')
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
BibTeX引用信息
misc{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}
}
📄 许可证
本模型采用Apache 2.0许可证。