DETR (Transformer para DETecção — DEtection TRansformer)
Visão geral
DETR (DEtection TRansformer) é um detector de objetos baseado em transformador (transformer) introduzido pelo Facebook AI em 2020 que reformula a detecção de objetos (object detection) como um problema de predição direta de conjuntos (direct set prediction). Em vez de gerar muitas caixas candidatas (âncoras (anchors)) e depois eliminar duplicatas com Supressão Não Máxima (Non-Maximum Suppression, NMS), o DETR prediz um conjunto de detecções de tamanho fixo em uma única passagem direta (forward pass) e aprende a torná-las únicas usando correspondência bipartida (bipartite matching) durante o treinamento.
Esse design tornou o DETR notável por ser:
- Ponta a ponta (end-to-end): uma única rede treinada com uma única perda (sem pós-processamento (post-processing) projetado manualmente).
- Sem âncoras (anchor-free): sem caixas âncora, sem geração de propostas.
- Sem Supressão Não Máxima (NMS) (tipicamente): a unicidade é tratada pelo objetivo baseado em correspondência, em vez de supressão pós-hoc.
O DETR também deu origem a uma grande família de modelos posteriores que melhoram a velocidade de treinamento, o desempenho em objetos pequenos e o raciocínio multiescala (multi-scale), mantendo a ideia central de “predição de conjuntos com consultas”.
Se você está familiarizado com detectores clássicos como Faster R-CNN, SSD ou YOLO, o DETR representa uma mudança conceitual: ele trata a detecção de objetos mais como modelagem de sequência/conjunto (sequence/set modeling) com uma Arquitetura Transformer.
Por que o DETR era necessário (motivação)
Detectores tradicionais geralmente seguem um padrão:
- Gerar muitas caixas candidatas (âncoras, propostas, predições densas).
- Pontuar e refiná-las.
- Usar heurísticas como Supressão Não Máxima (NMS) para remover duplicatas.
Isso funciona bem, mas introduz complexidade:
- O design de âncoras depende das estatísticas do conjunto de dados (tamanhos/proporções).
- Predições densas produzem muitas caixas duplicadas.
- A Supressão Não Máxima (NMS) é uma etapa de pós-processamento “quase não diferenciável” e adiciona necessidade de ajuste.
O objetivo do DETR foi simplificar o pipeline fazendo com que o modelo aprenda diretamente o problema de desduplicação.
Ideia central: detecção de objetos como predição de conjuntos
O DETR prediz N slots (slots) de objetos (por exemplo, N = 100) independentemente de quantos objetos existam na imagem. Cada slot produz:
- Um rótulo de classe (incluindo um rótulo especial “sem objeto” (“no object”) / de fundo)
- Uma caixa delimitadora (x/y do centro + largura/altura, normalizados em
[0,1])
Como as saídas formam um conjunto, a ordem não importa. Mas redes neurais produzem tensores ordenados, então o DETR usa um procedimento de treinamento que torna a saída invariante a permutações (permutation-invariant).
Correspondência bipartida (bipartite matching) (atribuição húngara (Hungarian assignment))
Durante o treinamento, suponha que uma imagem tenha M objetos de verdade-terreno, e o modelo produza N predições (N >= M). O DETR encontra a melhor atribuição um-para-um entre objetos de verdade-terreno e slots preditos usando um algoritmo de correspondência bipartida (comumente o algoritmo húngaro (Hungarian algorithm)).
- Cada objeto de verdade-terreno é associado a exatamente um slot predito.
- Predições não associadas são treinadas para se tornarem “sem objeto”.
- Por ser um-para-um, o modelo é desencorajado a produzir duplicatas.
Este é o mecanismo-chave que em grande parte remove a necessidade de Supressão Não Máxima (NMS): predições duplicadas não são úteis sob correspondência um-para-um.
Componentes do modelo
O DETR tem três partes principais:
- Uma rede-base (backbone) de CNN para extrair um mapa de características (feature map)
- Um codificador–decodificador do transformador (transformer encoder–decoder)
- Um conjunto de consultas de objeto (object queries) aprendidas que conduzem a decodificação
1) Rede-base (extrator de características)
O DETR tipicamente usa uma rede-base padrão de Redes Neurais Convolucionais como ResNet-50/ResNet-101 (frequentemente pré-treinada em ImageNet).
- Imagem de entrada → mapa de características
Fcom forma aproximadamente(C, H, W) - Uma convolução
1×1frequentemente projeta os canais para a dimensão do transformadord(por exemplo, 256)
Isso mantém o trabalho do transformador focado em raciocínio global, em vez de visão de baixo nível.
2) Codificação posicional
Transformadores são invariantes a permutações, mas a estrutura espacial importa em imagens. O DETR adiciona codificações posicionais 2D (2D positional encodings) ao mapa de características achatado antes de alimentá-lo ao codificador.
Escolha comum no DETR original:
- Embeddings posicionais fixos senoidais ou aprendidos sobre
(H, W).
3) Codificador do transformador
O codificador consome as características de imagem achatadas:
- Achatar
(H, W)em uma sequência de comprimentoS = H×W - Aplicar autoatenção (self-attention) de múltiplas cabeças (multi-head) + camadas de avanço direto (feed-forward)
O codificador constrói contexto global, permitindo que qualquer localização espacial atenda a qualquer outra. Essa é uma grande diferença em relação a detectores puramente convolucionais.
Tradeoff: autoatenção completa é quadrática no comprimento da sequência (O(S^2)), o que se torna caro para características em alta resolução.
4) Consultas de objeto
O DETR introduz N vetores aprendidos chamados consultas de objeto (por exemplo, 100 consultas). Eles não correspondem a localizações fixas na imagem. Em vez disso, são slots que podem se ligar a objetos por meio de atenção.
Intuição:
- Cada consulta aprende “como procurar um objeto” e se especializa durante o treinamento.
- Consultas competem via a perda de correspondência para cobrir objetos distintos.
5) Decodificador do transformador
O decodificador recebe:
- Memória do codificador (características da imagem)
- Consultas de objeto
e produz N embeddings decodificados. Cada camada do decodificador inclui:
- Autoatenção entre consultas (permite que as consultas se coordenem e evitem duplicatas)
- Atenção cruzada (cross-attention) das consultas para as características de imagem codificadas (permite que cada consulta “observe” regiões relevantes)
- Camadas de avanço direto
6) Cabeças de predição
Para cada embedding de consulta decodificada, o DETR prediz:
- Logits de classe (class logits):
K + 1classes (incluindo “sem objeto”) - Caixa:
(cx, cy, w, h)por meio de um perceptron multicamadas (multi-layer perceptron, MLP) + função sigmoide (sigmoid) para[0,1]
Objetivo de treinamento (perda de conjunto (set loss))
A perda do DETR tem dois estágios conceituais:
- Associar predições à verdade-terreno (atribuição um-para-um)
- Supervisionar pares associados e fundo para slots não associados
Custo de correspondência
Para cada slot predito i e objeto de verdade-terreno j, define-se um custo como:
- Custo de classificação (por exemplo,
-log p_i(class_j)) - Custo de distância de caixa (por exemplo, L1 em
(cx, cy, w, h)) - Custo de sobreposição (por exemplo,
1 - GIoU(box_i, box_j))
O algoritmo húngaro encontra a atribuição que minimiza o custo total.
Termos de perda
Uma vez associado:
- Perda de classificação: entropia cruzada (cross-entropy) sobre
K+1classes- Predições não associadas são rotuladas como sem objeto
- A classe sem objeto frequentemente recebe peso menor para lidar com desbalanceamento
- Perda de regressão de caixa:
- Perda L1 (L1 loss) nos parâmetros de caixa normalizados
- Perda de IoU generalizado (Generalized IoU, GIoU) para incentivar boa sobreposição e gradientes estáveis
Essa “perda de conjunto” é uma das características definidoras do DETR: ela ensina o modelo o que predizer e quantas predições devem corresponder a objetos reais.
Comportamento em inferência (por que a Supressão Não Máxima (NMS) geralmente é desnecessária)
Em tempo de inferência (inference):
- Execute o modelo uma vez →
Npredições. - Descarte predições cuja classe seja sem objeto ou cuja confiança esteja abaixo de um limiar.
- As caixas restantes são as detecções.
Como o treinamento impõe atribuições um-para-um, o modelo tende a não produzir muitas caixas duplicadas para o mesmo objeto — então a Supressão Não Máxima (NMS) frequentemente não é necessária.
Dito isso, na prática:
- Algumas implementações ainda aplicam filtragem leve.
- Certas variantes no estilo DETR podem opcionalmente usar Supressão Não Máxima (NMS) dependendo do design, mas isso não é fundamental.
Exemplo prático: como é um pipeline de DETR
Aqui vai um esboço simplificado em estilo PyTorch de inferência:
# Pseudocode: DETR-like inference
images = preprocess(batch) # (B, 3, H, W)
features = backbone(images) # (B, C, H', W')
features = proj_1x1(features) # (B, d, H', W')
pos = positional_encoding(features) # (B, d, H', W')
memory = transformer_encoder(features, pos) # (B, S, d), S = H'*W'
queries = learnable_queries.repeat(B, 1, 1) # (B, N, d)
hs = transformer_decoder(queries, memory, pos) # (B, N, d)
class_logits = class_head(hs) # (B, N, K+1)
boxes = sigmoid(box_head(hs)) # (B, N, 4) in [0,1]
probs = softmax(class_logits, dim=-1)
scores, labels = probs[..., :-1].max(dim=-1) # exclude no-object
keep = scores > 0.5
detections = (boxes[keep], labels[keep], scores[keep])
Em uso real, você também:
- Converteria
(cx, cy, w, h)para(x1, y1, x2, y2) - Reescalaria as caixas para as coordenadas de pixel originais
- Usaria pré-processamento específico do conjunto de dados e mapeamentos de rótulos
Perspectiva teórica: por que a correspondência bipartida importa
Uma dificuldade central em detecção é que não há uma ordenação natural de objetos. O DETR resolve isso ao:
- Tratar as saídas como um conjunto
- Usar correspondência para alinhar cada objeto de verdade-terreno com exatamente uma predição
- Penalizar predições restantes como fundo
Isso se alinha bem a como transformadores lidam com sequências, mas adapta esse mecanismo a saídas não ordenadas. Também torna o objetivo de treinamento mais “estruturado” do que classificação/regressão densa independente em cada localização de âncora.
Pontos fortes do DETR
Design limpo, ponta a ponta
Sem engenharia de âncoras, redes de propostas ou ajuste de Supressão Não Máxima (NMS). Isso torna o DETR conceitualmente elegante e mais fácil de modificar para novas tarefas (por exemplo, segmentação).
Forte raciocínio global
Atenção permite interações de longo alcance — útil para:
- cenas lotadas (coordenação entre consultas)
- desambiguação contextual (por exemplo, distinguir objetos similares pelo entorno)
Extensão natural para outras saídas estruturadas
Consultas no estilo DETR e perdas de conjunto se traduzem bem para:
- segmentação por instância
- segmentação panóptica
- predição estruturada do tipo pontos-chave (com adaptações)
Limitações e tradeoffs
Convergência lenta (DETR original)
O DETR original frequentemente exigia cronogramas de treinamento muito mais longos do que detectores convencionais para alcançar bom desempenho. Motivos incluem:
- Aprender localização baseada em atenção do zero é mais difícil do que começar a partir de âncoras/propostas.
- A correspondência introduz dinâmicas não triviais no início do treinamento.
Dificuldade com objetos pequenos e multiescala
O DETR original usava um mapa de características de escala única da rede-base (tipicamente um estágio de baixa resolução). Objetos pequenos podem ser difíceis de detectar sem características multiescala.
Custo do codificador do transformador em alta resolução
Autoatenção completa sobre tokens H×W escala mal. Isso motiva variantes de atenção esparsa ou deformável.
Número fixo de consultas
Se uma imagem contiver mais objetos do que N, o DETR pode deixar alguns de fora. Na prática, N=100 é suficiente para conjuntos de dados no estilo COCO, mas para cenas extremamente densas você pode aumentar N ao custo de computação adicional.
Extensões comuns e melhorias na “família DETR”
Um grande corpo de trabalhos posteriores mantém o arcabouço de consultas + predição de conjuntos, mas melhora eficiência e acurácia.
Deformable DETR (grande upgrade prático)
Deformable DETR substitui atenção densa sobre todos os tokens espaciais por atenção deformável (deformable attention), em que cada consulta atende a um pequeno conjunto de pontos de amostragem ao longo de mapas de características multiescala.
Benefícios:
- Convergência muito mais rápida (frequentemente uma ordem de grandeza menos épocas)
- Melhor desempenho em objetos pequenos
- Menor custo de atenção
Esta é uma das variantes de DETR mais usadas na prática.
Conditional DETR
Melhora a atenção cruzada do decodificador ao tornar a atenção condicional ao conteúdo da consulta, de um modo que ajuda na localização espacial.
Efeito:
- Convergência de treinamento mais rápida
- Melhor alinhamento entre consultas e regiões espaciais
DAB-DETR (Dynamic Anchor Boxes)
Introduz um prior de caixa mais explícito na representação de consulta (as consultas carregam parâmetros de caixa “tipo âncora” que são refinados).
Efeito:
- Ajuda na estabilização e na convergência
- Ainda permanece em grande parte ponta a ponta e baseado em consultas
DN-DETR (treinamento com remoção de ruído (denoising training))
Adiciona um objetivo de remoção de ruído (denoising objective) ao injetar versões ruidosas de caixas/rótulos de verdade-terreno como consultas adicionais de treinamento, ensinando o modelo a reconstruí-las.
Efeito:
- Acelera significativamente o treinamento
- Melhora a estabilidade da correspondência no início do treinamento
Variantes de duas etapas / híbridas
Alguns modelos geram melhores propostas iniciais (ou inicializam consultas a partir de características do codificador), mantendo a predição de conjuntos.
Efeito:
- Melhor revocação e convergência
- Simplicidade um pouco menos “pura” em comparação ao DETR original
Redes-base mais fortes e receitas modernas de treinamento
Muitos ganhos também vêm de:
- Redes-base multiescala (por exemplo, pirâmides de características (feature pyramids))
- Melhores aumentações (augmentations)
- Perdas melhoradas (por exemplo, variantes de perda focal (focal loss))
- Estratégias de pré-treinamento (pretraining)
Aplicações práticas
Detectores no estilo DETR são úteis quando você quer:
- Integração limpa em um pipeline de treinamento ponta a ponta
- Detecções estáveis e sem duplicatas sem pós-processamento pesado
- Uma arquitetura flexível que se estende a outras tarefas estruturadas de visão
Áreas comuns de aplicação incluem:
- Direção autônoma / robótica: objetos em contexto; integração com pilhas de planejamento
- Análise de vídeo: detecção de pessoas/veículos; raciocínio consistente baseado em consultas pode combinar bem com rastreamento
- Imagem médica: lesões ou estruturas anatômicas em que engenharia de âncoras é inconveniente
- Compreensão de documentos: detecção de elementos de layout (tabelas, figuras) em que contexto global ajuda
Em ambientes de produção, Deformable DETR ou outras variantes otimizadas frequentemente são preferidas ao DETR original devido a considerações de velocidade e acurácia.
Notas de implementação e dicas
Escolhendo o número de consultas
- Comece com
N=100(linha de base comum). - Aumente se as cenas forem densas (com algum custo computacional).
- Se
Nfor pequeno demais, a revocação pode ficar limitada.
Limiarização de confiança
Como não há uma etapa de Supressão Não Máxima (NMS), um limiar de confiança bem escolhido importa. A calibração pode variar por conjunto de dados e receita de treinamento.
Dados e aumentação
O DETR se beneficia de aumentação forte, mas transformações geométricas agressivas demais podem desestabilizar a regressão de caixas se não forem cuidadosamente ajustadas.
Sinais para depuração
Coisas úteis para monitorar:
- Fração de consultas preditas como “sem objeto”
- Qualidade da correspondência no início do treinamento (a maioria das caixas de verdade-terreno está sendo associada?)
- GIoU médio / erro L1 médio em pares associados
Relação com o panorama mais amplo de detecção de objetos
Dentro de Detecção de Objetos, o DETR representa uma mudança de “geração densa de candidatos + filtragem” para “predição direta de conjuntos”. Ele se conecta naturalmente a:
- Arquitetura Transformer (atenção codificador–decodificador, codificações posicionais)
- Paradigmas de predição baseados em consultas usados mais tarde em arquiteturas de segmentação e detecção
Na prática, modelos modernos no estilo DETR são uma escolha forte quando você quer um detector flexível e ponta a ponta e está disposto a adotar os tradeoffs de treinamento/custo computacional de transformadores — ou usar descendentes otimizados como Deformable DETR.
Resumo
O DETR é um detector de objetos baseado em transformador que:
- Prediz um conjunto de tamanho fixo de detecções usando consultas de objeto aprendidas
- Usa correspondência bipartida para atribuir predições à verdade-terreno durante o treinamento
- Elimina âncoras e tipicamente remove a necessidade de Supressão Não Máxima (NMS)
- Oferece um arcabouço limpo, ponta a ponta, com forte raciocínio global
Seus principais pontos fracos (originalmente convergência lenta e suporte limitado a multiescala) foram amplamente endereçados por extensões como Deformable DETR, treinamento com remoção de ruído e designs multiescala — tornando a família DETR um ramo importante e prático dos sistemas modernos de detecção.