项目介绍:dino-vits8
dino-vits8是一个小型的视觉Transformer模型,特别之处在于其使用了DINO方法进行训练。这个项目的背后,是一篇名为《Emerging Properties in Self-Supervised Vision Transformers》的研究论文,该论文由Mathilde Caron等人撰写,并首次在Facebook的研究库中发布。尽管DINO团队没有为该模型撰写详细的模型卡,但Hugging Face团队为之提供了补充说明。
模型描述
Vision Transformer(简称ViT)是一种类似于BERT的Transformer编码器模型。这种模型通过自监督方式,在一个名为ImageNet-1k的大型图像集上进行预训练,其图像分辨率达到224x224像素。该模型将输入的图像分割成分辨率为8x8的固定大小的小块,再通过线性嵌入的方式进行处理。
在处理序列时,模型会在序列开始处加入一个特殊的[CLS]标志符,用于图像分类任务。同时,还会在输入序列中添加绝对位置嵌入,以便Transformer编码器层能更好地理解图像结构。
需要注意的是,dino-vits8模型本身不包含任何经过微调的头部。这意味着,通过预训练阶段,模型学习了可以用于后续任务的图像内部表征。例如,如果手中有带标签的图像数据集,可在预训练的编码器顶部放置线性层,进而训练标准分类器。通常,线性层会放置在[CLS]标志符的顶部,因为该标志符的最后隐藏状态可视为整个图像的代表。
预期用途与限制
dino-vits8模型可用于基础的图像分类任务。对于感兴趣的特定任务而言,可以在模型中心寻找经过微调的版本。
使用方法
以下是如何使用该模型的基本步骤:
from transformers import ViTImageProcessor, ViTModel
from PIL import Image
import requests
# 获取图像
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
# 初始化处理器及模型
processor = ViTImageProcessor.from_pretrained('facebook/dino-vits8')
model = ViTModel.from_pretrained('facebook/dino-vits8')
# 处理图像并获取模型输出
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
引用信息
如果您引用了相关论文或使用了其中的工作,可以参考以下BibTeX条目:
@article{DBLP:journals/corr/abs-2104-14294,
author = {Mathilde Caron and
Hugo Touvron and
Ishan Misra and
Herv{\'{e}} J{\'{e}}gou and
Julien Mairal and
Piotr Bojanowski and
Armand Joulin},
title = {Emerging Properties in Self-Supervised Vision Transformers},
journal = {CoRR},
volume = {abs/2104.14294},
year = {2021},
url = {https://arxiv.org/abs/2104.14294},
archivePrefix = {arXiv},
eprint = {2104.14294},
timestamp = {Tue, 04 May 2021 15:12:43 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2104-14294.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}