Transformers documentation

VideoPrism

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2024-02-20 在 HF papers 上发布,并于 2026-06-19 贡献至 Hugging Face Transformers。

FlashAttention

VideoPrism

VideoPrism 模型由 Google DeepMind 在论文 VideoPrism: A Foundational Visual Encoder for Video Understanding 中提出(博客文章)。

VideoPrism 是一个通用视频编码器,能够使用单一冻结模型处理多种视频理解任务。该模型在一个大规模异构语料库上进行预训练,该语料库包含 3600 万对高质量视频-字幕对,以及 5.82 亿个带有噪声并行文本(例如 ASR 转录文本)的视频片段。预训练方法通过语义视频嵌入的全局-局部蒸馏和一种 token 打乱方案改进了掩码自编码,使模型能够主要关注视频模态,同时利用与视频关联的文本。VideoPrism 在四个广泛的任务组中,于 33 个视频理解基准测试中的 31 个上达到了最先进的性能,任务范围从网络视频问答到科学计算机视觉。

drawing

您可以在 VideoPrism 集合中找到所有原始的 VideoPrism 检查点。

注意事项:

  • VideoPrism 采用分解式时空编码器架构,通过独立的空间 Transformer 和时间 Transformer 处理视频。
  • 该模型通过 VideoPrismClipModel 支持视频-文本对比学习,该模型结合了视频编码器和文本编码器。必须使用 VideoPrismConfig 与此模型配合。
  • 对于视频分类任务,请使用 VideoPrismForVideoClassification,它在视频编码器之上添加了一个分类头。必须使用 VideoPrismVisionConfig 与此模型配合。
  • 视觉编码器可以通过 VideoPrismVisionModel 独立使用,以提取视频特征。必须使用 VideoPrismVisionConfig 与此模型配合。
  • 基础模型的默认输入分辨率为 288x288 像素,每个视频片段包含 16 帧;大型模型则为 8 帧。设置 interpolate_pos_encoding=True 即可使用自定义分辨率和每个片段的帧数来运行模型。

该模型由 MHRDYN7 贡献,并由 vasqu 和 zucchini-nlp 审核。 原始代码可在此处找到。

使用示例

以下代码片段展示了如何使用 AutoModel 类加载 VideoPrismVisionModel 以进行特征提取。

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

class transformers.VideoPrismVisionConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneimage_size: int | list[int] | tuple[int, int] = 288num_frames: int = 16tubelet_size: list[int] | tuple[int, ...] = (1, 18, 18)num_channels: int = 3hidden_size: int = 768num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu_python'hidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06qkv_bias: bool = Truenum_spatial_layers: int = 12num_temporal_layers: int = 4attn_logit_softcapping: float = 50.0num_auxiliary_layers: int = 2apply_l2norm: bool = True )

参数

  • image_size (Union[int, list[int], tuple[int, int]],可选,默认为 288) — 每张图片的尺寸(分辨率)。
  • num_frames (int,可选,默认为 16) — 输入视频的帧数。
  • tubelet_size (List[int], 可选, 默认为 [1, 18, 18]) — tubelet 补丁的大小。
  • 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) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (Union[float, int],可选,默认为 0.0) — 注意力概率的 dropout 比率。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float,可选,默认为 1e-06) — 层归一化层所使用的 epsilon 值。
  • qkv_bias (bool,可选,默认为 True) — 是否向查询、键和值添加偏置。
  • num_spatial_layers (int,可选,默认为 12) — 空间变换块的数量。
  • num_temporal_layers (int,可选,默认为 4) — 时间 Transformer 块的数量。
  • attn_logit_softcapping(float,可选,默认值为 50.0)— 注意力 logits 的 softcapping 常数。
  • num_auxiliary_layers (int,可选,默认为 2) — 辅助层的数量。该参数用于 VideoPrismVideoModel,它是 VideoPrismClipModel 的一部分。
  • apply_l2norm (bool,可选,默认为 True) — 是否对输出应用 L2 归一化。这用于 VideoPrismVideoModel,它是 VideoPrismClipModel 的一部分。

这是用于存储 VideoPrismClipModel 配置的类。它根据指定的参数实例化 Videoprism 模型,并定义模型架构。使用默认值实例化配置,将得到与 google/videoprism-base-f16r288 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

VideoPrismTextConfig

class transformers.VideoPrismTextConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32000hidden_size: int = 768intermediate_size: int = 3072num_hidden_layers: int = 12num_attention_heads: int = 12max_position_embeddings: int = 64hidden_act: str = 'relu'layer_norm_eps: float = 1e-06pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneattention_probs_dropout_prob: float | int = 0.0apply_l2norm: bool = Trueqkv_bias: bool = Truehidden_dropout_prob: float = 0.0initializer_range: float = 0.02attn_logit_softcapping: float = 50.0 )

参数

  • vocab_size (int,可选,默认为 32000) — 模型的词汇表大小。定义了 input_ids 可以表示的不同 token 数量。
  • 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,可选,默认为 64) — 该模型可能使用的最大序列长度。
  • hidden_act (str,可选,默认为 relu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • layer_norm_eps (float,可选,默认为 1e-06) — 层归一化层所使用的 epsilon 值。
  • pad_token_id (int, 可选,默认为 0) — 词表中用于填充的 token id。
  • bos_token_id (int, 可选) — 词汇表中用于表示流起始的 Token id。
  • eos_token_id (Union[int, list[int]], 可选) — 词汇表中用于表示流结束(end-of-stream)的 token id。
  • attention_probs_dropout_prob (Union[float, int],可选,默认为 0.0) — 注意力概率的 dropout 比率。
  • apply_l2norm (bool,可选,默认为 True) — 是否对 VideoPrismTextEncoder 的输出应用 L2 归一化。
  • qkv_bias (bool,可选,默认为 True) — 是否向查询、键和值添加偏置。
  • hidden_dropout_prob (float,可选,默认为 0.0) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • attn_logit_softcapping(float,可选,默认值为 50.0)— 注意力 logits 的 softcapping 常数。

这是用于存储 VideoPrismClipModel 配置的类。它根据指定的参数实例化 Videoprism 模型,并定义模型架构。使用默认值实例化配置,将得到与 google/videoprism-lvt-base-f16r288 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

VideoPrismConfig

class transformers.VideoPrismConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )

参数

  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig],可选) — 文本骨干网络的配置对象或字典。
  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig],可选) — 视觉骨干网络的配置对象或字典。

这是用于存储 VideoPrismClipModel 配置的类。它根据指定的参数实例化 Videoprism 模型,并定义模型架构。使用默认值实例化配置,将得到与 google/videoprism-lvt-base-f16r288 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

示例:

>>> 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

class transformers.VideoPrismTokenizer

< >

( vocab: str | list[tuple[str, float]] | None = Noneeos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'_spm_precompiled_charsmap = Noneextra_ids = 100additional_special_tokens = None**kwargs )

构建一个 VideoPrism 分词器,它本质上是一个 T5 分词器,但不包含其后处理器(即在序列末尾追加 EOS 标记)。

该分词器继承自 T5Tokenizer,其中包含了大部分主要方法。有关这些方法的更多信息,请参阅该父类。

get_sentinel_token_ids

< >

( )

获取哨兵令牌的令牌 ID。

get_sentinel_tokens

< >

( )

从 additional_special_tokens 中获取哨兵标记(extra_id 标记)的列表。

VideoPrismProcessor

class transformers.VideoPrismProcessor

< >

( video_processor = Nonetokenizer = None )

参数

  • video_processor (LlavaOnevisionVideoProcessor) — 视频处理器是必需的输入。
  • tokenizer(VideoPrismTokenizer)— tokenizer 是必需的输入。

构建一个 VideoPrismProcessor,它将视频处理器和分词器封装为单个处理器。

VideoPrismProcessor 提供了 LlavaOnevisionVideoProcessor 和 VideoPrismTokenizer 的所有功能。有关更多信息,请参阅 ~LlavaOnevisionVideoProcessor 和 ~VideoPrismTokenizer。

VideoPrismVisionModel

class transformers.VideoPrismVisionModel

< >

( config: VideoPrismVisionConfig )

参数

  • config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

未添加任何特定头部的裸 VideoPrism 视觉编码器,直接输出原始隐藏状态。该模型是 VideoPrismVideoModel 中使用的骨干编码器。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( pixel_values_videos: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithSpatialAndTemporalStates or tuple(torch.Tensor)

参数

返回值

BaseModelOutputWithSpatialAndTemporalStates 或 tuple(torch.Tensor)

BaseModelOutputWithSpatialAndTemporalStates 或 torch.Tensor 元组(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(VideoPrismConfig)和输入。

VideoPrismVisionModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

  • last_temporal_hidden_state (torch.Tensor, 可选) — 时间编码器的最后一个隐藏状态,其形状通常为 (batch_size * num_patches, num_frames, hidden_size)。

  • last_spatial_hidden_state (torch.Tensor,可选) — 空间编码器的最后一个隐藏状态,其形状通常为 (batch_size * num_frames, num_patches, hidden_size)。

示例:

VideoPrismVideoModel

class transformers.VideoPrismVideoModel

< >

( config: VideoPrismVisionConfig )

参数

  • config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

VideoPrism 视频模型,由视觉编码器主干、辅助编码器层以及顶部的注意力池化头组成。该模型用于 VideoPrismClipModel。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( pixel_values_videos: Tensorinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

参数

返回值

BaseModelOutputWithPooling 或 tuple(torch.Tensor)

一个 BaseModelOutputWithPooling 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(VideoPrismConfig)和输入。

VideoPrismVideoModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

VideoPrismTextModel

class transformers.VideoPrismTextModel

< >

( config: VideoPrismTextConfig )

参数

  • config (VideoPrismTextConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

未添加任何特定头部的裸 VideoPrism 文本编码器,输出最后一个隐藏状态。该模型用于 VideoPrismClipModel。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length), ,可选) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • inputs_embeds(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor,可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望对 input_ids 索引如何转换为相应向量拥有比模型内部嵌入查找矩阵更多的控制权,这将非常有用。
  • position_ids (torch.Tensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [0, config.n_positions - 1].

    什么是位置 ID?

返回值

BaseModelOutputWithPooling 或 tuple(torch.Tensor)

一个 BaseModelOutputWithPooling 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(VideoPrismConfig)和输入。

VideoPrismTextModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

VideoPrismClipModel

class transformers.VideoPrismClipModel

< >

( config: VideoPrismConfig )

参数

  • config (VideoPrismConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

用于视频-文本对比学习的 VideoPrism 模型。该模型由 VideoPrismVideoModel 和 VideoPrismTextModel 组成,用于计算视频输入与文本输入之间的相似度分数。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( pixel_values_videos: Tensorinput_ids: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool | None = Falsetemperature: float | None = Nonereturn_loss: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → VideoPrismClipOutput or tuple(torch.Tensor)

参数

  • pixel_values_videos (torch.Tensor,形状为 (batch_size, num_frames, num_channels, frame_size, frame_size)) — 与输入视频对应的张量。可以使用 LlavaOnevisionVideoProcessor 获取视频的像素值。有关详细信息,请参阅 LlavaOnevisionVideoProcessor.call()(VideoPrismProcessor 使用 LlavaOnevisionVideoProcessor 来处理视频)。
  • input_ids (torch.Tensor 形状为 (batch_size, sequence_length)) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)会被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • interpolate_pos_encoding (bool,可选,默认为 False) — 是否对预训练的位置编码进行插值。
  • temperature(float,可选)— 用于缩放相似度分数的温度标量。如果未提供,则不应用缩放。
  • return_loss (bool, 可选) — 是否返回对比损失。

返回值

VideoPrismClipOutput 或 tuple(torch.Tensor)

VideoPrismClipOutput 或 torch.Tensor 元组(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(VideoPrismConfig)和输入。

VideoPrismClipModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • logits_per_video(形状为 (video_batch_size, text_batch_size) 的 torch.Tensor)— video_embeds 与 text_embeds 之间的缩放点积分数。这表示视频-文本相似度分数。
  • logits_per_text(形状为 (text_batch_size, video_batch_size) 的 torch.Tensor)— text_embeds 与 video_embeds 之间的缩放点积分数。这表示文本-视频相似度分数。
  • video_embeds(形状为 (batch_size, output_dim) 的 torch.Tensor)—— 通过对 VideoPrismVideoModel 的池化输出应用投影层获得的视频嵌入。
  • text_embeds(形状为 (batch_size, output_dim) 的 torch.Tensor)—— 通过对 VideoPrismTextModel 的池化输出应用投影层获得的文本嵌入。
  • video_model_output (~modeling_outputs.BaseModelOutputWithPooling,可选) — VideoPrismVideoModel 的输出。
  • text_model_output (~modeling_outputs.BaseModelOutputWithPooling,可选) — VideoPrismTextModel 的输出。
  • loss (torch.Tensor,形状为 (1,),可选,当 return_loss 为 True 时返回) — 用于视频-文本相似度的对比损失。

示例:

VideoPrismForVideoClassification

class transformers.VideoPrismForVideoClassification

< >

( config: VideoPrismVisionConfig )

参数

  • config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

VideoPrism 模型,在顶部添加了一个视频分类头(在注意力池化器之上添加了一个线性层)。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( pixel_values_videos: Tensorlabels: typing.Optional[torch.LongTensor] = Noneinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ImageClassifierOutput or tuple(torch.Tensor)

参数

  • pixel_values_videos (torch.Tensor,形状为 (batch_size, num_frames, num_channels, frame_size, frame_size)) — 与输入视频对应的张量。可以使用 LlavaOnevisionVideoProcessor 获取视频的像素值。有关详细信息,请参阅 LlavaOnevisionVideoProcessor.call()(VideoPrismProcessor 使用 LlavaOnevisionVideoProcessor 来处理视频)。
  • labels(形状为 (batch_size,) 的 torch.LongTensor,可选)— 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。
  • interpolate_pos_encoding (bool,可选,默认为 False) — 是否对预训练的位置编码进行插值。

返回值

ImageClassifierOutput 或 tuple(torch.Tensor)

一个 ImageClassifierOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(VideoPrismConfig)和输入。

VideoPrismForVideoClassification 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits(形状为 (batch_size, config.num_labels) 的 torch.Tensor)— 分类(或当 config.num_labels==1 时为回归)得分(SoftMax 之前)。

  • hidden_states (tuple(torch.Tensor),可选,在传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层输出的一个张量,以及每个阶段输出的一个张量),形状为 (batch_size, sequence_length, hidden_size)。模型在每个阶段输出处的隐藏状态(也称为特征图)。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, patch_size, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

示例:

Update on GitHub