RT-DETR da Baidu: Um Detector de Objetos em Tempo Real baseado em Transformer de Visão

Visão geral

O Real-Time Detection Transformer (RT-DETR), desenvolvido pela Baidu, é um detector de objetos ponta a ponta de última geração que oferece desempenho em tempo real enquanto mantém uma alta precisão. Ele é baseado na ideia do DETR (a estrutura livre de NMS), introduzindo, ao mesmo tempo, um backbone baseado em convolução e um codificador híbrido eficiente para ganhar velocidade em tempo real. O RT-DETR processa eficientemente recursos multiescala ao desacoplar a interação intra-escala e a fusão cruzada de escalas. O modelo é altamente adaptável, suportando o ajuste flexível da velocidade de inferência usando diferentes camadas do decodificador sem a necessidade de retreinamento. O RT-DETR se destaca em backends acelerados como CUDA com TensorRT, superando muitos outros detectores de objetos em tempo real.



Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀

Visão geral da arquitetura do modelo RT-DETR da Baidu Visão geral do RT-DETR da Baidu. O diagrama da arquitetura do modelo RT-DETR mostra os três últimos estágios do backbone {S3, S4, S5} como entrada para o codificador. O codificador híbrido eficiente transforma recursos multiescala em uma sequência de recursos de imagem através da interação de recursos intra-escala (AIFI) e do módulo de fusão de recursos cruzados (CCFM). A seleção de consultas sensível ao IoU é empregada para selecionar um número fixo de recursos de imagem para servir como consultas de objeto iniciais para o decodificador. Finalmente, o decodificador com cabeças de predição auxiliares otimiza iterativamente as consultas de objeto para gerar caixas e pontuações de confiança (fonte).

Principais recursos

  • Codificador Híbrido Eficiente: O RT-DETR da Baidu usa um codificador híbrido eficiente que processa recursos multiescala ao desacoplar a interação intra-escala e a fusão cruzada de escalas. Esse design exclusivo baseado em Vision Transformers reduz os custos computacionais e permite a detecção de objetos em tempo real.
  • Seleção de Consultas sensível ao IoU: O RT-DETR da Baidu melhora a inicialização de consultas de objeto utilizando a seleção de consultas sensível ao IoU. Isso permite que o modelo se concentre nos objetos mais relevantes na cena, aumentando a precisão da detecção.
  • Velocidade de Inferência Adaptável: O RT-DETR da Baidu suporta ajustes flexíveis na velocidade de inferência usando diferentes camadas de decodificador sem a necessidade de retreinamento. Essa adaptabilidade facilita a aplicação prática em vários cenários de detecção de objetos em tempo real.
  • Estrutura Livre de NMS: Baseado no DETR, o RT-DETR elimina a necessidade de pós-processamento de non-maximum suppression, simplificando o pipeline de detecção e potencialmente melhorando a eficiência.
  • Detecção Livre de Âncora: Como um detector livre de âncora, o RT-DETR simplifica o processo de detecção e pode melhorar a generalização em diferentes conjuntos de dados.

Modelos Pré-treinados

A API Python da Ultralytics fornece modelos RT-DETR pré-treinados do PaddlePaddle com diferentes escalas:

  • RT-DETR-L: 53.0% AP no COCO val2017, 114 FPS em GPU T4
  • RT-DETR-X: 54.8% AP no COCO val2017, 74 FPS em GPU T4

Além disso, a Baidu lançou o RTDETRv2 em julho de 2024, que melhora ainda mais a arquitetura original com métricas de desempenho aprimoradas.

Exemplos de Uso

Este exemplo fornece exemplos simples de treinamento e inferência com RT-DETR. Para a documentação completa sobre esses e outros modos, consulte as páginas de documentação de Predict, Train, Val e Export. Os modelos também podem ser treinados em GPUs em nuvem através da Ultralytics Platform.

Exemplo
from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Compensações de Inferência Mais Rápida

Os pesos pré-treinados do RT-DETR suportam duas configurações de tempo de inferência para reduzir a latência sem retreinamento:

  • eval_idx: Interrompa a decodificação mais cedo. Para o decodificador padrão de 6 camadas, use um índice baseado em zero (05). eval_idx=5 usa todas as camadas; eval_idx=3 usa 4 camadas. Em uma GPU T4 com TensorRT v10.11, o RT-DETR-L melhora de 8.0 ms / 52.7 mAP para 7.4 ms / 52.5 mAP com 4 camadas.
  • num_queries: Reduza as consultas de objeto (padrão: 300). Reduzir para 100 pode atingir 7.4 ms / 51.7 mAP no COCO na mesma configuração. Em conjuntos de dados com menos objetos por imagem, a queda de mAP é geralmente menor, mas mantenha o valor acima do máximo de objetos esperados por imagem.

Ambas as configurações podem reduzir o mAP — valide a compensação em seu conjunto de dados antes da implementação.

from ultralytics import RTDETR

rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]

# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3  # Use 4 of 6 decoder layers.
head.num_queries = 100  # Use fewer object queries.

results = rtdetr("path/to/image.jpg")

# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, half=True)

Tarefas e modos suportados

Esta tabela apresenta os tipos de modelos, os pesos pré-treinados específicos, as tarefas suportadas por cada modelo e os vários modos (Train, Val, Predict, Export) que são suportados, indicados por emojis ✅.

Tipo de ModeloPesos Pré-treinadosTarefas SuportadasInferência (Inference)ValidaçãoTreinamentoExport
RT-DETR Largertdetr-l.ptDetecção de Objetos
RT-DETR Extra-Largertdetr-x.ptDetecção de Objetos
Variantes apenas de arquitetura

rtdetr-resnet50.yaml e rtdetr-resnet101.yaml são fornecidos apenas como arquiteturas YAML. A Ultralytics libera pesos pré-treinados apenas para rtdetr-l e rtdetr-x. Instancie as variantes ResNet a partir do YAML (por exemplo, RTDETR("rtdetr-resnet50.yaml")) e treine ou ajuste conforme necessário.

Casos de Uso Ideais

O RT-DETR é particularmente adequado para aplicações que exigem alta precisão e desempenho em tempo real:

Citações e Agradecimentos

Se você usa o RT-DETR da Baidu em seu trabalho de pesquisa ou desenvolvimento, por favor, cite o artigo original:

Citação
@misc{lv2023detrs,
      title={DETRs Beat YOLOs on Real-time Object Detection},
      author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
      year={2023},
      eprint={2304.08069},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Para o RTDETRv2, você pode citar o artigo de 2024:

Citação
@misc{lv2024rtdetrv2,
      title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
      author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
      year={2024},
      eprint={2407.17140},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Gostaríamos de agradecer à Baidu e à equipe do PaddlePaddle por criar e manter este recurso valioso para a comunidade de visão computacional. Sua contribuição para o campo com o desenvolvimento do detector de objetos em tempo real baseado em Vision Transformers, RT-DETR, é muito apreciada.

FAQ

O que é o modelo RT-DETR da Baidu e como ele funciona?

O RT-DETR (Real-Time Detection Transformer) da Baidu é um detector de objetos em tempo real avançado construído sobre a arquitetura Vision Transformer. Ele processa eficientemente recursos multiescala ao desacoplar a interação intra-escala e a fusão cruzada de escalas através de seu codificador híbrido eficiente. Ao empregar a seleção de consultas sensível ao IoU, o modelo foca nos objetos mais relevantes, aprimorando a precisão da detecção. Sua velocidade de inferência adaptável, alcançada pelo ajuste de camadas do decodificador sem retreinamento, torna o RT-DETR adequado para vários cenários de detecção de objetos em tempo real. Saiba mais sobre os recursos do RT-DETR no artigo do RT-DETR no Arxiv.

Como posso usar os modelos RT-DETR pré-treinados fornecidos pela Ultralytics?

Você pode aproveitar a API Python da Ultralytics para usar modelos RT-DETR pré-treinados do PaddlePaddle. Por exemplo, para carregar um modelo RT-DETR-l pré-treinado no COCO val2017 e atingir alto FPS em GPU T4, você pode utilizar o seguinte exemplo:

Exemplo
from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

Por que devo escolher o RT-DETR da Baidu em vez de outros detectores de objetos em tempo real?

O RT-DETR da Baidu se destaca devido ao seu codificador híbrido eficiente e à seleção de consultas sensível ao IoU, que reduzem drasticamente os custos computacionais enquanto mantêm alta precisão. Sua capacidade única de ajustar a velocidade de inferência usando diferentes camadas de decodificador sem retreinamento adiciona flexibilidade significativa. Isso o torna particularmente vantajoso para aplicações que exigem desempenho em tempo real em backends acelerados como CUDA com TensorRT, superando muitos outros detectores de objetos em tempo real. A arquitetura transformer também fornece uma melhor compreensão do contexto global em comparação com detectores tradicionais baseados em CNN.

Como o RT-DETR suporta velocidade de inferência adaptável para diferentes aplicações em tempo real?

O RT-DETR da Baidu permite ajustes flexíveis da velocidade de inferência usando diferentes camadas de decodificador sem a necessidade de retreinamento. Essa adaptabilidade é crucial para escalar o desempenho em várias tarefas de detecção de objetos em tempo real. Se você precisa de um processamento mais rápido para necessidades de menor precisão ou detecções mais lentas e precisas, o RT-DETR pode ser adaptado para atender aos seus requisitos específicos. Esse recurso é particularmente valioso ao implantar modelos em dispositivos com capacidades computacionais variadas.

Posso usar modelos RT-DETR com outros modos da Ultralytics, como treinamento, validação e exportação?

Sim, os modelos RT-DETR são compatíveis com vários modos da Ultralytics, incluindo treinamento, validação, predição e exportação. Você pode consultar a respectiva documentação para obter instruções detalhadas sobre como utilizar esses modos: Train, Val, Predict e Export. Isso garante um fluxo de trabalho abrangente para o desenvolvimento e implantação de suas soluções de detecção de objetos. A estrutura da Ultralytics fornece uma API consistente em diferentes arquiteturas de modelo, facilitando o trabalho com modelos RT-DETR.

Comentários