InstructBLIP
概述
InstructBLIP模型由Wenliang Dai、Junnan Li、Dongxu Li、Anthony Meng Huat Tiong、Junqi Zhao、Weisheng Wang、Boyang Li、Pascale Fung和Steven Hoi在InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning中提出。 InstructBLIP利用BLIP-2架构进行视觉指令调优。
论文的摘要如下:
能够解决各种语言领域任务的通用语言模型已经通过预训练和指令调优管道出现。然而,由于额外的视觉输入引入的任务差异增加,构建通用视觉语言模型具有挑战性。尽管视觉语言预训练已被广泛研究,但视觉语言指令调优仍然相对较少探索。在本文中,我们基于预训练的BLIP-2模型对视觉语言指令调优进行了系统而全面的研究。我们收集了26个公开可用的数据集,将它们转换为指令调优格式,并将它们分为两个集群,用于保留指令调优和保留零样本评估。此外,我们引入了指令感知的视觉特征提取,这是一种关键方法,使模型能够提取适合给定指令的信息特征。生成的InstructBLIP模型在所有13个保留数据集上实现了最先进的零样本性能,显著优于BLIP-2和更大的Flamingo。我们的模型在个别下游任务上进行微调时也达到了最先进的性能(例如,在ScienceQA IMG上的准确率为90.7%)。此外,我们定性地展示了InstructBLIP相对于并发多模态模型的优势。
![drawing](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/instructblip_architecture.jpg)
使用提示
InstructBLIP 使用与 BLIP-2 相同的架构,但有一个微小但重要的区别:它还将文本提示(指令)输入到 Q-Former 中。
[!注意] BLIP模型在发布v4.46版本后,将会发出警告,提示需要添加
processor.num_query_tokens = {{num_query_tokens}}
并扩展模型嵌入层以添加特殊的标记。如果您拥有模型检查点,强烈建议您将这些属性添加到处理器中;如果不属于您,请提交PR。添加这些属性意味着BLIP将为每张图像添加所需的查询标记数量,并在文本中扩展相应数量的
占位符。通常每张图像大约需要500个标记,因此请确保文本未被截断,否则在合并嵌入时会出现失败。 这些属性可以从模型配置中获取,如
model.config.num_query_tokens
,模型嵌入扩展可以通过此链接完成。
InstructBlipConfig
类 transformers.InstructBlipConfig
< source >( vision_config = 无 qformer_config = 无 text_config = 无 num_query_tokens = 32 image_token_index = 无 **kwargs )
参数
- vision_config (
dict
, 可选) — 用于初始化 InstructBlipVisionConfig 的配置选项字典. - qformer_config (
dict
, 可选) — 用于初始化 InstructBlipQFormerConfig 的配置选项字典。 - text_config (
dict
, optional) — 用于初始化任何PretrainedConfig的配置选项字典。 - num_query_tokens (
int
, 可选, 默认为 32) — 通过Transformer传递的查询令牌的数量。 - image_token_index (
int
, optional) — 特殊图像令牌的令牌索引。 - kwargs (可选) — 关键字参数字典。
InstructBlipConfig 是用于存储 InstructBlipForConditionalGeneration 配置的配置类。它用于根据指定的参数实例化一个 InstructBLIP 模型,定义视觉模型、Q-Former 模型和语言模型的配置。使用默认值实例化配置将生成与 InstructBLIP Salesforce/instruct-blip-flan-t5 架构类似的配置。
配置对象继承自PretrainedConfig,可用于控制模型输出。阅读PretrainedConfig的文档以获取更多信息。
示例:
>>> from transformers import (
... InstructBlipVisionConfig,
... InstructBlipQFormerConfig,
... OPTConfig,
... InstructBlipConfig,
... InstructBlipForConditionalGeneration,
... )
>>> # Initializing a InstructBlipConfig with Salesforce/instruct-blip-flan-t5 style configuration
>>> configuration = InstructBlipConfig()
>>> # Initializing a InstructBlipForConditionalGeneration (with random weights) from the Salesforce/instruct-blip-flan-t5 style configuration
>>> model = InstructBlipForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a InstructBlipConfig from a InstructBlipVisionConfig, InstructBlipQFormerConfig and any PretrainedConfig
>>> # Initializing InstructBLIP vision, InstructBLIP Q-Former and language model configurations
>>> vision_config = InstructBlipVisionConfig()
>>> qformer_config = InstructBlipQFormerConfig()
>>> text_config = OPTConfig()
>>> config = InstructBlipConfig.from_text_vision_configs(vision_config, qformer_config, text_config)
from_vision_qformer_text_configs
< source >( vision_config: InstructBlipVisionConfig qformer_config: InstructBlipQFormerConfig text_config: PretrainedConfig **kwargs ) → InstructBlipConfig
从InstructBLIP视觉模型、Q-Former和语言模型配置中实例化一个InstructBlipConfig(或派生类)。
InstructBlipVisionConfig
class transformers.InstructBlipVisionConfig
< source >( hidden_size = 1408 intermediate_size = 6144 num_hidden_layers = 39 num_attention_heads = 16 image_size = 224 patch_size = 14 hidden_act = 'gelu' layer_norm_eps = 1e-06 attention_dropout = 0.0 initializer_range = 1e-10 qkv_bias = True **kwargs )
参数
- hidden_size (
int
, optional, 默认为 1408) — 编码器层和池化层的维度。 - intermediate_size (
int
, 可选, 默认为 6144) — Transformer编码器中“中间”(即前馈)层的维度。 - num_hidden_layers (
int
, optional, 默认为 39) — Transformer 编码器中的隐藏层数量。 - num_attention_heads (
int
, optional, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数。 - image_size (
int
, optional, 默认为 224) — 每张图像的尺寸(分辨率)。 - patch_size (
int
, optional, defaults to 14) — 每个补丁的大小(分辨率)。 - hidden_act (
str
或function
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
,"relu"
,"selu"
和"gelu_new"
"gelu"
。到 1e-5):层归一化层使用的 epsilon 值。 - layer_norm_eps (
float
, optional, defaults to 1e-06) — 层归一化层使用的epsilon值。 - attention_dropout (
float
, optional, defaults to 0.0) — 注意力概率的丢弃比率。 - initializer_range (
float
, 可选, 默认为 1e-10) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 - qkv_bias (
bool
, optional, defaults toTrue
) — 是否在自注意力层中的查询和值中添加偏置。
这是用于存储InstructBlipVisionModel配置的配置类。它用于根据指定的参数实例化一个InstructBLIP视觉编码器,定义模型架构。实例化配置默认值将产生与InstructBLIP Salesforce/instruct-blip-flan-t5架构类似的配置。
配置对象继承自PretrainedConfig,可用于控制模型输出。阅读PretrainedConfig的文档以获取更多信息。
示例:
>>> from transformers import InstructBlipVisionConfig, InstructBlipVisionModel
>>> # Initializing a InstructBlipVisionConfig with Salesforce/instruct-blip-flan-t5 style configuration
>>> configuration = InstructBlipVisionConfig()
>>> # Initializing a InstructBlipVisionModel (with random weights) from the Salesforce/instruct-blip-flan-t5 style configuration
>>> model = InstructBlipVisionModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
InstructBlipQFormerConfig
类 transformers.InstructBlipQFormerConfig
< source >( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 0 position_embedding_type = 'absolute' cross_attention_frequency = 2 encoder_hidden_size = 1408 **kwargs )
参数
- vocab_size (
int
, optional, 默认为 30522) — Q-Former 模型的词汇量大小。定义了调用模型时传递的inputs_ids
可以表示的不同标记的数量。 - hidden_size (
int
, optional, 默认为 768) — 编码器层和池化层的维度。 - num_hidden_layers (
int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。 - num_attention_heads (
int
, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 - intermediate_size (
int
, optional, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。 - hidden_act (
str
或Callable
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 - attention_probs_dropout_prob (
float
, optional, defaults to 0.1) — 注意力概率的丢弃比率。 - max_position_embeddings (
int
, 可选, 默认为 512) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512、1024 或 2048)。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 - layer_norm_eps (
float
, optional, defaults to 1e-12) — 层归一化层使用的epsilon值。 - pad_token_id (
int
, optional, defaults to 0) — 用于填充序列的令牌ID。 - position_embedding_type (
str
, 可选, 默认为"absolute"
) — 位置嵌入的类型。选择"absolute"
,"relative_key"
,"relative_key_query"
中的一个。对于 位置嵌入,使用"absolute"
。有关"relative_key"
的更多信息,请参阅 Self-Attention with Relative Position Representations (Shaw et al.)。 有关"relative_key_query"
的更多信息,请参阅 Improve Transformer Models with Better Relative Position Embeddings (Huang et al.) 中的 方法 4. - cross_attention_frequency (
int
, optional, defaults to 2) — 向Transformer层添加交叉注意力的频率。 - encoder_hidden_size (
int
, optional, 默认为 1408) — 用于交叉注意力的隐藏状态的隐藏大小。
这是用于存储InstructBlipQFormerModel配置的配置类。它用于根据指定的参数实例化一个InstructBLIP查询转换器(Q-Former)模型,定义模型架构。使用默认值实例化配置将产生与InstructBLIP Salesforce/instruct-blip-flan-t5架构相似的配置。配置对象继承自PretrainedConfig,可用于控制模型输出。更多信息请阅读PretrainedConfig的文档。
请注意,InstructBlipQFormerModel 与 BertLMHeadModel 非常相似,具有交错的交叉注意力。
示例:
>>> from transformers import InstructBlipQFormerConfig, InstructBlipQFormerModel
>>> # Initializing a InstructBLIP Salesforce/instruct-blip-flan-t5 style configuration
>>> configuration = InstructBlipQFormerConfig()
>>> # Initializing a model (with random weights) from the Salesforce/instruct-blip-flan-t5 style configuration
>>> model = InstructBlipQFormerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
InstructBlipProcessor
类 transformers.InstructBlipProcessor
< source >( image_processor tokenizer qformer_tokenizer num_query_tokens = 无 **kwargs )
参数
- image_processor (
BlipImageProcessor
) — 一个 BlipImageProcessor 的实例。图像处理器是一个必需的输入。 - tokenizer (
AutoTokenizer
) — 一个 [‘PreTrainedTokenizer`] 的实例。tokenizer 是一个必需的输入。 - qformer_tokenizer (
AutoTokenizer
) — 一个 [‘PreTrainedTokenizer`] 的实例。Q-Former 分词器是一个必需的输入。 - num_query_tokens (
int
, optional) —” Qformer 用作查询的令牌数量,应与模型配置中的相同。
构建一个InstructBLIP处理器,它将BLIP图像处理器和LLaMa/T5分词器封装到一个单一的处理器中。
InstructBlipProcessor 提供了 BlipImageProcessor 和 AutoTokenizer 的所有功能。更多信息请参见 __call__()
的文档字符串和 decode()。
此方法将其所有参数转发给PreTrainedTokenizer的batch_decode()。请参考该方法的文档字符串以获取更多信息。
此方法将其所有参数转发给PreTrainedTokenizer的decode()。请参考该方法的文档字符串以获取更多信息。
InstructBlipVisionModel
前进
< source >( 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 interpolate_pos_encoding: bool = False ) → transformers.modeling_outputs.BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
参数
- pixel_values (
torch.FloatTensor
of shape(batch_size, num_channels, height, width)
) — 像素值。像素值可以使用InstructBlipProcessor获取。详情请参见InstructBlipProcessor.__call__()
. - output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。 - interpolate_pos_encoding (
bool
, optional, defaults toFalse
) — 是否插值预训练的位置编码.
返回
transformers.modeling_outputs.BaseModelOutputWithPooling 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPooling 或一个由
torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种
元素,具体取决于配置(
)和输入。
-
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后的注意力权重,用于计算自注意力头中的加权平均值。
InstructBlipVisionModel 的 forward 方法,重写了 __call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但之后应该调用Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
InstructBlipQFormerModel
查询转换器(Q-Former),用于InstructBLIP。与BLIP-2相比略有修改,因为它还将指令作为输入。
前进
< source >( input_ids: LongTensor attention_mask: typing.Optional[torch.FloatTensor] = None position_ids: typing.Optional[torch.LongTensor] = None query_embeds: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.FloatTensor] = None encoder_hidden_states: typing.Optional[torch.FloatTensor] = None encoder_attention_mask: typing.Optional[torch.FloatTensor] = None past_key_values: typing.Optional[typing.Tuple[typing.Tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None )
encoder_hidden_states (torch.FloatTensor
of shape (batch_size, sequence_length, hidden_size)
, 可选):
编码器最后一层输出的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
encoder_attention_mask (torch.FloatTensor
of shape (batch_size, sequence_length)
, 可选):
用于避免对编码器输入的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。掩码值在 [0, 1]
中选择:
- 1 表示 未屏蔽 的标记,
- 0 表示被掩码的标记。
past_key_values (
tuple(tuple(torch.FloatTensor))
长度为config.n_layers
,每个元组包含4个张量: 形状(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
): 包含预计算的关键和 注意力块的值隐藏状态。可用于加速解码。如果使用了past_key_values
, 用户可以选择仅输入最后一个decoder_input_ids
(那些没有将其过去的关键 值状态提供给此模型的)形状为(batch_size, 1)
,而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 use_cache (bool
, 可选): 如果设置为True
,past_key_values
关键值状态将被返回,并可用于加速解码(参见past_key_values
)。
InstructBlipForConditionalGeneration
类 transformers.InstructBlipForConditionalGeneration
< source >( 配置: InstructBlipConfig )
参数
- config (InstructBlipConfig) — 包含模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
InstructBLIP 模型用于根据图像和可选的文本提示生成文本。该模型由视觉编码器、查询变换器(Q-Former)和语言模型组成。
可以选择性地将input_ids
传递给模型,作为文本提示,使语言模型继续生成提示内容。否则,语言模型将从[BOS](序列开始)标记开始生成文本。
该模型继承自PreTrainedModel。请查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入的大小、修剪头部等)。
该模型也是一个PyTorch torch.nn.Module 子类。 将其作为常规的PyTorch模块使用,并参考PyTorch文档以获取与一般使用和行为相关的所有信息。
前进
< source >( pixel_values: FloatTensor qformer_input_ids: FloatTensor qformer_attention_mask: typing.Optional[torch.LongTensor] = None input_ids: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None labels: typing.Optional[torch.LongTensor] = None return_dict: typing.Optional[bool] = None interpolate_pos_encoding: bool = False ) → transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutput
或 tuple(torch.FloatTensor)
参数
- pixel_values (
torch.FloatTensor
of shape(batch_size, num_channels, height, width)
) — 像素值。像素值可以使用InstructBlipProcessor获取。详情请参见InstructBlipProcessor.__call__()
. - qformer_input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Indices of input sequence tokens in the vocabulary of the Q-Former. Input tokens can optionally be provided to serve as text prompt, which the Q-Former model will encode.可以使用InstructBlipProcessor获取索引。详情请参见
InstructBlipProcessor.__call__()
。 - qformer_attention_mask (
torch.Tensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — Indices of input sequence tokens in the vocabulary of the language model. Input tokens can optionally be provided to serve as text prompt, which the language model can continue.可以使用InstructBlipProcessor获取索引。详情请参见
InstructBlipProcessor.__call__()
。 - attention_mask (
torch.Tensor
of shape(batch_size, sequence_length)
, optional) — Mask to avoid performing attention on padding token indices. Mask values selected in[0, 1]
:- 1 for tokens that are not masked,
- 0 for tokens that are masked.
- decoder_input_ids (
torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — Indices of decoder input sequence tokens in the vocabulary of the language model. Only relevant in case an encoder-decoder language model (like T5) is used.可以使用AutoTokenizer获取索引。详情请参见PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。什么是解码器输入ID?
- decoder_attention_mask (
torch.BoolTensor
of shape(batch_size, target_sequence_length)
, optional) — Default behavior: generate a tensor that ignores pad tokens indecoder_input_ids
. Causal mask will also be used by default.仅在使用编码器-解码器语言模型(如T5)时相关。
- output_attentions (
bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。 - interpolate_pos_encoding (
bool
, optional, defaults toFalse
) — 是否插值预训练的位置编码. - labels (
torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]
范围内。所有设置为-100
的标签将被忽略(屏蔽),损失仅针对[0, ..., config.vocab_size]
范围内的标签计算
返回
transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.instructblip.modeling_instructblip.InstructBlipForConditionalGenerationModelOutput
或一个由
torch.FloatTensor
组成的元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种
元素,具体取决于配置(
)和输入。
- loss (
torch.FloatTensor
, 可选, 当提供labels
时返回,torch.FloatTensor
形状为(1,)
) — 来自语言模型的语言建模损失。 - logits (
torch.FloatTensor
形状为(batch_size, sequence_length, config.vocab_size)
) — 语言模型的语言建模头的预测分数。 - vision_outputs (
BaseModelOutputWithPooling
) — 视觉编码器的输出。 - qformer_outputs (
BaseModelOutputWithPoolingAndCrossAttentions
) — Q-Former(查询变换器)的输出。 - language_model_outputs (
CausalLMOutputWithPast
或Seq2SeqLMOutput
) — 语言模型的输出。
InstructBlipForConditionalGeneration 的前向方法,重写了 __call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但之后应该调用Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import InstructBlipProcessor, InstructBlipForConditionalGeneration
>>> import torch
>>> from PIL import Image
>>> import requests
>>> model = InstructBlipForConditionalGeneration.from_pretrained("Salesforce/instructblip-vicuna-7b")
>>> processor = InstructBlipProcessor.from_pretrained("Salesforce/instructblip-vicuna-7b")
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model.to(device)
>>> url = "https://raw.githubusercontent.com/salesforce/LAVIS/main/docs/_static/Confusing-Pictures.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
>>> prompt = "What is unusual about this image?"
>>> inputs = processor(images=image, text=prompt, return_tensors="pt").to(device)
>>> outputs = model.generate(
... **inputs,
... do_sample=False,
... num_beams=5,
... max_length=256,
... min_length=1,
... top_p=0.9,
... repetition_penalty=1.5,
... length_penalty=1.0,
... temperature=1,
... )
>>> generated_text = processor.batch_decode(outputs, skip_special_tokens=True)[0].strip()
>>> print(generated_text)
The unusual aspect of this image is that a man is ironing clothes on the back of a yellow SUV, which is parked in the middle of a busy city street. This is an unconventional approach to ironing clothes, as it requires the man to balance himself and his ironing equipment on top of the vehicle while navigating through traffic. Additionally, the presence of taxis and other vehicles in the scene further emphasizes the unusual nature of this situation.
生成
< source >( pixel_values: FloatTensor qformer_input_ids: typing.Optional[torch.LongTensor] = None qformer_attention_mask: typing.Optional[torch.LongTensor] = None input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None interpolate_pos_encoding: bool = False **generate_kwargs ) → 标题 (列表)
参数
- pixel_values (
torch.FloatTensor
of shape (batch_size, num_channels, height, width)) — 要处理的输入图像。 - qformer_input_ids (
torch.LongTensor
of shape (batch_size, sequence_length), optional) — 用作提示序列,输入到Q-Former模块中。 - qformer_attention_mask (
torch.LongTensor
of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。 - input_ids (
torch.LongTensor
of shape (batch_size, sequence_length), optional) — 用于生成提示的序列。 - attention_mask (
torch.LongTensor
of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。 - interpolate_pos_encoding (
bool
, optional, defaults toFalse
) — 是否对图像嵌入的位置编码进行插值。
返回
字幕(列表)
长度为 batch_size * num_captions 的字符串列表。
重写 generate
函数,以便能够将模型用作条件生成器。