Transformers documentation

Convolutional Vision Transformer (CvT)

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

Este modelo se publicó en HF papers el 29 de marzo de 2021 y se contribuyó a Hugging Face Transformers el 18 de mayo de 2022.

Convolutional Vision Transformer (CvT)

Convolutional Vision Transformer (CvT) es un modelo que combina las fortalezas de las redes neuronales convolucionales (CNN) y los Vision transformers para las tareas de visión por computadora. Introduce capas convolucionales en la arquitectura del vision transformer, lo que le permite capturar patrones locales en las imágenes mientras mantiene el contexto global proporcionado por los mecanismos de autoatención.

Puedes encontrar todos los puntos de control de CvT bajo la organización Microsoft.

Este modelo fue aportado por anujunj.

Haz clic en los modelos CvT en la barra lateral derecha para ver más ejemplos de cómo aplicar CvT a diferentes tareas de visión por computadora.

El siguiente ejemplo demuestra cómo clasificar una imagen con Pipeline o la clase AutoModel.

Pipeline
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")

Recursos

Consulte este conjunto de cuadernos de ViT para ver ejemplos de inferencia y ajuste fino en conjuntos de datos personalizados. Reemplace ViTFeatureExtractor y ViTForImageClassification en estos cuadernos por AutoImageProcessor y CvtForImageClassification.

CvtConfig

clase transformers.CvtConfig

< >

( 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 )

Parámetros

  • num_channels (int, opcional, valor predeterminado 3) — El número de canales de entrada.
  • patch_sizes (Union[list[int], tuple[int, ...]], opcional, valor predeterminado (7, 3, 3)) — Tamaño del parche en cada etapa del modelo.
  • patch_stride (list[int], opcional, valor predeterminado [4, 2, 2]) — El tamaño del paso de la incrustación de parche de cada codificador.
  • patch_padding (list[int], opcional, valor predeterminado [2, 1, 1]) — El tamaño de relleno de la incrustación de parche de cada codificador.
  • embed_dim (Union[list[int], tuple[int, ...]], opcional, valor predeterminado (64, 192, 384)) — Dimensionalidad de los embeddings y los estados ocultos.
  • num_heads (Union[list[int], tuple[int, ...]], opcional, valor predeterminado (1, 3, 6)) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer.
  • depth (list[int], opcional, valor predeterminado [1, 2, 10]) — El número de capas en cada bloque del codificador.
  • mlp_ratio (Union[list[float], tuple[float, ...]], opcional, valor predeterminado (4.0, 4.0, 4.0)) — Proporción entre la dimensión oculta del MLP y la dimensión de la incrustación.
  • attention_drop_rate (list[float], opcional, valor predeterminado [0.0, 0.0, 0.0]) — La proporción de dropout para las probabilidades de atención.
  • drop_rate (list[float], opcional, valor predeterminado [0.0, 0.0, 0.0]) — La proporción de dropout para las probabilidades de las incrustaciones de parche.
  • drop_path_rate (Union[list[float], tuple[float, ...]], opcional, valor predeterminado (0.0, 0.0, 0.1)) — Tasa de drop path para la fusión de parches.
  • qkv_bias (Union[list[bool], tuple[bool, ...]], opcional, valor predeterminado (True, True, True)) — Si se debe añadir un sesgo a las consultas, claves y valores.
  • cls_token (list[bool], opcional, valor predeterminado [False, False, True]) — Indica si se debe añadir un token de clasificación a la salida de cada una de las 3 últimas etapas.
  • qkv_projection_method (list[string], opcional, valor predeterminado [“dw_bn”, “dw_bn”, “dw_bn”]`) — Método de proyección para query, key y value. El valor predeterminado son convoluciones depth-wise con batch norm. Para una proyección lineal, use “avg”.
  • kernel_qkv (list[int], opcional, valor predeterminado [3, 3, 3]) — El tamaño del kernel para la consulta, la clave y el valor en la capa de atención
  • padding_kv (list[int], opcional, valor predeterminado [1, 1, 1]) — Tamaño del relleno para las claves y los valores en la capa de atención
  • stride_kv (list[int], opcional, valor predeterminado [2, 2, 2]) — Tamaño de la zancada para las claves y los valores en la capa de atención
  • padding_q (list[int], opcional, valor predeterminado [1, 1, 1]) — Tamaño del relleno para la consulta en la capa de atención
  • stride_q (list[int], opcional, valor predeterminado [1, 1, 1]) — El tamaño de la zancada para la consulta en la capa de atención
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • layer_norm_eps (float, opcional, valor predeterminado 1e-12) — El epsilon utilizado por las capas de normalización de capa.

Esta es la clase de configuración para almacenar la configuración de un CvtModel. Se utiliza para instanciar un modelo Cvt según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de microsoft/cvt-13

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Ejemplo:

>>> 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.config

CvtModel

clase transformers.CvtModel

< >

( config: CvtConfigadd_pooling_layer = True )

Parámetros

  • config (CvtConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
  • add_pooling_layer (bool, opcional, valor predeterminado True) — Si se debe añadir una capa de pooling

El modelo Cvt básico que genera estados ocultos sin ninguna cabeza específica en la parte superior.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithCLSToken or tuple(torch.FloatTensor)

Parámetros

  • pixel_values (torch.Tensor de forma (batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando ConvNextImageProcessor. Consulte ConvNextImageProcessor.call() para más detalles (processor_class utiliza ConvNextImageProcessor para procesar las imágenes).
  • output_hidden_states (bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consulte hidden_states en los tensores devueltos para obtener más detalles.
  • return_dict (bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.

Devuelve

BaseModelOutputWithCLSToken o tuple(torch.FloatTensor)

Un BaseModelOutputWithCLSToken o una tupla de torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (CvtConfig) y las entradas.

El método forward de CvtModel sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • last_hidden_state (torch.FloatTensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del modelo.

  • cls_token_value (torch.FloatTensor de forma (batch_size, 1, hidden_size)) — Token de clasificación en la salida de la última capa del modelo.

  • hidden_states (tuple[torch.FloatTensor, ...], opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.FloatTensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.

CvtForImageClassification

clase transformers.CvtForImageClassification

< >

( config: CvtConfig )

Parámetros

  • config (CvtConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

Transformador Cvt con una cabeza de clasificación de imágenes en la parte superior (una capa lineal sobre el estado oculto final del token [CLS]), por ejemplo, para ImageNet.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( 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.FloatTensor)

Parámetros

  • pixel_values (torch.Tensor de forma (batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando ConvNextImageProcessor. Consulte ConvNextImageProcessor.call() para más detalles (processor_class utiliza ConvNextImageProcessor para procesar las imágenes).
  • labels (torch.LongTensor de forma (batch_size,), opcional) — Etiquetas para calcular la pérdida de clasificación/regresión de imágenes. Los índices deben estar en [0, ..., config.num_labels - 1]. Si config.num_labels == 1 se calcula una pérdida de regresión (pérdida de error cuadrático medio), si config.num_labels > 1 se calcula una pérdida de clasificación (entropía cruzada).
  • output_hidden_states (bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consulte hidden_states en los tensores devueltos para obtener más detalles.
  • return_dict (bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.

Devuelve

ImageClassifierOutputWithNoAttention o tuple(torch.FloatTensor)

Un ImageClassifierOutputWithNoAttention o una tupla de torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (CvtConfig) y las entradas.

El método forward de CvtForImageClassification sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (torch.FloatTensor de forma (1,), opcional, devuelta cuando se proporciona labels) — Pérdida de clasificación (o de regresión si config.num_labels==1).
  • logits (torch.FloatTensor de forma (batch_size, config.num_labels)) — Puntuaciones de clasificación (o de regresión si config.num_labels==1) (antes de SoftMax).
  • hidden_states (tuple(torch.FloatTensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.FloatTensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustación, + una para la salida de cada etapa) de forma (batch_size, num_channels, height, width). Estados ocultos (también llamados mapas de características) del modelo en la salida de cada etapa.

Ejemplo:

>>> 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])
...
Update on GitHub