🚀 视觉变换器(超大尺寸模型) - 使用DINOv2训练
本项目是使用DINOv2方法训练的视觉变换器(ViT)模型。该方法由Oquab等人在论文 DINOv2: Learning Robust Visual Features without Supervision 中提出,并首次在 此仓库 发布。
声明:发布DINOv2的团队未为此模型编写模型卡片,此模型卡片由Hugging Face团队编写。
🚀 快速开始
本模型是基于自监督学习方式,在大量图像数据集上预训练的视觉变换器(ViT)模型。你可以直接使用原始模型进行特征提取,也可以在 模型中心 查找针对特定任务微调后的版本。
✨ 主要特性
- 自监督预训练:通过自监督学习方式在大规模图像数据上进行预训练,学习图像的内在表示。
- 特征提取能力:能够提取对下游任务有用的图像特征,可用于图像分类等任务。
- 无微调头部:模型本身不包含任何微调后的头部,可根据具体任务灵活添加。
📚 详细文档
模型描述
视觉变换器(ViT)是一种类似BERT的变换器编码器模型,以自监督的方式在大量图像上进行预训练。
图像以固定大小的图像块序列形式输入到模型中,这些图像块会进行线性嵌入。同时,会在序列开头添加一个 [CLS] 标记,用于分类任务。在将序列输入到变换器编码器层之前,还会添加绝对位置嵌入。
需要注意的是,此模型不包含任何微调后的头部。
通过预训练,模型学习到图像的内在表示,可用于提取对下游任务有用的特征。例如,如果你有一个带标签的图像数据集,可以在预训练的编码器之上添加一个线性层,训练一个标准的分类器。通常会在 [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-giant')
model = AutoModel.from_pretrained('facebook/dinov2-giant')
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许可证。