Transformers documentation
DEIMv2
Este modelo foi publicado no HF papers em 25/09/2025 e contribuído para o Hugging Face Transformers em 27/04/2026.
DEIMv2
Visão geral
DEIMv2 (DETR with Improved Matching v2) foi proposto em DEIMv2: Real-Time Object Detection Meets DINOv3 por Shihua Huang, Yongjie Hou, Longfei Liu, Xuanlong Yu e Xi Shen.
O resumo do artigo é o seguinte:
Impulsionado pelo Dense O2O simples e eficaz, o DEIM demonstra convergência mais rápida e desempenho aprimorado. Neste trabalho, estendemos o modelo com recursos DINOv3, resultando no DEIMv2. O DEIMv2 abrange oito tamanhos de modelo, de X a Atto, cobrindo implantação em GPU, edge e mobile. Para as variantes X, L, M e S, adotamos backbones pré-treinados / destilados com DINOv3 e introduzimos um Spatial Tuning Adapter (STA), que converte eficientemente a saída de escala única do DINOv3 em recursos multiescala e complementa semânticas fortes com detalhes finos para aprimorar a detecção. Para modelos ultraleves (Nano, Pico, Femto e Atto), utilizamos HGNetv2 com poda de profundidade e largura para atender a orçamentos de recursos rigorosos. Juntamente com um decodificador simplificado e um Dense O2O aprimorado, este design unificado permite que o DEIMv2 alcance um compromisso superior entre desempenho e custo em diversos cenários, estabelecendo novos resultados state-of-the-art. Notavelmente, nosso maior modelo, o DEIMv2-X, atinge 57,8 AP com apenas 50,3M de parâmetros, superando modelos anteriores de escala X que exigem mais de 60M de parâmetros para apenas 56,5 AP. No lado compacto, o DEIMv2-S é o primeiro modelo sub-10M (9,71M) a ultrapassar a marca de 50 AP no COCO, alcançando 50,9 AP. Mesmo o ultraleve DEIMv2-Pico, com apenas 1,5M de parâmetros, entrega 38,5 AP, igualando o YOLOv10-Nano (2,3M) com cerca de 50% menos parâmetros.
Este modelo foi contribuído por Harshal Janjani. O código original pode ser encontrado aqui.
Uso
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(url)
image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
model = AutoModelForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers", device_map="auto")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(
outputs, threshold=0.5, target_sizes=[image.size[::-1]]
)
for result in results:
for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(f"Detected {model.config.id2label[label.item()]} with confidence {round(score.item(), 3)} at location {box}")Deimv2Config
classe transformers.Deimv2Config
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: list[int] | tuple[int, int] | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int | list[int] = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = Trueweight_loss_mal: float = 1.0use_dense_one_to_one: bool = Truemal_alpha: float | None = Noneencoder_fuse_op: str = 'sum'spatial_tuning_adapter_inplanes: int = 16encoder_type: str = 'hybrid'use_gateway: bool = Trueshare_bbox_head: bool = Falseencoder_has_trailing_conv: bool = True )
Parâmetros
- is_encoder_decoder (
bool, opcional, padrãoTrue) — Indica se o modelo é usado como encoder/decoder ou não. - initializer_range (
float, opcional, padrão0.01) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - initializer_bias_prior_prob (
float, opcional) — A probabilidade a priori usada pelo inicializador de viés para inicializar os vieses deenc_score_headeclass_embed. SeNone,prior_probé calculado comoprior_prob = 1 / (num_labels + 1)durante a inicialização dos pesos do modelo. - layer_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de camada. - batch_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de lote. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — A configuração do modelo backbone. - freeze_backbone_batch_norms (
bool, opcional, padrãoTrue) — Se as camadas de normalização de lote no backbone devem ser congeladas. - encoder_hidden_dim (
int, opcional, padrão256) — Dimensão das representações ocultas. - encoder_in_channels (
list, opcional, padrão[512, 1024, 2048]) — Entrada de recursos em múltiplos níveis para o codificador. - feat_strides (
list[int], opcional, padrão[8, 16, 32]) — Passos usados em cada mapa de características. - encoder_layers (
int, opcional, padrão1) — Número de camadas ocultas no codificador do Transformer. Usará o mesmo valor denum_layersse não for definido. - encoder_ffn_dim (
int, opcional, padrão1024) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no encoder. - encoder_attention_heads (
int, opcional, padrão8) — Número de cabeças de atenção para cada camada de atenção no codificador do Transformer. - dropout (
Union[float, int], opcional, padrão0.0) — A proporção para todas as camadas de dropout. - activation_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada. - encode_proj_layers (
list[int], opcional, padrão[2]) — Índices das camadas projetadas a serem usadas no codificador. - positional_encoding_temperature (
int, opcional, padrão 10000) — O parâmetro de temperatura usado para criar as codificações posicionais. - encoder_activation_function (
str, opcional, padrão"gelu") — A função de ativação não linear (função ou string) no encoder e no pooler. - activation_function (
str, opcional, padrãosilu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - eval_size (
list[int]outuple[int, int], opcional) — Altura e largura usadas para calcular a altura e a largura efetivas dos embeddings de posição após considerar o stride. - normalize_before (
bool, opcional, padrãoFalse) — Determina se a normalização de camada deve ser aplicada na camada do codificador do transformer antes dos módulos de autoatenção e de rede feed-forward. - hidden_expansion (
float, opcional, padrão 1.0) — Razão de expansão para aumentar o tamanho da dimensão de RepVGGBlock e CSPRepLayer. - d_model (
int, opcional, padrão256) — Tamanho das camadas do codificador e da camada pooler. - num_queries (
int, opcional, padrão 300) — Número de consultas de objeto. - decoder_in_channels (
list, opcional, padrão[256, 256, 256]) — Dimensão dos recursos em múltiplos níveis para o decodificador. - decoder_ffn_dim (
int, opcional, padrão1024) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder. - num_feature_levels (
int, opcional, padrão 3) — O número de níveis de recursos de entrada. - 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ão6) — Número de camadas ocultas no decodificador do Transformer. Usará o mesmo valor denum_layersse não for definido. - decoder_attention_heads (
int, opcional, padrão8) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - decoder_activation_function (
str, opcional, padrão"relu") — A função de ativação não linear (função ou string) no decodificador. - attention_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - num_denoising (
int, opcional, padrão 100) — O número total de tarefas ou consultas de desruido a serem usadas para o desruido contrastivo. - label_noise_ratio (
float, opcional, padrão 0.5) — A fração de rótulos de desruidamento à qual o ruído aleatório deve ser adicionado. - box_noise_scale (
float, opcional, padrão 1.0) — Escala ou magnitude do ruído a ser adicionado às bounding boxes. - learn_initial_query (
bool, opcional, padrãoFalse) — Indica se os embeddings de consulta inicial do decodificador devem ser aprendidos durante o treinamento. - anchor_image_size (
tuple[int, int], opcional) — Altura e largura da imagem de entrada usada durante a avaliação para gerar as âncoras de bounding box. - with_box_refine (
bool, opcional, padrãoTrue) — Se deve aplicar refinamento iterativo de caixas delimitadoras. - matcher_alpha (
float, opcional, padrão 0.25) — Parâmetro alpha usado pelo Hungarian Matcher. - matcher_gamma (
float, opcional, padrão 2.0) — Parâmetro gamma usado pelo Hungarian Matcher. - matcher_class_cost (
float, opcional, padrão 2.0) — O peso relativo da perda de classe usado pelo Hungarian Matcher. - matcher_bbox_cost (
float, opcional, padrão 5.0) — O peso relativo da perda de caixa delimitadora usado pelo Hungarian Matcher. - matcher_giou_cost (
float, opcional, padrão 2.0) — O peso relativo da perda giou usada pelo Hungarian Matcher. - use_focal_loss (
bool, opcional, padrãoTrue) — Parâmetro que informa se a focal loss deve ser utilizada. - auxiliary_loss (
bool, opcional, padrãoTrue) — Se as perdas de decodificação auxiliares (perdas em cada camada do decodificador) devem ser usadas. - focal_loss_alpha (
float, opcional, padrão 0.75) — Parâmetro alpha usado para calcular a focal loss. - focal_loss_gamma (
float, opcional, padrão 2.0) — Parâmetro gamma usado para calcular a focal loss. - weight_loss_vfl (
float, opcional, padrão 1.0) — Peso relativo da perda varifocal na perda de detecção de objetos. - weight_loss_bbox (
float, opcional, padrão 5.0) — Peso relativo da perda L1 da caixa delimitadora na perda de detecção de objetos. - weight_loss_giou (
float, opcional, padrão 2.0) — Peso relativo da perda de IoU generalizada na perda de detecção de objetos. - weight_loss_fgl (
float, opcional, padrão 0.15) — Peso relativo da perda de localização de alto nível na perda de detecção de objetos. - weight_loss_ddf (
float, opcional, padrão 1.5) — Peso relativo da perda focal de destilação desacoplada na perda de detecção de objetos. - eos_coefficient (
float, opcional, padrão0.0001) — Peso de classificação relativo da classe 'no-object' na perda de detecção de objetos. - eval_idx (
int, opcional, padrão -1) — Índice da camada do decodificador a ser usada para avaliação. - layer_scale (
float, opcional, padrão1.0) — Fator de escala para a dimensão oculta nas camadas finais do decodificador. - max_num_bins (
int, opcional, padrão 32) — Número máximo de bins para o refinamento de bounding boxes guiado por distribuição. - reg_scale (
float, opcional, padrão 4.0) — Fator de escala para a distribuição de regressão. - depth_mult (
float, opcional, padrão 1.0) — Multiplicador para o número de blocos nas camadas RepNCSPELAN5. - top_prob_values (
int, opcional, padrão 4) — Número de valores de probabilidade mais altos a serem considerados a partir da distribuição de cada canto. - lqe_hidden_dim (
int, opcional, padrão 64) — Tamanho da dimensão oculta para a rede Location Quality Estimator (LQE). - lqe_layers (
int, opcional, padrão 2) — Número de camadas no MLP do Location Quality Estimator. - decoder_offset_scale (
float, opcional, padrão 0.5) — Escala de deslocamento usada na atenção deformável. - decoder_method (
str, opcional, padrão"default") — O método a ser usado para o decodificador:"default"ou"discrete". - up (
float, opcional, padrão 0.5) — Controla os limites superiores da Função de Ponderação. - tie_word_embeddings (
bool, opcional, padrãoTrue) — Se deve vincular as embeddings de pesos de acordo com o mapeamentotied_weights_keysdo modelo. - weight_loss_mal (
float, opcional, padrão 1.0) — Peso relativo da perda auxiliar de correspondência na perda de detecção de objetos. - use_dense_one_to_one (
bool, opcional, padrãoTrue) — Se deve usar correspondência densa um-para-um entre as camadas do decoder. - mal_alpha (
float, opcional) — Parâmetro Alpha para a Matching Auxiliary Loss (MAL). SeNone, usafocal_loss_alpha. - encoder_fuse_op (
str, opcional, padrão"sum") — Operação de fusão usada no FPN do encoder. O DEIMv2 usa"sum"em vez de"cat"do D-FINE. - spatial_tuning_adapter_inplanes (
int, opcional, padrão 16) — Número de planos de entrada para o tronco convolucional do STA. - encoder_type (
str, opcional, padrão"hybrid") — Tipo de encoder a ser utilizado."hybrid"utiliza o HybridEncoder completo, com AIFI, FPN e PAN."lite"utiliza o LiteEncoder leve, com fusão GAP para as variantes menores (Atto, Femto, Pico). - use_gateway (
bool, opcional, padrãoTrue) — Se deve usar o mecanismo de gateway (gating de atenção cruzada) nas camadas do decodificador. QuandoFalse, usa RMSNorm na saída da atenção do codificador em vez disso. - share_bbox_head (
bool, opcional, padrãoFalse) — Indica se a cabeça de previsão de caixas delimitadoras deve ser compartilhada entre todas as camadas do decodificador. - encoder_has_trailing_conv (
bool, opcional, padrãoTrue) — Indica se os blocos CSP do encoder incluem uma convolução 3x3 final após o caminho de bottleneck.Truepara RepNCSPELAN4 (usado pelas variantes HGNetV2 N e LiteEncoder).Falsepara RepNCSPELAN5 (usado pelas variantes DINOv3).
Esta é a classe de configuração para armazenar a configuração de um Deimv2Model. Ela é usada para instanciar um modelo Deimv2 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 Intellindust/DEIMv2_HGNetv2_N_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.
Deimv2Model
classe transformers.Deimv2Model
< source >( config: Deimv2Config )
Parâmetros
- config (Deimv2Config) — 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 RT-DETR (composto por um backbone e um encoder-decoder) que produz estados ocultos brutos, sem nenhum head 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: FloatTensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.FloatTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Deimv2ModelOutput or tuple(torch.FloatTensor)
Parâmetros
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usandoimage_processor_class. Consulteimage_processor_class.__call__para mais detalhes (processor_classusaimage_processor_classpara 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).
- encoder_outputs (
torch.FloatTensor, opcional) — A tupla consiste em (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder. - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar o mapa de recursos achatado (saída do backbone + camada de projeção), você pode escolher passar diretamente uma representação achatada de uma imagem. - 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.FloatTensorde forma(number of bounding boxes in the image, 4).
Retorna
Deimv2ModelOutput ou tuple(torch.FloatTensor)
Uma Deimv2ModelOutput ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (None) e das entradas.
O método forward do Deimv2Model 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.FloatTensorde forma(batch_size, num_queries, hidden_size)) — Sequência de estados ocultos na saída da última camada do decodificador do modelo.intermediate_hidden_states (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_logits (
torch.FloatTensorde forma(batch_size, config.decoder_layers, sequence_length, config.num_labels)) — Logits intermediários empilhados (logits de cada camada do decoder).intermediate_reference_points (
torch.FloatTensorde 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).intermediate_predicted_corners (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Cantos intermediários previstos empilhados (cantos previstos de cada camada do decoder).initial_reference_points (
torch.FloatTensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais usados para a primeira camada do decodificador.decoder_hidden_states (
tuple[torch.FloatTensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(uma para a saída dos embeddings, se o modelo tiver uma camada de embedding, + uma para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.
decoder_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
cross_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma 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.
encoder_last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.encoder_hidden_states (
tuple[torch.FloatTensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(uma para a saída dos embeddings, se o modelo tiver uma camada de embedding, + uma para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.
encoder_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com formato(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
init_reference_points (
torch.FloatTensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados para o decodificador do Transformer.enc_topk_logits (
torch.FloatTensorde forma(batch_size, sequence_length, config.num_labels)) — Pontuações das caixas delimitadoras previstas, nas quais as caixas delimitadoras com asconfig.two_stage_num_proposalsmaiores pontuações são selecionadas como propostas de região na etapa do codificador. Saída da classificação binária de caixas delimitadoras (ou seja, primeiro plano e segundo plano).enc_topk_bboxes (
torch.FloatTensorde forma(batch_size, sequence_length, 4)) — Logits das coordenadas das caixas delimitadoras previstas na etapa do codificador.enc_outputs_class (
torch.FloatTensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, em que 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.FloatTensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das bounding boxes previstas na primeira etapa.denoising_meta_values (
dict, opcional) — Dicionário extra para os valores relacionados ao denoising.
Exemplos:
>>> from transformers import AutoImageProcessor, Deimv2Model
>>> 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("PekingU/Deimv2_r50vd")
>>> model = Deimv2Model.from_pretrained("PekingU/Deimv2_r50vd")
>>> 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]Deimv2ForObjectDetection
classe transformers.Deimv2ForObjectDetection
< source >( config: Deimv2Config )
Parâmetros
- config (Deimv2Config) — 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 RT-DETR (composto por um backbone e um encoder-decoder) que gera bounding boxes e logits para serem decodificados em seguida em scores e classes.
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: FloatTensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.FloatTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Deimv2ObjectDetectionOutput or tuple(torch.FloatTensor)
Parâmetros
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usandoimage_processor_class. Consulteimage_processor_class.__call__para mais detalhes (processor_classusaimage_processor_classpara 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).
- encoder_outputs (
torch.FloatTensor, opcional) — A tupla consiste em (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder. - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de incorporação interna do modelo. - 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.FloatTensorde forma(number of bounding boxes in the image, 4).
Retorna
Deimv2ObjectDetectionOutput ou tuple(torch.FloatTensor)
Uma Deimv2ObjectDetectionOutput ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (None) e das entradas.
O método forward de Deimv2ForObjectDetection 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.FloatTensorde forma(1,), opcional, retornado quandolabelssão fornecidas)) — Perda total como uma combinação linear de uma negação da log-verossimilhança (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.FloatTensorde forma(batch_size, num_queries, num_classes + 1)) — Logits de classificação (incluindo no-object) para todas as queries.pred_boxes (
torch.FloatTensorde forma(batch_size, num_queries, 4)) — Coordenadas normalizadas das caixas para todas as queries, representadas como (center_x, center_y, width, height). Esses valores são normalizados em [0, 1], relativos ao tamanho de cada imagem individual no batch (ignorando possível padding). Você pode usar~Deimv2ImageProcessor.post_process_object_detectionpara recuperar as caixas delimitadoras não normalizadas (absolutas).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.last_hidden_state (
torch.FloatTensorde forma(batch_size, num_queries, hidden_size)) — Sequência de estados ocultos na saída da última camada do decodificador do modelo.intermediate_hidden_states (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_logits (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, config.num_labels)) — Logits intermediários empilhados (logits de cada camada do decoder).intermediate_reference_points (
torch.FloatTensorde 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).intermediate_predicted_corners (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Cantos intermediários previstos empilhados (cantos previstos de cada camada do decoder).initial_reference_points (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Pontos de referência iniciais empilhados (pontos de referência iniciais de cada camada do decoder).decoder_hidden_states (
tuple[torch.FloatTensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(uma para a saída dos embeddings, se o modelo tiver uma camada de embedding, + uma para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.
decoder_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
cross_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma 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.
encoder_last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.encoder_hidden_states (
tuple[torch.FloatTensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(uma para a saída dos embeddings, se o modelo tiver uma camada de embedding, + uma para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.
encoder_attentions (
tuple[torch.FloatTensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com formato(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
init_reference_points (
torch.FloatTensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados para o decodificador do Transformer.enc_topk_logits (
torch.FloatTensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das bounding boxes previstas no encoder.enc_topk_bboxes (
torch.FloatTensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das bounding boxes previstas no encoder.enc_outputs_class (
torch.FloatTensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, em que 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.FloatTensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das bounding boxes previstas na primeira etapa.denoising_meta_values (
dict, opcional) — Dicionário extra para os valores relacionados ao denoising
Exemplo:
>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, Deimv2ForObjectDetection
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)
>>> image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> model = Deimv2ForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]
>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]
>>> # 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.9, target_sizes=target_sizes)
>>> result = results[0] # first image in batch
>>> for score, label, box in zip(result["scores"], result["labels"], result["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}"
... )