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

Model ini dipublikasikan di HF papers pada 2022-09-08 dan disumbangkan ke Hugging Face Transformers pada 2023-03-13.

MGP-STR

Ikhtisar

Model MGP-STR diusulkan dalam Multi-Granularity Prediction for Scene Text Recognition oleh Peng Wang, Cheng Da, dan Cong Yao. MGP-STR adalah model Scene Text Recognition (STR) berbasis visi yang secara konseptual sederhana namun berdaya, yang dibangun di atas Vision Transformer (ViT). Untuk mengintegrasikan pengetahuan linguistik, strategi Multi-Granularity Prediction (MGP) diusulkan untuk menyuntikkan informasi dari modalitas bahasa ke dalam model secara implisit.

Abstrak dari makalah tersebut adalah sebagai berikut:

Pengenalan teks adegan (STR) telah menjadi topik penelitian yang aktif dalam visi komputer selama bertahun-tahun. Untuk mengatasi masalah yang menantang ini, berbagai metode inovatif telah diusulkan secara berurutan, dan mengintegrasikan pengetahuan linguistik ke dalam model STR baru-baru ini menjadi tren yang menonjol. Dalam karya ini, kami pertama kali mengambil inspirasi dari kemajuan terbaru dalam Vision Transformer (ViT) untuk membangun model STR visi yang secara konseptual sederhana namun kuat, yang dibangun di atas ViT dan melampaui model state-of-the-art sebelumnya untuk pengenalan teks adegan, termasuk model visi murni dan metode yang diperkaya bahasa. Untuk mengintegrasikan pengetahuan linguistik, kami selanjutnya mengusulkan strategi Multi-Granularity Prediction untuk menyuntikkan informasi dari modalitas bahasa ke dalam model secara implisit, yaitu, representasi subword (BPE dan WordPiece) yang banyak digunakan dalam NLP diperkenalkan ke dalam ruang output, di samping representasi tingkat karakter konvensional, sementara tidak ada model bahasa (LM) independen yang diadopsi. Algoritma yang dihasilkan (disebut MGP-STR) mampu mendorong batas kinerja STR ke tingkat yang lebih tinggi. Secara spesifik, algoritma ini mencapai akurasi pengenalan rata-rata 93,35% pada benchmark standar.

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

MGP-STR dilatih pada dua dataset sintetis MJSynth (MJ) dan SynthText (ST) tanpa fine-tuning pada dataset lain. Model ini mencapai hasil state-of-the-art pada enam benchmark teks adegan Latin standar, termasuk 3 dataset teks reguler (IC13, SVT, IIIT) dan 3 dataset tidak reguler (IC15, SVTP, CUTE). Model ini disumbangkan oleh yuekun. Kode aslinya dapat ditemukan di sini.

Contoh inferensi

MgpstrModel menerima gambar sebagai input dan menghasilkan tiga jenis prediksi, yang merepresentasikan informasi tekstual pada tingkat granularitas yang berbeda. Ketiga jenis prediksi tersebut digabungkan untuk memberikan hasil prediksi akhir.

Kelas ViTImageProcessor bertanggung jawab untuk prapemrosesan gambar input, dan MgpstrTokenizer mendekode token karakter yang dihasilkan menjadi string target. MgpstrProcessor membungkus ViTImageProcessor dan MgpstrTokenizer menjadi satu instance untuk mengekstrak fitur input dan mendekode id token prediksi.

  • Langkah demi langkah Optical Character Recognition (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

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

Parameter

  • image_size (Union[list[int], tuple[int, ...]], opsional, defaultnya (32, 128)) — Ukuran (resolusi) dari setiap gambar.
  • patch_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 4) — Ukuran (resolusi) dari setiap patch.
  • num_channels (int, opsional, defaultnya 3) — Jumlah saluran input.
  • max_token_length (int, opsional, default 27) — Jumlah maksimum token output.
  • num_character_labels (int, opsional, defaultnya 38) — Jumlah kelas untuk kepala karakter.
  • num_bpe_labels (int, opsional, defaultnya 50257) — Jumlah kelas untuk bpe head .
  • num_wordpiece_labels (int, opsional, default 30522) — Jumlah kelas untuk head wordpiece.
  • hidden_size (int, opsional, default 768) — Dimensi dari representasi tersembunyi.
  • num_hidden_layers (int, opsional, default 12) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • num_attention_heads (int, opsional, default 12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer.
  • mlp_ratio (Union[float, int], opsional, default 4.0) — Rasio dimensi tersembunyi MLP terhadap dimensi embedding.
  • qkv_bias (bool, opsional, defaultnya True) — Apakah akan menambahkan bias ke queries, keys, dan values.
  • distilled (bool, opsional, default False) — Model menyertakan token dan head distilasi seperti pada model DeiT.
  • layer_norm_eps (float, opsional, defaultnya 1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • drop_rate (float, opsional, default 0.0) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder.
  • attn_drop_rate (float, opsional, default 0.0) — Rasio dropout untuk probabilitas perhatian.
  • drop_path_rate (Union[float, int], opsional, defaultnya 0.0) — Tingkat drop path untuk fusi patch.
  • output_a3_attentions (bool, opsional, default False) — Apakah model harus mengembalikan perhatian modul A^3.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Mgp StrModel. Kelas ini digunakan untuk membuat instans model Mgp Str sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari alibaba-damo/mgp-str-base

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

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

kelas transformers.MgpstrTokenizer

< >

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

Parameter

  • vocab_file (str) — Path ke file kosakata.
  • unk_token (str, opsional, default "[GO]") — Token yang tidak diketahui. Token yang tidak ada dalam kosakata tidak dapat dikonversi menjadi ID dan akan diset sebagai token ini sebagai gantinya.
  • bos_token (str, opsional, default "[GO]") — Token awal urutan.
  • eos_token (str, opsional, default "[s]") — Token akhir urutan.
  • pad_token (str atau tokenizers.AddedToken, opsional, default "[GO]") — Token khusus yang digunakan untuk membuat array token berukuran sama untuk keperluan batching. Token ini kemudian akan diabaikan oleh mekanisme attention atau perhitungan loss.

Konstruksi tokenizer karakter MGP-STR.

Tokenizer ini mewarisi dari PreTrainedTokenizer yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

MgpstrProcessor

kelas transformers.MgpstrProcessor

< >

( image_processor = Nonetokenizer = None**kwargs )

Parameter

  • image_processor (ViTImageProcessor) — Prosesor gambar adalah input yang wajib.
  • tokenizer (MgpstrTokenizer) — Tokenizer adalah input yang wajib.

Membangun MgpstrProcessor yang membungkus image processor dan tokenizer menjadi satu processor.

MgpstrProcessor menyediakan semua fungsionalitas dari ViTImageProcessor dan MgpstrTokenizer. Lihat ~ViTImageProcessor dan ~MgpstrTokenizer untuk informasi lebih lanjut.

__call__

< >

( text = Noneimages = None**kwargs )

Parameter

  • 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 atau TensorType, opsional) — Jika diset, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:
    • 'pt': Mengembalikan objek PyTorch torch.Tensor.
    • 'np': Mengembalikan objek NumPy np.ndarray.

batch_decode

< >

( sequences ) → dict[str, any]

Parameter

  • sequences (torch.Tensor) — Daftar id input yang telah ditokenisasi.

Mengembalikan

dict[str, any]

Kamus dari semua output hasil decoding. generated_text (list[str]): Hasil akhir setelah fusi skor char, bpe, dan wp. scores (list[float]): Skor akhir setelah fusi char, bpe, dan wp. char_preds (list[str]): Daftar kalimat yang didekodekan per karakter. bpe_preds (list[str]): Daftar kalimat yang didekodekan bpe. wp_preds (list[str]): Daftar kalimat yang didekodekan wp.

Konversi daftar dari daftar id token menjadi daftar string dengan memanggil decode.

Metode ini meneruskan semua argumennya ke batch_decode() dari PreTrainedTokenizer. Silakan merujuk ke docstring metode ini untuk informasi lebih lanjut.

MgpstrModel

kelas transformers.MgpstrModel

< >

( config: MgpstrConfig )

Parameter

  • config (MgpstrConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Model Mgp Str polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

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

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ViTImageProcessor. Lihat ViTImageProcessor.call() untuk detailnya (MgpstrProcessor menggunakan ViTImageProcessor untuk memproses gambar).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

BaseModelOutput atau tuple(torch.Tensor)

A BaseModelOutput atau tuple dari torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (MgpstrConfig) dan input.

Metode forward dari MgpstrModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • last_hidden_state (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

MgpstrForSceneTextRecognition

kelas transformers.MgpstrForSceneTextRecognition

< >

( config: MgpstrConfig )

Parameter

  • config (MgpstrConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

MGP-STR Model transformer dengan tiga kepala klasifikasi di bagian atas (tiga modul A^3 dan tiga lapisan linear di atas output encoder transformer) untuk pengenalan teks adegan (STR).

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

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)

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ViTImageProcessor. Lihat ViTImageProcessor.call() untuk detailnya (MgpstrProcessor menggunakan ViTImageProcessor untuk memproses gambar).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_a3_attentions (bool, opsional) — Apakah akan mengembalikan tensor perhatian dari modul a3. Lihat a3_attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

MgpstrModelOutput atau tuple(torch.Tensor)

MgpstrModelOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (MgpstrConfig) dan input.

Metode forward dari MgpstrForSceneTextRecognition menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • logits (tuple(torch.Tensor) dengan bentuk (batch_size, config.num_character_labels)) — Tuple dari torch.Tensor (satu untuk output karakter dengan bentuk (batch_size, config.max_token_length, config.num_character_labels), + satu untuk output bpe dengan bentuk (batch_size, config.max_token_length, config.num_bpe_labels), + satu untuk output wordpiece dengan bentuk (batch_size, config.max_token_length, config.num_wordpiece_labels)) .

    Skor klasifikasi (sebelum SoftMax) untuk karakter, bpe, dan wordpiece.

  • hidden_states (tuple[torch.Tensor], opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

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

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

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