RT-DETR da Baidu: um detetor de objetos em tempo real baseado em Transformer de Visão#
Visão geral#
O Transformer de Deteção em Tempo Real (RT-DETR), desenvolvido pela Baidu, é um detetor de objetos de ponta, de ponta a ponta, que oferece desempenho em tempo real e mantém uma elevada precisão. Baseia-se na ideia do DETR (a estrutura sem NMS), introduzindo simultaneamente um backbone baseado em convoluções e um codificador híbrido eficiente para alcançar velocidade em tempo real. O RT-DETR processa eficientemente funcionalidades multiescala ao desacoplar a interação intr a escala e a fusão entre escalas. O modelo é altamente adaptável, permitindo ajustar de forma flexível a velocidade de inferência através de diferentes camadas do descodificador, sem novo treino. O RT-DETR destaca-se em backends acelerados, como CUDA com TensorRT, superando muitos outros detetores de objetos em tempo real.
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
Visão geral do RT-DETR da Baidu. O diagrama da arquitetura do modelo RT-DETR mostra as três últimas etapas do backbone {S3, S4, S5} como entrada do codificador. O codificador híbrido eficiente transforma funcionalidades multiescala numa sequência de funcionalidades da imagem através da interação de funcionalidades intr a escala (AIFI) e do módulo de fusão de funcionalidades entre escalas (CCFM). A seleção de consultas baseada em IoU é utilizada para selecionar um número fixo de funcionalidades da imagem que servirão como consultas iniciais de objetos para o descodificador. Por fim, o descodificador, com cabeças de previsã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 utiliza um codificador híbrido eficiente que processa funcionalidades multiescala ao desacoplar a interação intr a escala e a 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 Baseada em IoU: O RT-DETR da Baidu melhora a inicialização das consultas de objetos através da seleção de consultas baseada em 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 através de 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 no 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: Enquanto 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 fornece modelos RT-DETR pré-treinados em PaddlePaddle com diferentes escalas:
- RT-DETR-L: 53,0% AP no COCO val2017, 114 FPS numa GPU T4
- RT-DETR-X: 54,8% AP no 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 utilização#
Este exemplo fornece exemplos simples de treino e inferência do RT-DETR. Para consultar a documentação completa sobre estes e outros modos, vê as páginas de documentação de Previsão, Treino, Validação e Exportação. Os modelos também podem ser treinados em GPUs na cloud através da Ultralytics Platform.
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")Define deterministic=False ao treinar o RT-DETR em CUDA com PyTorch 2.0 ou posterior. A atenção deformável utiliza F.grid_sample, que não tem retropropagação determinística em CUDA, pelo que 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 ampliações.
Os pesos pré-treinados do RT-DETR suportam duas definições em tempo de inferência para reduzir a latência sem novo treino:
eval_idx: Interrompe a descodificação mais cedo. Para o descodificador predefinido de 6 camadas, utiliza um índice baseado em zero (0–5).eval_idx=5utiliza todas as camadas;eval_idx=3utiliza 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 as consultas de objetos (predefiniçã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 redução 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 este compromisso no teu 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, quantize=16)Tarefas e modos suportados#
Esta tabela apresenta os tipos de modelo, 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 modelo | Pesos pré-treinados | Tarefas suportadas | Treino | Validação | Inferência | Exportação |
|---|---|---|---|---|---|---|
| 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 lança 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 é particularmente 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, onde tanto a velocidade como a precisão são críticas. Saiba mais sobre IA em carros autónomos.
- Robótica Avançada: Permite que os robôs executem tarefas complexas que exigem reconhecimento e interação precisos com objetos em ambientes dinâmicos. Explore 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. Descubra 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. Saiba 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. Leia sobre visão computacional em imagens de satélite.
Citações e agradecimentos#
Se utilizares 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 o 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 do PaddlePaddle por criarem e manterem este recurso valioso para a comunidade de visão computacional. A sua contribuição para a área, através do desenvolvimento do detetor de objetos em tempo real baseado em Vision Transformers, RT-DETR, é muito apreciada.
Perguntas frequentes#
O RT-DETR da Baidu (Transformer de Deteção em Tempo Real) é um detetor de objetos avançado em tempo real, baseado na arquitetura Vision Transformer. Processa eficientemente funcionalidades multiescala ao desacoplar a interação intr a escala e a fusão entre escalas através do seu codificador híbrido eficiente. Ao utilizar a seleção de consultas baseada em 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 através do ajuste das 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 utilizar a API Python da Ultralytics para usar modelos RT-DETR pré-treinados em PaddlePaddle. Por exemplo, para carregar um modelo RT-DETR-l pré-treinado no COCO val2017 e obter um FPS elevado numa GPU T4, podes utilizar o seguinte exemplo:
Exemplofrom 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")O RT-DETR da Baidu destaca-se pelo seu codificador híbrido eficiente e pela seleção de consultas baseada em IoU, que reduzem significativamente os custos computacionais e mantêm uma elevada precisão. A sua capacidade exclusiva de ajustar a velocidade de inferência através de diferentes camadas do descodificador, sem novo treino, acrescenta 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 em comparação com detetores tradicionais baseados em CNN.
O RT-DETR da Baidu permite ajustar flexivelmente a velocidade de inferência através de diferentes camadas do descodificador, sem exigir novo treino. Esta adaptabilidade é crucial para dimensionar o desempenho em várias tarefas de deteção de objetos em tempo real. Quer precises de um processamento mais rápido para necessidades de precisão inferior, quer de deteções mais lentas e precisas, o RT-DETR pode ser ajustado para cumprir os teus requisitos específicos. Esta funcionalidade é particularmente valiosa ao implementar modelos em dispositivos com diferentes capacidades computacionais.
Não. No RT-DETR,
max_detlimita o número de previsõ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 utilizam 300 consultas de objetos, pelo que não podem devolver mais de 300 deteções por imagem, mesmo que definasmax_detcom um valor superior.Utiliza
max_detpara reduzir as deteções devolvidas, por exemplo, paramax_det=100, quando só precisares de menos previsõ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 superior de consultas do descodificador (nq) no YAML do modelo; alterar este valor num ponto de controlo pré-treinado após o 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, previsão e exportação. Consulta a documentação correspondente para obter instruções detalhadas sobre como utilizar estes modos: Treino, Validação, Previsão e Exportação. Isto garante um fluxo de trabalho abrangente para desenvolver e implementar as tuas soluções de deteção de objetos. A estrutura da Ultralytics fornece uma API consistente entre diferentes arquiteturas de modelos, facilitando o trabalho com modelos RT-DETR.