Transformers documentation
ViTMAE
Bu model 2021-11-11 tarihinde HF papers'ta yayımlandı ve 2022-01-18 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
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.
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.
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.logitsNotlar
- 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
- ViTMAEForPreTraining ile yeniden oluşturulan pikselleri görselleştirmeyi öğrenmek için bu notebook'a başvurun.
ViTMAEConfig
sınıf transformers.ViTMAEConfig
< 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 = 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ılan768) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan12) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - intermediate_size (
int, isteğe bağlı, varsayılan3072) — MLP temsillerinin boyutu. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çö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ılan0.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ılan0.0) — Dikkat olasılıkları için dropout oranı. - initializer_range (
float, isteğe bağlı, varsayılan0.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ılan1e-12) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - image_size (
Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan224) — 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ılan16) — Her yamanın boyutu (çözünürlüğü). - num_channels (
int, isteğe bağlı, varsayılan3) — Giriş kanal sayısı. - qkv_bias (
bool, isteğe bağlı, varsayılanTrue) — Sorgulara, anahtarlara ve değerlere bir sapma eklenip eklenmeyeceği. - decoder_num_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - decoder_hidden_size (
int, isteğe bağlı, varsayılan512) — 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ılan2048) — 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ılanFalse) — 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.configViTMAEModel
sınıf transformers.ViTMAEModel
< source >( config: ViTMAEConfig )
Parametreler
- config (ViTMAEConfig) — Model için yapılandırma.
Ü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
< source >( 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ılanFalse) — Ö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.
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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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_stateViTMAEForPreTraining
sınıf transformers.ViTMAEForPreTraining
< source >( 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
< source >( 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ılanFalse) — Ö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.
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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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