YOLO Vision 2026:

RT-DETR de Baidu: Un detector de objetos en tiempo real basado en Transformer de visión#

Descripción general#

Real-Time Detection Transformer (RT-DETR), desarrollado por Baidu, es un detector de objetos de extremo a extremo de última generación que ofrece un rendimiento en tiempo real manteniendo una alta precisión. Se basa en la idea de DETR (el marco libre de NMS), al tiempo que introduce un backbone basado en convoluciones y un codificador híbrido eficiente para lograr una velocidad en tiempo real. RT-DETR procesa eficientemente características multiescala desacoplando la interacción intraescala y la fusión multiescala. El modelo es altamente adaptable y permite ajustar de forma flexible la velocidad de inferencia utilizando diferentes capas de 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 🚀

Descripción general de la arquitectura del modelo Baidu RT-DETR Descripción general del RT-DETR de Baidu. El diagrama de la arquitectura del modelo RT-DETR muestra las últimas tres etapas del backbone {S3, S4, S5} como la 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 intraescala (AIFI) y el módulo de fusión de características multiescala (CCFM). La selección de consultas consciente de IoU se emplea para seleccionar un número fijo de características de imagen para que sirvan como consultas de objetos iniciales para el decodificador. Finalmente, el decodificador con cabezales de predicción auxiliares optimiza de forma iterativa 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 desacoplando la interacción intraescala y la fusión multiescala. Este diseño único basado en Vision Transformers reduce los costos 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 las 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 mediante el uso de diferentes capas de 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 Libre de NMS: Basado en DETR, RT-DETR elimina la necesidad de posprocesamiento de supresión de no máximos, simplificando el flujo de trabajo de detección y mejorando potencialmente la eficiencia.
  • Detección sin Anclajes: Como detector sin anclajes, RT-DETR simplifica el proceso de detección y puede mejorar la generalización en diferentes conjuntos de datos.

Modelos preentrenados#

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 GPU T4
  • RT-DETR-X: 54.8% AP en COCO val2017, 74 FPS en GPU T4

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

Ejemplos de uso#

Este ejemplo proporciona ejemplos sencillos de entrenamiento e inferencia con 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")
Compromisos 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, usa un índice basado en cero (05). eval_idx=5 usa todas las capas; eval_idx=3 usa 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). Reducirlo a 100 puede alcanzar 7.4 ms / 51.7 mAP en COCO en la misma configuración. En conjuntos de datos con menos objetos por imagen, la caída del mAP suele ser menor, pero mantén el valor por encima del número máximo esperado de objetos por imagen.

Ambas configuraciones pueden reducir el mAP: valida el compromiso en tu dataset 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, quantize=16)

Tareas y modos soportados#

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

Tipo de modeloPesos preentrenadosTareas compatiblesEntrenamientoValidaciónInferenciaExportar
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 publica pesos preentrenados solo para rtdetr-l y rtdetr-x. Instancia las variantes de ResNet desde YAML (por ejemplo, RTDETR("rtdetr-resnet50.yaml")) y enfréntalas o afínalas según sea necesario.

Casos de uso ideales#

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

Citas y agradecimientos#

Si utilizas 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 por computadora. Su contribución al campo con el desarrollo del detector de objetos en tiempo real basado en Vision Transformers, RT-DETR, es muy apreciada.

FAQ#

  • El RT-DETR de Baidu (Real-Time Detection Transformer) es un detector de objetos en tiempo real avanzado construido sobre la arquitectura Vision Transformer. Procesa eficientemente características multiescala desacoplando la interacción intraescala y la fusión multiescala a través de su codificador híbrido eficiente. Al emplear la selección de consultas consciente de IoU, el modelo se centra en los objetos más relevantes, mejorando la precisión de detección. Su velocidad de inferencia adaptable, lograda ajustando 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 de RT-DETR.

  • Puedes aprovechar la API de Python de Ultralytics para utilizar modelos RT-DETR de PaddlePaddle preentrenados. Por ejemplo, para cargar un modelo RT-DETR-l preentrenado en COCO val2017 y alcanzar 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")
  • El RT-DETR de Baidu destaca debido a su codificador híbrido eficiente y a la selección de consultas consciente de IoU, que reducen drásticamente los costos computacionales manteniendo una alta precisión. Su capacidad única para ajustar la velocidad de inferencia utilizando diferentes capas de decodificador sin reentrenamiento añade una flexibilidad significativa. Esto lo hace especialmente ventajoso para aplicaciones que requieren 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.

  • El RT-DETR de Baidu permite ajustes flexibles de la velocidad de inferencia mediante el uso de diferentes capas de decodificador sin requerir reentrenamiento. Esta adaptabilidad es crucial para escalar el rendimiento en varias tareas de detección de objetos en tiempo real. Ya sea que necesites un procesamiento más rápido para necesidades de menor precisión o detecciones más lentas y precisas, RT-DETR se puede adaptar para cumplir con tus requisitos específicos. Esta función es especialmente valiosa al desplegar modelos en dispositivos con capacidades computacionales variadas.

  • No. Para RT-DETR, max_det limita cuántas predicciones se devuelven después de la inferencia, pero no aumenta el número de consultas de objetos producidas por el decodificador. Los puntos de control preentrenados de Ultralytics RT-DETR utilizan 300 consultas de objetos, por lo que no pueden devolver más de 300 detecciones por imagen, incluso si configuras max_det con un valor mayor.

    Usa max_det para reducir las detecciones devueltas, por ejemplo max_det=100, cuando solo necesites menos predicciones de alta confianza. Si tu conjunto de datos puede contener más de 300 objetos por imagen, entrena un modelo RT-DETR personalizado con un recuento de consultas de decodificador más alto (nq) en el YAML del modelo; cambiar este valor en un punto de control preentrenado después del entrenamiento no es equivalente y requiere un reentrenamiento para aprender las consultas adicionales.

  • 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 completo para desarrollar y desplegar tus soluciones de detección de objetos. El marco de Ultralytics proporciona una API coherente en diferentes arquitecturas de modelos, lo que facilita trabajar con modelos RT-DETR.

Comentarios