Transformers documentation

ViTDet

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 2022-03-30 tarihinde HF papers'ta yayımlandı ve 2023-08-29 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

ViTDet

Genel Bakış

ViTDet modeli, Yanghao Li, Hanzi Mao, Ross Girshick ve Kaiming He tarafından Exploring Plain Vision Transformer Backbones for Object Detection makalesinde önerilmiştir. VitDet, nesne algılama görevi için düz Vision Transformer'ı kullanır.

Makalenin özeti aşağıdaki gibidir:

Düz, hiyerarşik olmayan Vision Transformer (ViT)'yi nesne tespiti için omurga ağı olarak inceliyoruz. Bu tasarım, ön eğitim için hiyerarşik bir omurga yeniden tasarlamaya gerek kalmadan, orijinal ViT mimarisinin nesne tespiti için ince ayar yapılabilmesini sağlar. İnce ayar için minimal uyarlamalarla, düz omurgalı dedektörümüz rekabetçi sonuçlar elde edebilir. Şaşırtıcı bir şekilde, şu gözlemleri yapıyoruz: (i) ortak FPN tasarımından bağımsız olarak, tek ölçekli bir özellik haritasından basit bir özellik piramidi oluşturmak yeterlidir ve (ii) çok az sayıda pencere arası yayılım bloğuyla desteklenen pencere dikkati (kaydırma olmadan) kullanmak yeterlidir. Masked Autoencoders (MAE) olarak ön eğitilmiş düz ViT omurgalarıyla, ViTDet adını verdiğimiz dedektörümüz, yalnızca ImageNet-1K ön eğitimi kullanarak COCO veri setinde 61.3 AP_box'a kadar ulaşarak, tamamı hiyerarşik omurgalara dayanan önceki önde gelen yöntemlerle yarışabilir. Çalışmamızın, düz omurgalı dedektörler üzerine araştırmalara dikkat çekeceğini umuyoruz.

Bu model nielsr tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.

İpuçları:

  • Şu anda yalnızca omurga (backbone) kullanılabilir.

VitDetConfig

sınıf transformers.VitDetConfig

< >

( 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 = 12mlp_ratio: int = 4hidden_act: str = 'gelu'dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 224pretrain_image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3qkv_bias: bool = Truedrop_path_rate: float | int = 0.0window_block_indices: list[int] | tuple[int, ...] = ()residual_block_indices: list[int] | tuple[int, ...] = ()use_absolute_position_embeddings: bool = Trueuse_relative_position_embeddings: bool = Falsewindow_size: int = 0_out_features: list[str] | None = None_out_indices: list[int] | None = None )

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ı.
  • mlp_ratio (int, isteğe bağlı, varsayılan 4) — MLP gizli boyutunun gömme boyutuna oranı.
  • 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.
  • dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Tüm dropout katmanları için 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-06) — 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üğü).
  • pretrain_image_size (int, isteğe bağlı, varsayılan 224) — Ön eğitim sırasında 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.
  • drop_path_rate (Union[float, int], isteğe bağlı, varsayılan 0.0) — Patch füzyonu için drop path oranı.
  • window_block_indices (list[int], isteğe bağlı, varsayılan []) — Normal küresel öz-dikkat yerine pencere dikkati kullanılması gereken blokların indeks listesini belirtir.
  • residual_block_indices (list[int], isteğe bağlı, varsayılan []) — MLP'den sonra ek bir residual blok içermesi gereken blokların indeks listesidir.
  • use_absolute_position_embeddings (bool, isteğe bağlı, varsayılan True) — Mutlak konum gömme kullanılıp kullanılmayacağı.
  • use_relative_position_embeddings (bool, isteğe bağlı, varsayılan False) — Dikkat haritalarına göre konum gömme eklenip eklenmeyeceğini belirtir.
  • window_size (int, isteğe bağlı, varsayılan 0) — Dikkat penceresinin boyutu.

Bu, bir VitDetModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Vitdet modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, google/vitdet-base-patch16-224 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 VitDetConfig, VitDetModel

>>> # Initializing a VitDet configuration
>>> configuration = VitDetConfig()

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

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

VitDetModel

sınıf transformers.VitDetModel

< >

( config: VitDetConfig )

Parametreler

  • config (VitDetConfig) — 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 herhangi bir özel head olmadan ham hidden-states üreten çıplak Vitdet Model.

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 = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput 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 image_processor_class kullanılarak elde edilebilir. Ayrıntılar için image_processor_class.__call__ bölümüne bakın (processor_class, görüntü işleme için image_processor_class 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.
  • return_dict (bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?

Dönüş değeri

BaseModelOutput veya tuple(torch.Tensor)

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

VitDetModel 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)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • 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, 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 VitDetConfig, VitDetModel
>>> import torch

>>> config = VitDetConfig()
>>> model = VitDetModel(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 768, 14, 14]
Update on GitHub