# VideoPrism

VideoPrismモデルは、Google DeepMindによる論文[VideoPrism: A Foundational Visual Encoder for Video Understanding](https://huggingface.co/papers/2402.13217)（[ブログ記事](https://research.google/blog/videoprism-a-foundational-visual-encoder-for-video-understanding/)）で提案されました。

VideoPrismは、凍結された単一のモデルで多様な動画理解タスクに対応する汎用動画エンコーダーです。このモデルは、3600万組の高品質な動画キャプションペアと、ノイジーな並列テキスト（例：ASR文字起こし）を伴う5億8200万本の動画クリップを含む大規模な異種コーパスで事前学習されています。事前学習のアプローチは、意味的な動画埋め込みのグローバル・ローカル蒸留とトークンシャッフル方式によってマスクオートエンコーディングを改善し、動画に関連するテキストを活用しながらも、モデルが主に動画モダリティに集中できるようにします。VideoPrismは、ウェブ動画の質問応答から科学のためのコンピュータビジョンまで、4つの広範なタスクグループにまたがる33の動画理解ベンチマークのうち31で、最先端の性能を達成しています。

    

すべてのオリジナルのVideoPrismチェックポイントは、[VideoPrism](https://huggingface.co/collections/google/videoprism)コレクション内で確認できます。

注:

- VideoPrism は、因子化された時空間エンコーダーアーキテクチャを使用し、空間トランスフォーマーと時間トランスフォーマーをそれぞれ独立して用いて動画を処理します。
- このモデルは、`VideoPrismClipModel` によって動画とテキストの対照的学習をサポートしています。このモデルは、動画エンコーダーとテキストエンコーダーを組み合わせます。`VideoPrismConfig` をこのモデルと併せて使用する必要があります。
- 動画分類タスクには、動画エンコーダーの上に分類ヘッドを追加する`VideoPrismForVideoClassification`を使用します。このモデルには`VideoPrismVisionConfig`を使用する必要があります。
- ビジョンエンコーダーは、`VideoPrismVisionModel` を単体で使用することで、動画特徴量の抽出に利用できます。このモデルには `VideoPrismVisionConfig` を使用する必要があります。
- ベースモデルのデフォルト入力解像度は288x288ピクセルで、1クリップあたりのフレーム数は16フレーム、大型モデルでは8フレームです。カスタム解像度と1クリップあたりのフレーム数でモデルを使用するには、interpolate_pos_encoding=Trueを設定してください。

このモデルは[MHRDYN7](https://github.com/MHRDYN7)によって提供され、[vasqu](https://github.com/vasqu)および[zucchini-nlp](https://github.com/zucchini-nlp)によってレビューされました。元のコードは[こちら](https://github.com/google-deepmind/videoprism)で確認できます。

## 使用例

以下のスニペットは、`AutoModel` クラスを使用して VideoPrismVisionModel を特徴抽出用にロードする方法を示しています。

```py
import torch
from transformers import AutoModel, AutoVideoProcessor

processor = AutoVideoProcessor.from_pretrained("google/videoprism-base-f16r288", revision="refs/pr/4")
model = AutoModel.from_pretrained(
    "google/videoprism-base-f16r288",
    revision="refs/pr/4",
    device_map="auto",
    # use "flash_attention_2" for faster inference on supported hardware
    # attn_implementation="flash_attention_2" 
)

video_url = "https://huggingface.co/datasets/nateraw/kinetics-mini/resolve/main/val/archery/-Qz25rXdMjE_000014_000024.mp4"

# when do_sample_frames=True, 16/8 frames will be sampled by default depending on the checkpoint size base/large.
processed_video_inputs = processor(videos=[video_url], return_metadata=True, do_sample_frames=True)
video_metadata = processed_video_inputs["video_metadata"]
video_inputs = processed_video_inputs["pixel_values_videos"].to(model.device)
outputs = model(video_inputs)

# VideoPrism encoder outputs
encoder_outputs = outputs.last_hidden_state

```

## VideoPrismVisionConfig[[transformers.VideoPrismVisionConfig]]

#### transformers.VideoPrismVisionConfig[[transformers.VideoPrismVisionConfig]]

```python
transformers.VideoPrismVisionConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, image_size: int | list[int] | tuple[int, int] = 288, num_frames: int = 16, tubelet_size: list[int] | tuple[int, ...] = (1, 18, 18), num_channels: int = 3, hidden_size: int = 768, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu_python', hidden_dropout_prob: float | int = 0.0, attention_probs_dropout_prob: float | int = 0.0, initializer_range: float = 0.02, layer_norm_eps: float = 1e-06, qkv_bias: bool = True, num_spatial_layers: int = 12, num_temporal_layers: int = 4, attn_logit_softcapping: float = 50.0, num_auxiliary_layers: int = 2, apply_l2norm: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/configuration_videoprism.py#L30)

**パラメータ:**

image_size (`Union[int, list[int], tuple[int, int]]`、*任意*、デフォルトは`288`) : 各画像のサイズ（解像度）。

num_frames (`int`、*任意*、デフォルトは 16) : 入力動画のフレーム数。

tubelet_size (`List[int]`、*任意*、デフォルトは`[1, 18, 18]`) : チューブレットパッチのサイズ。

num_channels (`int`、*任意*、デフォルトは`3`) : 入力チャネル数。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

num_attention_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

intermediate_size (`int`、*任意*、デフォルトは `3072`) : MLP 表現の次元数。

hidden_act (`str`、*任意*、デフォルトは`gelu_python`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"`など。

hidden_dropout_prob (`Union[float, int]`、*任意*、デフォルトは`0.0`) : embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。

attention_probs_dropout_prob (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 注意確率のドロップアウト率。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-06`) : Layer Normalization 層で使用する epsilon です。

qkv_bias (`bool`, *任意*, デフォルトは `True`) : クエリ、キー、バリューにバイアスを追加するかどうか。

num_spatial_layers (`int`、*optional*、デフォルトは 12) : 空間トランスフォーマーブロックの数。

num_temporal_layers (`int`、*optional*、デフォルトは 4) : 時間方向の Transformer ブロックの数。

attn_logit_softcapping (`float`、*任意*、デフォルト値は 50.0) : attention logits の Softcapping 定数。

num_auxiliary_layers (`int`、*optional*、デフォルトは 2) : 補助レイヤーの数。これは、VideoPrismClipModel の一部である VideoPrismVideoModel で使用されます。

apply_l2norm (`bool`、*任意*、デフォルトは`True`) : 出力にL2正規化を適用するかどうか。これは、VideoPrismClipModelの一部であるVideoPrismVideoModelで使用されます。

これはVideoPrismClipModelの設定を保存するための設定クラスです。指定された引数に基づいてVideoprismモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[google/videoprism-base-f16r288](https://huggingface.co/google/videoprism-base-f16r288)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

## VideoPrismTextConfig[[transformers.VideoPrismTextConfig]]

#### transformers.VideoPrismTextConfig[[transformers.VideoPrismTextConfig]]

```python
transformers.VideoPrismTextConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 32000, hidden_size: int = 768, intermediate_size: int = 3072, num_hidden_layers: int = 12, num_attention_heads: int = 12, max_position_embeddings: int = 64, hidden_act: str = 'relu', layer_norm_eps: float = 1e-06, pad_token_id: int | None = 0, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, attention_probs_dropout_prob: float | int = 0.0, apply_l2norm: bool = True, qkv_bias: bool = True, hidden_dropout_prob: float = 0.0, initializer_range: float = 0.02, attn_logit_softcapping: float = 50.0)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/configuration_videoprism.py#L72)

**パラメータ:**

vocab_size (`int`、*任意*、デフォルトは `32000`) : モデルの語彙サイズ。`input_ids` で表現できるトークンの種類数を定義します。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

intermediate_size (`int`、*任意*、デフォルトは `3072`) : MLP 表現の次元数。

num_hidden_layers (`int`, *任意*, デフォルトは `12`) : Transformer デコーダーの隠れ層の数。

num_attention_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

max_position_embeddings (`int`、*optional*、デフォルトは`64`) : このモデルが使用される可能性のある最大シーケンス長。

hidden_act (`str`、*任意*、デフォルトは `relu`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"` など。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-06`) : Layer Normalization 層で使用する epsilon です。

pad_token_id (`int`, *任意*, デフォルトは `0`) : 語彙内でパディングに使用されるトークン ID。

bos_token_id (`int`, *任意*) : 語彙内でストリームの開始に使用されるトークン ID。

eos_token_id (`Union[int, list[int]]`、*任意*) : 語彙内でストリームの終了に使用されるトークン ID。

attention_probs_dropout_prob (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 注意確率のドロップアウト率。

apply_l2norm (`bool`、*任意*、デフォルトは`True`) : VideoPrismTextEncoderの出力にL2正規化を適用するかどうか。

qkv_bias (`bool`, *任意*, デフォルトは `True`) : クエリ、キー、バリューにバイアスを追加するかどうか。

hidden_dropout_prob (`float`、*任意*、デフォルトは `0.0`) : embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

attn_logit_softcapping (`float`、*任意*、デフォルト値は 50.0) : attention logits の Softcapping 定数。

これはVideoPrismClipModelの設定を保存するための設定クラスです。指定された引数に基づいてVideoprismモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[google/videoprism-lvt-base-f16r288](https://huggingface.co/google/videoprism-lvt-base-f16r288)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

## VideoPrismConfig[[transformers.VideoPrismConfig]]

#### transformers.VideoPrismConfig[[transformers.VideoPrismConfig]]

```python
transformers.VideoPrismConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/configuration_videoprism.py#L105)

**パラメータ:**

text_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *任意*) : テキストバックボーンの config オブジェクトまたは辞書。

vision_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *任意*) : ビジョンバックボーンの config オブジェクトまたは辞書。

これはVideoPrismClipModelの設定を保存するための設定クラスです。指定された引数に基づいてVideoprismモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[google/videoprism-lvt-base-f16r288](https://huggingface.co/google/videoprism-lvt-base-f16r288)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> from transformers import VideoPrismClipModel, VideoPrismConfig

>>> # Initializing a VideoPrismConfig with default values
>>> configuration = VideoPrismConfig()

>>> # Initializing a VideoPrismClipModel with the configuration
>>> model = VideoPrismClipModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## VideoPrismTokenizer[[transformers.VideoPrismTokenizer]]

#### transformers.VideoPrismTokenizer[[transformers.VideoPrismTokenizer]]

```python
transformers.VideoPrismTokenizer(vocab: str | list[tuple[str, float]] | None = None, eos_token = '</s>', unk_token = '<unk>', pad_token = '<pad>', _spm_precompiled_charsmap = None, extra_ids = 100, additional_special_tokens = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/tokenization_videoprism.py#L33)

VideoPrismのトークナイザーを構築します。これは実質的に、シーケンスの末尾にEOSトークンを付加するポストプロセッサーを備えないT5のトークナイザーです。

このトークナイザーは、ほとんどの主要なメソッドを含む[T5Tokenizer](/docs/transformers/main/ja/model_doc/t5#transformers.T5Tokenizer)を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

#### get_sentinel_token_ids[[transformers.VideoPrismTokenizer.get_sentinel_token_ids]]

```python
get_sentinel_token_ids()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/tokenization_videoprism.py#L121)

センチネルトークンのトークンIDを取得します。

#### get_sentinel_tokens[[transformers.VideoPrismTokenizer.get_sentinel_tokens]]

```python
get_sentinel_tokens()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/tokenization_videoprism.py#L115)

additional_special_tokens から、sentinel トークン（extra_id トークン）のリストを取得します。

## VideoPrismProcessor[[transformers.VideoPrismProcessor]]

#### transformers.VideoPrismProcessor[[transformers.VideoPrismProcessor]]

```python
transformers.VideoPrismProcessor(video_processor = None, tokenizer = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/processing_videoprism.py#L42)

**パラメータ:**

video_processor (`LlavaOnevisionVideoProcessor`) : 動画プロセッサは必須の入力です。

tokenizer (`VideoPrismTokenizer`) : トークナイザーは必須の入力です。

を構築します。このクラスは、ビデオプロセッサーとトークナイザーを単一のプロセッサーとしてラップします。

[VideoPrismProcessor](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismProcessor) は、[LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) と [VideoPrismTokenizer](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTokenizer) のすべての機能を提供します。詳細については、[~LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) および [~VideoPrismTokenizer](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTokenizer) を参照してください。

## VideoPrismVisionModel[[transformers.VideoPrismVisionModel]]

#### transformers.VideoPrismVisionModel[[transformers.VideoPrismVisionModel]]

```python
transformers.VideoPrismVisionModel(config: VideoPrismVisionConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L526)

**パラメータ:**

config ([VideoPrismVisionConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVisionConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

VideoPrismのビジョンエンコーダー本体で、特定のヘッドを付加せずに生の隠れ状態を出力します。このモデルは、VideoPrismVideoModelで使用されるバックボーンエンコーダーです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.VideoPrismVisionModel.forward]]

```python
forward(pixel_values_videos: typing.Optional[torch.FloatTensor] = None, interpolate_pos_encoding: bool | None = False, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L547)

**パラメータ:**

pixel_values_videos (`torch.FloatTensor`、形状 `(batch_size, num_frames, num_channels, frame_size, frame_size)`、*任意*) : 入力動画に対応するテンソルです。動画のピクセル値は [LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用して取得できます。詳細については [LlavaOnevisionVideoProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) を参照してください（[VideoPrismProcessor](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismProcessor) は動画の処理に [LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用しています）。

interpolate_pos_encoding (`bool`、*任意*、デフォルトは`False`) : 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

**戻り値:** `BaseModelOutputWithSpatialAndTemporalStates` または `tuple(torch.FloatTensor)`

`BaseModelOutputWithSpatialAndTemporalStates`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)）と入力に応じて、さまざまな要素で構成されます。

[VideoPrismVisionModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVisionModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）で、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
- **last_temporal_hidden_state** (`torch.FloatTensor`、*任意*) -- 時間エンコーダーの最後の隠れ状態です。通常、形状は`(batch_size * num_patches, num_frames, hidden_size)`です。
- **last_spatial_hidden_state** (`torch.FloatTensor`、*任意*) -- 空間エンコーダーの最後の隠れ状態です。通常、形状は`(batch_size * num_frames, num_patches, hidden_size)`です。

例:

```python
```

## VideoPrismVideoModel[[transformers.VideoPrismVideoModel]]

#### transformers.VideoPrismVideoModel[[transformers.VideoPrismVideoModel]]

```python
transformers.VideoPrismVideoModel(config: VideoPrismVisionConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L717)

**パラメータ:**

config ([VideoPrismVisionConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVisionConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

VideoPrismのビジョンモデルです。ビジョンエンコーダーのバックボーンに補助エンコーダー層を備え、その上にアテンションプーリングヘッドを備えています。このモデルはVideoPrismClipModelで使用されます。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.VideoPrismVideoModel.forward]]

```python
forward(pixel_values_videos: FloatTensor, interpolate_pos_encoding: bool | None = False, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L735)

**パラメータ:**

pixel_values_videos (`torch.FloatTensor`、shape `(batch_size, num_frames, num_channels, frame_size, frame_size)`) : 入力動画に対応するテンソルです。動画のピクセル値は、[LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用して取得できます。詳細については、[LlavaOnevisionVideoProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) を参照してください（[VideoPrismProcessor](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismProcessor) は、動画の処理に [LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用しています）。

interpolate_pos_encoding (`bool`、*任意*、デフォルトは`False`) : 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

**戻り値:** [BaseModelOutputWithPooling](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) または `tuple(torch.FloatTensor)`

A [BaseModelOutputWithPooling](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) or a tuple of `torch.FloatTensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)) and inputs.

[VideoPrismVideoModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVideoModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **pooler_output** (`torch.FloatTensor`、shape `(batch_size, hidden_size)`) -- 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン（分類トークン）の最終層の隠れ状態です。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測（分類）目的から学習されます。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）で、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## VideoPrismTextModel[[transformers.VideoPrismTextModel]]

#### transformers.VideoPrismTextModel[[transformers.VideoPrismTextModel]]

```python
transformers.VideoPrismTextModel(config: VideoPrismTextConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L658)

**パラメータ:**

config ([VideoPrismTextConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTextConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを参照してください。

VideoPrismのテキストエンコーダーの本体で、上部に特定のヘッドを持たず、最後の隠れ状態を出力します。このモデルはVideoPrismClipModelで使用されます。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.VideoPrismTextModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L673)

**パラメータ:**

input_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

inputs_embeds (`torch.Tensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。`[0, config.n_positions - 1]` の範囲から選択されます。  [位置 ID とは何か？](../glossary#position-ids)

**戻り値:** [BaseModelOutputWithPooling](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) または `tuple(torch.FloatTensor)`

A [BaseModelOutputWithPooling](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) or a tuple of `torch.FloatTensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)) and inputs.

[VideoPrismTextModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTextModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **pooler_output** (`torch.FloatTensor`、shape `(batch_size, hidden_size)`) -- 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン（分類トークン）の最終層の隠れ状態です。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測（分類）目的から学習されます。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）で、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## VideoPrismClipModel[[transformers.VideoPrismClipModel]]

#### transformers.VideoPrismClipModel[[transformers.VideoPrismClipModel]]

```python
transformers.VideoPrismClipModel(config: VideoPrismConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L768)

**パラメータ:**

config ([VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

VideoPrismは、動画とテキストの対照的学習用のモデルです。このモデルはVideoPrismVideoModelとVideoPrismTextModelで構成され、動画入力とテキスト入力の間の類似度スコアを計算します。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.VideoPrismClipModel.forward]]

```python
forward(pixel_values_videos: FloatTensor, input_ids: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, interpolate_pos_encoding: bool | None = False, temperature: float | None = None, return_loss: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L831)

**パラメータ:**

pixel_values_videos (`torch.FloatTensor`、shape `(batch_size, num_frames, num_channels, frame_size, frame_size)`) : 入力動画に対応するテンソルです。動画のピクセル値は、[LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用して取得できます。詳細については、[LlavaOnevisionVideoProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) を参照してください（[VideoPrismProcessor](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismProcessor) は、動画の処理に [LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用しています）。

input_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

interpolate_pos_encoding (`bool`、*任意*、デフォルトは`False`) : 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

temperature (`float`, *任意*) : 類似度スコアをスケーリングするための温度スカラーです。指定しない場合、スケーリングは適用されません。

return_loss (`bool`, *任意*) : 対比損失を返すかどうか。

**戻り値:** `VideoPrismClipOutput` または `tuple(torch.FloatTensor)`

`VideoPrismClipOutput`、または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)）と入力に応じて、さまざまな要素で構成されます。

[VideoPrismClipModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismClipModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **logits_per_video** (`torch.FloatTensor`、shape `(video_batch_size, text_batch_size)`) -- `video_embeds` と `text_embeds` 間のスケーリング済みドット積スコアです。これは動画とテキストの類似度スコアを表します。
- **logits_per_text** (`torch.FloatTensor`、shape `(text_batch_size, video_batch_size)`) -- `text_embeds` と `video_embeds` 間のスケーリングされたドット積スコアです。これはテキストと動画の類似度スコアを表します。
- **video_embeds** (`torch.FloatTensor`、形状 `(batch_size, output_dim)`) -- [VideoPrismVideoModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVideoModel)のプーリング済み出力に投影層を適用して得られた動画埋め込みです。
- **text_embeds** (`torch.FloatTensor`、shape `(batch_size, output_dim)`) -- [VideoPrismTextModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTextModel)のプーリング出力に投影層を適用して得られたテキスト埋め込みです。
- **video_model_output** (`~modeling_outputs.BaseModelOutputWithPooling`、*任意*) -- [VideoPrismVideoModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVideoModel)の出力です。
- **text_model_output** (`~modeling_outputs.BaseModelOutputWithPooling`、*任意*) -- [VideoPrismTextModel](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismTextModel)の出力です。
- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`return_loss` が `True` の場合のみ返されます) -- 動画とテキストの類似度に対する対比損失。

例:

```python
```

## VideoPrismForVideoClassification[[transformers.VideoPrismForVideoClassification]]

#### transformers.VideoPrismForVideoClassification[[transformers.VideoPrismForVideoClassification]]

```python
transformers.VideoPrismForVideoClassification(config: VideoPrismVisionConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L898)

**パラメータ:**

config ([VideoPrismVisionConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismVisionConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

VideoPrism Model は、アテンションプーラーの上に線形層を配置した動画分類ヘッドを備えた transformer です。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.VideoPrismForVideoClassification.forward]]

```python
forward(pixel_values_videos: FloatTensor, labels: typing.Optional[torch.LongTensor] = None, interpolate_pos_encoding: bool | None = False, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/videoprism/modeling_videoprism.py#L917)

**パラメータ:**

pixel_values_videos (`torch.FloatTensor`、shape `(batch_size, num_frames, num_channels, frame_size, frame_size)`) : 入力動画に対応するテンソルです。動画のピクセル値は、[LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用して取得できます。詳細については、[LlavaOnevisionVideoProcessor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) を参照してください（[VideoPrismProcessor](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismProcessor) は、動画の処理に [LlavaOnevisionVideoProcessor](/docs/transformers/main/ja/model_doc/llava_onevision#transformers.LlavaOnevisionVideoProcessor) を使用しています）。

labels (`torch.LongTensor`、shape `(batch_size,)`、*任意*) : 画像分類/回帰の損失を計算するためのラベル。インデックスは `[0, ..., config.num_labels - 1]` の範囲である必要があります。`config.num_labels == 1` の場合は回帰損失（Mean-Square loss）が計算され、`config.num_labels > 1` の場合は分類損失（Cross-Entropy）が計算されます。

interpolate_pos_encoding (`bool`、*任意*、デフォルトは`False`) : 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

**戻り値:** [ImageClassifierOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.ImageClassifierOutput) または `tuple(torch.FloatTensor)`

設定（[VideoPrismConfig](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismConfig)）や入力に応じて、さまざまな要素で構成される、[ImageClassifierOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.ImageClassifierOutput)または`torch.FloatTensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。

[VideoPrismForVideoClassification](/docs/transformers/main/ja/model_doc/videoprism#transformers.VideoPrismForVideoClassification)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 分類（または config.num_labels==1 の場合は回帰）の損失。
- **logits** (`torch.FloatTensor`、shape `(batch_size, config.num_labels)`) -- SoftMax 適用前の分類（または config.num_labels==1 の場合は回帰）スコア。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返される) -- `torch.FloatTensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各ステージの出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。各ステージの出力におけるモデルの隠れ状態（特徴マップとも呼ばれる）です。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, patch_size, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

```python
```

