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

Bu model 2018-07-26 tarihinde HF papers'ta yayımlandı ve 2023-01-16 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

UPerNet

Genel Bakış

UPerNet modeli, Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang ve Jian Sun tarafından Unified Perceptual Parsing for Scene Understanding makalesinde önerilmiştir. UPerNet, ConvNeXt veya Swin gibi herhangi bir görme omurgasını kullanarak görüntülerden geniş bir kavram yelpazesini etkili bir şekilde segmente etmek için genel bir çerçevedir.

Makalenin özeti aşağıdaki gibidir:

İnsanlar görsel dünyayı birden fazla düzeyde algılar: sahneleri zahmetsizce sınıflandırır ve içindeki nesneleri tespit ederken, nesnelerin dokularını ve yüzeylerini, bunların farklı yapısal parçalarını da belirler. Bu makalede, makine görü sistemlerinden verilen bir görüntüden olabildiğince çok görsel kavramı tanımasını gerektiren Unified Perceptual Parsing adlı yeni bir görevi inceliyoruz. Heterojen görüntü etiketlerinden öğrenmek için UPerNet adlı çoklu görev bir çerçeve ve bir eğitim stratejisi geliştirilmiştir. Çerçevemizi Unified Perceptual Parsing üzerinde test ettik ve görüntülerden geniş bir kavram yelpazesini etkili bir şekilde segmente edebildiğini gösterdik. Eğitilen ağlar, doğal sahnelerdeki görsel bilgiyi keşfetmek için daha da ileriye taşınmıştır.

drawing UPerNet framework. Taken from the original paper.

Bu model nielsr tarafından katkıda bulunmuştur. Orijinal kod, OpenMMLab'ın mmsegmentation projesine dayanmaktadır ve burada bulunabilir.

Kullanım örnekleri

UPerNet, anlamsal segmentasyon için genel bir çerçevedir. Aşağıdaki gibi herhangi bir görme omurgasıyla kullanılabilir:

from transformers import SwinConfig, UperNetConfig, UperNetForSemanticSegmentation


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

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

ConvNeXt gibi başka bir görme omurgası kullanmak için, modeli ConvNeXt ile örneklemeniz yeterlidir:

from transformers import ConvNextConfig, UperNetConfig, UperNetForSemanticSegmentation


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

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

Bu, modelin tüm ağırlıklarını rastgele başlatacağına dikkat edin.

Kaynaklar

UPerNet ile başlamanıza yardımcı olmak için resmi Hugging Face ve topluluk (🌎 ile belirtilen) kaynaklarının listesi.

Buraya bir kaynak eklemek isterseniz, bir Pull Request açmaktan çekinmeyin; inceleyeceğiz! Kaynağın, mevcut bir kaynağı tekrarlamak yerine ideal olarak yeni bir şeyi göstermesi beklenir.

UperNetConfig

sınıf 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 )

Parametreler

  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Backbone modelinin yapılandırması.
  • hidden_size (int, isteğe bağlı, varsayılan 512) — Gizli temsillerin boyutu.
  • 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ı.
  • pool_scales (tuple[int], isteğe bağlı, varsayılan [1, 2, 3, 6]) — Son özellik haritasına uygulanan Pooling Pyramid Module'de kullanılan birleştirme ölçekleri.
  • use_auxiliary_head (bool, isteğe bağlı, varsayılan True) — Eğitim sırasında yardımcı bir başlık (auxiliary head) kullanılıp kullanılmayacağı.
  • auxiliary_loss_weight (float, isteğe bağlı, varsayılan 0.4) — Yardımcı başın çapraz entropi kaybının ağırlığı.
  • auxiliary_in_channels (int, isteğe bağlı, varsayılan 256) — Yardımcı başlıktaki giriş kanal sayısı.
  • auxiliary_channels (int, isteğe bağlı, varsayılan 256) — Yardımcı başlıkta kullanılacak kanal sayısı.
  • auxiliary_num_convs (int, isteğe bağlı, varsayılan 1) — Yardımcı başlıkta kullanılacak konvolüsyon katmanlarının sayısı.
  • auxiliary_concat_input (bool, isteğe bağlı, varsayılan False) — Sınıflandırma katmanından önce yardımcı başlığın çıktısının girdiyle birleştirilip birleştirilmeyeceğini belirtir.
  • loss_ignore_index (int, isteğe bağlı, varsayılan 255) — Kayıp fonksiyonu tarafından yok sayılan indeks.

Bu, bir UpernetModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Upernet modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, openmmlab/upernet-convnext-tiny yapılandırmasına benzer bir yapılandırma elde edilir.

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.

Örnekler:

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

sınıf transformers.UperNetForSemanticSegmentation

< >

( config: UperNetConfig )

Parametreler

  • config (UperNetConfig) — 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.

ADE20k, CityScapes gibi veri setleri için herhangi bir görü omurgasını kullanan UperNet çerçevesi.

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

Parametreler

  • pixel_values (torch.Tensor, şekli (batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri SegformerImageProcessor kullanılarak elde edilebilir. Ayrıntılar için SegformerImageProcessor.call() bölümüne bakın (processor_class, görüntüleri işlemek için SegformerImageProcessor 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.
  • labels (torch.LongTensor, şekli (batch_size, height, width), isteğe bağlı) — Kayıp (loss) hesaplamak için kullanılan doğru etiketli semantik segmentasyon haritaları. İndisler [0, ..., config.num_labels - 1] aralığında olmalıdır. config.num_labels > 1 ise, bir sınıflandırma kaybı (Cross-Entropy) hesaplanır.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

SemanticSegmenterOutput veya tuple(torch.Tensor)

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

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

  • loss (torch.Tensor, şekli (1,), isteğe bağlı, labels sağlandığında döndürülür) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.

  • logits (torch.Tensor, şekli (batch_size, config.num_labels, logits_height, logits_width)) — Her piksel için sınıflandırma puanları.

    Döndürülen logits değerleri, girdi olarak geçirilen pixel_values ile aynı boyutta olmak zorunda değildir. Bu, bir kullanıcının logits değerlerini son işlem olarak orijinal görüntü boyutuna yeniden boyutlandırmak istediğinde iki kez interpolasyon yapılarak bazı kalite kayıpları yaşanmasını önlemek içindir. Logits şeklinizi her zaman kontrol etmeli ve gerektiğinde yeniden boyutlandırmalısınız.

  • 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, patch_size, 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, patch_size, 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.

Örnekler:

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