🚀 视觉变换器(基础大小模型)——使用DINOv2训练
本项目是一个使用DINOv2方法训练的视觉变换器(ViT)模型。该模型在论文 DINOv2: Learning Robust Visual Features without Supervision 中被提出,作者为Oquab等人,并且首次在 此仓库 中发布。
声明:发布DINOv2的团队并未为此模型撰写模型卡片,此模型卡片由Hugging Face团队编写。
🚀 快速开始
本模型是一个基于Transformer架构的视觉变换器(ViT)模型,通过自监督的方式在大量图像数据集上进行预训练。它能学习图像的内在表示,可用于提取对下游任务有用的特征。
✨ 主要特性
- 自监督预训练:在大量图像上以自监督方式进行预训练,学习图像的通用特征。
- 特征提取能力:可用于提取图像特征,为下游任务提供基础。
- 无微调头部:模型本身不包含任何微调头部,具有较高的灵活性。
📚 详细文档
模型描述
视觉变换器(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-base')
model = AutoModel.from_pretrained('facebook/dinov2-base')
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许可证。