Transformers documentation

MobileViTV2

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-06-06 dan disumbangkan ke Hugging Face Transformers pada 2023-06-02.

MobileViTV2

Ikhtisar

Model MobileViTV2 diusulkan dalam Separable Self-attention for Mobile Vision Transformers oleh Sachin Mehta dan Mohammad Rastegari.

MobileViTV2 adalah versi kedua dari MobileViT, yang dibangun dengan mengganti multi-headed self-attention di MobileViT menjadi separable self-attention.

Abstrak dari makalah tersebut adalah sebagai berikut:

Mobile vision transformers (MobileViT) dapat mencapai kinerja state-of-the-art di berbagai tugas visi mobile, termasuk klasifikasi dan deteksi. Meskipun model-model ini memiliki lebih sedikit parameter, latensinya tinggi dibandingkan dengan model berbasis convolutional neural network. Botol leher efisiensi utama dalam MobileViT adalah multi-headed self-attention (MHA) pada transformers, yang membutuhkan kompleksitas waktu O(k2) terhadap jumlah token (atau patch) k. Selain itu, MHA membutuhkan operasi yang mahal (misalnya, perkalian matriks batch-wise) untuk menghitung self-attention, yang berdampak pada latensi di perangkat dengan sumber daya terbatas. Kertas ini memperkenalkan metode separable self-attention dengan kompleksitas linear, yaitu O(k). Karakteristik sederhana namun efektif dari metode yang diusulkan adalah penggunaan operasi element-wise untuk menghitung self-attention, menjadikannya pilihan yang baik untuk perangkat dengan sumber daya terbatas. Model yang ditingkatkan, MobileViTV2, merupakan state-of-the-art di beberapa tugas visi mobile, termasuk klasifikasi objek ImageNet dan deteksi objek MS-COCO. Dengan sekitar tiga juta parameter, MobileViTV2 mencapai akurasi top-1 sebesar 75,6% pada dataset ImageNet, melampaui MobileViT sekitar 1% sambil berjalan 3,2× lebih cepat di perangkat mobile.

Model ini disumbangkan oleh shehan97. Kode aslinya dapat ditemukan di sini.

Tips penggunaan

  • MobileViTV2 lebih menyerupai CNN daripada model Transformer. Model ini tidak bekerja pada data sekuensial, melainkan pada batch gambar. Berbeda dengan ViT, tidak ada embeddings. Model backbone menghasilkan feature map.
  • Anda dapat menggunakan MobileViTImageProcessor untuk menyiapkan gambar bagi model. Perhatikan bahwa jika Anda melakukan prapemrosesan sendiri, checkpoint terlatih mengharapkan gambar dalam urutan piksel BGR (bukan RGB).
  • Checkpoint klasifikasi gambar yang tersedia telah dilatih sebelumnya pada ImageNet-1k (juga disebut ILSVRC 2012, yaitu kumpulan 1,3 juta gambar dan 1.000 kelas).
  • Model segmentasi menggunakan head DeepLabV3. Checkpoint segmentasi semantik yang tersedia telah dilatih sebelumnya pada PASCAL VOC.

MobileViTV2Config

kelas transformers.MobileViTV2Config

< >

( 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 = Nonenum_channels: int = 3image_size: int | list[int] | tuple[int, int] = 256patch_size: int | list[int] | tuple[int, int] = 2expand_ratio: float = 2.0hidden_act: str = 'swish'conv_kernel_size: int = 3output_stride: int = 32classifier_dropout_prob: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05aspp_out_channels: int = 512atrous_rates: list[int] | tuple[int, ...] = (6, 12, 18)aspp_dropout_prob: float | int = 0.1semantic_loss_ignore_index: int = 255n_attn_blocks: list[int] | tuple[int, ...] = (2, 4, 3)base_attn_unit_dims: list[int] | tuple[int, ...] = (128, 192, 256)width_multiplier: float | int = 1.0ffn_multiplier: int = 2attn_dropout: float | int = 0.0ffn_dropout: float | int = 0.0 )

Parameter

  • num_channels (int, opsional, defaultnya 3) — Jumlah saluran input.
  • image_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 256) — Ukuran (resolusi) dari setiap gambar.
  • patch_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 2) — Ukuran (resolusi) dari setiap patch.
  • expand_ratio (float, opsional, defaultnya 2.0) — Rasio ekspansi untuk mengatur dimensi output dari ekspansi
  • hidden_act (str, opsional, defaultnya swish) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • conv_kernel_size (int, opsional, defaultnya 3) — Ukuran kernel konvolusi.
  • output_stride (int, opsional, default 32) — Rasio antara resolusi spasial dari peta fitur input dan output.
  • classifier_dropout_prob (Union[float, int], opsional, defaultnya 0.1) — Rasio dropout untuk classifier.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • layer_norm_eps (float, opsional, defaultnya 1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • aspp_out_channels (int, opsional, default 512) — Jumlah kanal output yang digunakan di lapisan ASPP untuk segmentasi semantik.
  • atrous_rates (list[int], opsional, default [6, 12, 18]) — Faktor dilatasi (atrous) yang digunakan dalam lapisan ASPP untuk segmentasi semantik.
  • aspp_dropout_prob (float, opsional, default 0.1) — Rasio dropout untuk lapisan ASPP pada segmentasi semantik.
  • semantic_loss_ignore_index (int, opsional, defaultnya 255) — Indeks yang diabaikan oleh fungsi loss dari model segmentasi semantik.
  • n_attn_blocks (list[int], opsional, default [2, 4, 3]) — Jumlah blok attention di setiap MobileViTV2Layer
  • base_attn_unit_dims (list[int], opsional, default [128, 192, 256]) — Pengali dasar untuk dimensi blok perhatian di setiap MobileViTV2Layer
  • width_multiplier (float, opsional, default 1.0) — Pengali lebar untuk MobileViTV2.
  • ffn_multiplier (int, opsional, defaultnya 2) — Pengali FFN untuk MobileViTV2.
  • attn_dropout (Union[float, int], opsional, default 0.0) — Rasio dropout untuk probabilitas perhatian.
  • ffn_dropout (float, opsional, default 0.0) — Dropout di antara lapisan FFN.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari MobileViTV2Model. Kelas ini digunakan untuk membuat model Mobilevitv2 berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari apple/mobilevitv2-1.0

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

Contoh:

>>> from transformers import MobileViTV2Config, MobileViTV2Model

>>> # Initializing a mobilevitv2-small style configuration
>>> configuration = MobileViTV2Config()

>>> # Initializing a model from the mobilevitv2-small style configuration
>>> model = MobileViTV2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

MobileViTV2Model

kelas transformers.MobileViTV2Model

< >

( config: MobileViTV2Configexpand_output: bool = True )

Parameter

  • config (MobileViTV2Config) — 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.
  • expand_output (bool, opsional, default True) — Apakah akan memperluas output dari model. Jika True, model akan mengoutputkan pooled features di samping hidden states. Jika False, hanya hidden states yang akan dikembalikan.

Model Mobilevitv2 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: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.FloatTensor)

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan MobileViTImageProcessor. Lihat MobileViTImageProcessor.call() untuk detailnya (processor_class menggunakan MobileViTImageProcessor untuk memproses gambar).
  • 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

BaseModelOutputWithPoolingAndNoAttention atau tuple(torch.FloatTensor)

BaseModelOutputWithPoolingAndNoAttention atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (MobileViTV2Config) dan input.

Metode forward dari MobileViTV2Model 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.FloatTensor dengan bentuk (batch_size, num_channels, height, width)) — Urutan hidden-state pada keluaran lapisan terakhir model.

  • pooler_output (torch.FloatTensor dengan bentuk (batch_size, hidden_size)) — Hidden-state lapisan terakhir setelah operasi pooling pada dimensi spasial.

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

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

Contoh:

MobileViTV2ForImageClassification

kelas transformers.MobileViTV2ForImageClassification

< >

( config: MobileViTV2Config )

Parameter

  • config (MobileViTV2Config) — 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 MobileViTV2 dengan kepala klasifikasi gambar di atasnya (lapisan linear di atas fitur yang dipooling), misalnya untuk ImageNet.

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: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.FloatTensor)

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan MobileViTImageProcessor. Lihat MobileViTImageProcessor.call() untuk detailnya (processor_class menggunakan MobileViTImageProcessor untuk memproses gambar).
  • 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.
  • labels (torch.LongTensor dengan bentuk (batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi gambar. Indeks harus berada dalam [0, ..., config.num_labels - 1]. Jika config.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jika config.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

ImageClassifierOutputWithNoAttention atau tuple(torch.FloatTensor)

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

Metode forward dari MobileViTV2ForImageClassification 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.

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).
  • logits (torch.FloatTensor dengan bentuk (batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax).
  • hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap tahap) dengan bentuk (batch_size, num_channels, height, width). Hidden-states (juga disebut feature maps) dari model pada output setiap tahap.

Contoh:

>>> from transformers import AutoImageProcessor, MobileViTV2ForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("apple/mobilevitv2-1.0")
>>> model = MobileViTV2ForImageClassification.from_pretrained("apple/mobilevitv2-1.0")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...

MobileViTV2ForSemanticSegmentation

kelas transformers.MobileViTV2ForSemanticSegmentation

< >

( config: MobileViTV2Config )

Parameter

  • config (MobileViTV2Config) — 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 MobileViTV2 dengan kepala segmentasi semantik di atasnya, misalnya untuk Pascal VOC.

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: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SemanticSegmenterOutput or tuple(torch.FloatTensor)

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan MobileViTImageProcessor. Lihat MobileViTImageProcessor.call() untuk detailnya (processor_class menggunakan MobileViTImageProcessor untuk memproses gambar).
  • labels (torch.LongTensor dengan bentuk (batch_size, height, width), opsional) — Peta segmentasi semantik ground truth untuk menghitung loss. Indeks harus berada dalam [0, ..., config.num_labels - 1]. Jika config.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy).
  • 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

SemanticSegmenterOutput atau tuple(torch.FloatTensor)

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

Metode forward dari MobileViTV2ForSemanticSegmentation 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.

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).

  • logits (torch.FloatTensor dengan bentuk (batch_size, config.num_labels, logits_height, logits_width)) — Skor klasifikasi untuk setiap piksel.

    Logits yang dikembalikan tidak selalu memiliki ukuran yang sama dengan pixel_values yang diberikan sebagai input. Hal ini dilakukan untuk menghindari dua kali interpolasi dan kehilangan kualitas ketika pengguna perlu mengubah ukuran logits menjadi ukuran gambar asli sebagai pascapemrosesan. Anda harus selalu memeriksa bentuk logits Anda dan mengubah ukurannya sesuai kebutuhan.

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

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

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

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

Contoh:

>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import torch
>>> from PIL import Image
>>> from transformers import AutoImageProcessor, MobileViTV2ForSemanticSegmentation

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("apple/mobilevitv2-1.0-imagenet1k-256")
>>> model = MobileViTV2ForSemanticSegmentation.from_pretrained("apple/mobilevitv2-1.0-imagenet1k-256")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> # logits are of shape (batch_size, num_labels, height, width)
>>> logits = outputs.logits
Update on GitHub