Transformers documentation
MGP-STR
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.
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
< 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 )
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, defaultnya4) — Ukuran (resolusi) dari setiap patch. - num_channels (
int, opsional, defaultnya3) — 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, default768) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - mlp_ratio (
Union[float, int], opsional, default4.0) — Rasio dimensi tersembunyi MLP terhadap dimensi embedding. - qkv_bias (
bool, opsional, defaultnyaTrue) — Apakah akan menambahkan bias ke queries, keys, dan values. - distilled (
bool, opsional, defaultFalse) — Model menyertakan token dan head distilasi seperti pada model DeiT. - layer_norm_eps (
float, opsional, defaultnya1e-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, defaultnya0.0) — Tingkat drop path untuk fusi patch. - output_a3_attentions (
bool, opsional, defaultFalse) — Apakah model harus mengembalikan perhatian modul A^3. - initializer_range (
float, opsional, defaultnya0.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.configMgpstrTokenizer
kelas transformers.MgpstrTokenizer
< source >( 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 (
stratautokenizers.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.
MgpstrProcessor
kelas transformers.MgpstrProcessor
< source >( image_processor = Nonetokenizer = None**kwargs )
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__
< source >( 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, 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 (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek NumPynp.ndarray.
batch_decode
< source >( sequences ) → dict[str, any]
Parameter
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
< source >( 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
< source >( 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.Tensordengan 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. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi 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
Modulesetelahnya 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.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.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 saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.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
< source >( 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
< source >( 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.Tensordengan 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. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_a3_attentions (
bool, opsional) — Apakah akan mengembalikan tensor perhatian dari modul a3. Lihata3_attentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi 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
Modulesetelahnya 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 daritorch.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 saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.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 saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.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 whenoutput_a3_attentions=Trueis passed or whenconfig.output_a3_attentions=True) — Tuple oftorch.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"]'