Transformers 文档

CLIPSeg

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

CLIPSeg

PyTorch

概述

CLIPSeg 模型由 Timo Lüddecke 和 Alexander Ecker 在 Image Segmentation Using Text and Image Prompts 中提出。CLIPSeg 在冻结的 CLIP 模型之上添加了一个最小的解码器,用于零样本和单样本图像分割。

该论文的摘要如下:

图像分割通常通过为固定的对象类别集合训练模型来解决。 稍后加入其他类别或更复杂的查询是昂贵的,因为它需要在包含这些表达式的数据集上重新训练模型。 在这里,我们提出了一个系统,该系统可以在测试时根据任意提示生成图像分割。 提示可以是文本或图像。 这种方法使我们能够为三个常见的分割任务创建一个统一的模型(训练一次),这些任务带来了独特的挑战:指代表达式分割、零样本分割和单样本分割。 我们以 CLIP 模型为骨干构建,并使用基于 Transformer 的解码器对其进行扩展,从而实现密集预测。 在扩展版本的 PhraseCut 数据集上进行训练后,我们的系统会根据自由文本提示或表达查询的附加图像,为图像生成二元分割图。 我们详细分析了后一种基于图像的提示的不同变体。 这种新颖的混合输入不仅可以动态适应上述三个分割任务,还可以动态适应任何可以制定文本或图像查询的二元分割任务。 最后,我们发现我们的系统能够很好地适应涉及可供性或属性的广义查询

图纸 CLIPSeg 概述。 摘自原始论文。

此模型由 nielsr 贡献。 原始代码可以在这里找到。

使用技巧

  • CLIPSegForImageSegmentationCLIPSegModel 之上添加了一个解码器。 后者与 CLIPModel 相同。
  • CLIPSegForImageSegmentation 可以在测试时根据任意提示生成图像分割。 提示可以是文本(作为 input_ids 提供给模型)或图像(作为 conditional_pixel_values 提供给模型)。 也可以提供自定义条件嵌入(作为 conditional_embeddings 提供给模型)。

资源

以下是官方 Hugging Face 和社区(🌎 表示)资源的列表,可帮助您开始使用 CLIPSeg。 如果您有兴趣提交资源以包含在此处,请随时打开 Pull Request,我们将对其进行审核! 该资源应理想地展示一些新的内容,而不是重复现有资源。

图像分割

CLIPSegConfig

class transformers.CLIPSegConfig

< >

( text_config = None vision_config = None projection_dim = 512 logit_scale_init_value = 2.6592 extract_layers = [3, 6, 9] reduce_dim = 64 decoder_num_attention_heads = 4 decoder_attention_dropout = 0.0 decoder_hidden_act = 'quick_gelu' decoder_intermediate_size = 2048 conditional_layer = 0 use_complex_transposed_convolution = False **kwargs )

参数

  • text_config (dict, 可选) — 用于初始化 CLIPSegTextConfig 的配置选项字典。
  • vision_config (dict, 可选) — 用于初始化 CLIPSegVisionConfig 的配置选项字典。
  • projection_dim (int, 可选, 默认为 512) — 文本和视觉投影层的维度。
  • logit_scale_init_value (float, optional, defaults to 2.6592) — logit_scale 参数的初始值。默认值与原始 CLIPSeg 实现中使用的值相同。
  • extract_layers (List[int], optional, defaults to [3, 6, 9]) — 当通过 CLIP 的冻结视觉骨干网络转发查询图像时,要提取的层。
  • reduce_dim (int, optional, defaults to 64) — 用于降低 CLIP 视觉嵌入的维度。
  • decoder_num_attention_heads (int, optional, defaults to 4) — CLIPSeg 解码器中注意力头的数量。
  • decoder_attention_dropout (float, optional, defaults to 0.0) — 注意力概率的 dropout 比率。
  • decoder_hidden_act (strfunction, optional, defaults to "quick_gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new""quick_gelu"
  • decoder_intermediate_size (int, optional, defaults to 2048) — Transformer 解码器中“中间”(即,前馈)层的维度。
  • conditional_layer (int, optional, defaults to 0) — 要使用的 Transformer 编码器的层,其激活将使用 FiLM(特征级线性调制)与条件嵌入相结合。如果为 0,则使用最后一层。
  • use_complex_transposed_convolution (bool, optional, defaults to False) — 是否在解码器中使用更复杂的转置卷积,从而实现更精细的分割。
  • kwargs (optional) — 关键字参数字典。

CLIPSegConfig 是用于存储 CLIPSegModel 配置的配置类。它用于根据指定的参数实例化 CLIPSeg 模型,定义文本模型和视觉模型配置。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64 架构类似的配置。

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

示例

>>> from transformers import CLIPSegConfig, CLIPSegModel

>>> # Initializing a CLIPSegConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegConfig()

>>> # Initializing a CLIPSegModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegModel(configuration)

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

>>> # We can also initialize a CLIPSegConfig from a CLIPSegTextConfig and a CLIPSegVisionConfig

>>> # Initializing a CLIPSegText and CLIPSegVision configuration
>>> config_text = CLIPSegTextConfig()
>>> config_vision = CLIPSegVisionConfig()

>>> config = CLIPSegConfig.from_text_vision_configs(config_text, config_vision)

from_text_vision_configs

< >

( text_config: CLIPSegTextConfig vision_config: CLIPSegVisionConfig **kwargs ) CLIPSegConfig

返回

CLIPSegConfig

配置对象的实例

从 clipseg 文本模型配置和 clipseg 视觉模型配置实例化 CLIPSegConfig(或派生类)。

CLIPSegTextConfig

class transformers.CLIPSegTextConfig

< >

( vocab_size = 49408 hidden_size = 512 intermediate_size = 2048 num_hidden_layers = 12 num_attention_heads = 8 max_position_embeddings = 77 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 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, optional, defaults to 49408) — CLIPSeg 文本模型的词汇表大小。定义了在调用 CLIPSegModel 时,可以通过 inputs_ids 传递的不同 token 的数量。
  • hidden_size (int, optional, defaults to 512) — 编码器层和池化器层的维度。
  • intermediate_size (int, optional, defaults to 2048) — Transformer 编码器中“中间”(即,前馈)层的维度。
  • num_hidden_layers (int, optional, defaults to 12) — Transformer 编码器中隐藏层的数量。
  • num_attention_heads (int, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。
  • max_position_embeddings (int, optional, defaults to 77) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512 或 1024 或 2048)。
  • hidden_act (strfunction, optional, defaults to "quick_gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu""relu""selu""gelu_new""quick_gelu"
  • layer_norm_eps (float, optional, defaults to 1e-05) — 层归一化层使用的 epsilon 值。
  • attention_dropout (float, optional, defaults to 0.0) — 注意力概率的 dropout 比率。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。
  • initializer_factor (float, optional, defaults to 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。
  • pad_token_id (int, optional, defaults to 1) — Padding token id.
  • bos_token_id (int, optional, defaults to 49406) — Beginning of stream token id.
  • eos_token_id (int, optional, defaults to 49407) — End of stream token id.

这是用于存储 CLIPSegModel 配置的配置类。它用于根据指定的参数实例化 CLIPSeg 模型,定义模型架构。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64 架构类似的配置。

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

示例

>>> from transformers import CLIPSegTextConfig, CLIPSegTextModel

>>> # Initializing a CLIPSegTextConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegTextConfig()

>>> # Initializing a CLIPSegTextModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegTextModel(configuration)

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

CLIPSegVisionConfig

class transformers.CLIPSegVisionConfig

< >

( hidden_size = 768 intermediate_size = 3072 num_hidden_layers = 12 num_attention_heads = 12 num_channels = 3 image_size = 224 patch_size = 32 hidden_act = 'quick_gelu' layer_norm_eps = 1e-05 attention_dropout = 0.0 initializer_range = 0.02 initializer_factor = 1.0 **kwargs )

参数

  • hidden_size (int, 可选, 默认为 768) — 编码器层和池化器层的维度。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer 编码器中“中间”层(即,前馈层)的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 编码器中隐藏层的数量。
  • num_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
  • num_channels (int, 可选, 默认为 3) — 输入通道的数量。
  • image_size (int, 可选, 默认为 224) — 每张图片的大小(分辨率)。
  • patch_size (int, 可选, 默认为 32) — 每个 patch 的大小(分辨率)。
  • hidden_act (strfunction, 可选, 默认为 "quick_gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu", "relu", "selu", "gelu_new""quick_gelu"
  • layer_norm_eps (float, 可选, 默认为 1e-05) — 层归一化层使用的 epsilon 值。
  • attention_dropout (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • initializer_factor (float, 可选, 默认为 1.0) — 用于初始化所有权重矩阵的因子(应保持为 1,内部用于初始化测试)。

这是用于存储 CLIPSegModel 配置的配置类。它用于根据指定的参数实例化 CLIPSeg 模型,定义模型架构。使用默认值实例化配置将产生与 CLIPSeg CIDAS/clipseg-rd64 架构类似的配置。

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

示例

>>> from transformers import CLIPSegVisionConfig, CLIPSegVisionModel

>>> # Initializing a CLIPSegVisionConfig with CIDAS/clipseg-rd64 style configuration
>>> configuration = CLIPSegVisionConfig()

>>> # Initializing a CLIPSegVisionModel (with random weights) from the CIDAS/clipseg-rd64 style configuration
>>> model = CLIPSegVisionModel(configuration)

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

CLIPSegProcessor

class transformers.CLIPSegProcessor

< >

( image_processor = None tokenizer = None **kwargs )

参数

构建一个 CLIPSeg 处理器,它将 CLIPSeg 图像处理器和一个 CLIP 分词器包装到单个处理器中。

CLIPSegProcessor 提供了 ViTImageProcessorCLIPTokenizerFast 的所有功能。 有关更多信息,请参阅 __call__()decode()

batch_decode

< >

( *args **kwargs )

此方法将其所有参数转发到 CLIPTokenizerFast 的 batch_decode()。 有关更多信息,请参阅此方法的文档字符串。

decode

< >

( *args **kwargs )

此方法将其所有参数转发到 CLIPTokenizerFast 的 decode()。 有关更多信息,请参阅此方法的文档字符串。

CLIPSegModel

class transformers.CLIPSegModel

< >

( config: CLIPSegConfig )

参数

  • config (CLIPSegConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。

此模型是 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 interpolate_pos_encoding: bool = True return_dict: typing.Optional[bool] = None ) transformers.models.clipseg.modeling_clipseg.CLIPSegOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列 tokens 的索引。如果您提供 padding,默认情况下将被忽略。

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

    什么是输入 IDs?

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免在 padding token 索引上执行 attention 的 Mask。Mask 值在 [0, 1] 中选择:

    • 1 表示 未被 Mask 的 tokens,
    • 0 表示 被 Mask 的 tokens。

    什么是 attention masks?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 位置 embeddings 中每个输入序列 tokens 的位置索引。在范围 [0, config.max_position_embeddings - 1] 中选择。

    什么是 position IDs?

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。如果您提供 padding,默认情况下将被忽略。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • return_loss (bool, optional) — 是否返回对比损失。
  • output_attentions (bool, optional) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • interpolate_pos_encoding (bool, optional, defaults to True) — 是否插值预训练的位置编码。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的 tuple。

返回

transformers.models.clipseg.modeling_clipseg.CLIPSegOutputtuple(torch.FloatTensor)

一个 transformers.models.clipseg.modeling_clipseg.CLIPSegOutput 或一个 torch.FloatTensor 的 tuple (如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegConfig'>) 和输入。

  • loss (torch.FloatTensor of shape (1,), optional, 当 return_lossTrue 时返回) — 图像-文本相似度的对比损失。
  • logits_per_image (torch.FloatTensor of shape (image_batch_size, text_batch_size)) — image_embedstext_embeds 之间缩放的点积分数。 这表示图像-文本相似度得分。
  • logits_per_text (torch.FloatTensor of shape (text_batch_size, image_batch_size)) — text_embedsimage_embeds 之间缩放的点积分数。 这表示文本-图像相似度得分。
  • text_embeds (torch.FloatTensor of shape (batch_size, output_dim) — 通过将 projection 层应用于 CLIPSegTextModel 的 pooled output 获得的文本 embeddings。
  • image_embeds (torch.FloatTensor of shape (batch_size, output_dim) — 通过将 projection 层应用于 CLIPSegVisionModel 的 pooled output 获得的图像 embeddings。
  • text_model_output (BaseModelOutputWithPooling) — CLIPSegTextModel 的输出。
  • vision_model_output (BaseModelOutputWithPooling) — CLIPSegVisionModel 的输出。

CLIPSegModel forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

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

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> 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 of shape (batch_size, output_dim)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列 tokens 的索引。如果您提供 padding,默认情况下将被忽略。

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

    什么是输入 IDs?

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免在 padding token 索引上执行 attention 的 Mask。Mask 值在 [0, 1] 中选择:

    • 1 表示 未被 Mask 的 tokens,
    • 0 表示 被 Mask 的 tokens。

    什么是 attention masks?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 位置 embeddings 中每个输入序列 tokens 的位置索引。在范围 [0, config.max_position_embeddings - 1] 中选择。

    什么是 position IDs?

  • output_attentions (bool, optional) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的 tuple。

返回

text_features (torch.FloatTensor of shape (batch_size, output_dim)

通过将 projection 层应用于 CLIPSegTextModel 的 pooled output 获得的文本 embeddings。

CLIPSegModel forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoTokenizer, CLIPSegModel

>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> 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 interpolate_pos_encoding: bool = True return_dict: typing.Optional[bool] = None ) image_features (torch.FloatTensor of shape (batch_size, output_dim)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。如果您提供 padding,默认情况下将被忽略。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • output_attentions (bool, optional) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • interpolate_pos_encoding (bool, optional, defaults to True) — 是否插值预训练的位置编码。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的 tuple。

返回

image_features (torch.FloatTensor of shape (batch_size, output_dim)

通过将 projection 层应用于 CLIPSegVisionModel 的 pooled output 获得的图像 embeddings。

CLIPSegModel forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

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

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegModel.from_pretrained("CIDAS/clipseg-rd64-refined")

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

CLIPSegTextModel

class transformers.CLIPSegTextModel

< >

( config: CLIPSegTextConfig )

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.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。如果您提供填充,默认情况下将被忽略。

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

    什么是输入 IDs?

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

    • 1 表示未被掩盖的标记,
    • 0 表示被掩盖的标记。

    什么是注意力掩码?

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

    什么是位置 IDs?

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

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingtorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegTextConfig'>) 和输入。

  • 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 之后的注意力权重,用于计算自注意力头中的加权平均值。

CLIPSegTextModel 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoTokenizer, CLIPSegTextModel

>>> tokenizer = AutoTokenizer.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegTextModel.from_pretrained("CIDAS/clipseg-rd64-refined")

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

CLIPSegVisionModel

class transformers.CLIPSegVisionModel

< >

( config: CLIPSegVisionConfig )

forward

< >

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

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。如果您提供填充,默认情况下将被忽略。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • interpolate_pos_encoding (bool可选,默认为 True) — 是否插值预训练的位置编码。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingtorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegVisionConfig'>) 和输入。

  • 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 之后的注意力权重,用于计算自注意力头中的加权平均值。

CLIPSegVisionModel 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

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

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegVisionModel.from_pretrained("CIDAS/clipseg-rd64-refined")

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

CLIPSegForImageSegmentation

class transformers.CLIPSegForImageSegmentation

< >

( config: CLIPSegConfig )

参数

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

CLIPSeg 模型,顶部带有基于 Transformer 的解码器,用于零样本和单样本图像分割。

此模型是 PyTorch torch.nn.Module 子类。 将其用作常规 PyTorch 模块,并参阅 PyTorch 文档以了解与常规用法和行为相关的所有事项。

forward

< >

( input_ids: typing.Optional[torch.FloatTensor] = None pixel_values: typing.Optional[torch.FloatTensor] = None conditional_pixel_values: typing.Optional[torch.FloatTensor] = None conditional_embeddings: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = True return_dict: typing.Optional[bool] = None ) transformers.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutputtuple(torch.FloatTensor)

参数

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

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

    什么是输入 IDs?

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

    • 1 表示未被掩盖的标记,
    • 0 表示被掩盖的标记。

    什么是注意力掩码?

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

    什么是位置 IDs?

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。如果您提供填充,默认情况下将被忽略。像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅 CLIPImageProcessor.call()
  • return_loss (bool可选) — 是否返回对比损失。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。 详见返回张量下的 attentions 部分以了解更多详情。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 详见返回张量下的 hidden_states 部分以了解更多详情。
  • interpolate_pos_encoding (bool, 可选, 默认为 True) — 是否插值预训练的位置编码。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算序列分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失)。如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回

transformers.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutputtuple(torch.FloatTensor)

一个 transformers.models.clipseg.modeling_clipseg.CLIPSegImageSegmentationOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (<class 'transformers.models.clipseg.configuration_clipseg.CLIPSegTextConfig'>) 和输入。

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

CLIPSegForImageSegmentation 前向方法,覆盖了 __call__ 特殊方法。

尽管 forward pass 的配方需要在该函数中定义,但应该在此之后调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

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

>>> processor = AutoProcessor.from_pretrained("CIDAS/clipseg-rd64-refined")
>>> model = CLIPSegForImageSegmentation.from_pretrained("CIDAS/clipseg-rd64-refined")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> texts = ["a cat", "a remote", "a blanket"]
>>> inputs = processor(text=texts, images=[image] * len(texts), padding=True, return_tensors="pt")

>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> print(logits.shape)
torch.Size([3, 352, 352])
< > 在 GitHub 上更新