Transformers 文件

GOT-OCR2

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

GOT-OCR2

PyTorch

概述

GOT-OCR2 模型由 Haoran Wei、Chenglong Liu、Jinyue Chen、Jia Wang、Lingyu Kong、Yanming Xu、Zheng Ge、Liang Zhao、Jianjian Sun、Yuang Peng、Chunrui Han、Xiangyu Zhang 在 通用 OCR 理論:透過統一端到端模型實現 OCR-2.0 中提出。

論文摘要如下:

傳統 OCR 系統 (OCR-1.0) 越來越無法滿足人們的需求,因為對人工光學字元智慧處理的需求不斷增長。本文中,我們將所有人工光學訊號 (例如,純文字、數學/分子式、表格、圖表、樂譜,甚至幾何形狀) 統稱為“字元”,並提出了通用 OCR 理論以及一個出色的模型,即 GOT,以促進 OCR-2.0 的到來。GOT 擁有 5.8 億個引數,是一個統一、優雅的端到端模型,由高壓縮編碼器和長上下文解碼器組成。作為 OCR-2.0 模型,GOT 可以在各種 OCR 任務中處理上述所有“字元”。在輸入端,該模型支援切片和整頁樣式的常用場景和文件影像。在輸出端,GOT 可以透過簡單的提示生成純文字或格式化結果 (markdown/tikz/smiles/kern)。此外,該模型還具有互動式 OCR 功能,即由座標或顏色引導的區域級識別。此外,我們還將動態解析度和多頁 OCR 技術應用於 GOT,以提高實用性。在實驗中,我們提供了充足的結果來證明我們模型的優越性。

drawing GOT-OCR2 訓練階段。摘自原論文。

技巧

GOT-OCR2 適用於各種任務,包括純文件 OCR、場景文字 OCR、格式化文件 OCR,甚至表格、圖表、數學公式、幾何形狀、分子式和樂譜的 OCR。雖然該模型僅輸出純文字,但可以使用 `pdftex`、`mathpix`、`matplotlib`、`tikz`、`verovio` 或 `pyecharts` 等包對輸出進行進一步處理,以呈現所需的格式。該模型還可以用於互動式 OCR,使用者可以透過提供區域的座標或邊界框的顏色來指定要識別的區域。

該模型由yonigozlan貢獻。原始程式碼可以在這裡找到。

使用示例

純文字推理

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/image_ocr.jpg"
>>> inputs = processor(image, return_tensors="pt", device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
"R&D QUALITY IMPROVEMENT\nSUGGESTION/SOLUTION FORM\nName/Phone Ext. : (...)"

純文字批處理推理

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image1 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/multi_box.png"
>>> image2 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/image_ocr.jpg"

>>> inputs = processor([image1, image2], return_tensors="pt", device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4,
... )

>>> processor.batch_decode(generate_ids[:, inputs["input_ids"].shape[1] :], skip_special_tokens=True)
["Reducing the number", "R&D QUALITY"]

格式化文字推理

GOT-OCR2 還可以生成格式化文字,例如 markdown 或 LaTeX。以下是生成格式化文字的示例

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/latex.png"
>>> inputs = processor(image, return_tensors="pt", format=True, device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
"\\author{\nHanwen Jiang*{@html "quad\\quad"} Arjun Karpur{@html "daggerquad{ }^{\\dagger} \\quad"} Bingyi Cao{@html "daggerquad{ }^{\\dagger} \\quad"} (...)"

多頁推理

儘管在大多數情況下使用“for 迴圈”進行多頁處理是合理的,但某些跨多頁的格式化文字資料使得一次性處理所有頁面變得必要。GOT 引入了多頁 OCR(不使用“for 迴圈”)功能,模型可以一次性處理多個頁面,輸出是連續的文字。以下是處理多頁的示例

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image1 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/page1.png"
>>> image2 = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/page2.png"
>>> inputs = processor([image1, image2], return_tensors="pt", multi_page=True, format=True, device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
"\\title{\nGeneral OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model\n}\n\\author{\nHaoran Wei (...)"

裁剪補丁上的推理

GOT 支援 1024×1024 的輸入解析度,這對於大多數 OCR 任務(例如場景 OCR 或處理 A4 大小的 PDF 頁面)來說已經足夠。然而,某些場景,例如學術論文中常見的水平拼接的兩頁 PDF 或具有不尋常縱橫比的影像,在作為單個影像處理時可能會導致準確性問題。為了解決這個問題,GOT 可以將影像動態裁剪成補丁,一次性處理所有補丁,併合並結果以提高此類輸入的準確性。以下是處理裁剪補丁的示例

>>> import torch
>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", torch_dtype=torch.bfloat16, device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/one_column.png"
>>> inputs = processor(image, return_tensors="pt", format=True, crop_to_patches=True, max_patches=3, device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
"on developing architectural improvements to make learnable matching methods generalize.\nMotivated by the above observations, (...)"

特定區域的推理

GOT 支援互動式 OCR,使用者可以透過提供區域的座標或邊界框的顏色來指定要識別的區域。以下是處理特定區域的示例

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/multi_box.png"
>>> inputs = processor(image, return_tensors="pt", color="green", device=device).to(device) # or box=[x1, y1, x2, y2] for coordinates (image pixels)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
"You should keep in mind what features from the module should be used, especially \nwhen you’re planning to sell a template."

通用 OCR 資料推理示例:樂譜

雖然該模型僅輸出純文字,但可以使用 `pdftex`、`mathpix`、`matplotlib`、`tikz`、`verovio` 或 `pyecharts` 等包對輸出進行進一步處理,以呈現所需的格式。以下是處理樂譜的示例

>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> import torch
>>> import verovio

>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> model = AutoModelForImageTextToText.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", device_map=device)
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf", use_fast=True)

>>> image = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/sheet_music.png"
>>> inputs = processor(image, return_tensors="pt", format=True, device=device).to(device)

>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer=processor.tokenizer,
...     stop_strings="<|im_end|>",
...     max_new_tokens=4096,
... )

>>> outputs = processor.decode(generate_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
>>> tk = verovio.toolkit()
>>> tk.loadData(outputs)
>>> tk.setOptions(
...     {
...         "pageWidth": 2100,
...         "pageHeight": 800,
...         "footer": "none",
...         "barLineWidth": 0.5,
...         "beamMaxSlope": 15,
...         "staffLineWidth": 0.2,
...         "spacingStaff": 6,
...     }
... )
>>> tk.getPageCount()
>>> svg = tk.renderToSVG()
>>> svg = svg.replace('overflow="inherit"', 'overflow="visible"')
>>> with open("output.svg", "w") as f:
>>>     f.write(svg)
drawing

GotOcr2Config

class transformers.GotOcr2Config

< >

( vision_config = None text_config = None image_token_index = 151859 image_seq_length = 576 pad_token_id = -1 **kwargs )

引數

  • vision_config (Union[AutoConfig, dict], 可選, 預設為 CLIPVisionConfig) — 視覺骨幹的配置物件或字典。
  • text_config (Union[AutoConfig, dict], 可選, 預設為 LlamaConfig) — 文字骨幹的配置物件或字典。
  • image_token_index (int, 可選, 預設為 151859) — 用於編碼影像提示的影像 token 索引。
  • image_seq_length (int, 可選, 預設為 576) — 單個影像嵌入的序列長度。
  • pad_token_id (int, 可選, 預設為 -1) — 填充 token ID。

這是一個用於儲存 GotOcr2ForConditionalGeneration 配置的配置類。它用於根據指定引數例項化 GotOcr2 模型,定義模型架構。使用預設值例項化配置將產生類似於 GOT-OCR-2.0 的配置。

例如 stepfun-ai/GOT-OCR-2.0-hf

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。

>>> from transformers import GotOcr2ForConditionalGeneration, GotOcr2Config

>>> # Initializing a GotOcr2 style configuration
>>> configuration = GotOcr2Config()

>>> # Initializing a model from the Qwen2-VL-7B style configuration
>>> model = GotOcr2ForConditionalGeneration(configuration)

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

GotOcr2VisionConfig

class transformers.GotOcr2VisionConfig

< >

( hidden_size = 768 output_channels = 256 num_hidden_layers = 12 num_attention_heads = 12 num_channels = 3 image_size = 1024 patch_size = 16 hidden_act = 'gelu' layer_norm_eps = 1e-06 attention_dropout = 0.0 initializer_range = 1e-10 qkv_bias = True use_abs_pos = True use_rel_pos = True window_size = 14 global_attn_indexes = [2, 5, 8, 11] mlp_dim = 3072 **kwargs )

引數

  • hidden_size (int, 可選, 預設為 768) — 編碼器層和池化層的維度。
  • output_channels (int, 可選, 預設為 256) — 補丁編碼器中輸出通道的維度。
  • num_hidden_layers (int, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • num_channels (int, 可選, 預設為 3) — 輸入影像中的通道數量。
  • image_size (int, 可選, 預設為 1024) — 預期解析度。調整大小後的輸入影像的目標大小。
  • patch_size (int, 可選, 預設為 16) — 從輸入影像中提取的補丁大小。
  • hidden_act (str, 可選, 預設為 "gelu") — 非線性啟用函式(函式或字串)。
  • layer_norm_eps (float, 可選, 預設為 1e-06) — 層歸一化層使用的 epsilon。
  • attention_dropout (float, 可選, 預設為 0.0) — 注意力機率的 dropout 比率。
  • initializer_range (float, 可選, 預設為 1e-10) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。
  • qkv_bias (bool, 可選, 預設為 True) — 是否在查詢、鍵、值投影中新增偏置。
  • use_abs_pos (bool, 可選, 預設為 True) — 是否使用絕對位置嵌入。
  • use_rel_pos (bool, 可選, 預設為 True) — 是否使用相對位置嵌入。
  • window_size (int, 可選, 預設為 14) — 相對位置的視窗大小。
  • global_attn_indexes (list[int], 可選, 預設為 [2, 5, 8, 11]) — 全域性注意力層的索引。
  • mlp_dim (int, 可選, 預設為 3072) — Transformer 編碼器中 MLP 層的維度。

這是用於儲存 GotOcr2VisionModel 配置的配置類。它用於根據指定引數例項化 GOT_OCR2 視覺編碼器,定義模型架構。例項化預設配置將生成與 SAM ViT-h facebook/sam-vit-huge 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。

GotOcr2ImageProcessor

class transformers.GotOcr2ImageProcessor

< >

( do_resize: bool = True size: typing.Optional[dict[str, int]] = None crop_to_patches: bool = False min_patches: int = 1 max_patches: int = 12 resample: Resampling = <Resampling.BICUBIC: 3> do_rescale: bool = True rescale_factor: typing.Union[int, float] = 0.00392156862745098 do_normalize: bool = True image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None do_convert_rgb: bool = True **kwargs )

引數

  • do_resize (bool, 可選, 預設為 True) — 是否將影像的 (高,寬) 維度調整為指定的 size。可以透過 preprocess 方法中的 do_resize 引數覆蓋。
  • size (dict, 可選, 預設為 {"height" -- 384, "width": 384}):調整大小後輸出影像的尺寸。可以透過 preprocess 方法中的 size 引數覆蓋。
  • crop_to_patches (bool, 可選, 預設為 False) — 是否將影像裁剪成補丁。可以透過 preprocess 方法中的 crop_to_patches 引數覆蓋。
  • min_patches (int, 可選, 預設為 1) — 從影像中提取的最小補丁數。僅當 crop_to_patches 設定為 True 時有效。可以透過 preprocess 方法中的 min_patches 引數覆蓋。
  • max_patches (int, 可選, 預設為 12) — 從影像中提取的最大補丁數。僅當 crop_to_patches 設定為 True 時有效。可以透過 preprocess 方法中的 max_patches 引數覆蓋。
  • resample (PILImageResampling, 可選, 預設為 Resampling.BICUBIC) — 調整影像大小時使用的重取樣濾波器。僅當 do_resize 設定為 True 時有效。可以透過 preprocess 方法中的 resample 引數覆蓋。
  • do_rescale (bool, 可選, 預設為 True) — 是否按指定比例 rescale_factor 重新縮放影像。可以透過 preprocess 方法中的 do_rescale 引數覆蓋。
  • rescale_factor (intfloat, 可選, 預設為 1/255) — 如果重新縮放影像,則使用的縮放因子。僅當 do_rescale 設定為 True 時有效。可以透過 preprocess 方法中的 rescale_factor 引數覆蓋。
  • do_normalize (bool, 可選, 預設為 True) — 是否標準化影像。可以透過 preprocess 方法中的 do_normalize 引數覆蓋。
  • image_mean (floatlist[float], 可選, 預設為 IMAGENET_STANDARD_MEAN) — 如果標準化影像,則使用的均值。這是一個浮點數或浮點數列表,其長度與影像中的通道數相同。可以透過 preprocess 方法中的 image_mean 引數覆蓋。
  • image_std (floatlist[float], 可選, 預設為 IMAGENET_STANDARD_STD) — 如果標準化影像,則使用的標準差。這是一個浮點數或浮點數列表,其長度與影像中的通道數相同。可以透過 preprocess 方法中的 image_std 引數覆蓋。
  • do_convert_rgb (bool, 可選, 預設為 True) — 是否將影像轉換為 RGB 格式。

構造一個 GOT_OCR2 影像處理器。

crop_image_to_patches

< >

( images: ndarray min_patches: int max_patches: int use_thumbnail: bool = True patch_size: typing.Union[tuple, int, dict, NoneType] = None data_format: ChannelDimension = None ) listPIL.Image.Image 或 list[np.ndarray]

引數

  • images (np.ndarray) — 要裁剪的影像。
  • min_patches (int) — 從影像中提取的最小補丁數。
  • max_patches (int) — 從影像中提取的最大補丁數。
  • use_thumbnail (bool, 可選, 預設為 True) — 是否將縮圖新增到裁剪後的補丁列表中。
  • patch_size (int, tuple[int, int], dict, 可選) — 輸出補丁的尺寸。
  • data_format (ChannelDimension, 可選) — 影像資料的格式。如果為 None,則從輸入影像推斷格式。

返回

listPIL.Image.Image 或 list[np.ndarray]

裁剪後的影像列表。

將影像裁剪為補丁並返回裁剪後的影像列表。補丁的數量和網格排列由原始影像尺寸、目標補丁尺寸以及最小和最大補丁數量決定。補丁網格的縱橫比選擇為最接近原始影像縱橫比的。

get_number_of_image_patches

< >

( height: int width: int images_kwargs = None ) int

引數

  • height (int) — 輸入影像的高度。
  • width (int) — 輸入影像的寬度。
  • images_kwargs (dict, 可選) — 覆蓋影像處理器預設值的任何關鍵字引數。

返回

int

每張影像的補丁數量。

一個根據給定影像尺寸返回補丁數量的工具函式。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: typing.Optional[bool] = None size: typing.Optional[dict[str, int]] = None crop_to_patches: typing.Optional[bool] = None min_patches: typing.Optional[int] = None max_patches: typing.Optional[int] = None resample: Resampling = None do_rescale: typing.Optional[bool] = None rescale_factor: typing.Optional[float] = None do_normalize: typing.Optional[bool] = None image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None do_convert_rgb: typing.Optional[bool] = None data_format: ChannelDimension = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None )

引數

  • images (ImageInput) — 要預處理的影像。期望單個或批次影像的畫素值範圍為 0 到 255。如果傳入的影像畫素值在 0 到 1 之間,請設定 do_rescale=False
  • do_resize (bool, 可選, 預設為 self.do_resize) — 是否調整影像大小。
  • size (dict[str, int], 可選, 預設為 self.size) — 控制 resize 後圖像的大小。影像的最短邊將調整為 size["shortest_edge"],同時保持縱橫比。如果此調整大小後的影像最長邊 > int(size["shortest_edge"] * (1333 / 800)),則影像將再次調整大小,使最長邊等於 int(size["shortest_edge"] * (1333 / 800))
  • crop_to_patches (bool, 可選, 預設為 self.crop_to_patches) — 是否將影像裁剪成補丁。
  • min_patches (int, 可選, 預設為 self.min_patches) — 從影像中提取的最小補丁數。僅當 crop_to_patches 設定為 True 時有效。
  • max_patches (int, 可選, 預設為 self.max_patches) — 從影像中提取的最大補丁數。僅當 crop_to_patches 設定為 True 時有效。
  • resample (PILImageResampling, 可選, 預設為 self.resample) — 調整影像大小時使用的重取樣濾波器。僅當 do_resize 設定為 True 時有效。
  • do_rescale (bool, 可選, 預設為 self.do_rescale) — 是否將影像值重新縮放至 [0 - 1] 之間。
  • rescale_factor (float, 可選, 預設為 self.rescale_factor) — 如果 do_rescale 設定為 True,則用於重新縮放影像的縮放因子。
  • do_normalize (bool, 可選, 預設為 self.do_normalize) — 是否標準化影像。
  • image_mean (floatlist[float], 可選, 預設為 self.image_mean) — 如果 do_normalize 設定為 True,則用於標準化影像的均值。
  • image_std (floatlist[float], 可選, 預設為 self.image_std) — 如果 do_normalize 設定為 True,則用於標準化影像的標準差。
  • do_convert_rgb (bool, 可選, 預設為 self.do_convert_rgb) — 是否將影像轉換為 RGB 格式。
  • return_tensors (strTensorType, 可選) — 要返回的張量型別。可以是以下之一:
    • 未設定:返回 np.ndarray 列表。
    • TensorType.TENSORFLOW'tf':返回 tf.Tensor 型別的批次。
    • TensorType.PYTORCH'pt':返回 torch.Tensor 型別的批次。
    • TensorType.NUMPY'np':返回 np.ndarray 型別的批次。
    • TensorType.JAX'jax':返回 jax.numpy.ndarray 型別的批次。
  • data_format (ChannelDimensionstr, 可選, 預設為 ChannelDimension.FIRST) — 輸出影像的通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像為 (num_channels, height, width) 格式。
    • "channels_last"ChannelDimension.LAST:影像為 (height, width, num_channels) 格式。
    • 未設定:使用輸入影像的通道維度格式。
  • input_data_format (ChannelDimensionstr, 可選) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像為 (num_channels, height, width) 格式。
    • "channels_last"ChannelDimension.LAST:影像為 (height, width, num_channels) 格式。
    • "none"ChannelDimension.NONE:影像為 (height, width) 格式。

預處理一張或一批影像。

resize

< >

( image: ndarray size: dict resample: Resampling = <Resampling.BICUBIC: 3> data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None **kwargs ) np.ndarray

引數

  • image (np.ndarray) — 要調整大小的影像。
  • size (dict[str, int]) — 字典,格式為 {"height": int, "width": int},指定輸出影像的尺寸。
  • resample (PILImageResampling, 可選, 預設為 PILImageResampling.BICUBIC) — 調整影像大小時使用的 PILImageResampling 濾波器,例如 PILImageResampling.BICUBIC
  • data_format (ChannelDimensionstr, 可選) — 輸出影像的通道維度格式。如果未設定,則使用輸入影像的通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像為 (num_channels, height, width) 格式。
    • "channels_last"ChannelDimension.LAST:影像為 (height, width, num_channels) 格式。
    • "none"ChannelDimension.NONE:影像為 (height, width) 格式。
  • input_data_format (ChannelDimensionstr, 可選) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像為 (num_channels, height, width) 格式。
    • "channels_last"ChannelDimension.LAST:影像為 (height, width, num_channels) 格式。
    • "none"ChannelDimension.NONE:影像為 (height, width) 格式。

返回

np.ndarray

調整大小後的影像。

將影像調整為 (size["height"], size["width"])

GotOcr2ImageProcessorFast

class transformers.GotOcr2ImageProcessorFast

< >

( **kwargs: typing_extensions.Unpack[transformers.models.got_ocr2.image_processing_got_ocr2_fast.GotOcr2ImageProcessorKwargs] )

構建一個快速 Got Ocr2 影像處理器。

crop_image_to_patches

< >

( images: torch.Tensor min_patches: int max_patches: int use_thumbnail: bool = True patch_size: typing.Union[tuple, int, dict, NoneType] = None interpolation: typing.Optional[ForwardRef('F.InterpolationMode')] = None ) listPIL.Image.Image or list[np.ndarray]

引數

  • images (torch.Tensor) — 要裁剪的影像。
  • min_patches (int) — 從影像中提取的最小補丁數量。
  • max_patches (int) — 從影像中提取的最大補丁數量。
  • use_thumbnail (bool, 可選, 預設為 True) — 是否將縮圖新增到裁剪後的補丁列表中。
  • patch_size (int, tuple[int, int], dict, 可選) — 輸出補丁的大小。影像資料的格式。如果為 None,則從輸入影像推斷格式。

返回

listPIL.Image.Image 或 list[np.ndarray]

裁剪後的影像列表。

將影像裁剪成補丁並返回裁剪後的影像列表。補丁的數量和網格排列由原始影像大小、目標補丁大小以及最小和最大補丁數量決定。補丁網格的寬高比選擇最接近原始影像寬高比的值。

get_number_of_image_tokens

< >

( height: int width: int images_kwargs = None ) int

引數

  • height (int) — 輸入影像的高度。
  • width (int) — 輸入影像的寬度。
  • images_kwargs (dict, 可選) — 任何用於覆蓋影像處理器預設值的關鍵字引數。

返回

int

每張影像的補丁數量。

一個根據給定影像尺寸返回補丁數量的工具函式。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] **kwargs: typing_extensions.Unpack[transformers.models.got_ocr2.image_processing_got_ocr2_fast.GotOcr2ImageProcessorKwargs] ) <class 'transformers.image_processing_base.BatchFeature'>

引數

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]) — 要預處理的影像。期望畫素值在 0 到 255 之間的單個影像或批次影像。如果傳入畫素值在 0 到 1 之間的影像,請設定 do_rescale=False
  • do_resize (bool, 可選) — 是否調整影像大小。
  • size (dict[str, int], 可選) — 描述模型的最大輸入尺寸。
  • default_to_square (bool, 可選) — 如果 size 為 int 型別,調整影像大小時是否預設為正方形影像。
  • resample (Union[PILImageResampling, F.InterpolationMode, NoneType]) — 如果調整影像大小,則使用的重取樣濾波器。可以是列舉 PILImageResampling 之一。僅當 do_resize 設定為 True 時有效。
  • do_center_crop (bool, 可選) — 是否中心裁剪影像。
  • crop_size (dict[str, int], 可選) — 應用 center_crop 後輸出影像的大小。
  • do_rescale (bool, 可選) — 是否重新縮放影像。
  • rescale_factor (Union[int, float, NoneType]) — 如果 do_rescale 設定為 True,則按此重新縮放影像。
  • do_normalize (bool, 可選) — 是否歸一化影像。
  • image_mean (Union[float, list[float], NoneType]) — 用於歸一化的影像平均值。僅當 do_normalize 設定為 True 時有效。
  • image_std (Union[float, list[float], NoneType]) — 用於歸一化的影像標準差。僅當 do_normalize 設定為 True 時有效。
  • do_convert_rgb (bool, 可選) — 是否將影像轉換為 RGB。
  • return_tensors (Union[str, ~utils.generic.TensorType, NoneType]) — 如果設定為 `pt`,則返回堆疊張量,否則返回張量列表。
  • data_format (~image_utils.ChannelDimension, 可選) — 僅支援 ChannelDimension.FIRST。為與慢速處理器相容而新增。
  • input_data_format (Union[str, ~image_utils.ChannelDimension, NoneType]) — 輸入影像的通道維度格式。如果未設定,則從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像為 (num_channels, height, width) 格式。
    • "channels_last"ChannelDimension.LAST:影像為 (height, width, num_channels) 格式。
    • "none"ChannelDimension.NONE:影像為 (height, width) 格式。
  • device (torch.device, 可選) — 處理影像的裝置。如果未設定,則從輸入影像推斷裝置。
  • disable_grouping (bool, 可選) — 是否停用按大小對影像進行分組以單獨處理而不是批次處理。如果為 None,則如果影像在 CPU 上,則將其設定為 True,否則設定為 False。此選擇基於經驗觀察,詳情請參閱此處:https://github.com/huggingface/transformers/pull/38157
  • crop_to_patches (bool, 可選, 預設為 False) — 是否將影像裁剪成補丁。可以透過 preprocess 方法中的 crop_to_patches 引數覆蓋。
  • min_patches (int, 可選, 預設為 1) — 從影像中提取的最小補丁數量。僅當 crop_to_patches 設定為 True 時有效。可以透過 preprocess 方法中的 min_patches 引數覆蓋。
  • max_patches (int, 可選, 預設為 12) — 從影像中提取的最大補丁數量。僅當 crop_to_patches 設定為 True 時有效。可以透過 preprocess 方法中的 max_patches 引數覆蓋。

返回

<class 'transformers.image_processing_base.BatchFeature'>

  • data (dict) — 由 call 方法返回的列表/陣列/張量字典(“pixel_values”等)。
  • tensor_type (Union[None, str, TensorType], 可選) — 您可以在此處提供一個`tensor_type`,以便在初始化時將整數列表轉換為PyTorch/TensorFlow/Numpy張量。

GotOcr2Processor

class transformers.GotOcr2Processor

< >

( image_processor = None tokenizer = None chat_template = None **kwargs )

引數

  • image_processor (GotOcr2ImageProcessor, 可選) — 影像處理器是必需的輸入。
  • tokenizer ([PreTrainedTokenizer, PreTrainedTokenizerFast], 可選) — 分詞器是必需的輸入。
  • chat_template (str, 可選) — 一個 Jinja 模板,用於將聊天中的訊息列表轉換為可標記化的字串。

構建一個 GotOcr2 處理器,它將 GotOcr2ImageProcessorPretrainedTokenizerFast 分詞器包裝成一個繼承影像處理器和分詞器功能的單一處理器。有關更多資訊,請參閱 __call__()decode() 的文件字串。

batch_decode

< >

( *args **kwargs )

此方法將其所有引數轉發到 PreTrainedTokenizerFast 的 batch_decode()。有關更多資訊,請參閱此方法的文件字串。

decode

< >

( *args **kwargs )

此方法將其所有引數轉發到 PreTrainedTokenizerFast 的 decode()。有關更多資訊,請參閱此方法的文件字串。

GotOcr2Model

class transformers.GotOcr2Model

< >

( config: GotOcr2Config )

引數

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

GotOcr2 模型由視覺骨幹和語言模型組成,不帶語言建模頭。

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

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

forward

< >

( input_ids: LongTensor = None pixel_values: FloatTensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[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 cache_position: typing.Optional[torch.LongTensor] = None **kwargs: typing_extensions.Unpack[transformers.modeling_flash_attention_utils.FlashAttentionKwargs] ) transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2ModelOutputWithPast or tuple(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?

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

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv cache 指南
    • config.n_layers 長度的 tuple(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

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,您可以直接傳遞嵌入表示,而不是傳遞 input_ids。如果您希望對 input_ids 索引轉換為關聯向量的方式有更多控制,而不是模型內部的嵌入查詢矩陣,這會很有用。
  • use_cache (bool, 可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量中的 attentions
  • output_hidden_states (bool, optional) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 `hidden_states`。
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通的元組。
  • cache_position (形狀為 (sequence_length)torch.LongTensor可選) — 表示輸入序列中令牌位置的索引。與 position_ids 不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。

返回

transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2ModelOutputWithPasttuple(torch.FloatTensor)

一個 transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2ModelOutputWithPast 或一個 torch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),其中包含根據配置 (GotOcr2Config) 和輸入的不同元素。

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

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

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

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

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

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

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

  • image_hidden_states (torch.FloatTensor可選) — 形狀為 (batch_size, num_images, sequence_length, hidden_size)torch.FloatTensor。由視覺編碼器生成並投影最後一個隱藏狀態後的模型的影像隱藏狀態。

GotOcr2Model 的 forward 方法,覆蓋了 __call__ 特殊方法。

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

get_image_features

< >

( pixel_values: FloatTensor ) image_features (torch.Tensor)

引數

  • pixel_values (形狀為 (batch_size, channels, height, width)torch.FloatTensor]) —

返回

image_features (torch.Tensor)

形狀為 (num_images, image_length, embed_dim) 的影像特徵張量。

從視覺塔獲取影像最後隱藏狀態並應用多模態投影。

GotOcr2ForConditionalGeneration

class transformers.GotOcr2ForConditionalGeneration

< >

( config: GotOcr2Config )

引數

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

GOT_OCR2 模型由視覺骨幹和語言模型組成。

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

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

forward

< >

( input_ids: LongTensor = None pixel_values: FloatTensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = 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 return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None logits_to_keep: typing.Union[int, torch.Tensor] = 0 **kwargs: typing_extensions.Unpack[transformers.models.got_ocr2.modeling_got_ocr2.KwargsForCausalLM] ) transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2CausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (形狀為 (batch_size, sequence_length)torch.LongTensor) — 詞彙表中輸入序列令牌的索引。預設情況下將忽略填充。

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

    什麼是輸入 ID?

  • pixel_values (形狀為 (batch_size, num_channels, image_size, image_size)torch.FloatTensor) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參閱 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 進行影像處理)。
  • attention_mask (形狀為 (batch_size, sequence_length)torch.Tensor可選) — 掩碼,用於避免對填充令牌索引執行注意力。掩碼值選擇在 [0, 1] 之間:

    • 1 表示**未被掩碼**的令牌,
    • 0 表示**被掩碼**的令牌。

    什麼是注意力掩碼?

  • position_ids (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 每個輸入序列令牌在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

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

  • inputs_embeds (形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor可選) — 可選地,您可以選擇直接傳入嵌入表示,而不是傳入 input_ids。如果您希望對 input_ids 索引如何轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制,這將非常有用。
  • labels (形狀為 (batch_size, sequence_length)torch.LongTensor可選) — 用於計算掩碼語言建模損失的標籤。索引應在 [0, ..., config.vocab_size] 或 -100 之間(參見 input_ids 文件字串)。索引設定為 -100 的令牌將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 中的令牌計算。
  • use_cache (bool可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,並可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的 `attentions`。
  • output_hidden_states (bool可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 `hidden_states`。
  • return_dict (bool可選) — 是否返回 ModelOutput 而不是普通的元組。
  • cache_position (形狀為 (sequence_length)torch.LongTensor可選) — 表示輸入序列中令牌位置的索引。與 position_ids 不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。
  • logits_to_keep (Union[int, torch.Tensor],預設為 0) — 如果是 int,則計算最後 logits_to_keep 個令牌的對數。如果是 0,則計算所有 input_ids 的對數(特殊情況)。生成時只需要最後一個令牌的對數,並且僅計算該令牌的對數可以節省記憶體,這對於長序列或大詞彙量來說非常顯著。如果是 torch.Tensor,則必須是 1D,對應於序列長度維度中要保留的索引。這在使用打包張量格式(批次和序列長度的單維度)時很有用。

返回

transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2CausalLMOutputWithPasttuple(torch.FloatTensor)

一個 transformers.models.got_ocr2.modeling_got_ocr2.GotOcr2CausalLMOutputWithPast 或一個 torch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),其中包含根據配置 (GotOcr2Config) 和輸入的不同元素。

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

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

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

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

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

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

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

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

  • image_hidden_states (torch.FloatTensor可選) — 形狀為 (batch_size, num_images, sequence_length, hidden_size)torch.FloatTensor。由視覺編碼器生成並投影最後一個隱藏狀態後的模型的影像隱藏狀態。

GotOcr2ForConditionalGeneration 的 forward 方法,覆蓋了 __call__ 特殊方法。

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

示例

>>> from PIL import Image
>>> import requests
>>> from transformers import AutoProcessor, GotOcr2ForConditionalGeneration, TextStreamer

>>> model = GotOcr2ForConditionalGeneration.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf").to("cuda")
>>> processor = AutoProcessor.from_pretrained("stepfun-ai/GOT-OCR-2.0-hf")

>>> url = "https://huggingface.co/datasets/hf-internal-testing/fixtures_got_ocr/resolve/main/multi_box.png"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(image, return_tensors="pt", color="green").to("cuda")

>>> # Generate
>>> streamer = TextStreamer(processor.tokenizer, skip_prompt=True, skip_special_tokens=True)
>>> generate_ids = model.generate(
...     **inputs,
...     do_sample=False,
...     tokenizer = processor.tokenizer,
...     stop_strings='<|im_end|>',
...     streamer=streamer,
...     max_new_tokens=4096,
... )
"You should keep in mind what features from the module should be used, especially
when you're planning to sell a template."
< > 在 GitHub 上更新

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