Ultralytics YOLO27:
Get Started

RT-DETR da Baidu: um detetor de objetos em tempo real baseado em Transformer visual#

Visão geral#

O Transformer de deteção em tempo real (RT-DETR), desenvolvido pela Baidu, é um detetor de objetos avançado, de ponta a ponta, que oferece desempenho em tempo real mantendo uma elevada precisão. Baseia-se na ideia do DETR (a estrutura sem NMS) e, ao mesmo tempo, introduz uma rede base baseada em convoluções e um codificador híbrido eficiente para alcançar velocidade em tempo real. O RT-DETR processa eficientemente características multiescala ao separar a interação intrasescala da fusão entre escalas. O modelo é altamente adaptável e permite ajustar flexivelmente a velocidade de inferência usando diferentes camadas do descodificador, sem necessidade de novo treino. O RT-DETR tem um desempenho excelente em backends acelerados, como CUDA com TensorRT, superando muitos outros detetores de objetos em tempo real.



Assista: Como usar RT-DETR da Baidu para detecção de objetos | Inferência e benchmark com 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 as três últimas etapas da rede base {S3, S4, S5} como entrada do codificador. O codificador híbrido eficiente transforma características multiescala numa sequência de características de imagem através da interação de características intrasescala (AIFI) e do módulo de fusão de características entre escalas (CCFM). A seleção de consultas ciente de IoU é usada para selecionar um número fixo de características de imagem que servirão como consultas de objetos iniciais para o descodificador. Por fim, o descodificador, com cabeças de predição auxiliares, otimiza iterativamente as consultas de objetos para gerar caixas e pontuações de confiança (fonte).

Principais funcionalidades#

  • Codificador híbrido eficiente: o RT-DETR da Baidu usa um codificador híbrido eficiente que processa características multiescala ao separar a interação intrasescala da fusão entre escalas. Este design exclusivo baseado em Vision Transformers reduz os custos computacionais e permite a deteção de objetos em tempo real.
  • Seleção de consultas ciente de IoU: o RT-DETR da Baidu melhora a inicialização das consultas de objetos recorrendo à seleção de consultas ciente de IoU. Isto permite que o modelo se concentre nos objetos mais relevantes da cena, aumentando a precisão da deteção.
  • Velocidade de inferência adaptável: o RT-DETR da Baidu permite ajustar flexivelmente a velocidade de inferência usando diferentes camadas do descodificador, sem necessidade de novo treino. Esta adaptabilidade facilita a aplicação prática em vários cenários de deteção de objetos em tempo real.
  • Estrutura sem NMS: baseado em DETR, o RT-DETR elimina a necessidade de pós-processamento de supressão não máxima, simplificando o pipeline de deteção e podendo melhorar a eficiência.
  • Deteção sem âncoras: como detetor sem âncoras, o RT-DETR simplifica o processo de deteção e pode melhorar a generalização entre diferentes conjuntos de dados.

Modelos pré-treinados#

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

  • RT-DETR-L: 53,0% AP em COCO val2017, 114 FPS numa GPU T4
  • RT-DETR-X: 54,8% AP em COCO val2017, 74 FPS numa 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 superiores.

Exemplos de uso#

Este exemplo apresenta exemplos simples de treino e inferência com RT-DETR. Para a documentação completa sobre estes e outros modos, consulta as páginas de documentação Prever, Treinar, Validar e Exportar. Também podes treinar modelos em GPUs na nuvem através da Plataforma Ultralytics.

Exemplo
from ultralytics import RTDETR

# Carrega um modelo RT-DETR-l pré-treinado em COCO
model = RTDETR("rtdetr-l.pt")

# Exibir informações do modelo (opcional)
model.info()

# Treina o modelo no conjunto de dados de exemplo COCO8 durante 100 épocas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Executa a inferência com o modelo RT-DETR-l na imagem 'bus.jpg'
results = model("path/to/bus.jpg")
Treino determinístico

Define deterministic=False ao treinar RT-DETR em CUDA com PyTorch 2.0 ou posterior. A atenção deformável usa F.grid_sample, que não tem retropropagação determinística em CUDA; por isso, deterministic=True não consegue tornar a execução reprodutível e pode reduzir o débito de treino. seed continua a controlar a inicialização dos pesos, a ordem dos dados e a amostragem das aumentações.

Compromissos para uma inferência mais rápida

Os pesos pré-treinados do RT-DETR permitem usar duas definições durante a inferência para reduzir a latência sem novo treino:

  • eval_idx: interrompe a descodificação mais cedo. No descodificador predefinido de 6 camadas, usa um índice baseado em zero (0–5). eval_idx=5 usa todas as camadas; eval_idx=3 usa 4 camadas. Numa 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: reduz o número de consultas de objetos (predefinição: 300). Reduzir o valor para 100 pode permitir atingir 7,4 ms / 51,7 mAP em COCO na mesma configuração. Em conjuntos de dados com menos objetos por imagem, a queda de mAP é normalmente menor, mas mantém o valor acima do número máximo esperado de objetos por imagem.

Ambas as definições podem reduzir o mAP — valida o compromisso no teu conjunto de dados antes da implementação.

from ultralytics import RTDETR

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

# Escolhe uma ou ambas as definições depois de validares o compromisso entre velocidade e precisão.
head.decoder.eval_idx = 3  # Usa 4 das 6 camadas do descodificador.
head.num_queries = 100  # Usa menos consultas de objetos.

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

# A exportação usa as mesmas definições do descodificador e das consultas, incluindo nas exportações TensorRT.
rtdetr.export(format="engine", device=0, quantize=16)

Tarefas e modos compatíveis#

Esta tabela apresenta os tipos de modelos, os pesos pré-treinados específicos, as tarefas compatíveis com cada modelo e os vários modos (Treinar, Validar, Prever, Exportar) compatíveis, assinalados com emojis ✅.

Tipo de modeloPesos pré-treinadosTarefas suportadasTreinamentoValidaçãoInferênciaExportar
RT-DETR grandertdetr-l.ptDeteção de objetos✅✅✅✅
RT-DETR extra grandertdetr-x.ptDeteção de objetos✅✅✅✅
Variantes apenas de arquitetura

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

Casos de utilização ideais#

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

Citações e agradecimentos#

Se usares o RT-DETR da Baidu no teu trabalho de investigação ou desenvolvimento, cita 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 RTDETRv2, podes 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 à equipa PaddlePaddle por criarem e manterem este recurso valioso para a comunidade de visão computacional. Agradecemos imenso o contributo da equipa para a área, com o desenvolvimento do detetor de objetos em tempo real baseado em Vision Transformers, RT-DETR.

Perguntas frequentes#

  • O RT-DETR (Transformer de deteção em tempo real) da Baidu é um detetor de objetos avançado em tempo real, construído com base na arquitetura Vision Transformer. Processa eficientemente características multiescala ao separar a interação intrasescala da fusão entre escalas através do seu codificador híbrido eficiente. Ao recorrer à seleção de consultas ciente de IoU, o modelo concentra-se nos objetos mais relevantes, aumentando a precisão da deteção. A sua velocidade de inferência adaptável, obtida ao ajustar as camadas do descodificador sem novo treino, torna o RT-DETR adequado para vários cenários de deteção de objetos em tempo real. Sabe mais sobre as funcionalidades do RT-DETR no artigo do RT-DETR no arXiv.

  • Podes recorrer à API Python da Ultralytics para usar modelos RT-DETR pré-treinados com PaddlePaddle. Por exemplo, para carregar um modelo RT-DETR-l pré-treinado em COCO val2017 e obter um FPS elevado numa GPU T4, podes usar o exemplo seguinte:

    Exemplo
    from ultralytics import RTDETR
    
    # Carrega um modelo RT-DETR-l pré-treinado em COCO
    model = RTDETR("rtdetr-l.pt")
    
    # Exibir informações do modelo (opcional)
    model.info()
    
    # Treina o modelo no conjunto de dados de exemplo COCO8 durante 100 épocas
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
    
    # Executa a inferência com o modelo RT-DETR-l na imagem 'bus.jpg'
    results = model("path/to/bus.jpg")
  • O RT-DETR da Baidu destaca-se pelo codificador híbrido eficiente e pela seleção de consultas ciente de IoU, que reduzem drasticamente os custos computacionais sem comprometer a elevada precisão. A sua capacidade exclusiva de ajustar a velocidade de inferência usando diferentes camadas do descodificador, sem novo treino, proporciona uma flexibilidade significativa. Isto torna-o particularmente vantajoso para aplicações que exigem desempenho em tempo real em backends acelerados, como CUDA com TensorRT, superando muitos outros detetores de objetos em tempo real. A arquitetura Transformer também proporciona uma melhor compreensão do contexto global do que os detetores tradicionais baseados em CNN.

  • O RT-DETR da Baidu permite ajustar flexivelmente a velocidade de inferência usando diferentes camadas do descodificador, sem exigir novo treino. Esta adaptabilidade é essencial para escalar o desempenho em várias tarefas de deteção de objetos em tempo real. Quer precises de um processamento mais rápido para requisitos de precisão mais baixos, quer de deteções mais lentas e precisas, o RT-DETR pode ser adaptado às tuas necessidades específicas. Esta funcionalidade é especialmente valiosa ao implementar modelos em dispositivos com capacidades computacionais diferentes.

  • Não. No RT-DETR, max_det limita o número de predições devolvidas após a inferência, mas não aumenta o número de consultas de objetos produzidas pelo descodificador. Os pontos de controlo pré-treinados do RT-DETR da Ultralytics usam 300 consultas de objetos, pelo que não podem devolver mais de 300 deteções por imagem, mesmo que definas max_det com um valor superior.

    Usa max_det para reduzir o número de deteções devolvidas, por exemplo max_det=100, quando só precisas de menos predições com elevada confiança. Se o teu conjunto de dados puder conter mais de 300 objetos por imagem, treina um modelo RT-DETR personalizado com um número maior de consultas no descodificador (nq) no YAML do modelo; alterar este valor num ponto de controlo pré-treinado depois do treino não é equivalente e exige novo treino para aprender as consultas adicionais.

  • Sim, os modelos RT-DETR são compatíveis com vários modos da Ultralytics, incluindo treino, validação, predição e exportação. Consulta a documentação correspondente para obter instruções detalhadas sobre como usar estes modos: Treinar, Validar, Prever e Exportar. Isto garante um fluxo de trabalho abrangente para desenvolver e implementar as tuas soluções de deteção de objetos. A estrutura Ultralytics fornece uma API consistente em diferentes arquiteturas de modelos, facilitando o trabalho com modelos RT-DETR.

Comentários