🚀 VideoMAE (ベースサイズのモデル、事前学習のみ)
VideoMAEモデルは、Kinetics - 400データセットで800エポック、自己教師付き学習方式で事前学習されています。このモデルは、Tongらによる論文VideoMAE: Masked Autoencoders are Data - Efficient Learners for Self - Supervised Video Pre - Trainingで導入され、[このリポジトリ](https://github.com/MCG - NJU/VideoMAE)で最初に公開されました。
免責事項: VideoMAEを公開したチームはこのモデルのモデルカードを作成していません。このモデルカードはHugging Faceチームによって作成されています。
🚀 クイックスタート
VideoMAEは、ビデオに対するMasked Autoencoders (MAE)の拡張です。このモデルのアーキテクチャは、標準的なVision Transformer (ViT)に非常に似ており、マスクされたパッチのピクセル値を予測するためのデコーダが上部にあります。事前学習により、ビデオの内部表現を学習し、下流タスクに役立つ特徴を抽出することができます。
✨ 主な機能
- ビデオのマスクされたパッチのピクセル値を予測することができます。
- 下流タスクに対して微調整することができ、ビデオ分類などのタスクに利用できます。
📚 ドキュメント
モデルの説明
ビデオは固定サイズのパッチ(解像度16x16)のシーケンスとしてモデルに入力され、線形埋め込みされます。分類タスクに使用するために、シーケンスの先頭に[CLS]トークンが追加されます。また、シーケンスをTransformerエンコーダのレイヤーに入力する前に、固定の正弦/余弦位置埋め込みが追加されます。
事前学習により、モデルはビデオの内部表現を学習し、下流タスクに役立つ特徴を抽出することができます。例えば、ラベル付きビデオのデータセットがある場合、事前学習されたエンコーダの上に線形レイヤーを配置して、標準的な分類器を学習することができます。通常、[CLS]トークンの最後の隠れ状態はビデオ全体の表現と見なすことができるため、このトークンの上に線形レイヤーが配置されます。
想定される使用法と制限
生のモデルを使用して、ビデオのマスクされたパッチのピクセル値を予測することができますが、主に下流タスクでの微調整を目的としています。興味のあるタスクで微調整されたバージョンを探すには、モデルハブを参照してください。
使い方
このモデルを使用して、ランダムにマスクされたパッチのピクセル値を予測する方法は次のとおりです。
from transformers import VideoMAEImageProcessor, VideoMAEForPreTraining
import numpy as np
import torch
num_frames = 16
video = list(np.random.randn(16, 3, 224, 224))
processor = VideoMAEImageProcessor.from_pretrained("MCG-NJU/videomae-base-short")
model = VideoMAEForPreTraining.from_pretrained("MCG-NJU/videomae-base-short")
pixel_values = processor(video, return_tensors="pt").pixel_values
num_patches_per_frame = (model.config.image_size // model.config.patch_size) ** 2
seq_length = (num_frames // model.config.tubelet_size) * num_patches_per_frame
bool_masked_pos = torch.randint(0, 2, (1, seq_length)).bool()
outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
loss = outputs.loss
より多くのコード例については、ドキュメントを参照してください。
想定される使用法と制限
生のモデルを使用して、ビデオのマスクされたパッチのピクセル値を予測することができますが、主に下流タスクでの微調整を目的としています。興味のあるタスクで微調整されたバージョンを探すには、モデルハブを参照してください。
💻 使用例
基本的な使用法
from transformers import VideoMAEImageProcessor, VideoMAEForPreTraining
import numpy as np
import torch
num_frames = 16
video = list(np.random.randn(16, 3, 224, 224))
processor = VideoMAEImageProcessor.from_pretrained("MCG-NJU/videomae-base-short")
model = VideoMAEForPreTraining.from_pretrained("MCG-NJU/videomae-base-short")
pixel_values = processor(video, return_tensors="pt").pixel_values
num_patches_per_frame = (model.config.image_size // model.config.patch_size) ** 2
seq_length = (num_frames // model.config.tubelet_size) * num_patches_per_frame
bool_masked_pos = torch.randint(0, 2, (1, seq_length)).bool()
outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
loss = outputs.loss
📄 ライセンス
このモデルはCC - BY - NC - 4.0ライセンスの下で提供されています。
BibTeXエントリと引用情報
misc{https://doi.org/10.48550/arxiv.2203.12602,
doi = {10.48550/ARXIV.2203.12602},
url = {https://arxiv.org/abs/2203.12602},
author = {Tong, Zhan and Song, Yibing and Wang, Jue and Wang, Limin},
keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {VideoMAE: Masked Autoencoders are Data-Efficient Learners for Self-Supervised Video Pre-Training},
publisher = {arXiv},
year = {2022},
copyright = {Creative Commons Attribution 4.0 International}
}