Transformers documentation

UPerNet

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 2018-07-26 dan disumbangkan ke Hugging Face Transformers pada 2023-01-16.

UPerNet

Ikhtisar

Model UPerNet diusulkan dalam Unified Perceptual Parsing for Scene Understanding oleh Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang, dan Jian Sun. UPerNet adalah kerangka kerja umum untuk melakukan segmentasi secara efektif pada berbagai konsep dari gambar, dengan memanfaatkan backbone visi apa pun seperti ConvNeXt atau Swin.

Abstrak dari makalah tersebut adalah sebagai berikut:

Manusia mengenali dunia visual pada beberapa tingkatan: kita dengan mudah mengategorikan adegan dan mendeteksi objek di dalamnya, sekaligus mengidentifikasi tekstur dan permukaan objek beserta bagian-bagian komposisional yang berbeda. Dalam makalah ini, kami mempelajari tugas baru yang disebut Unified Perceptual Parsing, yang mensyaratkan sistem visi mesin untuk mengenali sebanyak mungkin konsep visual dari sebuah gambar. Kerangka kerja multi-tugas bernama UPerNet dan strategi pelatihan dikembangkan untuk belajar dari anotasi gambar yang heterogen. Kami melakukan benchmark kerangka kerja kami pada Unified Perceptual Parsing dan menunjukkan bahwa kerangka kerja ini mampu melakukan segmentasi berbagai konsep dari gambar secara efektif. Jaringan yang telah dilatih kemudian diterapkan untuk menemukan pengetahuan visual dalam adegan alami.

drawing UPerNet framework. Taken from the original paper.

Model ini disumbangkan oleh nielsr. Kode aslinya didasarkan pada mmsegmentation dari OpenMMLab di sini.

Contoh penggunaan

UPerNet adalah kerangka kerja umum untuk segmentasi semantik. Kerangka kerja ini dapat digunakan dengan backbone visi apa pun, seperti berikut:

from transformers import SwinConfig, UperNetConfig, UperNetForSemanticSegmentation


backbone_config = SwinConfig(out_features=["stage1", "stage2", "stage3", "stage4"])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)

Untuk menggunakan backbone visi lain, seperti ConvNeXt, cukup instansiasi model dengan backbone yang sesuai:

from transformers import ConvNextConfig, UperNetConfig, UperNetForSemanticSegmentation


backbone_config = ConvNextConfig(out_features=["stage1", "stage2", "stage3", "stage4"])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)

Perhatikan bahwa ini akan menginisialisasi secara acak semua bobot dari model.

Sumber daya

Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai dengan UPerNet.

Jika Anda tertarik untuk mengirimkan sumber daya agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber daya tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber daya yang sudah ada.

UperNetConfig

kelas transformers.UperNetConfig

< >

( 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 = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonehidden_size: int = 512initializer_range: float = 0.02pool_scales: list[int] | tuple[int, ...] = (1, 2, 3, 6)use_auxiliary_head: bool = Trueauxiliary_loss_weight: float = 0.4auxiliary_in_channels: int | None = Noneauxiliary_channels: int = 256auxiliary_num_convs: int = 1auxiliary_concat_input: bool = Falseloss_ignore_index: int = 255 )

Parameter

  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], opsional) β€” Konfigurasi dari model backbone.
  • hidden_size (int, opsional, default 512) β€” Dimensi dari representasi tersembunyi.
  • initializer_range (float, opsional, defaultnya 0.02) β€” Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • pool_scales (tuple[int], opsional, default [1, 2, 3, 6]) β€” Skala pooling yang digunakan dalam Pooling Pyramid Module yang diterapkan pada peta fitur terakhir.
  • use_auxiliary_head (bool, opsional, default True) β€” Apakah akan menggunakan auxiliary head selama pelatihan.
  • auxiliary_loss_weight (float, opsional, default 0.4) β€” Bobot dari loss cross-entropy dari kepala bantu (auxiliary head).
  • auxiliary_in_channels (int, opsional, default 256) β€” Jumlah channel input pada auxiliary head.
  • auxiliary_channels (int, opsional, default 256) β€” Jumlah channel yang digunakan di kepala bantu.
  • auxiliary_num_convs (int, opsional, default 1) β€” Jumlah lapisan konvolusional yang digunakan di kepala bantu.
  • auxiliary_concat_input (bool, opsional, default False) β€” Apakah akan menggabungkan output dari auxiliary head dengan input sebelum lapisan klasifikasi.
  • loss_ignore_index (int, opsional, default 255) β€” Indeks yang diabaikan oleh fungsi loss.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UpernetModel. Kelas ini digunakan untuk membuat instans model Upernet berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari openmmlab/upernet-convnext-tiny

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

Contoh:

>>> from transformers import UperNetConfig, UperNetForSemanticSegmentation

>>> # Initializing a configuration
>>> configuration = UperNetConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = UperNetForSemanticSegmentation(configuration)

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

UperNetForSemanticSegmentation

kelas transformers.UperNetForSemanticSegmentation

< >

( config: UperNetConfig )

Parameter

  • config (UperNetConfig) β€” 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.

Framework UperNet yang memanfaatkan backbone visi apa pun, misalnya untuk ADE20k, CityScapes.

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

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 SegformerImageProcessor. Lihat SegformerImageProcessor.call() untuk detailnya (processor_class menggunakan SegformerImageProcessor 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.
  • 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).
  • return_dict (bool, opsional) β€” Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

SemanticSegmenterOutput atau tuple(torch.Tensor)

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

Metode forward dari UperNetForSemanticSegmentation 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.Tensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) β€” Loss klasifikasi (atau regresi jika config.num_labels==1).

  • logits (torch.Tensor 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.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, patch_size, 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, patch_size, sequence_length).

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

Contoh:

>>> from transformers import AutoImageProcessor, UperNetForSemanticSegmentation
>>> from PIL import Image
>>> from huggingface_hub import hf_hub_download

>>> image_processor = AutoImageProcessor.from_pretrained("openmmlab/upernet-convnext-tiny")
>>> model = UperNetForSemanticSegmentation.from_pretrained("openmmlab/upernet-convnext-tiny")

>>> filepath = hf_hub_download(
...     repo_id="hf-internal-testing/fixtures_ade20k", filename="ADE_val_00000001.jpg", repo_type="dataset"
... )
>>> image = Image.open(filepath).convert("RGB")

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

>>> outputs = model(**inputs)

>>> logits = outputs.logits  # shape (batch_size, num_labels, height, width)
>>> list(logits.shape)
[1, 150, 512, 512]
Update on GitHub