Transformers documentation
Dolanımsal Görüş Dönüşümü (CvT)
Bu model 2021-03-29 tarihinde HF papers'ta yayımlandı ve 2022-05-18 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
Dolanımsal Görüş Dönüşümü (CvT)
Convolutional Vision Transformer (CvT), bilgisayar görüsü görevleri için konvolüsyonel sinir ağlarının (CNN) ve Vision transformer'ların güçlü yönlerini birleştiren bir modeldir. Görüntü transformer mimarisine konvolüsyonel katmanlar ekleyerek, self-attention mekanizmalarının sağladığı global bağlamı korurken görüntülerdeki yerel örüntüleri yakalamasına olanak tanır.
Tüm CvT checkpoint'lerini Microsoft kuruluşu altında bulabilirsiniz.
Bu model anujunj tarafından katkıda bulunmuştur.
Farklı bilgisayarla görme görevlerine CvT uygulamanın daha fazla örneği için sağ kenar çubuğundaki CvT modellerine tıklayın.
Aşağıdaki örnek, bir görüntünün Pipeline veya AutoModel sınıfı ile nasıl sınıflandırıldığını göstermektedir.
from transformers import pipeline
pipeline = pipeline(
task="image-classification",
model="microsoft/cvt-13",
device=0
)
pipeline("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForImageClassification
image_processor = AutoImageProcessor.from_pretrained("microsoft/cvt-13")
model = AutoModelForImageClassification.from_pretrained(
"microsoft/cvt-13",
device_map="auto"
)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = image_processor(image, return_tensors="pt").to(model.device)
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax(dim=-1).item()
class_labels = model.config.id2label
predicted_class_label = class_labels[predicted_class_id]
print(f"The predicted class label is: {predicted_class_label}")Kaynaklar
Özel veri setlerinde çıkarım ve ince ayar örnekleri için bu ViT defterleri setine başvurun. Bu defterlerdeki ViTFeatureExtractor ve ViTForImageClassification öğelerini AutoImageProcessor ve CvtForImageClassification ile değiştirin.
CvtConfig
sınıf transformers.CvtConfig
< 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 = Nonenum_channels: int = 3patch_sizes: list[int] | tuple[int, ...] = (7, 3, 3)patch_stride: list[int] | tuple[int, ...] = (4, 2, 2)patch_padding: list[int] | tuple[int, ...] = (2, 1, 1)embed_dim: list[int] | tuple[int, ...] = (64, 192, 384)num_heads: list[int] | tuple[int, ...] = (1, 3, 6)depth: list[int] | tuple[int, ...] = (1, 2, 10)mlp_ratio: list[float] | tuple[float, ...] = (4.0, 4.0, 4.0)attention_drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0)drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0)drop_path_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.1)qkv_bias: list[bool] | tuple[bool, ...] = (True, True, True)cls_token: list[bool] | tuple[bool, ...] = (False, False, True)qkv_projection_method: list[str] | tuple[str, ...] = ('dw_bn', 'dw_bn', 'dw_bn')kernel_qkv: list[int] | tuple[int, ...] = (3, 3, 3)padding_kv: list[int] | tuple[int, ...] = (1, 1, 1)stride_kv: list[int] | tuple[int, ...] = (2, 2, 2)padding_q: list[int] | tuple[int, ...] = (1, 1, 1)stride_q: list[int] | tuple[int, ...] = (1, 1, 1)initializer_range: float = 0.02layer_norm_eps: float = 1e-12 )
Parametreler
- num_channels (
int, isteğe bağlı, varsayılan3) — Giriş kanal sayısı. - patch_sizes (
Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan(7, 3, 3)) — Modelin her aşamasındaki yama boyutu. - patch_stride (
list[int], isteğe bağlı, varsayılan[4, 2, 2]) — Her kodlayıcının yama gömme adım boyutu. - patch_padding (
list[int], isteğe bağlı, varsayılan[2, 1, 1]) — Her kodlayıcının yama gömme (patch embedding) dolgusu boyutu. - embed_dim (
Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan(64, 192, 384)) — Gömme ve gizli durumların boyutluluğu. - num_heads (
Union[list[int], tuple[int, ...]], isteğe bağlı, varsayılan(1, 3, 6)) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - depth (
list[int], isteğe bağlı, varsayılan[1, 2, 10]) — Her kodlayıcı bloğundaki katman sayısı. - mlp_ratio (
Union[list[float], tuple[float, ...]], isteğe bağlı, varsayılan(4.0, 4.0, 4.0)) — MLP gizli boyutunun gömme boyutuna oranı. - attention_drop_rate (
list[float], isteğe bağlı, varsayılan[0.0, 0.0, 0.0]) — Dikkat olasılıkları için dropout oranı. - drop_rate (
list[float], isteğe bağlı, varsayılan[0.0, 0.0, 0.0]) — Yama gömme olasılıkları için dropout oranı. - drop_path_rate (
Union[list[float], tuple[float, ...]], isteğe bağlı, varsayılan(0.0, 0.0, 0.1)) — Patch füzyonu için drop path oranı. - qkv_bias (
Union[list[bool], tuple[bool, ...]], isteğe bağlı, varsayılan(True, True, True)) — Sorgulara, anahtarlara ve değerlere bir sapma (bias) eklenip eklenmeyeceğini belirtir. - cls_token (
list[bool], isteğe bağlı, varsayılan[False, False, True]) — Son 3 aşamanın her birinin çıktısına bir sınıflandırma belirteci eklenip eklenmeyeceğini belirtir. - qkv_projection_method (
list[string], isteğe bağlı, varsayılan [“dw_bn”, “dw_bn”, “dw_bn”]`) — Sorgu, anahtar ve değer için projeksiyon yöntemi. Varsayılan, batch norm ile derinlik içi konvolüsyonlardır. Doğrusal projeksiyon için “avg” kullanın. - kernel_qkv (
list[int], isteğe bağlı, varsayılan[3, 3, 3]) — Dikkat katmanında sorgu, anahtar ve değer için çekirdek boyutu - padding_kv (
list[int], isteğe bağlı, varsayılan[1, 1, 1]) — Dikkat katmanında anahtar ve değer için dolgu boyutu - stride_kv (
list[int], isteğe bağlı, varsayılan[2, 2, 2]) — Dikkat katmanında anahtar ve değer için adım boyutu - padding_q (
list[int], isteğe bağlı, varsayılan[1, 1, 1]) — Dikkat katmanında sorgu için dolgu boyutu - stride_q (
list[int], isteğe bağlı, varsayılan[1, 1, 1]) — Dikkat katmanında sorgu için adım boyutu - 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.
Bu, bir CvtModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Cvt modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, microsoft/cvt-13 ile benzer bir yapılandırmaya yol açar.
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 CvtConfig, CvtModel
>>> # Initializing a Cvt msft/cvt style configuration
>>> configuration = CvtConfig()
>>> # Initializing a model (with random weights) from the msft/cvt style configuration
>>> model = CvtModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configCvtModel
sınıf transformers.CvtModel
< source >( config: CvtConfigadd_pooling_layer = True )
Parametreler
- config (CvtConfig) — 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.
- add_pooling_layer (
bool, isteğe bağlı, varsayılanTrue) — Bir havuzlama katmanı eklenip eklenmeyeceği
Üzerinde herhangi bir özel head olmadan ham hidden-state'ler üreten çıplak Cvt 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_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithCLSToken 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 ConvNextImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ConvNextImageProcessor.call() bölümüne bakın (processor_class, görüntüleri işlemek için ConvNextImageProcessor kullanır). - 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
BaseModelOutputWithCLSToken veya tuple(torch.Tensor)
BaseModelOutputWithCLSToken veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (CvtConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
CvtModel ileri yöntemi, __call__ özel yöntemini 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.cls_token_value (
torch.Tensor, şekli(batch_size, 1, hidden_size)) — Modelin son katmanının çıktısındaki sınıflandırma belirteci.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ı.
CvtForImageClassification
sınıf transformers.CvtForImageClassification
< source >( config: CvtConfig )
Parametreler
- config (CvtConfig) — 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 bir görüntü sınıflandırma başlığı bulunan (örneğin ImageNet için) Cvt Model transformer'ı (son gizli durumun [CLS] token'ı üzerine yerleştirilen doğrusal bir katman).
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] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention 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 ConvNextImageProcessor kullanılarak elde edilebilir. Ayrıntılar için ConvNextImageProcessor.call() bölümüne bakın (processor_class, görüntüleri işlemek için ConvNextImageProcessor kullanır). - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Görüntü sınıflandırma/geri dönüşüm kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.config.num_labels == 1ise bir geri dönüşüm kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır. - 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
ImageClassifierOutputWithNoAttention veya tuple(torch.Tensor)
A ImageClassifierOutputWithNoAttention veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (CvtConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
CvtForImageClassification 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ı,labelssağ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)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi). - 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 aşamanın çıktısı için birer tane) içeren bir tuple, şekli(batch_size, num_channels, height, width). Modelin her aşamanın çıktısındaki gizli durumları (aynı zamanda özellik haritaları olarak da adlandırılır).
Örnek:
>>> from transformers import AutoImageProcessor, CvtForImageClassification
>>> import torch
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/cvt-13")
>>> model = CvtForImageClassification.from_pretrained("microsoft/cvt-13")
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...