Transformers documentation

MGP-STR

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model 2022-09-08 tarihinde HF papers'ta yayımlanmış ve 2023-03-13 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.

MGP-STR

Genel Bakış

MGP-STR modeli, Peng Wang, Cheng Da ve Cong Yao tarafından Multi-Granularity Prediction for Scene Text Recognition makalesinde önerilmiştir. MGP-STR, kavramsal olarak basit ancak güçlü bir görüntü tabanlı Sahne Metni Tanıma (STR) modelidir ve Vision Transformer (ViT) üzerine inşa edilmiştir. Dilbilgisi bilgisini entegre etmek için, dil modalitesinden gelen bilgileri modele dolaylı bir şekilde enjekte etmek amacıyla Çok Granüler Tahmin (MGP) stratejisi önerilmiştir.

Makalenin özeti aşağıdaki gibidir:

Sahne metni tanıma (STR), bilgisayar görüşünde yıllardır aktif bir araştırma konusu olmuştur. Bu zorlu sorunu ele almak için sayısız yenilikçi yöntem ardı ardına önerilmiş ve STR modellerine dilbilimsel bilgi entegre etme son zamanlarda öne çıkan bir eğilim haline gelmiştir. Bu çalışmada, ilk olarak Vision Transformer (ViT) alanındaki son ilerlemelerden ilham alarak, kavramsal olarak basit ama güçlü bir görme STR modeli inşa ettik; bu model ViT üzerine kuruludur ve sahnede metin tanıma için önceki en iyi modelleri, hem saf görme modellerini hem de dil destekli yöntemleri kapsayacak şekilde, geride bırakmaktadır. Dilbilimsel bilgiyi entegre etmek için, dil modülünden gelen bilgileri modele dolaylı bir şekilde enjekte etmek üzere Çok Granülerlikli Tahmin (Multi-Granularity Prediction) stratejisini öneriyoruz; yani, geleneksel karakter düzeyi temsilinin yanı sıra, NLP'de yaygın olarak kullanılan alt kelime temsilleri (BPE ve WordPiece) çıktı uzayına dahil edilirken, bağımsız bir dil modeli (LM) kullanılmamaktadır. Sonuçta elde edilen algoritma (MGP-STR olarak adlandırılır), STR'nin performans sınırını daha da yüksek bir seviyeye taşıyabilmektedir. Özellikle, standart test setlerinde ortalama %93,35 tanıma doğruluğu elde etmektedir.

drawing MGP-STR architecture. Taken from the original paper.

MGP-STR, diğer veri setlerinde ince ayar yapılmadan, iki sentetik veri seti olan MJSynth (MJ) ve SynthText (ST) üzerinde eğitilir. IC13, SVT ve IIIT olmak üzere 3 düzenli metin veri seti ile IC15, SVTP ve CUTE olmak üzere 3 düzensiz veri setini içeren altı standart Latin sahne metni benchmark'ında en iyi sonuçları elde eder. Bu model yuekun tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.

Çıkarım örneği

MgpstrModel, girdi olarak görüntüler kabul eder ve farklı granülerliklerdeki metinsel bilgileri temsil eden üç tür tahmin üretir. Üç tür tahmin, nihai tahmin sonucunu vermek üzere birleştirilir.

ViTImageProcessor sınıfı, girdi görüntüsünün ön işlenmesinden sorumludur ve MgpstrTokenizer, üretilen karakter tokenlarını hedef dizeye çözer. MgpstrProcessor, ViTImageProcessor ve MgpstrTokenizer bileşenlerini tek bir örnekte birleştirerek hem girdi özelliklerini çıkarır hem de tahmin edilen token kimliklerini çözer.

  • Adım Adım Optik Karakter Tanıma (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

sınıf transformers.MgpstrConfig

< >

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

Parametreler

  • image_size (Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan (32, 128)) — Her bir görüntünün boyutu (çözünürlüğü).
  • patch_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 4) — Her yamanın boyutu (çözünürlüğü).
  • num_channels (int, isteğe bağlı, varsayılan 3) — Giriş kanal sayısı.
  • max_token_length (int, isteğe bağlı, varsayılan 27) — Çıktı token'larının maksimum sayısı.
  • num_character_labels (int, isteğe bağlı, varsayılan 38) — Karakter başlığı için sınıf sayısı.
  • num_bpe_labels (int, isteğe bağlı, varsayılan 50257) — bpe başlığı için sınıf sayısı.
  • num_wordpiece_labels (int, isteğe bağlı, varsayılan 30522) — wordpiece başlığı için sınıf sayısı.
  • hidden_size (int, isteğe bağlı, varsayılan 768) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 12) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • mlp_ratio (Union[float, int], isteğe bağlı, varsayılan 4.0) — MLP gizli boyutunun gömme boyutuna oranı.
  • qkv_bias (bool, isteğe bağlı, varsayılan True) — Sorgulara, anahtarlara ve değerlere bir sapma eklenip eklenmeyeceği.
  • distilled (bool, isteğe bağlı, varsayılan False) — Model, DeiT modellerinde olduğu gibi bir damıtma belirteci ve başlık içerir.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-05) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • drop_rate (float, isteğe bağlı, varsayılan 0.0) — Gömme ve kodlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.
  • attn_drop_rate (float, isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • drop_path_rate (Union[float, int], isteğe bağlı, varsayılan 0.0) — Patch füzyonu için drop path oranı.
  • output_a3_attentions (bool, isteğe bağlı, varsayılan False) — Modelin A^3 modülü dikkatlerini döndürüp döndürmeyeceğini belirtir.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

Bu, bir Mgp StrModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Mgp Str modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, alibaba-damo/mgp-str-base ile benzer bir yapılandırmaya yol açar.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnek:

>>> 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.config

MgpstrTokenizer

sınıf transformers.MgpstrTokenizer

< >

( vocab_fileunk_token = '[GO]'bos_token = '[GO]'eos_token = '[s]'pad_token = '[GO]'**kwargs )

Parametreler

  • vocab_file (str) — Sözlük dosyasının yolu.
  • unk_token (str, isteğe bağlı, varsayılan "[GO]") — Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır.
  • bos_token (str, isteğe bağlı, varsayılan "[GO]") — Dizinin başlangıç belirteci.
  • eos_token (str, isteğe bağlı, varsayılan "[s]") — Dizi sonu belirteci.
  • pad_token (str veya tokenizers.AddedToken, isteğe bağlı, varsayılan "[GO]") — Toplu işlem (batching) amacıyla token dizilerini aynı boyuta getirmek için kullanılan özel bir token. Dikkat mekanizmaları veya kayıp (loss) hesaplaması tarafından yok sayılır.

MGP-STR karakter belirleyici (tokenizer) oluşturun.

Bu tokenizer, ana yöntemlerin çoğunu içeren PreTrainedTokenizer sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

MgpstrProcessor

sınıf transformers.MgpstrProcessor

< >

( image_processor = Nonetokenizer = None**kwargs )

Parametreler

  • image_processor (ViTImageProcessor) — Görüntü işleyici zorunlu bir girdidir.
  • tokenizer (MgpstrTokenizer) — Tokenizer zorunlu bir girdidir.

Bir görüntü işleyiciyi ve bir belirteçleyiciyi tek bir işleyicide birleştiren bir MgpstrProcessor oluşturur.

MgpstrProcessor, ViTImageProcessor ve MgpstrTokenizer sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~ViTImageProcessor ve ~MgpstrTokenizer belgelerini inceleyin.

__call__

< >

( text = Noneimages = None**kwargs )

Parametreler

  • 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, set is_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, set do_rescale=False`.
  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini döndürür.

batch_decode

< >

( sequences ) → dict[str, any]

Parametreler

  • sequences (torch.Tensor) — Tokenize edilmiş girdi kimliklerinin listesi.

Dönüş değeri

dict[str, any]

Çözümlenmiş sonuçların tüm çıktılarının sözlüğü. generated_text (list[str]): char, bpe ve wp puanlarının füzyonu sonrası nihai sonuçlar (list[float]): char, bpe ve wp puanlarının füzyonu sonrası nihai puanlar. char_preds (list[str]): Karakter çözümlenmiş cümlelerin listesi. bpe_preds (list[str]): bpe çözümlenmiş cümlelerin listesi. wp_preds (list[str]): wp çözümlenmiş cümlelerin listesi.

decode çağrısı yaparak token kimlikleri içeren listelerin listesini, dizelerin listesine dönüştürün.

Bu yöntem, tüm argümanlarını PreTrainedTokenizer'ın batch_decode() yöntemine iletir. Daha fazla bilgi için bu yöntemin docstring'ine başvurun.

MgpstrModel

sınıf transformers.MgpstrModel

< >

( config: MgpstrConfig )

Parametreler

  • config (MgpstrConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde herhangi bir özel head olmadan ham hidden-states çıkaran çıplak Mgp Str Model.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)

Parametreler

  • pixel_values (torch.Tensor, şekli (batch_size, num_channels, image_size, image_size)) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri ViTImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ViTImageProcessor.call()'a bakın (MgpstrProcessor, görüntü işleme için ViTImageProcessor kullanır).
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

BaseModelOutput veya tuple(torch.Tensor)

Bir BaseModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (MgpstrConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

MgpstrModel forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

MgpstrForSceneTextRecognition

sınıf transformers.MgpstrForSceneTextRecognition

< >

( config: MgpstrConfig )

Parametreler

  • config (MgpstrConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üstünde üç sınıflandırma başlığı bulunan (üç A^3 modülü ve transformer kodlayıcı çıktısının üzerinde üç doğrusal katman) MGP-STR Model transformer, sahne metni tanıma (STR) için.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_a3_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MgpstrModelOutput or tuple(torch.Tensor)

Parametreler

  • pixel_values (torch.Tensor, şekli (batch_size, num_channels, image_size, image_size)) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri ViTImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ViTImageProcessor.call()'a bakın (MgpstrProcessor, görüntü işleme için ViTImageProcessor kullanır).
  • output_attentions (bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki attentions bölümüne bakın.
  • output_a3_attentions (bool, isteğe bağlı) — a3 modüllerinin dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki a3_attentions bölümüne bakın.
  • output_hidden_states (bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki hidden_states bölümüne bakın.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

MgpstrModelOutput veya tuple(torch.Tensor)

MgpstrModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (MgpstrConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

MgpstrForSceneTextRecognition forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • logits (tuple(torch.Tensor), şekli (batch_size, config.num_character_labels)) — torch.Tensor demeti (karakter çıktısı için şekli (batch_size, config.max_token_length, config.num_character_labels) olan bir tane, + bpe çıktısı için şekli (batch_size, config.max_token_length, config.num_bpe_labels) olan bir tane, + wordpiece çıktısı için şekli (batch_size, config.max_token_length, config.num_wordpiece_labels) olan bir tane) .

    Karakter, bpe ve wordpiece için SoftMax öncesi sınıflandırma puanları.

  • hidden_states (tuple[torch.Tensor], isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple[torch.Tensor], isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • a3_attentions (tuple(torch.Tensor), optional, returned when output_a3_attentions=True is passed or when config.output_a3_attentions=True) — Tuple of torch.Tensor (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)`.

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

>>> 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"]'
Update on GitHub