Transformers documentation
Convolutional Vision Transformer (CvT)
Model ini dipublikasikan di HF papers pada 2021-03-29 dan disumbangkan ke Hugging Face Transformers pada 2022-05-18.
Convolutional Vision Transformer (CvT)
Convolutional Vision Transformer (CvT) adalah model yang menggabungkan kekuatan jaringan saraf konvolusional (CNN) dan Vision transformer untuk tugas-tugas computer vision. Model ini memperkenalkan lapisan konvolusional ke dalam arsitektur vision transformer, sehingga mampu menangkap pola lokal dalam gambar sambil mempertahankan konteks global yang disediakan oleh mekanisme self-attention.
Anda dapat menemukan semua checkpoint CvT di bawah organisasi Microsoft.
Model ini disumbangkan oleh anujunj.
Klik pada model CvT di bilah sisi kanan untuk melihat lebih banyak contoh cara menerapkan CvT ke berbagai tugas computer vision yang berbeda.
Contoh di bawah ini menunjukkan cara mengklasifikasikan gambar dengan Pipeline atau kelas AutoModel.
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}")Sumber daya
Lihat kumpulan notebook ViT ini untuk contoh inferensi dan fine-tuning pada dataset kustom. Ganti ViTFeatureExtractor dan ViTForImageClassification di notebook tersebut dengan AutoImageProcessor dan CvtForImageClassification.
CvtConfig
kelas 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 )
Parameter
- num_channels (
int, opsional, defaultnya3) — Jumlah saluran input. - patch_sizes (
Union[list[int], tuple[int, ...]], opsional, default(7, 3, 3)) — Ukuran patch di setiap tahap model. - patch_stride (
list[int], opsional, default[4, 2, 2]) — Ukuran stride dari patch embedding setiap encoder. - patch_padding (
list[int], opsional, default[2, 1, 1]) — Ukuran padding dari patch embedding setiap encoder. - embed_dim (
Union[list[int], tuple[int, ...]], opsional, default(64, 192, 384)) — Dimensi dari embeddings dan hidden states. - num_heads (
Union[list[int], tuple[int, ...]], opsional, defaultnya(1, 3, 6)) — Jumlah kepala perhatian untuk setiap lapisan perhatian dalam decoder Transformer. - depth (
list[int], opsional, default[1, 2, 10]) — Jumlah lapisan di setiap blok encoder. - mlp_ratio (
Union[list[float], tuple[float, ...]], opsional, default(4.0, 4.0, 4.0)) — Rasio dimensi tersembunyi MLP terhadap dimensi embedding. - attention_drop_rate (
list[float], opsional, default[0.0, 0.0, 0.0]) — Rasio dropout untuk probabilitas attention. - drop_rate (
list[float], opsional, default[0.0, 0.0, 0.0]) — Rasio dropout untuk probabilitas patch embeddings. - drop_path_rate (
Union[list[float], tuple[float, ...]], opsional, default(0.0, 0.0, 0.1)) — Tingkat drop path untuk fusi patch. - qkv_bias (
Union[list[bool], tuple[bool, ...]], opsional, defaultnya(True, True, True)) — Apakah akan menambahkan bias ke queries, keys, dan values. - cls_token (
list[bool], opsional, default[False, False, True]) — Apakah akan menambahkan token klasifikasi ke output dari masing-masing 3 tahap terakhir. - qkv_projection_method (
list[string], opsional, defaultnya [“dw_bn”, “dw_bn”, “dw_bn”]`) — Metode proyeksi untuk query, key, dan value. Defaultnya adalah depth-wise convolutions dengan batch norm. Untuk proyeksi Linear, gunakan “avg”. - kernel_qkv (
list[int], opsional, default[3, 3, 3]) — Ukuran kernel untuk query, key, dan value pada lapisan attention - padding_kv (
list[int], opsional, default[1, 1, 1]) — Ukuran padding untuk key dan value di lapisan attention - stride_kv (
list[int], opsional, default[2, 2, 2]) — Ukuran stride untuk key dan value di lapisan attention - padding_q (
list[int], opsional, default[1, 1, 1]) — Ukuran padding untuk query di lapisan attention - stride_q (
list[int], opsional, default[1, 1, 1]) — Ukuran stride untuk query di lapisan attention - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari CvtModel. Kelas ini digunakan untuk membuat instans model Cvt berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari microsoft/cvt-13
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> 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
kelas transformers.CvtModel
< source >( config: CvtConfigadd_pooling_layer = True )
Parameter
- config (CvtConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
- add_pooling_layer (
bool, opsional, defaultTrue) — Apakah akan menambahkan lapisan pooling
Model Cvt polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithCLSToken or tuple(torch.Tensor)
Parameter
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ConvNextImageProcessor. Lihat ConvNextImageProcessor.call() untuk detailnya (processor_classmenggunakan ConvNextImageProcessor untuk memproses gambar). - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
BaseModelOutputWithCLSToken atau tuple(torch.Tensor)
BaseModelOutputWithCLSToken atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CvtConfig) dan input.
Metode forward dari CvtModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir model.cls_token_value (
torch.Tensordengan bentuk(batch_size, 1, hidden_size)) — Token klasifikasi pada keluaran lapisan terakhir model.hidden_states (
tuple[torch.Tensor, ...], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
CvtForImageClassification
kelas transformers.CvtForImageClassification
< source >( config: CvtConfig )
Parameter
- config (CvtConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Cvt Model transformer dengan kepala klasifikasi gambar di atasnya (lapisan linear di atas keadaan tersembunyi akhir dari token [CLS]) misalnya untuk ImageNet.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan ConvNextImageProcessor. Lihat ConvNextImageProcessor.call() untuk detailnya (processor_classmenggunakan ConvNextImageProcessor untuk memproses gambar). - labels (
torch.LongTensordengan bentuk(batch_size,), opsional) — Label untuk menghitung loss klasifikasi/regresi gambar. Indeks harus berada dalam[0, ..., config.num_labels - 1]. Jikaconfig.num_labels == 1, loss regresi dihitung (Mean-Square loss). Jikaconfig.num_labels > 1, loss klasifikasi dihitung (Cross-Entropy). - output_hidden_states (
bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict (
bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.
Mengembalikan
ImageClassifierOutputWithNoAttention atau tuple(torch.Tensor)
A ImageClassifierOutputWithNoAttention atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CvtConfig) dan input.
Metode forward CvtForImageClassification menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1). - logits (
torch.Tensordengan bentuk(batch_size, config.num_labels)) — Skor klasifikasi (atau regresi jika config.num_labels==1) (sebelum SoftMax). - hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap tahap) dengan bentuk(batch_size, num_channels, height, width). Hidden-states (juga disebut feature maps) dari model pada output setiap tahap.
Contoh:
>>> 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])
...