RT-DETR de Baidu: Un detector de objetos en tiempo real basado en Vision Transformer

Descripción general

Real-Time Detection Transformer (RT-DETR), desarrollado por Baidu, es un detector de objetos integral de vanguardia que ofrece un rendimiento en tiempo real manteniendo una alta precisión. Se basa en la idea de DETR (el marco sin NMS), a la vez que introduce un backbone basado en convoluciones y un codificador híbrido eficiente para ganar velocidad en tiempo real. RT-DETR procesa de manera eficiente características multiescala al desacoplar la interacción intra-escala y la fusión entre escalas. El modelo es altamente adaptable y permite ajustar la velocidad de inferencia de forma flexible utilizando diferentes capas del decodificador sin necesidad de reentrenamiento. RT-DETR destaca en backends acelerados como CUDA con TensorRT, superando a muchos otros detectores de objetos en tiempo real.



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

Vista general de la arquitectura del modelo RT-DETR de Baidu Vista general del RT-DETR de Baidu. El diagrama de la arquitectura del modelo RT-DETR muestra las tres últimas etapas del backbone {S3, S4, S5} como entrada al codificador. El codificador híbrido eficiente transforma características multiescala en una secuencia de características de imagen a través de la interacción de características intra-escala (AIFI) y el módulo de fusión de características entre escalas (CCFM). La selección de consultas basada en IoU se emplea para seleccionar un número fijo de características de imagen que sirven como consultas de objetos iniciales para el decodificador. Finalmente, el decodificador con cabezales de predicción auxiliares optimiza iterativamente las consultas de objetos para generar cajas y puntuaciones de confianza (fuente).

Características clave

  • Codificador híbrido eficiente: El RT-DETR de Baidu utiliza un codificador híbrido eficiente que procesa características multiescala al desacoplar la interacción intra-escala y la fusión entre escalas. Este diseño único basado en Vision Transformers reduce los costes computacionales y permite la detección de objetos en tiempo real.
  • Selección de consultas basada en IoU: El RT-DETR de Baidu mejora la inicialización de consultas de objetos utilizando la selección de consultas basada en IoU. Esto permite que el modelo se centre en los objetos más relevantes de la escena, mejorando la precisión de la detección.
  • Velocidad de inferencia adaptable: El RT-DETR de Baidu admite ajustes flexibles de la velocidad de inferencia utilizando diferentes capas del decodificador sin necesidad de reentrenamiento. Esta adaptabilidad facilita la aplicación práctica en diversos escenarios de detección de objetos en tiempo real.
  • Marco sin NMS: Basado en DETR, RT-DETR elimina la necesidad de post-procesamiento de supresión de no máximos, lo que simplifica la canalización de detección y mejora potencialmente la eficiencia.
  • Detección sin anclas (anchor-free): Como detector sin anclas, RT-DETR simplifica el proceso de detección y puede mejorar la generalización a través de diferentes conjuntos de datos.

Modelos pre-entrenados

La API de Python de Ultralytics proporciona modelos RT-DETR de PaddlePaddle preentrenados con diferentes escalas:

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

Además, Baidu ha lanzado RTDETRv2 en julio de 2024, que mejora aún más la arquitectura original con métricas de rendimiento optimizadas.

Ejemplos de uso

Este ejemplo proporciona ejemplos sencillos de entrenamiento e inferencia de RT-DETR. Para obtener la documentación completa sobre estos y otros modos, consulta las páginas de documentación de Predict, Train, Val y Export. Los modelos también se pueden entrenar en GPUs en la nube a través de Ultralytics Platform.

Ejemplo
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")
Compensaciones para una inferencia más rápida

Los pesos preentrenados de RT-DETR admiten dos configuraciones durante la inferencia para reducir la latencia sin necesidad de reentrenamiento:

  • eval_idx: Detén la decodificación antes de tiempo. Para el decodificador predeterminado de 6 capas, utiliza un índice de base cero (05). eval_idx=5 utiliza todas las capas; eval_idx=3 utiliza 4 capas. En una GPU T4 con TensorRT v10.11, RT-DETR-L mejora de 8.0 ms / 52.7 mAP a 7.4 ms / 52.5 mAP con 4 capas.
  • num_queries: Reduce las consultas de objetos (predeterminado: 300). Reducirlas a 100 puede alcanzar 7.4 ms / 51.7 mAP en COCO con la misma configuración. En conjuntos de datos con menos objetos por imagen, la caída en mAP suele ser menor, pero mantén el valor por encima del máximo de objetos esperados por imagen.

Ambas configuraciones pueden reducir el mAP: valida el compromiso en tu conjunto de datos antes de la implementación.

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)

Tareas y modos admitidos

Esta tabla presenta los tipos de modelos, los pesos preentrenados específicos, las tareas admitidas por cada modelo y los diversos modos (Train, Val, Predict, Export) que son compatibles, indicados mediante emojis ✅.

Tipo de modeloPesos preentrenadosTareas soportadasInferenciaValidaciónEntrenamientoExportar (Export)
RT-DETR Largertdetr-l.ptDetección de objetos
RT-DETR Extra-Largertdetr-x.ptDetección de objetos
Variantes solo de arquitectura

rtdetr-resnet50.yaml y rtdetr-resnet101.yaml se distribuyen únicamente como arquitecturas YAML. Ultralytics solo publica pesos preentrenados para rtdetr-l y rtdetr-x. Instancia las variantes de ResNet desde YAML (por ejemplo, RTDETR("rtdetr-resnet50.yaml")) y entrénalas o ajústalas (fine-tune) según sea necesario.

Casos de uso ideales

RT-DETR es especialmente adecuado para aplicaciones que requieren alta precisión y rendimiento en tiempo real:

Citas y reconocimientos

Si utilizas el RT-DETR de Baidu en tu trabajo de investigación o desarrollo, por favor cita el artículo original:

Cita
@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, puedes citar el artículo de 2024:

Cita
@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}
}

Queremos agradecer a Baidu y al equipo de PaddlePaddle por crear y mantener este valioso recurso para la comunidad de visión artificial. Apreciamos enormemente su contribución al campo con el desarrollo de RT-DETR, el detector de objetos en tiempo real basado en Vision Transformers.

Preguntas frecuentes

¿Qué es el modelo RT-DETR de Baidu y cómo funciona?

El RT-DETR (Real-Time Detection Transformer) de Baidu es un detector de objetos avanzado en tiempo real construido sobre la arquitectura Vision Transformer. Procesa eficientemente características multiescala mediante el desacoplamiento de la interacción intra-escala y la fusión entre escalas a través de su eficiente codificador híbrido. Al emplear la selección de consultas basada en IoU, el modelo se centra en los objetos más relevantes, mejorando la precisión de la detección. Su velocidad de inferencia adaptable, lograda al ajustar las capas del decodificador sin reentrenamiento, hace que RT-DETR sea adecuado para diversos escenarios de detección de objetos en tiempo real. Obtén más información sobre las características de RT-DETR en el artículo de Arxiv sobre RT-DETR.

¿Cómo puedo utilizar los modelos RT-DETR preentrenados proporcionados por Ultralytics?

Puedes aprovechar la API de Python de Ultralytics para utilizar modelos RT-DETR preentrenados de PaddlePaddle. Por ejemplo, para cargar un modelo RT-DETR-l preentrenado en COCO val2017 y lograr altos FPS en una GPU T4, puedes utilizar el siguiente ejemplo:

Ejemplo
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 qué debería elegir RT-DETR de Baidu en lugar de otros detectores de objetos en tiempo real?

El RT-DETR de Baidu destaca gracias a su codificador híbrido eficiente y a la selección de consultas basada en IoU, que reducen drásticamente los costes computacionales manteniendo una alta precisión. Su capacidad única para ajustar la velocidad de inferencia mediante el uso de diferentes capas del decodificador sin reentrenamiento añade una flexibilidad significativa. Esto lo hace particularmente ventajoso para aplicaciones que requieren un rendimiento en tiempo real en backends acelerados como CUDA con TensorRT, superando a muchos otros detectores de objetos en tiempo real. La arquitectura transformer también proporciona una mejor comprensión del contexto global en comparación con los detectores tradicionales basados en CNN.

¿Cómo admite RT-DETR una velocidad de inferencia adaptable para diferentes aplicaciones en tiempo real?

El RT-DETR de Baidu permite realizar ajustes flexibles de la velocidad de inferencia mediante el uso de diferentes capas del decodificador sin necesidad de reentrenamiento. Esta adaptabilidad es crucial para escalar el rendimiento en diversas tareas de detección de objetos en tiempo real. Tanto si necesitas un procesamiento más rápido para necesidades de menor precisión como si prefieres detecciones más lentas y precisas, RT-DETR puede adaptarse para cumplir tus requisitos específicos. Esta función es especialmente valiosa al desplegar modelos en dispositivos con capacidades computacionales variables.

¿Puedo utilizar los modelos RT-DETR con otros modos de Ultralytics, como entrenamiento, validación y exportación?

Sí, los modelos RT-DETR son compatibles con varios modos de Ultralytics, incluidos entrenamiento, validación, predicción y exportación. Puedes consultar la documentación respectiva para obtener instrucciones detalladas sobre cómo utilizar estos modos: Train, Val, Predict y Export. Esto garantiza un flujo de trabajo integral para desarrollar y desplegar tus soluciones de detección de objetos. El marco de trabajo de Ultralytics proporciona una API consistente a través de diferentes arquitecturas de modelo, lo que facilita trabajar con los modelos RT-DETR.

Comentarios