项目介绍:dino-vitb8
项目背景
dino-vitb8是一个视觉Transformer(Vision Transformer, ViT)模型,它采用DINO方法进行训练。DINO是由Mathilde Caron、Hugo Touvron、Ishan Misra、Hervé Jégou、Julien Mairal、Piotr Bojanowski和Armand Joulin提出的,相关研究发表在论文《Emerging Properties in Self-Supervised Vision Transformers》中。这个模型首次在一个由Facebook Research发布的库中受到广泛关注。
模型描述
dino-vitb8采用了视觉Transformer的基础型号,具有8x8的patch大小。该模型利用无标签数据进行自监督学习,预训练于ImageNet-1k这一大型图像数据集上,图像分辨率为224x224像素。
模型将图像分割为固定大小的补丁(patches),每个补丁大小为8x8像素,并将其线性嵌入模型。此外,还在序列的开端添加一个[CLS]标记用于分类任务,并在输入到Transformer编码器的各序列前加入绝对位置嵌入。
此模型没有包括任何微调的头部,因此用户可以在模型预训练的基础上进行自己的下游任务处理。通过预训练,模型能够学习到图像的内部表示,这种表示可以用于提取特征,比如在有标签数据集上添加线性层进行标准分类任务。在该过程中,通常在[CLS]标记上放置线性层,因为它的最后一个隐藏状态可以视为整个图像的表示。
使用场景及限制
dino-vitb8主要用于图像分类任务。用户可以直接使用未经处理的模型来进行图像分类,也可以在模型中心寻找已微调版本以用于特定任务。
如何使用
以下是如何使用dino-vitb8模型的示例代码:
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-vitb8')
model = ViTModel.from_pretrained('facebook/dino-vitb8')
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}
}
总体而言,dino-vitb8项目展示了自监督学习在视觉Transformer模型中的新兴特性,并提供了开源模型供学术研究和商业应用进行进一步的探索和应用。