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 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.
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")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.
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=5usa todas as camadas;eval_idx=3usa 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 modelo | Pesos pré-treinados | Tarefas suportadas | Treinamento | Validação | Inferência | Exportar |
|---|---|---|---|---|---|---|
| RT-DETR grande | rtdetr-l.pt | Deteção de objetos | ✅ | ✅ | ✅ | ✅ |
| RT-DETR extra grande | rtdetr-x.pt | Deteção de objetos | ✅ | ✅ | ✅ | ✅ |
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:
- Condução autónoma: para uma perceção fiável do ambiente em sistemas de condução autónoma, nos quais a velocidade e a precisão são fundamentais. Sabe mais sobre IA em carros autónomos.
- Robótica avançada: permite que os robôs executem tarefas complexas que exigem reconhecimento preciso de objetos e interação em ambientes dinâmicos. Explora o papel da IA na robótica.
- Imagiologia médica: para aplicações na área da saúde em que a precisão da deteção de objetos pode ser crucial para o diagnóstico. Descobre a IA na área da saúde.
- Sistemas de vigilância: para aplicações de segurança que exigem monitorização em tempo real com elevada precisão de deteção. Sabe mais sobre sistemas de alarme de segurança.
- Análise de imagens de satélite: para a análise detalhada de imagens de alta resolução, em que é importante compreender o contexto global. Lê sobre visão computacional em imagens de satélite.
Citações e agradecimentos#
Se usares o RT-DETR da Baidu no teu trabalho de investigação ou desenvolvimento, cita o artigo original:
@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:
@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:
Exemplofrom 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_detlimita 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 definasmax_detcom um valor superior.Usa
max_detpara reduzir o número de deteções devolvidas, por exemplomax_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.