Transformers documentation
ViTDet
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
< 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 = 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ı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ı. - mlp_ratio (
int, isteğe bağlı, varsayılan4) — MLP gizli boyutunun gömme boyutuna oranı. - 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. - dropout_prob (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tüm dropout katmanları için 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-06) — 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üğü). - 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ı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. - drop_path_rate (
Union[float, int], isteğe bağlı, varsayılan0.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ılanTrue) — Mutlak konum gömme kullanılıp kullanılmayacağı. - use_relative_position_embeddings (
bool, isteğe bağlı, varsayılanFalse) — 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.configVitDetModel
sınıf transformers.VitDetModel
< source >( 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
< source >( 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ğerleriimage_processor_classkullanılarak elde edilebilir. Ayrıntılar içinimage_processor_class.__call__bölümüne bakın (processor_class, görüntü işleme içinimage_processor_classkullanı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ındakiattentionsbö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ındakihidden_statesbö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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=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 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]