Transformers 文件

KOSMOS-2

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

KOSMOS-2

PyTorch

概述

KOSMOS-2 模型由 Zhiliang Peng, Wenhui Wang, Li Dong, Yaru Hao, Shaohan Huang, Shuming Ma, Furu Wei 在 Kosmos-2: Grounding Multimodal Large Language Models to the World 中提出。

KOSMOS-2 是一個基於 Transformer 的因果語言模型,使用接詞預測任務在接地影像-文字對的網路規模資料集 GRIT 上進行訓練。資料集中邊界框的空間座標被轉換為一系列位置標記,並附加到其各自的實體文字跨度(例如,`a snowman` 後跟 `<patch_index_0044><patch_index_0863>`)。資料格式類似於“超連結”,它將影像中的物件區域連線到相應標題中的文字跨度。

論文摘要如下:

我們引入了 Kosmos-2,一個多模態大型語言模型(MLLM),它能夠感知物件描述(例如,邊界框)並將文字與視覺世界關聯起來。具體來說,我們將引用表示式表示為 Markdown 中的連結,即“[文字跨度](邊界框)”,其中物件描述是位置標記的序列。結合多模態語料庫,我們構建了大規模的接地影像-文字對資料(稱為 GrIT)來訓練模型。除了 MLLM 的現有功能(例如,感知一般模態、遵循指令和執行上下文學習)之外,Kosmos-2 還將接地能力整合到下游應用程式中。我們評估了 Kosmos-2 在各種任務上的效能,包括 (i) 多模態接地,例如引用表示式理解和短語接地,(ii) 多模態引用,例如引用表示式生成,(iii) 感知語言任務,以及 (iv) 語言理解和生成。這項工作為具身 AI 的發展奠定了基礎,並闡明瞭語言、多模態感知、行動和世界建模的大融合,這是邁向通用人工智慧的關鍵一步。程式碼和預訓練模型可在 https://aka.ms/kosmos-2 獲取。

drawing KOSMOS-2 可以處理的任務概述。摘自原始論文

示例

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

>>> model = Kosmos2ForConditionalGeneration.from_pretrained("microsoft/kosmos-2-patch14-224")
>>> processor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")

>>> url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> prompt = "<grounding> An image of"

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

>>> generated_ids = model.generate(
...     pixel_values=inputs["pixel_values"],
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     image_embeds=None,
...     image_embeds_position_mask=inputs["image_embeds_position_mask"],
...     use_cache=True,
...     max_new_tokens=64,
... )
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> processed_text = processor.post_process_generation(generated_text, cleanup_and_extract=False)
>>> processed_text
'<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming himself by<phrase> a fire</phrase><object><patch_index_0005><patch_index_0911></object>.'

>>> caption, entities = processor.post_process_generation(generated_text)
>>> caption
'An image of a snowman warming himself by a fire.'

>>> entities
[('a snowman', (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ('a fire', (41, 47), [(0.171875, 0.015625, 0.484375, 0.890625)])]

此模型由 Yih-Dar SHIEH 貢獻。原始程式碼可在 此處 找到。

Kosmos2Config

class transformers.Kosmos2Config

< >

( text_config = None vision_config = None latent_query_num = 64 **kwargs )

引數

  • text_config (dict, 可選) — 用於初始化 Kosmos2TextConfig 的配置選項字典。
  • vision_config (dict, 可選) — 用於初始化 Kosmos2VisionConfig 的配置選項字典。
  • latent_query_num (int, 可選, 預設為 64) — 用於文字解碼器元件中表示影像特徵的潛在查詢標記的數量。
  • kwargs (可選) — 關鍵字引數字典。

這是用於儲存 Kosmos2Model 配置的配置類。它用於根據指定引數例項化 KOSMOS-2 模型,定義模型架構。使用預設值例項化配置將產生類似於 KOSMOS-2 microsoft/kosmos-2-patch14-224 架構的配置。

示例

>>> from transformers import Kosmos2Config, Kosmos2Model

>>> # Initializing a Kosmos-2 kosmos-2-patch14-224 style configuration
>>> configuration = Kosmos2Config()

>>> # Initializing a model (with random weights) from the kosmos-2-patch14-224 style configuration
>>> model = Kosmos2Model(configuration)

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

Kosmos2ImageProcessor

Kosmos2Processor

class transformers.Kosmos2Processor

< >

( image_processor tokenizer num_patch_index_tokens = 1024 *kwargs )

引數

  • image_processor (CLIPImageProcessor) — 一個 CLIPImageProcessor 例項。影像處理器是必需輸入。
  • tokenizer (XLMRobertaTokenizerFast) — 一個 [‘XLMRobertaTokenizerFast`]] 例項。分詞器是必需輸入。
  • num_patch_index_tokens (int, 可選, 預設為 1024) — 表示補丁索引的標記數量。

構建一個 KOSMOS-2 處理器,它將 KOSMOS-2 影像處理器和 KOSMOS-2 分詞器包裝成一個單一的處理器。

Kosmos2Processor 提供了 CLIPImageProcessor 的所有功能和 XLMRobertaTokenizerFast 的部分功能。有關更多資訊,請參閱 call()decode() 的文件字串。

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] = None text: typing.Union[str, list[str]] = None audio = None videos = None **kwargs: typing_extensions.Unpack[transformers.models.kosmos2.processing_kosmos2.Kosmos2ProcessorKwargs] )

引數

  • bboxes (Union[list[tuple[int]], list[tuple[float]], list[list[tuple[int]]], list[list[tuple[float]]]], 可選) — 與 texts 相關的邊界框。
  • num_image_tokens (int, 可選,預設為 64) — 用於標記保留影像資訊佔位符的(連續)位置數量。這應與您使用的 Kosmos2Config 例項中的 latent_query_num 相同。
  • first_image_token_id (int, 可選) — 將用於子序列中第一個位置的標記 ID,該子序列保留用於儲存影像資訊。如果未設定,則預設為 self.tokenizer.unk_token_id + 1
  • add_eos_token (bool, 預設為 False) — 當 add_special_tokens=True 時,是否在編碼中包含 EOS 標記 ID。

此方法使用 CLIPImageProcessor.call() 方法準備模型影像,並使用 XLMRobertaTokenizerFast.call() 準備模型文字。

有關更多資訊,請參閱上述兩種方法的文件字串。

本文件的其餘部分顯示了 Kosmos2Processor 的特定引數。

Kosmos2Model

class transformers.Kosmos2Model

< >

( config: Kosmos2Config )

引數

  • config (Kosmos2Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。

用於生成文字和影像特徵的 KOSMOS-2 模型。該模型由視覺編碼器和語言模型組成。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None input_ids: typing.Optional[torch.Tensor] = None image_embeds_position_mask: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None image_embeds: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None interpolate_pos_encoding: bool = False return_dict: typing.Optional[bool] = None **kwargs: typing_extensions.Unpack[transformers.modeling_flash_attention_utils.FlashAttentionKwargs] ) transformers.models.kosmos2.modeling_kosmos2.Kosmos2ModelOutputtuple(torch.FloatTensor)

引數

  • pixel_values (形狀為 (batch_size, num_channels, image_size, image_size)torch.Tensor可選) — 對應於輸入影像的張量。畫素值可以透過 {image_processor_class} 獲取。有關詳細資訊,請參閱 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • image_embeds_position_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 用於指示序列中插入影像特徵位置的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示放置影像特徵的位置,
    • 0 表示不用於影像特徵的位置(即用於文字標記的位置)。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 避免對填充標記索引執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示未被掩蓋的標記,
    • 0 表示被掩蓋的標記。

    什麼是注意力掩碼?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor可選) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示頭部未被掩蓋
    • 0 表示頭部被掩蓋
  • past_key_values (list[torch.FloatTensor], 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常由模型在解碼的先前階段返回的 past_key_values 組成,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量)。這也被稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入最後 input_ids(那些沒有將其過去鍵值狀態提供給此模型的)的形狀 (batch_size, 1),而不是所有 input_ids 的形狀 (batch_size, sequence_length)

  • image_embeds (形狀為 (batch_size, latent_query_num, hidden_size)torch.FloatTensor可選) — Kosmos2ImageToTextProjection 輸出的隱藏狀態序列。
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor可選) — 可選地,您可以直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望更好地控制如何將 input_ids 索引轉換為關聯向量,而不是模型內部的嵌入查詢矩陣,這將很有用。
  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • use_cache (bool, 可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,並可用於加速解碼(請參閱 past_key_values)。
  • output_attentions (bool, optional) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的 hidden_states
  • interpolate_pos_encoding (bool, 預設為 False) — 是否對預訓練的位置編碼進行插值。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元組。

返回

transformers.models.kosmos2.modeling_kosmos2.Kosmos2ModelOutputtuple(torch.FloatTensor)

一個 transformers.models.kosmos2.modeling_kosmos2.Kosmos2ModelOutputtorch.FloatTensor 元組(如果傳遞 return_dict=Falseconfig.return_dict=False),包含根據配置(Kosmos2Config)和輸入而變化的不同元素。

  • last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可選,預設為 None) — 模型最後一層輸出的隱藏狀態序列。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量,如果 config.is_encoder_decoder=True,則可選包含 2 個形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的附加張量。

    包含預計算的隱藏狀態(自注意力塊中的鍵和值,如果 config.is_encoder_decoder=True 則可選包含交叉注意力塊中的鍵和值),可用於(請參閱 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple[torch.FloatTensor], optional, 當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — 形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 一個用於每層的輸出)。

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple[torch.FloatTensor], optional, 當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — 形狀為 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元組(每個層一個)。

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • image_embeds (形狀為 (batch_size, latent_query_num, hidden_size)torch.FloatTensor, optional) — Kosmos2ImageToTextProjection 輸出的隱藏狀態序列。

  • projection_attentions (tuple(torch.FloatTensor), optional) — 形狀為 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元組(每個層一個)。

    Kosmos2ImageToTextProjection 給出的注意力權重,在注意力softmax之後,用於計算自注意力頭中的加權平均值。

  • vision_model_output (BaseModelOutputWithPooling, optional) — Kosmos2VisionModel 的輸出。

Kosmos2Model forward 方法,覆蓋 __call__ 特殊方法。

雖然前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

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

>>> model = Kosmos2Model.from_pretrained("microsoft/kosmos-2-patch14-224")
>>> processor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")

>>> url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> text = (
...     "<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863>"
...     "</object> warming himself by<phrase> a fire</phrase><object><patch_index_0005><patch_index_0911>"
...     "</object>"
... )

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

>>> last_hidden_state = model(
...     pixel_values=inputs["pixel_values"],
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     image_embeds_position_mask=inputs["image_embeds_position_mask"],
... ).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 91, 2048]

Kosmos2ForConditionalGeneration

class transformers.Kosmos2ForConditionalGeneration

< >

( config: Kosmos2Config )

引數

  • config (Kosmos2Config) — 帶有模型所有引數的模型配置類。用配置檔案初始化不會載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。

用於生成給定影像的文字和邊界框的 KOSMOS-2 模型。該模型由視覺編碼器和語言模型組成。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解所有與一般用法和行為相關的事項。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None input_ids: typing.Optional[torch.Tensor] = None image_embeds_position_mask: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None image_embeds: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None **kwargs: typing_extensions.Unpack[transformers.models.kosmos2.modeling_kosmos2.KwargsForCausalLM] ) transformers.models.kosmos2.modeling_kosmos2.Kosmos2ForConditionalGenerationModelOutputtuple(torch.FloatTensor)

引數

  • pixel_values (形狀為 (batch_size, num_channels, image_size, image_size)torch.Tensor, optional) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲得。有關詳細資訊,請參閱 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 進行影像處理)。
  • input_ids (形狀為 (batch_size, sequence_length)torch.Tensor, optional) — 詞彙表中輸入序列 token 的索引。預設情況下將忽略填充。

    索引可以使用 AutoTokenizer 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • image_embeds_position_mask (形狀為 (batch_size, sequence_length)torch.Tensor, optional) — 用於指示序列中插入影像特徵位置的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示放置影像特徵的位置,
    • 0 表示不放置影像特徵的位置(即文字 token)。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor, optional) — 用於避免對填充 token 索引執行注意力的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示 未被掩蓋 的 token,
    • 0 表示 被掩蓋 的 token。

    什麼是注意力掩碼?

  • head_mask (形狀為 (num_heads,)(num_layers, num_heads)torch.Tensor, optional) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示頭部 未被掩蓋
    • 0 表示頭部 被掩蓋
  • past_key_values (list[torch.FloatTensor], optional) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量。這也被稱為傳統快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回傳統快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最新 input_ids(那些沒有將其過去鍵值狀態提供給此模型的),而不是形狀為 (batch_size, sequence_length) 的所有 input_ids

  • image_embeds (形狀為 (batch_size, latent_query_num, hidden_size)torch.FloatTensor, optional) — Kosmos2ImageToTextProjection 輸出的隱藏狀態序列。
  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.Tensor, optional) — 可選地,除了傳遞 input_ids 之外,您還可以選擇直接傳遞嵌入表示。如果您希望對 input_ids 索引如何轉換為關聯向量擁有比模型內部嵌入查詢矩陣更多的控制權,這將非常有用。
  • position_ids (形狀為 (batch_size, sequence_length)torch.Tensor, optional) — 每個輸入序列 token 在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • labels (形狀為 (batch_size, sequence_length)torch.LongTensor, optional) — 用於計算從左到右語言建模損失(下一詞預測)的標籤。索引應在 [-100, 0, ..., config.vocab_size] 範圍內(請參閱 input_ids 文件字串)索引設定為 -100 的 token 將被忽略(被掩蓋),損失僅針對標籤在 [0, ..., config.vocab_size] 範圍內的 token 計算。
  • use_cache (bool, optional) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(請參閱 past_key_values)。
  • output_attentions (bool, optional) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量中的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量中的 hidden_states

返回

transformers.models.kosmos2.modeling_kosmos2.Kosmos2ForConditionalGenerationModelOutputtuple(torch.FloatTensor)

一個 transformers.models.kosmos2.modeling_kosmos2.Kosmos2ForConditionalGenerationModelOutputtorch.FloatTensor 元組(如果傳遞 return_dict=Falseconfig.return_dict=False),包含根據配置(Kosmos2Config)和輸入而變化的不同元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • past_key_values (tuple(tuple(torch.FloatTensor)), optional, 當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量,如果 config.is_encoder_decoder=True,則可選包含 2 個形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的附加張量。

    包含預計算的隱藏狀態(自注意力塊中的鍵和值,如果 config.is_encoder_decoder=True 則可選包含交叉注意力塊中的鍵和值),可用於(請參閱 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple[torch.FloatTensor], optional, 當傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — 形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor 元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 一個用於每層的輸出)。

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple[torch.FloatTensor], optional, 當傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — 形狀為 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元組(每個層一個)。

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

  • image_embeds (形狀為 (batch_size, latent_query_num, hidden_size)torch.FloatTensor, optional) — Kosmos2ImageToTextProjection 輸出的隱藏狀態序列。

  • projection_attentions (tuple(torch.FloatTensor), optional) — 形狀為 (batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor 元組(每個層一個)。

    Kosmos2ImageToTextProjection 給出的注意力權重,在注意力softmax之後,用於計算自注意力頭中的加權平均值。

  • vision_model_output (BaseModelOutputWithPooling, optional) — Kosmos2VisionModel 的輸出。

Kosmos2ForConditionalGeneration forward 方法,覆蓋 __call__ 特殊方法。

雖然前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module 例項而不是此函式,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

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

>>> model = Kosmos2ForConditionalGeneration.from_pretrained("microsoft/kosmos-2-patch14-224")
>>> processor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")

>>> url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> prompt = "<grounding> An image of"

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

>>> generated_ids = model.generate(
...     pixel_values=inputs["pixel_values"],
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     image_embeds=None,
...     image_embeds_position_mask=inputs["image_embeds_position_mask"],
...     use_cache=True,
...     max_new_tokens=64,
... )
>>> generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> processed_text = processor.post_process_generation(generated_text, cleanup_and_extract=False)
>>> processed_text
'<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming himself by<phrase> a fire</phrase><object><patch_index_0005><patch_index_0911></object>.'

>>> caption, entities = processor.post_process_generation(generated_text)
>>> caption
'An image of a snowman warming himself by a fire.'

>>> entities
[('a snowman', (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ('a fire', (41, 47), [(0.171875, 0.015625, 0.484375, 0.890625)])]
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.