Transformers documentation

ViTMAE

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 2021-11-11 tarihinde HF papers'ta yayımlandı ve 2022-01-18 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

FlashAttention SDPA

ViTMAE

ViTMAE, bir görüntünün büyük bir bölümünü (~%75) maskeleyerek ön eğitimi yapılan, kendinden denetimli bir görme modelidir. Bir kodlayıcı, görünen görüntü yamalarını işler ve bir çözücü, eksik pikselleri kodlanmış yamalar ve maske jetonlarından yeniden oluşturur. Ön eğitimden sonra, kodlayıcı; görüntü sınıflandırma veya nesne algılama gibi aşağı akış görevlerinde yeniden kullanılabilir ve çoğu zaman denetimli öğrenme ile eğitilen modellerin performansını aşar.

drawing

Tüm orijinal ViTMAE checkpoint'lerini AI at Meta kuruluşu altında bulabilirsiniz.

ViTMAE'nin görü görevlerine nasıl uygulanacağına dair daha fazla örnek için sağ kenar çubuğundaki ViTMAE modellerine tıklayın.

Aşağıdaki örnek, eksik piksellerin ViTMAEForPreTraining sınıfı ile nasıl yeniden oluşturulacağını göstermektedir.

AutoModel
import requests
import torch
from PIL import Image

from transformers import ViTImageProcessor, ViTMAEForPreTraining


url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)

processor = ViTImageProcessor.from_pretrained("facebook/vit-mae-base")
inputs = processor(image, return_tensors="pt").to(model.device)
inputs = {k: v.to(model.device) for k, v in inputs.items()}

model = ViTMAEForPreTraining.from_pretrained("facebook/vit-mae-base", attn_implementation="sdpa", device_map="auto")
with torch.no_grad():
    outputs = model(**inputs)

reconstruction = outputs.logits

Notlar

  • ViTMAE genellikle iki aşamada kullanılır. ViTMAEForPreTraining ile kendiliğinden denetimli ön eğitim ve ardından dekoderin atılarak enkoderin ince ayarının yapılması. İnce ayarın ardından, ağırlıklar ViTForImageClassification gibi bir modele yerleştirilebilir.
  • Girdi hazırlığı için ViTImageProcessor kullanın.

Kaynaklar

ViTMAEConfig

sınıf transformers.ViTMAEConfig

< >

( 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 = Nonehidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-12image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3qkv_bias: bool = Truedecoder_num_attention_heads: int = 16decoder_hidden_size: int = 512decoder_num_hidden_layers: int = 8decoder_intermediate_size: int = 2048mask_ratio: float = 0.75norm_pix_loss: bool = False )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 768) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 12) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • intermediate_size (int, isteğe bağlı, varsayılan 3072) — MLP temsillerinin boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • hidden_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.
  • attention_probs_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • 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ı.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-12) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • image_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 224) — Her bir görüntünün boyutu (çözünürlüğü).
  • patch_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 16) — Her yamanın boyutu (çözünürlüğü).
  • num_channels (int, isteğe bağlı, varsayılan 3) — Giriş kanal sayısı.
  • qkv_bias (bool, isteğe bağlı, varsayılan True) — Sorgulara, anahtarlara ve değerlere bir sapma eklenip eklenmeyeceği.
  • decoder_num_attention_heads (int, isteğe bağlı, varsayılan 16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • decoder_hidden_size (int, isteğe bağlı, varsayılan 512) — Gizli temsillerin boyutu.
  • decoder_num_hidden_layers (int, isteğe bağlı, varsayılan 8) — Decoder'daki gizli katman sayısı.
  • decoder_intermediate_size (int, isteğe bağlı, varsayılan 2048) — MLP temsillerinin boyutu.
  • mask_ratio (float, isteğe bağlı, varsayılan 0.75) — Girdi dizisindeki maskelenmiş token sayısının oranı.
  • norm_pix_loss (bool, isteğe bağlı, varsayılan False) — Eğitimin normalize edilmiş piksellerle yapılıp yapılmayacağını belirtir (kağıttaki Tablo 3'e bakınız). Yazarların deneylerinde normalize edilmiş piksellerin kullanılması temsil kalitesini artırmıştır.

Bu, bir ViTMAEModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Vit Mae modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/vit-mae-base ile 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.

Örnek:

>>> from transformers import ViTMAEConfig, ViTMAEModel

>>> # Initializing a ViT MAE vit-mae-base style configuration
>>> configuration = ViTMAEConfig()

>>> # Initializing a model (with random weights) from the vit-mae-base style configuration
>>> model = ViTMAEModel(configuration)

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

ViTMAEModel

sınıf transformers.ViTMAEModel

< >

( config: ViTMAEConfig )

Parametreler

Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Vit Mae Modeli.

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] = Nonenoise: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool | None = Noneattention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ViTMAEModelOutput 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 ViTImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ViTImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için ViTImageProcessor kullanır).
  • noise (torch.Tensor, şekli (batch_size, sequence_length), isteğe bağlı) — Ağırlıklı olarak test amaçlı kullanılır; rastgeleliği kontrol etmek ve yeniden üretilebilirliği korumak için
  • interpolate_pos_encoding (bool, isteğe bağlı, varsayılan False) — Önceden eğitilmiş konum kodlamalarının (position encodings) interpolasyonla mı kullanılacağı. Bu, modelin daha yüksek çözünürlüklü görüntülerde kullanılabilmesi için başlıca olarak kullanılır.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

Dönüş değeri

ViTMAEModelOutput veya tuple(torch.Tensor)

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

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

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • mask (torch.Tensor, şekli (batch_size, sequence_length)) — Hangi yamaların maskelendiğini (1) ve hangilerinin maskelenmediğini (0) gösteren tensör.

  • ids_restore (torch.LongTensor, şekli (batch_size, sequence_length)) — (karıştırılmış) maskelenmiş yamaların orijinal indeksini içeren tensör.

  • 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 (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, (batch_size, sequence_length, 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, sequence_length, 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, ViTMAEModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> 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("facebook/vit-mae-base")
>>> model = ViTMAEModel.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

ViTMAEForPreTraining

sınıf transformers.ViTMAEForPreTraining

< >

( config: ViTMAEConfig )

Parametreler

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

Üzerinde self-supervised ön eğitim için decoder bulunan ViTMAE Model transformer'ı.

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] = Nonenoise: typing.Optional[torch.Tensor] = Noneinterpolate_pos_encoding: bool | None = Noneattention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ViTMAEForPreTrainingOutput 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 ViTImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ViTImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için ViTImageProcessor kullanır).
  • noise (torch.Tensor, şekli (batch_size, sequence_length), isteğe bağlı) — Ağırlıklı olarak test amaçlı kullanılır; rastgeleliği kontrol etmek ve yeniden üretilebilirliği korumak için
  • interpolate_pos_encoding (bool, isteğe bağlı, varsayılan False) — Önceden eğitilmiş konum kodlamalarının (position encodings) interpolasyonla mı kullanılacağı. Bu, modelin daha yüksek çözünürlüklü görüntülerde kullanılabilmesi için başlıca olarak kullanılır.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

Dönüş değeri

ViTMAEForPreTrainingOutput veya tuple(torch.Tensor)

ViTMAEForPreTrainingOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırma (ViTMAEConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

ViTMAEForPreTraining 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,)) — Piksel yeniden oluşturma kaybı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, patch_size ** 2 * num_channels)) — Piksel yeniden oluşturma logitleri.

  • mask (torch.Tensor, şekli (batch_size, sequence_length)) — Hangi yamaların maskelendiğini (1) ve hangilerinin maskelenmediğini (0) gösteren tensör.

  • ids_restore (torch.LongTensor, şekli (batch_size, sequence_length)) — (karıştırılmış) maskelenmiş yamaların orijinal indeksini içeren tensör.

  • 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 (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, (batch_size, sequence_length, 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, sequence_length, 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, ViTMAEForPreTraining
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/vit-mae-base")
>>> model = ViTMAEForPreTraining.from_pretrained("facebook/vit-mae-base")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> loss = outputs.loss
>>> mask = outputs.mask
>>> ids_restore = outputs.ids_restore
Update on GitHub