Transformers documentation
Convolutional Vision Transformer (CvT)
Este modelo foi publicado no HF papers em 2021-03-29 e contribuído para o Hugging Face Transformers em 2022-05-18.
Convolutional Vision Transformer (CvT)
Convolutional Vision Transformer (CvT) é um modelo que combina as vantagens das redes neurais convolucionais (CNNs) e dos Vision Transformers para tarefas de visão computacional. Ele introduz camadas convolucionais na arquitetura do Vision Transformer, permitindo que capture padrões locais nas imagens enquanto mantém o contexto global fornecido pelos mecanismos de autoatenção.
Você pode encontrar todos os checkpoints do CvT na organização Microsoft.
Este modelo foi contribuído por anujunj.
Clique nos modelos CvT na barra lateral à direita para ver mais exemplos de como aplicar o CvT a diferentes tarefas de visão computacional.
O exemplo abaixo demonstra como classificar uma imagem com Pipeline ou a classe 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}")Recursos
Consulte este conjunto de notebooks de ViT para exemplos de inferência e ajuste fino em conjuntos de dados personalizados. Substitua ViTFeatureExtractor e ViTForImageClassification nesses notebooks por AutoImageProcessor e CvtForImageClassification.
CvtConfig
classe 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 )
Parâmetros
- num_channels (
int, opcional, padrão3) — O número de canais de entrada. - patch_sizes (
Union[list[int], tuple[int, ...]], opcional, padrão(7, 3, 3)) — Tamanho do patch em cada estágio do modelo. - patch_stride (
list[int], opcional, padrão[4, 2, 2]) — O tamanho do stride de cada patch embedding do encoder. - patch_padding (
list[int], opcional, padrão[2, 1, 1]) — O tamanho do padding de cada incorporação de patch do codificador. - embed_dim (
Union[list[int], tuple[int, ...]], opcional, padrão(64, 192, 384)) — Dimensão dos embeddings e dos estados ocultos. - num_heads (
Union[list[int], tuple[int, ...]], opcional, padrão(1, 3, 6)) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - depth (
list[int], opcional, padrão[1, 2, 10]) — O número de camadas em cada bloco do codificador. - mlp_ratio (
Union[list[float], tuple[float, ...]], opcional, padrão(4.0, 4.0, 4.0)) — Proporção entre a dimensão oculta do MLP e a dimensão de incorporação. - attention_drop_rate (
list[float], opcional, padrão[0.0, 0.0, 0.0]) — A taxa de dropout para as probabilidades de atenção. - drop_rate (
list[float], opcional, padrão[0.0, 0.0, 0.0]) — A taxa de dropout para as probabilidades dos embeddings de patch. - drop_path_rate (
Union[list[float], tuple[float, ...]], opcional, padrão(0.0, 0.0, 0.1)) — Taxa de drop path para a fusão de patches. - qkv_bias (
Union[list[bool], tuple[bool, ...]], opcional, padrão(True, True, True)) — Indica se deve ser adicionado um viés às queries, keys e values. - cls_token (
list[bool], opcional, padrão[False, False, True]) — Indica se deve ou não adicionar um token de classificação à saída de cada uma das 3 últimas etapas. - qkv_projection_method (
list[string], opcional, padrão [“dw_bn”, “dw_bn”, “dw_bn”]`) — Método de projeção para query, key e value. O padrão é convoluções depth-wise com batch norm. Para projeção Linear, use “avg”. - kernel_qkv (
list[int], opcional, padrão[3, 3, 3]) — O tamanho do kernel para query, key e value na camada de atenção - padding_kv (
list[int], opcional, padrão[1, 1, 1]) — O tamanho do padding para chave e valor na camada de atenção - stride_kv (
list[int], opcional, padrão[2, 2, 2]) — O tamanho do stride para chave e valor na camada de atenção - padding_q (
list[int], opcional, padrão[1, 1, 1]) — Tamanho do padding para a query na camada de atenção - stride_q (
list[int], opcional, padrão[1, 1, 1]) — O tamanho do stride para a query na camada de atenção - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - layer_norm_eps (
float, opcional, padrão1e-12) — O epsilon usado pelas camadas de normalização de camada.
Esta é a classe de configuração para armazenar a configuração de um CvtModel. Ela é usada para instanciar um modelo Cvt de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do microsoft/cvt-13
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplo:
>>> 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
classe transformers.CvtModel
< source >( config: CvtConfigadd_pooling_layer = True )
Parâmetros
- config (CvtConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
- add_pooling_layer (
bool, opcional, padrãoTrue) — Se deve adicionar uma camada de pooling
O modelo Cvt puro, que produz estados ocultos brutos sem nenhum cabeçalho específico no topo.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithCLSToken or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando ConvNextImageProcessor. Consulte ConvNextImageProcessor.call() para mais detalhes (processor_classusa ConvNextImageProcessor para processar imagens). - output_hidden_states (
bool, opcional) — Indica se as hidden states de todas as camadas devem ser retornadas. Consultehidden_statesem tensors retornados para mais detalhes. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples.
Retorna
BaseModelOutputWithCLSToken ou tuple(torch.Tensor)
Um BaseModelOutputWithCLSToken ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos dependendo da configuração (CvtConfig) e das entradas.
O método forward da CvtModel substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do modelo.cls_token_value (
torch.Tensorde forma(batch_size, 1, hidden_size)) — Token de classificação na saída da última camada do modelo.hidden_states (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
CvtForImageClassification
classe transformers.CvtForImageClassification
< source >( config: CvtConfig )
Parâmetros
- config (CvtConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Modelo transformer Cvt com uma cabeça de classificação de imagem no topo (uma camada linear no topo do estado oculto final do token [CLS]), por exemplo, para o ImageNet.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando ConvNextImageProcessor. Consulte ConvNextImageProcessor.call() para mais detalhes (processor_classusa ConvNextImageProcessor para processar imagens). - labels (
torch.LongTensorde forma(batch_size,), opcional) — Rótulos para o cálculo da perda de classificação/regressão de imagem. Os índices devem estar em[0, ..., config.num_labels - 1]. Seconfig.num_labels == 1, uma perda de regressão é calculada (perda de erro quadrático médio); seconfig.num_labels > 1, uma perda de classificação é calculada (entropia cruzada). - output_hidden_states (
bool, opcional) — Indica se as hidden states de todas as camadas devem ser retornadas. Consultehidden_statesem tensors retornados para mais detalhes. - return_dict (
bool, opcional) — Indica se deve retornar um ModelOutput em vez de uma tupla simples.
Retorna
ImageClassifierOutputWithNoAttention ou tuple(torch.Tensor)
Um ImageClassifierOutputWithNoAttention ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos dependendo da configuração (CvtConfig) e das entradas.
O método forward da CvtForImageClassification sobrescreve o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
- loss (
torch.Tensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de classificação (ou regressão se config.num_labels==1). - logits (
torch.Tensorde forma(batch_size, config.num_labels)) — Pontuações de classificação (ou regressão, se config.num_labels==1) (antes do SoftMax). - hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada estágio) de forma(batch_size, num_channels, height, width). Hidden-states (também chamados de feature maps) do modelo na saída de cada estágio.
Exemplo:
>>> 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])
...