Transformers documentation
LW-DETR
Este modelo foi publicado no HF papers em 2024-07-24 e contribuído para o Hugging Face Transformers em 2026-01-12.
LW-DETR
LW-DETR propõe uma arquitetura leve de Detection Transformer (DETR) projetada para competir com e superar a série dominante YOLO em detecção de objetos em tempo real. Ela atinge um novo estado da arte no equilíbrio entre velocidade (latência) e precisão (mAP) ao combinar avanços recentes em transformers com escolhas de design eficientes.
A arquitetura LW-DETR é caracterizada por sua estrutura simples e eficiente: um Encoder ViT simples, um Projector e um Decoder DETR raso. Ela aprimora a arquitetura DETR para eficiência e velocidade usando as seguintes modificações principais:
- Encoder ViT eficiente: utiliza um ViT simples com atenção janela/global intercalada e uma organização baseada em janelas para reduzir drasticamente a complexidade e a latência da atenção.
- Entrada mais rica: agrega recursos de múltiplos níveis do codificador e usa um Projetor C2f (YOLOv8) para transmitir recursos de duas escalas ($1/8$ e $1/32$).
- Decoder mais rápido: Utiliza um decoder DETR raso de 3 camadas com atenção cruzada deformável para menor latência e convergência mais rápida.
- Consultas Otimizadas: Utiliza um esquema de consultas mistas que combina consultas de conteúdo aprendíveis e consultas espaciais geradas.
Você pode encontrar todos os checkpoints disponíveis do LW DETR na organização AnnaZhang. O código original pode ser encontrado aqui.
Este modelo foi contribuído por stevenbucaille.
Clique nos modelos LW-DETR na barra lateral à direita para ver mais exemplos de como aplicar o LW-DETR a diferentes tarefas de detecção de objetos.
O exemplo abaixo demonstra como realizar detecção de objetos com o Pipeline e a classe AutoModel.
from transformers import pipeline
pipeline = pipeline(
"object-detection",
model="AnnaZhang/lwdetr_small_60e_coco",
device_map=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
image_processor = AutoImageProcessor.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")
model = AutoModelForObjectDetection.from_pretrained("AnnaZhang/lwdetr_small_60e_coco", device_map="auto")
# prepare image for the model
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")Recursos
Uma lista de recursos oficiais da Hugging Face e da comunidade (indicados por 🌎) para ajudar você a começar com o LwDetr.
- Veja também: Guia da tarefa de detecção de objetos.
LwDetrConfig
classe transformers.LwDetrConfig
< 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 = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneprojector_scale_factors: list[float] | tuple[float, ...] = ()hidden_expansion: float = 0.5c2f_num_blocks: int = 3activation_function: str = 'silu'batch_norm_eps: float = 1e-05dropout: float | int = 0.0decoder_ffn_dim: int = 2048decoder_n_points: int = 4decoder_layers: int = 3decoder_self_attention_heads: int = 8decoder_cross_attention_heads: int = 16decoder_activation_function: str = 'relu'num_queries: int = 300attention_bias: bool = Trueattention_dropout: float | int = 0.0activation_dropout: float | int = 0.0group_detr: int = 13init_std: float = 0.02disable_custom_kernels: bool = Trueclass_cost: int | float = 2bbox_cost: int | float = 5giou_cost: int | float = 2class_loss_coefficient: int | float = 1dice_loss_coefficient: int | float = 1bbox_loss_coefficient: int | float = 5giou_loss_coefficient: int | float = 2eos_coefficient: float = 0.1focal_alpha: float = 0.25auxiliary_loss: bool = Trued_model: int = 256 )
Parâmetros
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — A configuração do modelo backbone. - projector_scale_factors (
list[float], opcional, padrão[]) — Fatores de escala para a rede de pirâmide de recursos. Cada fator de escala determina a resolução dos recursos em diferentes níveis. Os valores suportados são 0.5, 1.0 e 2.0. - hidden_expansion (
float, opcional, padrão 0.5) — Fator de expansão para as dimensões ocultas nas camadas do projetor. - c2f_num_blocks (
int, opcional, padrão 3) — Número de blocos na camada C2F. - activation_function (
str, opcional, padrão"silu") — A função de ativação não linear no projetor. Os valores suportados são"silu","relu","gelu". - batch_norm_eps (
float, opcional, padrão 1e-05) — O valor de epsilon para as camadas de normalização de lote. - dropout (
Union[float, int], opcional, padrão0.0) — A proporção para todas as camadas de dropout. - decoder_ffn_dim (
int, opcional, padrão 2048) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder. - decoder_n_points (
int, opcional, padrão 4) — O número de chaves amostradas em cada nível de recurso para cada cabeça de atenção no decoder. - decoder_layers (
int, opcional, padrão3) — Número de camadas ocultas no decodificador do Transformer. Se não for definido, usará o mesmo valor denum_layers. - decoder_self_attention_heads (
int, opcional, padrão 8) — Número de cabeças de atenção para cada camada de atenção na autoatenção do decoder. - decoder_cross_attention_heads (
int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção na cross-attention do decoder. - decoder_activation_function (
str, opcional, padrão"relu") — A função de ativação não linear no decodificador. Os valores suportados são"relu","silu","gelu". - num_queries (
int, opcional, padrão 300) — Número de consultas de objeto, ou seja, slots de detecção. Este é o número máximo de objetos que o LwDetrModel pode detectar em uma única imagem. - attention_bias (
bool, opcional, padrãoTrue) — Se deve usar um viés nas camadas de projeção de query, key, value e output durante a autoatenção. - attention_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - activation_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada. - group_detr (
int, opcional, padrão 13) — Número de grupos para o mecanismo de atenção Group DETR, que ajuda a reduzir a complexidade computacional. - init_std (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - disable_custom_kernels (
bool, opcional, padrãoTrue) — Desativa o uso de kernels CUDA e CPU personalizados. Essa opção é necessária para a exportação ONNX, pois os kernels personalizados não são suportados pela exportação ONNX do PyTorch. - class_cost (
Union[int, float], opcional, padrão2) — Peso relativo do erro de classificação no custo de correspondência húngara. - bbox_cost (
Union[int, float], opcional, padrão5) — Peso relativo do erro de caixa delimitadora L1 no custo de correspondência húngara. - giou_cost (
Union[int, float], opcional, padrão2) — Peso relativo da perda de IoU generalizada no custo de correspondência húngara. - class_loss_coefficient (
float, opcional, padrão 1) — Peso relativo da perda de classificação no custo de correspondência húngara. - dice_loss_coefficient (
Union[int, float], opcional, padrão1) — Peso relativo da perda dice na perda de segmentação panótica. - bbox_loss_coefficient (
Union[int, float], opcional, padrão5) — Peso relativo da perda L1 da caixa delimitadora na perda de segmentação panótica. - giou_loss_coefficient (
Union[int, float], opcional, padrão2) — Peso relativo da perda de IoU generalizada na perda de segmentação panótica. - eos_coefficient (
float, opcional, padrão0.1) — Peso de classificação relativo da classe 'no-object' na perda de detecção de objetos. - focal_alpha (
float, opcional, padrão0.25) — Parâmetro alpha na focal loss. - auxiliary_loss (
bool, opcional, padrãoTrue) — Se as perdas de decodificação auxiliares (perdas em cada camada do decodificador) devem ser usadas. - d_model (
int, opcional, padrão256) — Tamanho das camadas do codificador e da camada pooler.
Esta é a classe de configuração para armazenar a configuração de um LwDetrModel. Ela é usada para instanciar um modelo Lw Detr 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 AnnaZhang/lwdetr_small_60e_coco
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.
Exemplos:
>>> from transformers import LwDetrConfig, LwDetrModel
>>> # Initializing a LW-DETR AnnaZhang/lwdetr_small_60e_coco style configuration
>>> configuration = LwDetrConfig()
>>> # Initializing a model (with random weights) from the AnnaZhang/lwdetr_small_60e_coco style configuration
>>> model = LwDetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configLwDetrViTConfig
classe transformers.LwDetrViTConfig
< 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] = 256pretrain_image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3qkv_bias: bool = Truewindow_block_indices: list[int] | tuple[int, ...] = ()use_absolute_position_embeddings: bool = True_out_features: list[str] | None = None_out_indices: list[int] | None = Nonecae_init_values: float = 0.1num_windows: int = 16 )
Parâmetros
- hidden_size (
int, opcional, padrão768) — Dimensão das representações ocultas. - num_hidden_layers (
int, opcional, padrão12) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão12) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - mlp_ratio (
int, opcional, padrão4) — Proporção entre a dimensão oculta do MLP e a dimensão de incorporação. - hidden_act (
str, opcional, padrãogelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - dropout_prob (
Union[float, int], opcional, padrão0.0) — A proporção para todas as camadas de dropout. - 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-06) — O epsilon usado pelas camadas de normalização de camada. - image_size (
Union[int, list[int], tuple[int, int]], opcional, padrão256) — O tamanho (resolução) de cada imagem. - pretrain_image_size (
int, opcional, padrão 224) — O tamanho (resolução) de cada imagem durante o pré-treinamento. - patch_size (
Union[int, list[int], tuple[int, int]], opcional, padrão16) — O tamanho (resolução) de cada patch. - num_channels (
int, opcional, padrão3) — O número de canais de entrada. - qkv_bias (
bool, opcional, padrãoTrue) — Se deve adicionar um viés às queries, keys e values. - window_block_indices (
list[int], opcional, padrão[]) — Lista de índices dos blocos que devem usar atenção de janela em vez da autoatenção global regular. - use_absolute_position_embeddings (
bool, opcional, padrãoTrue) — Se deve adicionar embeddings de posição absoluta aos embeddings de patch. - cae_init_values (
float, opcional, padrão 0.1) — Valor de inicialização para os parâmetros de CAE quandouse_caeestá habilitado. - num_windows (
int, opcional, padrão 16) — Número de janelas para a atenção baseada em janelas. Deve ser um quadrado perfeito e o tamanho da imagem deve ser divisível pela raiz quadrada deste valor. Isso permite uma organização eficiente do mapa de recursos em ordem de janela.
Esta é a classe de configuração para armazenar a configuração de um LwDetrModel. Ela é usada para instanciar um modelo Lw Detr 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 AnnaZhang/lwdetr_small_60e_coco
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 LwDetrViTConfig, LwDetrViTModel
>>> # Initializing a LW-DETR ViT configuration
>>> configuration = LwDetrViTConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = LwDetrViTModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configLwDetrModel
classe transformers.LwDetrModel
< source >( config: LwDetrConfig )
Parâmetros
- config (LwDetrConfig) — 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.
O modelo LW Detr básico (composto por um backbone e um Transformer decodificador) que produz estados ocultos brutos, sem nenhum head 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: Tensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → LwDetrModelOutput 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 DeformableDetrImageProcessor. Consulte DeformableDetrImageProcessor.call() para mais detalhes (processor_classusa DeformableDetrImageProcessor para processar imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
Retorna
LwDetrModelOutput ou tuple(torch.Tensor)
Uma LwDetrModelOutput 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 (LwDetrConfig) e das entradas.
O método forward do LwDetrModel 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.
init_reference_points (
torch.Tensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados através do decodificador do Transformer.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.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Pontos de referência intermediários empilhados (pontos de referência de cada camada do decodificador).enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, onde asconfig.two_stage_num_proposalscaixas delimitadoras com as maiores pontuações são selecionadas como propostas de região na primeira etapa. Saída da classificação binária de caixas delimitadoras (ou seja, primeiro plano e segundo plano).enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das caixas delimitadoras previstas na primeira etapa.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.
attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
cross_attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
Exemplos:
>>> from transformers import AutoImageProcessor, DeformableDetrModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")
>>> model = DeformableDetrModel.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]LwDetrForObjectDetection
classe transformers.LwDetrForObjectDetection
< source >( config: LwDetrConfig )
Parâmetros
- config (LwDetrConfig) — 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 LW DETR (composto por um backbone e um Transformer decodificador) com cabeças de detecção de objetos no topo, para tarefas como a detecção COCO.
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: Tensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → LwDetrObjectDetectionOutput 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 DeformableDetrImageProcessor. Consulte DeformableDetrImageProcessor.call() para mais detalhes (processor_classusa DeformableDetrImageProcessor para processar as imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
- labels (
list[Dict]de comprimento(batch_size,), opcional) — Rótulos para o cálculo da perda de correspondência bipartida. Lista de dicionários, em que cada dicionário contém pelo menos as seguintes 2 chaves: ‘class_labels’ e ‘boxes’ (os rótulos de classe e as caixas delimitadoras de uma imagem no lote, respectivamente). Os próprios rótulos de classe devem ser umtorch.LongTensorde comprimento(number of bounding boxes in the image,)e as caixas umtorch.Tensorde forma(number of bounding boxes in the image, 4).
Retorna
LwDetrObjectDetectionOutput ou tuple(torch.Tensor)
Um LwDetrObjectDetectionOutput 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 (LwDetrConfig) e das entradas.
O método forward de LwDetrForObjectDetection 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.
loss (
torch.Tensorde forma(1,), opcional, retornado quandolabelssão fornecidas)) — Perda total como uma combinação linear de uma log-verossimilhança negativa (entropia cruzada) para a previsão de classe e uma perda de caixa delimitadora. Esta última é definida como uma combinação linear da perda L1 e da perda de IoU generalizada e invariante à escala.loss_dict (
Dict, opcional) — Um dicionário contendo as perdas individuais. Útil para registro de logs.logits (
torch.Tensorde forma(batch_size, num_queries, num_classes + 1)) — Logits de classificação (incluindo no-object) para todas as queries.pred_boxes (
torch.Tensorde forma(batch_size, num_queries, 4)) — Coordenadas normalizadas das caixas para todas as consultas, representadas como (center_x, center_y, width, height). Esses valores são normalizados em [0, 1], relativos ao tamanho de cada imagem individual no lote (ignorando possível preenchimento). Você pode usar~DeformableDetrProcessor.post_process_object_detectionpara recuperar as caixas delimitadoras não normalizadas.auxiliary_outputs (
list[Dict], opcional) — Opcional, retornado apenas quando as perdas auxiliares são ativadas (ou seja,config.auxiliary_lossestá definido comoTrue) e os rótulos são fornecidos. É uma lista de dicionários contendo as duas chaves acima (logitsepred_boxes) para cada camada do decodificador.init_reference_points (
torch.Tensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados através do decodificador do Transformer.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.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Pontos de referência intermediários empilhados (pontos de referência de cada camada do decodificador).enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, onde asconfig.two_stage_num_proposalscaixas delimitadoras com as maiores pontuações são selecionadas como propostas de região na primeira etapa. Saída da classificação binária de caixas delimitadoras (ou seja, primeiro plano e segundo plano).enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das caixas delimitadoras previstas na primeira etapa.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.
attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
cross_attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
Exemplos:
>>> from transformers import AutoImageProcessor, LwDetrForObjectDetection
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")
>>> model = LwDetrForObjectDetection.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.5, target_sizes=target_sizes)[
... 0
... ]
>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
... box = [round(i, 2) for i in box.tolist()]
... print(
... f"Detected {model.config.id2label[label.item()]} with confidence "
... f"{round(score.item(), 3)} at location {box}"
... )
Detected cat with confidence 0.8 at location [16.5, 52.84, 318.25, 470.78]
Detected cat with confidence 0.789 at location [342.19, 24.3, 640.02, 372.25]
Detected remote with confidence 0.633 at location [40.79, 72.78, 176.76, 117.25]LwDetrViTBackbone
classe transformers.LwDetrViTBackbone
< source >( config: LwDetrViTConfig )
Parâmetros
- config (LwDetrViTConfig) — 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.
O backbone do Lw Detr.
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: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BackboneOutput or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando DeformableDetrImageProcessor. Consulte DeformableDetrImageProcessor.call() para mais detalhes (processor_classusa DeformableDetrImageProcessor para processar imagens).
Retorna
BackboneOutput ou tuple(torch.Tensor)
Um BackboneOutput 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 (LwDetrConfig) e das entradas.
O método forward de LwDetrViTBackbone 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.
feature_maps (
tuple(torch.Tensor)de forma(batch_size, num_channels, height, width)) — Mapas de características dos estágios.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 + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size)ou(batch_size, num_channels, height, width), dependendo do backbone.Estados ocultos do modelo na saída de cada estágio, além das saídas do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length). Aplicável apenas se o backbone usar atenção.Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
Exemplos:
>>> from transformers import LwDetrViTConfig, LwDetrViTBackbone
>>> import torch
>>> config = LwDetrViTConfig()
>>> model = LwDetrViTBackbone(config)
>>> pixel_values = torch.randn(1, 3, 224, 224)
>>> with torch.no_grad():
... outputs = model(pixel_values)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 14, 14]