Transformers documentation
MGP-STR
Эта модель была опубликована в HF papers 08.09.2022 и добавлена в Hugging Face Transformers 13.03.2023.
MGP-STR
Обзор
Модель MGP-STR была предложена в работе Multi-Granularity Prediction for Scene Text Recognition (Peng Wang, Cheng Da, Cong Yao). MGP-STR — это концептуально простая, но мощная модель распознавания текста в сценах (STR), построенная на основе Vision Transformer (ViT). Для интеграции лингвистических знаний предложена стратегия Multi-Granularity Prediction (MGP), которая неявно вводит информацию из языковой модальности в модель.
Аннотация из статьи следующая:
Распознавание текста в сценах (STR) на протяжении многих лет является активной областью исследований в области компьютерного зрения. Для решения этой сложной задачи последовательно предлагались многочисленные инновационные методы, а в последнее время встраивание лингвистических знаний в модели STR стало заметным трендом. В данной работе мы черпаем вдохновение из недавних достижений в области Vision Transformer (ViT), чтобы построить концептуально простую, но мощную визуальную модель STR, основанную на ViT. Эта модель превосходит предыдущие передовые модели распознавания текста в сценах, включая как чисто визуальные модели, так и методы с языковым дополнением. Для интеграции лингвистических знаний мы дополнительно предлагаем стратегию Multi-Granularity Prediction, которая неявно вводит информацию из языковой модальности в модель: в пространство вывода, помимо традиционного представления на уровне символов, вводятся представления субслов (BPE и WordPiece), широко используемые в NLP, при этом независимая языковая модель (LM) не используется. Полученный алгоритм (называемый MGP-STR) способен поднять уровень производительности STR на еще более высокий уровень. В частности, он достигает средней точности распознавания 93,35% на стандартных бенчмарках.
MGP-STR architecture. Taken from the original paper. MGP-STR обучается на двух синтетических наборах данных MJSynth (MJ) и SynthText (ST) без дообучения на других наборах. Модель демонстрирует наилучшие результаты на шести стандартных бенчмарках для латинского сценического текста, включая три набора для обычного текста (IC13, SVT, IIIT) и три для нерегулярного (IC15, SVTP, CUTE). Эта модель была предоставлена пользователем yuekun. Исходный код можно найти здесь.
Пример инференса
MgpstrModel принимает на вход изображения и генерирует три типа предсказаний, представляющих текстовую информацию с разной степенью детализации. Три типа предсказаний объединяются для получения итогового результата.
Класс ViTImageProcessor отвечает за предобработку входного изображения, а MgpstrTokenizer декодирует сгенерированные токены символов в целевую строку. MgpstrProcessor объединяет ViTImageProcessor и MgpstrTokenizer в единый экземпляр, чтобы извлекать входные признаки и декодировать предсказанные идентификаторы токенов.
- Пошаговое распознавание символов (OCR)
import requests
from PIL import Image
from transformers import MgpstrForSceneTextRecognition, MgpstrProcessor
processor = MgpstrProcessor.from_pretrained('alibaba-damo/mgp-str-base')
model = MgpstrForSceneTextRecognition.from_pretrained('alibaba-damo/mgp-str-base', device_map="auto")
# load a synthetic scene-text image
url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/mgp_str_ticket.png"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
pixel_values = processor(images=image, return_tensors="pt").to(model.device).pixel_values
outputs = model(pixel_values)
generated_text = processor.batch_decode(outputs.logits)['generated_text']MgpstrConfig
класс transformers.MgpstrConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneimage_size: list[int] | tuple[int, ...] = (32, 128)patch_size: int | list[int] | tuple[int, int] = 4num_channels: int = 3max_token_length: int = 27num_character_labels: int = 38num_bpe_labels: int = 50257num_wordpiece_labels: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12mlp_ratio: float | int = 4.0qkv_bias: bool = Truedistilled: bool = Falselayer_norm_eps: float = 1e-05drop_rate: float | int = 0.0attn_drop_rate: float | int = 0.0drop_path_rate: float | int = 0.0output_a3_attentions: bool = Falseinitializer_range: float = 0.02 )
Параметры
- image_size (
Union[list[int], tuple[int, ...]], необязательный, по умолчанию(32, 128)) — Размер (разрешение) каждого изображения. - patch_size (
Union[int, list[int], tuple[int, int]], необязательный, по умолчанию4) — Размер (разрешение) каждого патча. - num_channels (
int, необязательный, по умолчанию3) — Количество входных каналов. - max_token_length (
int, необязательный, по умолчанию 27) — Максимальное количество выходных токенов. - num_character_labels (
int, необязательный, по умолчанию 38) — Количество классов для character head. - num_bpe_labels (
int, необязательный, по умолчанию 50257) — Количество классов для bpe-головы. - num_wordpiece_labels (
int, необязательный, по умолчанию 30522) — Количество классов для wordpiece-головы. - hidden_size (
int, необязательный, по умолчанию768) — Размерность скрытых представлений. - num_hidden_layers (
int, необязательный, по умолчанию12) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию12) — Количество головок внимания в каждом слое внимания декодера Transformer. - mlp_ratio (
Union[float, int], необязательный, по умолчанию4.0) — Соотношение скрытого размера MLP к размеру эмбеддинга. - qkv_bias (
bool, необязательный, по умолчаниюTrue) — Добавлять ли смещение к запросам, ключам и значениям. - distilled (
bool, необязательный, по умолчаниюFalse) — Модель содержит токен и головку дистилляции, как в моделях DeiT. - layer_norm_eps (
float, необязательный, по умолчанию1e-05) — Значение epsilon, используемое слоями нормализации. - drop_rate (
float, необязательный, по умолчанию 0.0) — Вероятность dropout для всех полносвязных слоев в эмбеддингах и энкодере. - attn_drop_rate (
float, необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания. - drop_path_rate (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент drop path для слияния патчей. - output_a3_attentions (
bool, необязательный, по умолчаниюFalse) — Указывает, должен ли модель возвращать внимания модуля A^3. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
Это класс конфигурации для хранения конфигурации модели Mgp StrModel. Он используется для создания модели Mgp Str в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации alibaba-damo/mgp-str-base
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import MgpstrConfig, MgpstrForSceneTextRecognition
>>> # Initializing a Mgpstr mgp-str-base style configuration
>>> configuration = MgpstrConfig()
>>> # Initializing a model (with random weights) from the mgp-str-base style configuration
>>> model = MgpstrForSceneTextRecognition(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMgpstrTokenizer
класс transformers.MgpstrTokenizer
< source >( vocab_fileunk_token = '[GO]'bos_token = '[GO]'eos_token = '[s]'pad_token = '[GO]'**kwargs )
Параметры
- vocab_file (
str) — Путь к файлу словаря. - unk_token (
str, необязательный, по умолчанию"[GO]") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него устанавливается этот токен. - bos_token (
str, необязательный, по умолчанию"[GO]") — Токен начала последовательности. - eos_token (
str, необязательный, по умолчанию"[s]") — Токен конца последовательности. - pad_token (
strилиtokenizers.AddedToken, необязательный, по умолчанию"[GO]") — Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.
Создайте токенизатор символов MGP-STR.
Этот токенизатор наследуется от PreTrainedTokenizer, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
MgpstrProcessor
класс transformers.MgpstrProcessor
< source >( image_processor = Nonetokenizer = None**kwargs )
Создаёт MgpstrProcessor, который объединяет image processor и tokenizer в единый процессор.
MgpstrProcessor предоставляет все возможности ViTImageProcessor и MgpstrTokenizer. Подробнее см. в ~ViTImageProcessor и ~MgpstrTokenizer.
__call__
< source >( text = Noneimages = None**kwargs )
Параметры
- text (`
) -- The sequence or batch of sequences to be encoded. Each sequence can be a string or a list of strings (pretokenized string). If you pass a pretokenized input, setis_split_into_words=True` to avoid ambiguity with batched inputs. - images (`
) -- Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, setdo_rescale=False`. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
batch_decode
< source >( sequences ) → dict[str, any]
Параметры
Возвращает
dict[str, any]
Словарь всех выходов декодированных результатов.
generated_text (list[str]): Итоговые результаты после слияния char, bpe и wp. scores
(list[float]): Итоговые оценки после слияния char, bpe и wp. char_preds (list[str]): Список
предложений, декодированных на уровне символов. bpe_preds (list[str]): Список предложений, декодированных с помощью bpe. wp_preds
(list[str]): Список предложений, декодированных с помощью wp.
Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.
Этот метод передаёт все свои аргументы в batch_decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.
MgpstrModel
класс transformers.MgpstrModel
< source >( config: MgpstrConfig )
Параметры
- config (MgpstrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Mgp Str без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: FloatTensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.FloatTensor)
Параметры
- pixel_values (
torch.FloatTensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ViTImageProcessor. Подробности см. в ViTImageProcessor.call() (MgpstrProcessor использует ViTImageProcessor для обработки изображений). - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
BaseModelOutput или tuple(torch.FloatTensor)
Объект BaseModelOutput или кортеж
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (MgpstrConfig) и входных данных.
Метод MgpstrModel forward переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.FloatTensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
MgpstrForSceneTextRecognition
класс transformers.MgpstrForSceneTextRecognition
< source >( config: MgpstrConfig )
Параметры
- config (MgpstrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
MGP-STR: трансформер-модель с тремя классификационными головами (три модуля A^3 и три линейных слоя, размещённые поверх выходных данных кодировщика трансформера) для распознавания текста в сцене (STR).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: FloatTensoroutput_attentions: bool | None = Noneoutput_a3_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MgpstrModelOutput or tuple(torch.FloatTensor)
Параметры
- pixel_values (
torch.FloatTensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ViTImageProcessor. Подробности см. в ViTImageProcessor.call() (MgpstrProcessor использует ViTImageProcessor для обработки изображений). - output_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описанииattentionsв разделе возвращаемых тензоров. - output_a3_attentions (
bool, необязательный) — Указывает, следует ли возвращать тензоры внимания модулей a3. Подробности см. в описанииa3_attentionsв разделе возвращаемых тензоров. - output_hidden_states (
bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описанииhidden_statesсреди возвращаемых тензоров. - return_dict (
bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
Возвращает
MgpstrModelOutput или tuple(torch.FloatTensor)
Объект MgpstrModelOutput или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (MgpstrConfig) и входных данных.
Метод forward класса MgpstrForSceneTextRecognition переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
logits (
tuple(torch.FloatTensor)формы(batch_size, config.num_character_labels)) — Кортежtorch.FloatTensor(один для вывода character формы(batch_size, config.max_token_length, config.num_character_labels), + один для вывода bpe формы(batch_size, config.max_token_length, config.num_bpe_labels), + один для вывода wordpiece формы(batch_size, config.max_token_length, config.num_wordpiece_labels)) .Оценки классификации (до SoftMax) для character, bpe и wordpiece.
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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
a3_attentions (
tuple(torch.FloatTensor), optional, returned whenoutput_a3_attentions=Trueis passed or whenconfig.output_a3_attentions=True) — Tuple oftorch.FloatTensor(one for the attention of character, + one for the attention of bpe, + one for the attention of wordpiece) of shape(batch_size, config.max_token_length, sequence_length)`.Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import (
... MgpstrProcessor,
... MgpstrForSceneTextRecognition,
... )
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> # load a synthetic scene-text image
>>> url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/mgp_str_ticket.png"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read())).convert("RGB")
>>> processor = MgpstrProcessor.from_pretrained("alibaba-damo/mgp-str-base")
>>> pixel_values = processor(images=image, return_tensors="pt").pixel_values
>>> model = MgpstrForSceneTextRecognition.from_pretrained("alibaba-damo/mgp-str-base")
>>> # inference
>>> outputs = model(pixel_values)
>>> out_strs = processor.batch_decode(outputs.logits)
>>> out_strs["generated_text"]
'["ticket"]'