🚀 Vision Transformer (大規模モデル) をDINOv2で学習
DINOv2手法を用いて学習されたVision Transformer (ViT) モデルです。この手法は、Oquabらによる論文 DINOv2: Learning Robust Visual Features without Supervision で紹介され、最初は このリポジトリ で公開されました。
免責事項: DINOv2を公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチームによって作成されました。
📚 ドキュメント
モデルの説明
Vision Transformer (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-large')
model = AutoModel.from_pretrained('facebook/dinov2-large')
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ライセンスの下で提供されています。