Transformers 文档

GroupViT

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

GroupViT

PyTorch TensorFlow

概述

GroupViT 模型由 Jiarui Xu、Shalini De Mello、Sifei Liu、Wonmin Byeon、Thomas Breuel、Jan Kautz 和 Xiaolong Wang 在论文 GroupViT: Semantic Segmentation Emerges from Text Supervision 中提出。受到 CLIP 的启发,GroupViT 是一个视觉-语言模型,可以对任何给定的词汇类别执行零样本语义分割。

论文摘要如下:

摘要内容:分组和识别是视觉场景理解的重要组成部分,例如,用于目标检测和语义分割。在端到端的深度学习系统中,图像区域的分组通常是通过像素级识别标签的自上而下监督隐式实现的。相反,在本文中,我们建议将分组机制重新引入深度网络,这使得语义分割能够在仅有文本监督的情况下自动出现。我们提出了一种分层的分组视觉 Transformer(GroupViT),它超越了常规的网格结构表示,并学习将图像区域分组为逐渐增大的任意形状的分割块。我们通过对比损失,在一个大规模的图文数据集上联合训练 GroupViT 和一个文本编码器。仅通过文本监督,无需任何像素级标注,GroupViT 就能学会将语义区域分组在一起,并成功地以零样本方式迁移到语义分割任务中,即无需任何进一步的微调。它在 PASCAL VOC 2012 数据集上实现了 52.3% mIoU 的零样本准确率,在 PASCAL Context 数据集上实现了 22.4% mIoU,与需要更高监督水平的最先进的迁移学习方法相比具有竞争力。

此模型由 xvjiarui 贡献。TensorFlow 版本由 ariG23498Yih-Dar SHIEHAmy RobertsJoao Gante 的帮助下贡献。原始代码可以在这里找到。

使用技巧

  • 您可以在 GroupViTModel 的前向传播中指定 output_segmentation=True,以获取输入文本的分割 logits。

资源

一系列官方 Hugging Face 和社区(由 🌎 标志)资源,帮助您开始使用 GroupViT。

GroupViTConfig

class transformers.GroupViTConfig

< >

( text_config = None vision_config = None projection_dim = 256 projection_intermediate_dim = 4096 logit_scale_init_value = 2.6592 **kwargs )

参数

  • text_config (dict, 可选) — 用于初始化 GroupViTTextConfig 的配置选项字典。
  • vision_config (dict, 可选) — 用于初始化 GroupViTVisionConfig 的配置选项字典。
  • projection_dim (int, 可选, 默认为 256) — 文本和视觉投影层的维度。
  • projection_intermediate_dim (int, 可选, 默认为 4096) — 文本和视觉投影层的中间层维度。
  • logit_scale_init_value (float, 可选, 默认为 2.6592) — logit_scale 参数的初始值。默认值根据原始 GroupViT 实现使用。
  • kwargs (可选) — 关键字参数字典。

GroupViTConfig 是用于存储 GroupViTModel 配置的配置类。它用于根据指定的参数实例化一个 GroupViT 模型,定义文本模型和视觉模型的配置。使用默认值实例化配置将产生与 GroupViT nvidia/groupvit-gcc-yfcc 架构类似的配置。

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

from_text_vision_configs

< >

( text_config: GroupViTTextConfig vision_config: GroupViTVisionConfig **kwargs ) GroupViTConfig

返回

GroupViTConfig

一个配置对象的实例

从 groupvit 文本模型配置和 groupvit 视觉模型配置实例化一个 GroupViTConfig(或其派生类)。

GroupViTTextConfig

class transformers.GroupViTTextConfig

< >

( vocab_size = 49408 hidden_size = 256 intermediate_size = 1024 num_hidden_layers = 12 num_attention_heads = 4 max_position_embeddings = 77 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 dropout = 0.0 attention_dropout = 0.0 initializer_range = 0.02 initializer_factor = 1.0 pad_token_id = 1 bos_token_id = 49406 eos_token_id = 49407 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 49408) — GroupViT 文本模型的词汇表大小。定义了在调用 GroupViTModel 时传递的 inputs_ids 可以表示的不同标记的数量。
  • hidden_size (int, 可选, 默认为 256) — 编码器层和池化层的维度。
  • intermediate_size (int, 可选, 默认为 1024) — Transformer 编码器中“中间”(即前馈)层的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, 可选, 默认为 4) — Transformer 编码器中每个注意力层的注意力头数量。
  • max_position_embeddings (int, 可选, 默认为 77) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
  • hidden_act (strfunction, 可选, 默认为 "quick_gelu") — 编码器和池化层中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new" "quick_gelu"
  • layer_norm_eps (float, 可选, 默认为 1e-5) — 层归一化层使用的 epsilon 值。
  • attention_dropout (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。
  • dropout (float, 可选, 默认为 0.0) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • initializer_factor (float, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。

这是用于存储 GroupViTTextModel 配置的配置类。它用于根据指定的参数实例化一个 GroupViT 模型,定义模型架构。使用默认值实例化配置将产生与 GroupViT nvidia/groupvit-gcc-yfcc 架构类似的配置。

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

示例

>>> from transformers import GroupViTTextConfig, GroupViTTextModel

>>> # Initializing a GroupViTTextModel with nvidia/groupvit-gcc-yfcc style configuration
>>> configuration = GroupViTTextConfig()

>>> model = GroupViTTextModel(configuration)

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

GroupViTVisionConfig

class transformers.GroupViTVisionConfig

< >

( hidden_size = 384 intermediate_size = 1536 depths = [6, 3, 3] num_hidden_layers = 12 num_group_tokens = [64, 8, 0] num_output_groups = [64, 8, 8] num_attention_heads = 6 image_size = 224 patch_size = 16 num_channels = 3 hidden_act = 'gelu' layer_norm_eps = 1e-05 dropout = 0.0 attention_dropout = 0.0 initializer_range = 0.02 initializer_factor = 1.0 assign_eps = 1.0 assign_mlp_ratio = [0.5, 4] **kwargs )

参数

  • hidden_size (int, 可选, 默认为 384) — 编码器层和池化层的维度。
  • intermediate_size (int, 可选, 默认为 1536) — Transformer 编码器中“中间”(即前馈)层的维度。
  • depths (list[int], 可选, 默认为 [6, 3, 3]) — 每个编码器块中的层数。
  • num_group_tokens (list[int], 可选, 默认为 [64, 8, 0]) — 每个阶段的组标记数量。
  • num_output_groups (list[int], 可选, 默认为 [64, 8, 8]) — 每个阶段的输出组数,0 表示没有组。
  • num_attention_heads (int, 可选, 默认为 6) — Transformer 编码器中每个注意力层的注意力头数量。
  • image_size (int, 可选, 默认为 224) — 每个图像的大小(分辨率)。
  • patch_size (int, 可选, 默认为 16) — 每个 patch 的大小(分辨率)。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 编码器和池化层中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new" "quick_gelu"
  • layer_norm_eps (float, 可选, 默认为 1e-5) — 层归一化层使用的 epsilon 值。
  • dropout (float, 可选, 默认为 0.0) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • attention_dropout (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • initializer_factor (float, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。

这是用于存储 GroupViTVisionModel 配置的配置类。它用于根据指定的参数实例化一个 GroupViT 模型,定义模型架构。使用默认值实例化配置将产生与 GroupViT nvidia/groupvit-gcc-yfcc 架构类似的配置。

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

示例

>>> from transformers import GroupViTVisionConfig, GroupViTVisionModel

>>> # Initializing a GroupViTVisionModel with nvidia/groupvit-gcc-yfcc style configuration
>>> configuration = GroupViTVisionConfig()

>>> model = GroupViTVisionModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Pytorch
隐藏 Pytorch 内容

GroupViTModel

class transformers.GroupViTModel

< >

( config: GroupViTConfig )

参数

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

基础的 Groupvit 模型,输出原始的隐藏状态,顶部没有任何特定的头部。

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

该模型也是一个 PyTorch torch.nn.Module 的子类。可以像常规的 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与常规用法和行为相关的事项。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None return_loss: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None output_segmentation: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.groupvit.modeling_groupvit.GroupViTModelOutputtuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, image_size, image_size), 可选) — 对应于输入图像的张量。可以使用 {image_processor_class} 获取像素值。有关详细信息,请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 用于避免对填充标记索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示标记未被遮盖
    • 0 表示标记被遮盖

    什么是注意力掩码?

  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 每个输入序列标记在位置嵌入中的位置索引。在 [0, config.n_positions - 1] 范围内选择。

    什么是位置 ID?

  • return_loss (bool, 可选) — 是否返回对比损失。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。
  • output_segmentation (bool, 可选) — 是否返回分割 logits。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

transformers.models.groupvit.modeling_groupvit.GroupViTModelOutputtuple(torch.FloatTensor)

一个 transformers.models.groupvit.modeling_groupvit.GroupViTModelOutput 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置(GroupViTConfig)和输入。

  • loss (torch.FloatTensor,形状为 (1,), 可选, 当 return_lossTrue 时返回) — 图像-文本相似度的对比损失。

  • logits_per_image (torch.FloatTensor,形状为 (image_batch_size, text_batch_size)) — image_embedstext_embeds 之间的缩放点积得分。这表示图文相似度分数。

  • logits_per_text (torch.FloatTensor,形状为 (text_batch_size, image_batch_size)) — text_embedsimage_embeds 之间的缩放点积得分。这表示文图相似度分数。

  • segmentation_logits (torch.FloatTensor,形状为 (batch_size, config.num_labels, logits_height, logits_width)) — 每个像素的分类分数。

    返回的 logits 的大小不一定与作为输入的 `pixel_values` 相同。这是为了避免进行两次插值并损失一些质量,当用户需要将 logits 调整到原始图像大小时,可以作为后处理步骤。您应始终检查 logits 的形状并根据需要调整大小。

  • text_embeds (torch.FloatTensor,形状为 (batch_size, output_dim)) — 通过将投影层应用于 GroupViTTextModel 的池化输出而获得的文本嵌入。

  • image_embeds (torch.FloatTensor,形状为 (batch_size, output_dim)) — 通过将投影层应用于 GroupViTVisionModel 的池化输出而获得的图像嵌入。

  • text_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.text_model_output, 默认为 None) — GroupViTTextModel 的输出。

  • vision_model_output (<class '~modeling_outputs.BaseModelOutputWithPooling'>.vision_model_output, 默认为 None) — GroupViTVisionModel 的输出。

GroupViTModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, GroupViTModel

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(
...     text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True
... )

>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities

get_text_features

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) text_features (torch.FloatTensor,形状为 (batch_size, output_dim))

参数

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

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

    什么是输入 ID?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 用于避免对填充标记索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示标记未被遮盖
    • 0 表示标记被遮盖

    什么是注意力掩码?

  • position_ids (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 每个输入序列标记在位置嵌入中的位置索引。在 [0, config.n_positions - 1] 范围内选择。

    什么是位置 ID?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

text_features (torch.FloatTensor, 形状为 (batch_size, output_dim)

通过将投影层应用于 GroupViTTextModel 的池化输出而获得的文本嵌入。

示例

>>> from transformers import CLIPTokenizer, GroupViTModel

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
>>> text_features = model.get_text_features(**inputs)

get_image_features

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) image_features (torch.FloatTensor,形状为 (batch_size, output_dim))

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, image_size, image_size), 可选) — 对应于输入图像的张量。可以使用 {image_processor_class} 获取像素值。有关详细信息,请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

image_features (torch.FloatTensor, 形状为 (batch_size, output_dim)

通过将投影层应用于 GroupViTVisionModel 的池化输出而获得的图像嵌入。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, GroupViTModel

>>> model = GroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(images=image, return_tensors="pt")

>>> image_features = model.get_image_features(**inputs)

GroupViTTextModel

class transformers.GroupViTTextModel

< >

( config: GroupViTTextConfig )

forward

< >

( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 用于避免对填充标记索引执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示标记未被遮盖
    • 0 表示标记被遮盖

    什么是注意力掩码?

  • position_ids (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 每个输入序列标记在位置嵌入中的位置索引。在 [0, config.n_positions - 1] 范围内选择。

    什么是位置 ID?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置(GroupViTConfig)和输入。

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

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

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则一个用于嵌入的输出,+ 每个层一个用于输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

GroupViTTextModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import CLIPTokenizer, GroupViTTextModel

>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = GroupViTTextModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states

GroupViTVisionModel

class transformers.GroupViTVisionModel

< >

( config: GroupViTVisionConfig )

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, image_size, image_size), 可选) — 对应于输入图像的张量。可以使用 {image_processor_class} 获取像素值。有关详细信息,请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置(GroupViTConfig)和输入。

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

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

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则一个用于嵌入的输出,+ 每个层一个用于输出),形状为 (batch_size, sequence_length, hidden_size)

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

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

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

GroupViTVisionModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, GroupViTVisionModel

>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = GroupViTVisionModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states
TensorFlow
隐藏 TensorFlow 内容

TFGroupViTModel

class transformers.TFGroupViTModel

< >

( config: GroupViTConfig *inputs **kwargs )

参数

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

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

该模型也是 keras.Model 的子类。可以像常规的 TF 2.0 Keras 模型一样使用它,并参考 TF 2.0 文档了解所有与通用用法和行为相关的事项。

TF 2.0 模型接受两种输入格式

  • 所有输入作为关键字参数(如 PyTorch 模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

当使用 `keras.Model.fit` 方法时,第二种选项非常有用,该方法目前要求将所有张量放在模型调用函数的第一个参数中:`model(inputs)`。

如果选择第二种选项,有三种可能的方式可以将所有输入张量收集到第一个位置参数中

  • 只有一个 input_ids 的单个张量,没有其他:model(input_ids)
  • 长度可变的列表,包含一个或多个输入张量,按文档字符串中给出的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给出的输入名称关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

调用

< >

( input_ids: TFModelInputType | None = None pixel_values: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None return_loss: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None output_segmentation: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutputtuple(tf.Tensor)

参数

  • input_ids (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。

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

    什么是输入 ID?

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • attention_mask (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示未屏蔽的标记,
    • 0 表示已屏蔽的标记。

    什么是注意力掩码?

  • position_ids (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 位置嵌入中每个输入序列标记的位置索引。在 [0, config.max_position_embeddings - 1] 范围内选择。

    什么是位置 ID?

  • return_loss (bool, 可选) — 是否返回对比损失。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, 可选, 默认为 `False`) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutputtuple(tf.Tensor)

一个 transformers.models.groupvit.modeling_tf_groupvit.TFGroupViTModelOutput 或一个 `tf.Tensor` 元组(如果传递了 `return_dict=False` 或当 `config.return_dict=False` 时),包含各种元素,具体取决于配置 (`<class 'transformers.models.groupvit.configuration_groupvit.GroupViTConfig'>`) 和输入。

  • loss (tf.Tensor,形状为 (1,)可选,当 return_lossTrue 时返回) — 图像-文本相似度的对比损失。

  • logits_per_image (tf.Tensor,形状为 (image_batch_size, text_batch_size)) — `image_embeds` 和 `text_embeds` 之间的缩放点积得分。这表示图像-文本相似度得分。

  • logits_per_text (tf.Tensor,形状为 (text_batch_size, image_batch_size)) — `text_embeds` 和 `image_embeds` 之间的缩放点积得分。这表示文本-图像相似度得分。

  • segmentation_logits (tf.Tensor,形状为 (batch_size, config.num_labels, logits_height, logits_width)) — 每个像素的分类分数。

    返回的 logits 的大小不一定与作为输入的 `pixel_values` 相同。这是为了避免进行两次插值并损失一些质量,当用户需要将 logits 调整到原始图像大小时,可以作为后处理步骤。您应始终检查 logits 的形状并根据需要调整大小。

  • text_embeds (tf.Tensor,形状为 (batch_size, output_dim)) — 将投影层应用于 TFGroupViTTextModel 的池化输出所获得的文本嵌入。

  • image_embeds (tf.Tensor,形状为 (batch_size, output_dim)) — 将投影层应用于 TFGroupViTVisionModel 的池化输出所获得的图像嵌入。

  • text_model_output (`TFBaseModelOutputWithPooling`) — TFGroupViTTextModel 的输出。

  • vision_model_output (`TFBaseModelOutputWithPooling`) — TFGroupViTVisionModel 的输出。

TFGroupViTModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFGroupViTModel
>>> import tensorflow as tf

>>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(
...     text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="tf", padding=True
... )

>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
>>> probs = tf.math.softmax(logits_per_image, axis=1)  # we can take the softmax to get the label probabilities

get_text_features

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) text_features (tf.Tensor,形状为 (batch_size, output_dim))

参数

  • input_ids (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。

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

    什么是输入 ID?

  • attention_mask (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示未屏蔽的标记,
    • 0 表示已屏蔽的标记。

    什么是注意力掩码?

  • position_ids (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 位置嵌入中每个输入序列标记的位置索引。在 [0, config.max_position_embeddings - 1] 范围内选择。

    什么是位置 ID?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, 可选, 默认为 `False`) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

text_features (tf.Tensor,形状为 (batch_size, output_dim)

将投影层应用于 TFGroupViTTextModel 的池化输出所获得的文本嵌入。

TFGroupViTModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import CLIPTokenizer, TFGroupViTModel

>>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf")
>>> text_features = model.get_text_features(**inputs)

get_image_features

< >

( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) image_features (tf.Tensor,形状为 (batch_size, output_dim))

参数

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, 可选, 默认为 `False`) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

image_features (tf.Tensor,形状为 (batch_size, output_dim)

将投影层应用于 TFGroupViTVisionModel 的池化输出所获得的图像嵌入。

TFGroupViTModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFGroupViTModel

>>> model = TFGroupViTModel.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(images=image, return_tensors="tf")

>>> image_features = model.get_image_features(**inputs)

TFGroupViTTextModel

class transformers.TFGroupViTTextModel

< >

( config: GroupViTTextConfig *inputs **kwargs )

调用

< >

( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

参数

  • input_ids (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。

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

    什么是输入 ID?

  • attention_mask (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示未屏蔽的标记,
    • 0 表示已屏蔽的标记。

    什么是注意力掩码?

  • position_ids (np.ndarraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 位置嵌入中每个输入序列标记的位置索引。在 [0, config.max_position_embeddings - 1] 范围内选择。

    什么是位置 ID?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, 可选, 默认为 `False`) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个 `tf.Tensor` 元组(如果传递了 `return_dict=False` 或当 `config.return_dict=False` 时),包含各种元素,具体取决于配置 (`<class 'transformers.models.groupvit.configuration_groupvit.GroupViTTextConfig'>`) 和输入。

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

  • pooler_output (tf.Tensor,形状为 (batch_size, hidden_size)) — 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层权重是在预训练期间通过下一句预测(分类)目标进行训练的。

    此输出通常不是输入语义内容的良好摘要,通常最好对整个输入序列的隐藏状态进行平均或池化。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 `output_hidden_states=True` 或当 `config.output_hidden_states=True` 时返回) — `tf.Tensor` 的元组(一个用于嵌入的输出 + 一个用于每层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态加上初始嵌入输出。

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

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

TFGroupViTTextModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import CLIPTokenizer, TFGroupViTTextModel

>>> tokenizer = CLIPTokenizer.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = TFGroupViTTextModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="tf")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled (EOS token) states

TFGroupViTVisionModel

class transformers.TFGroupViTVisionModel

< >

( config: GroupViTVisionConfig *inputs **kwargs )

调用

< >

( pixel_values: TFModelInputType | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

参数

  • pixel_values (np.ndarray, tf.Tensor, list[tf.Tensor]dict[str, tf.Tensor]dict[str, np.ndarray],并且每个样本的形状必须为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 `attentions`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 `hidden_states`。此参数只能在即时模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。此参数可以在即时模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, 可选, 默认为 `False`) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingtuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling 或一个 `tf.Tensor` 元组(如果传递了 `return_dict=False` 或当 `config.return_dict=False` 时),包含各种元素,具体取决于配置 (`<class 'transformers.models.groupvit.configuration_groupvit.GroupViTVisionConfig'>`) 和输入。

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

  • pooler_output (tf.Tensor,形状为 (batch_size, hidden_size)) — 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。线性层权重是在预训练期间通过下一句预测(分类)目标进行训练的。

    此输出通常不是输入语义内容的良好摘要,通常最好对整个输入序列的隐藏状态进行平均或池化。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 `output_hidden_states=True` 或当 `config.output_hidden_states=True` 时返回) — `tf.Tensor` 的元组(一个用于嵌入的输出 + 一个用于每层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态加上初始嵌入输出。

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

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

TFGroupViTVisionModel 的前向方法,重写了 `__call__` 特殊方法。

尽管前向传播的流程需要在此函数内定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, TFGroupViTVisionModel

>>> processor = AutoProcessor.from_pretrained("nvidia/groupvit-gcc-yfcc")
>>> model = TFGroupViTVisionModel.from_pretrained("nvidia/groupvit-gcc-yfcc")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(images=image, return_tensors="tf")

>>> outputs = model(**inputs)
>>> last_hidden_state = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_output  # pooled CLS states
< > 在 GitHub 上更新