Transformers documentation
VideoPrism
该模型于 2024-02-20 在 HF papers 上发布,并于 2026-06-19 贡献至 Hugging Face Transformers。
VideoPrism
VideoPrism 模型由 Google DeepMind 在论文 VideoPrism: A Foundational Visual Encoder for Video Understanding 中提出(博客文章)。
VideoPrism 是一个通用视频编码器,能够使用单一冻结模型处理多种视频理解任务。该模型在一个大规模异构语料库上进行预训练,该语料库包含 3600 万对高质量视频-字幕对,以及 5.82 亿个带有噪声并行文本(例如 ASR 转录文本)的视频片段。预训练方法通过语义视频嵌入的全局-局部蒸馏和一种 token 打乱方案改进了掩码自编码,使模型能够主要关注视频模态,同时利用与视频关联的文本。VideoPrism 在四个广泛的任务组中,于 33 个视频理解基准测试中的 31 个上达到了最先进的性能,任务范围从网络视频问答到科学计算机视觉。

您可以在 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
< source >( 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
< source >( 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
< source >( 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 )
这是用于存储 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.configVideoPrismTokenizer
class transformers.VideoPrismTokenizer
< source >( 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,其中包含了大部分主要方法。有关这些方法的更多信息,请参阅该父类。
获取哨兵令牌的令牌 ID。
从 additional_special_tokens 中获取哨兵标记(extra_id 标记)的列表。
VideoPrismProcessor
class transformers.VideoPrismProcessor
< source >( video_processor = Nonetokenizer = None )
构建一个 VideoPrismProcessor,它将视频处理器和分词器封装为单个处理器。
VideoPrismProcessor 提供了 LlavaOnevisionVideoProcessor 和 VideoPrismTokenizer 的所有功能。有关更多信息,请参阅 ~LlavaOnevisionVideoProcessor 和 ~VideoPrismTokenizer。
VideoPrismVisionModel
class transformers.VideoPrismVisionModel
< source >( config: VideoPrismVisionConfig )
参数
- config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
未添加任何特定头部的裸 VideoPrism 视觉编码器,直接输出原始隐藏状态。该模型是 VideoPrismVideoModel 中使用的骨干编码器。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( pixel_values_videos: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithSpatialAndTemporalStates or tuple(torch.Tensor)
参数
- pixel_values_videos (
torch.Tensor,形状为(batch_size, num_frames, num_channels, frame_size, frame_size),可选) — 对应输入视频的张量。可以使用 LlavaOnevisionVideoProcessor 获取视频的像素值。有关详细信息,请参阅 LlavaOnevisionVideoProcessor.call()(VideoPrismProcessor 使用 LlavaOnevisionVideoProcessor 来处理视频)。 - interpolate_pos_encoding (
bool,可选,默认为False) — 是否对预训练的位置编码进行插值。
返回值
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
< source >( config: VideoPrismVisionConfig )
参数
- config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
VideoPrism 视频模型,由视觉编码器主干、辅助编码器层以及顶部的注意力池化头组成。该模型用于 VideoPrismClipModel。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( pixel_values_videos: Tensorinterpolate_pos_encoding: bool | None = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
参数
- pixel_values_videos (
torch.Tensor,形状为(batch_size, num_frames, num_channels, frame_size, frame_size)) — 与输入视频对应的张量。可以使用 LlavaOnevisionVideoProcessor 获取视频的像素值。有关详细信息,请参阅 LlavaOnevisionVideoProcessor.call()(VideoPrismProcessor 使用 LlavaOnevisionVideoProcessor 来处理视频)。 - interpolate_pos_encoding (
bool,可选,默认为False) — 是否对预训练的位置编码进行插值。
返回值
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
< source >( config: VideoPrismTextConfig )
参数
- config (VideoPrismTextConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
未添加任何特定头部的裸 VideoPrism 文本编码器,输出最后一个隐藏状态。该模型用于 VideoPrismClipModel。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( 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()。
- 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].
返回值
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
< source >( config: VideoPrismConfig )
参数
- config (VideoPrismConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
用于视频-文本对比学习的 VideoPrism 模型。该模型由 VideoPrismVideoModel 和 VideoPrismTextModel 组成,用于计算视频输入与文本输入之间的相似度分数。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( 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()。
- 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
< source >( config: VideoPrismVisionConfig )
参数
- config (VideoPrismVisionConfig) — 模型的配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
VideoPrism 模型,在顶部添加了一个视频分类头(在注意力池化器之上添加了一个线性层)。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( 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 之后的权重,用于在自注意力头中计算加权平均值。