Transformers documentation
MGP-STR
Este modelo foi publicado no HF papers em 2022-09-08 e contribuído para o Hugging Face Transformers em 2023-03-13.
MGP-STR
Visão geral
O modelo MGP-STR foi proposto em Multi-Granularity Prediction for Scene Text Recognition por Peng Wang, Cheng Da e Cong Yao. O MGP-STR é um modelo de Reconhecimento de Texto em Cena (STR) visual, conceitualmente simples, porém potente, construído sobre o Vision Transformer (ViT). Para integrar o conhecimento linguístico, a estratégia de Previsão Multi-Granularidade (MGP) é proposta para injetar informações da modalidade de linguagem no modelo de forma implícita.
O resumo do artigo é o seguinte:
O reconhecimento de texto em cenas (STR) tem sido um tópico de pesquisa ativo em visão computacional há anos. Para enfrentar esse problema desafiador, inúmeros métodos inovadores foram sucessivamente propostos e a incorporação de conhecimento linguístico em modelos de STR tornou-se recentemente uma tendência proeminente. Neste trabalho, primeiro nos inspiramos nos recentes avanços no Vision Transformer (ViT) para construir um modelo de STR visual conceitualmente simples, porém poderoso, que é baseado no ViT e supera os modelos state-of-the-art anteriores para reconhecimento de texto em cenas, incluindo tanto modelos puramente visuais quanto métodos aumentados por linguagem. Para integrar o conhecimento linguístico, propomos ainda uma estratégia de Previsão Multi-Granularidade para injetar informações da modalidade linguística no modelo de forma implícita, ou seja, as representações de subpalavras (BPE e WordPiece) amplamente utilizadas em PLN são introduzidas no espaço de saída, além da representação convencional em nível de caractere, sem que nenhum modelo de linguagem (LM) independente seja adotado. O algoritro resultante (denominado MGP-STR) é capaz de elevar o limite de desempenho do STR a um nível ainda mais alto. Especificamente, ele atinge uma precisão média de reconhecimento de 93,35% em benchmarks padrão.
MGP-STR architecture. Taken from the original paper. O MGP-STR é treinado em dois conjuntos de dados sintéticos, MJSynth (MJ) e SynthText (ST), sem ajuste fino em outros conjuntos de dados. Ele atinge resultados de estado da arte em seis benchmarks padrão de texto em cena em latim, incluindo 3 conjuntos de dados de texto regular (IC13, SVT, IIIT) e 3 irregulares (IC15, SVTP, CUTE). Este modelo foi contribuído por yuekun. O código original pode ser encontrado aqui.
Exemplo de inferência
MgpstrModel aceita imagens como entrada e gera três tipos de previsões, que representam informações textuais em diferentes granularidades. Os três tipos de previsões são fundidos para fornecer o resultado final da previsão.
A classe ViTImageProcessor é responsável pelo pré-processamento da imagem de entrada e o MgpstrTokenizer decodifica os tokens de caracteres gerados para a string de destino. O MgpstrProcessor agrupa o ViTImageProcessor e o MgpstrTokenizer em uma única instância para extrair os recursos de entrada e decodificar os ids de tokens previstos.
- Reconhecimento Óptico de Caracteres (OCR) passo a passo
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
classe 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 )
Parâmetros
- image_size (
Union[list[int], tuple[int, ...]], opcional, padrão(32, 128)) — O tamanho (resolução) de cada imagem. - patch_size (
Union[int, list[int], tuple[int, int]], opcional, padrão4) — O tamanho (resolução) de cada patch. - num_channels (
int, opcional, padrão3) — O número de canais de entrada. - max_token_length (
int, opcional, padrão 27) — O número máximo de tokens de saída. - num_character_labels (
int, opcional, padrão 38) — O número de classes para a cabeça de personagem. - num_bpe_labels (
int, opcional, padrão 50257) — O número de classes para a cabeça bpe. - num_wordpiece_labels (
int, opcional, padrão 30522) — O número de classes para a cabeça wordpiece. - hidden_size (
int, opcional, padrão768) — Dimensão das representações ocultas. - num_hidden_layers (
int, opcional, padrão12) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão12) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - mlp_ratio (
Union[float, int], opcional, padrão4.0) — Proporção entre a dimensão oculta do MLP e a dimensão de incorporação. - qkv_bias (
bool, opcional, padrãoTrue) — Se deve adicionar um viés às queries, keys e values. - distilled (
bool, opcional, padrãoFalse) — O modelo inclui um token e uma cabeça de destilação, como nos modelos DeiT. - layer_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de camada. - drop_rate (
float, opcional, padrão 0.0) — A probabilidade de dropout para todas as camadas totalmente conectadas nos embeddings e no codificador. - attn_drop_rate (
float, opcional, padrão 0.0) — A taxa de dropout para as probabilidades de atenção. - drop_path_rate (
Union[float, int], opcional, padrão0.0) — Taxa de drop path para a fusão de patches. - output_a3_attentions (
bool, opcional, padrãoFalse) — Indica se o modelo deve retornar as atenções do módulo A^3. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
Esta é a classe de configuração para armazenar a configuração de um Mgp StrModel. Ela é usada para instanciar um modelo Mgp Str de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do alibaba-damo/mgp-str-base
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplo:
>>> 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
classe transformers.MgpstrTokenizer
< source >( vocab_fileunk_token = '[GO]'bos_token = '[GO]'eos_token = '[s]'pad_token = '[GO]'**kwargs )
Parâmetros
- vocab_file (
str) — Caminho para o arquivo de vocabulário. - unk_token (
str, opcional, padrão"[GO]") — O token desconhecido. Um token que não está no vocabulário não pode ser convertido em um ID e é definido como este token em vez disso. - bos_token (
str, opcional, padrão"[GO]") — O token de início de sequência. - eos_token (
str, opcional, padrão"[s]") — O token de fim de sequência. - pad_token (
stroutokenizers.AddedToken, opcional, padrão"[GO]") — Um token especial usado para tornar os arrays de tokens do mesmo tamanho para fins de lote. Em seguida, será ignorado pelos mecanismos de atenção ou pelo cálculo da perda.
Construa um tokenizador de caracteres MGP-STR.
Este tokenizer herda de PreTrainedTokenizer, que contém a maioria dos métodos principais. Os usuários devem consultar essa superclasse para obter mais informações sobre esses métodos.
MgpstrProcessor
classe transformers.MgpstrProcessor
< source >( image_processor = Nonetokenizer = None**kwargs )
Constrói um MgpstrProcessor que encapsula um processador de imagem e um tokenizer em um único processador.
MgpstrProcessor oferece todas as funcionalidades de ViTImageProcessor e MgpstrTokenizer. Consulte ~ViTImageProcessor e ~MgpstrTokenizer para mais informações.
__call__
< source >( text = Noneimages = None**kwargs )
Parâmetros
- 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 (
strou TensorType, opcional) — Se definido, retornará tensors de um framework específico. Os valores aceitos são:'pt': Retorna objetostorch.Tensordo PyTorch.'np': Retorna objetosnp.ndarraydo NumPy.
batch_decode
< source >( sequences ) → dict[str, any]
Parâmetros
Retorna
dict[str, any]
Dicionário de todas as saídas dos resultados decodificados.
generated_text (list[str]): Os resultados finais após a fusão de char, bpe e wp. scores
(list[float]): As pontuações finais após a fusão de char, bpe e wp. char_preds (list[str]): A lista
de frases decodificadas por caractere. bpe_preds (list[str]): A lista de frases decodificadas por bpe. wp_preds
(list[str]): A lista de frases decodificadas por wp.
Converta uma lista de listas de ids de tokens em uma lista de strings chamando decode.
Este método encaminha todos os seus argumentos para o batch_decode() do PreTrainedTokenizer. Consulte a docstring deste método para obter mais informações.
MgpstrModel
classe transformers.MgpstrModel
< source >( config: MgpstrConfig )
Parâmetros
- config (MgpstrConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O modelo Mgp Str puro, que produz estados ocultos brutos sem nenhum cabeçalho específico no topo.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( pixel_values: FloatTensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.FloatTensor)
Parâmetros
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando ViTImageProcessor. Consulte ViTImageProcessor.call() para mais detalhes (MgpstrProcessor usa ViTImageProcessor para processar imagens). - output_attentions (
bool, opcional) — Indica se os tensores de atenção de todas as camadas de atenção devem ser retornados. Consulteattentionsnos tensores retornados para mais detalhes. - output_hidden_states (
bool, opcional) — Indica se as hidden states de todas as camadas devem ser retornadas. Consultehidden_statesem tensors retornados para mais detalhes. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples.
Retorna
BaseModelOutput ou tuple(torch.FloatTensor)
Um BaseModelOutput ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (MgpstrConfig) e das entradas.
O método forward do MgpstrModel substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.hidden_states (
tuple(torch.FloatTensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) com formato(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.FloatTensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
MgpstrForSceneTextRecognition
classe transformers.MgpstrForSceneTextRecognition
< source >( config: MgpstrConfig )
Parâmetros
- config (MgpstrConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Modelo MGP-STR com três cabeças de classificação no topo (três módulos A^3 e três camadas lineares no topo da saída do codificador do transformer) para reconhecimento de texto em cena (STR).
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)
Parâmetros
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando ViTImageProcessor. Consulte ViTImageProcessor.call() para mais detalhes (MgpstrProcessor usa ViTImageProcessor para processar imagens). - output_attentions (
bool, opcional) — Indica se os tensores de atenção de todas as camadas de atenção devem ser retornados. Consulteattentionsnos tensores retornados para mais detalhes. - output_a3_attentions (
bool, opcional) — Indica se os tensores de atenção dos módulos a3 devem ser retornados. Consultea3_attentionsem tensores retornados para mais detalhes. - output_hidden_states (
bool, opcional) — Indica se as hidden states de todas as camadas devem ser retornadas. Consultehidden_statesem tensors retornados para mais detalhes. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples.
Retorna
MgpstrModelOutput ou tuple(torch.FloatTensor)
Uma MgpstrModelOutput ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (MgpstrConfig) e das entradas.
O método forward de MgpstrForSceneTextRecognition substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
logits (
tuple(torch.FloatTensor)de forma(batch_size, config.num_character_labels)) — Tupla detorch.FloatTensor(uma para a saída de character de forma(batch_size, config.max_token_length, config.num_character_labels), + uma para a saída de bpe de forma(batch_size, config.max_token_length, config.num_bpe_labels), + uma para a saída de wordpiece de forma(batch_size, config.max_token_length, config.num_wordpiece_labels)) .Pontuações de classificação (antes do SoftMax) de character, bpe e wordpiece.
hidden_states (
tuple[torch.FloatTensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(uma para a saída dos embeddings, se o modelo tiver uma camada de embedding, + uma para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
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)`.Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
Exemplo:
>>> 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"]'