RT-DETR de Baidu: detector de objetos en tiempo real basado en un Transformer de visión#
Descripción general#
El Transformer de detección en tiempo real (RT-DETR), desarrollado por Baidu, es un detector de objetos de extremo a extremo de vanguardia que ofrece 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 lograr velocidad en tiempo real. RT-DETR procesa eficazmente características multiescala separando la interacción dentro de la escala y la fusión entre escalas. El modelo es muy adaptable y permite ajustar de forma flexible la velocidad de inferencia utilizando distintas capas del decodificador sin volver a entrenar. 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 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 del codificador. El codificador híbrido eficiente transforma las características multiescala en una secuencia de características de imagen mediante la interacción de características dentro de la escala (AIFI) y el módulo de fusión de características entre escalas (CCFM). La selección de consultas consciente de IoU se utiliza para seleccionar un número fijo de características de imagen que actúan como consultas de objetos iniciales para el decodificador. Por último, el decodificador, con cabezales de predicción auxiliares, optimiza iterativamente las consultas de objetos para generar cajas y puntuaciones de confianza (fuente).
Características principales#
- Codificador híbrido eficiente: RT-DETR de Baidu utiliza un codificador híbrido eficiente que procesa características multiescala separando la interacción dentro de la escala y la fusión entre escalas. Este diseño único basado en Vision Transformer reduce los costes computacionales y permite la detección de objetos en tiempo real.
- Selección de consultas consciente de IoU: RT-DETR de Baidu mejora la inicialización de las consultas de objetos mediante la selección de consultas consciente de IoU. Esto permite al modelo centrarse en los objetos más relevantes de la escena y mejorar la precisión de detección.
- Velocidad de inferencia adaptable: RT-DETR de Baidu permite ajustar de forma flexible la velocidad de inferencia utilizando distintas capas del decodificador sin necesidad de volver a entrenar. Esta adaptabilidad facilita su 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 del posprocesamiento de supresión no máxima, lo que simplifica el flujo de detección y puede mejorar la eficiencia.
- Detección sin anchors: Como detector sin anchors, RT-DETR simplifica el proceso de detección y puede mejorar la generalización entre distintos conjuntos de datos.
Modelos preentrenados#
La API de Python de Ultralytics proporciona modelos RT-DETR de PaddlePaddle preentrenados con distintas escalas:
- RT-DETR-L: 53,0 % de AP en COCO val2017, 114 FPS en GPU T4
- RT-DETR-X: 54,8 % de AP en COCO val2017, 74 FPS en GPU T4
Además, Baidu publicó 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 consultar la documentación completa sobre estos y otros modos, visita las páginas de documentación de Predict, Train, Val y Export. También puedes entrenar los modelos en GPU en la nube mediante 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")Establece deterministic=False al entrenar RT-DETR en CUDA con PyTorch 2.0 o posterior. Su atención deformable utiliza F.grid_sample, que no tiene un backward determinista en CUDA, por lo que deterministic=True no puede hacer que la ejecución sea reproducible y puede reducir el rendimiento del entrenamiento. seed sigue controlando la inicialización de pesos, el orden de los datos y el muestreo de aumentos.
Los pesos preentrenados de RT-DETR admiten dos ajustes en tiempo de inferencia para reducir la latencia sin volver a entrenar:
eval_idx: Detén antes la decodificación. Para el decodificador predeterminado de 6 capas, utiliza un índice basado en cero (0–5).eval_idx=5utiliza todas las capas;eval_idx=3utiliza 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 (valor 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 disminución de mAP suele ser menor, pero mantén el valor por encima del número máximo previsto de objetos por imagen.
Ambos ajustes pueden reducir mAP; valida el compromiso en tu conjunto de datos antes de ponerlo en producció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 compatibles#
Esta tabla presenta los tipos de modelo, los pesos preentrenados específicos, las tareas admitidas por cada modelo y los distintos modos (Train, Val, Predict, Export) que son compatibles, indicados mediante emojis ✅.
| Tipo de modelo | Pesos preentrenados | Tareas compatibles | Entrenamiento | Validación | Inferencia | Exportar |
|---|---|---|---|---|---|---|
| RT-DETR grande | rtdetr-l.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
| RT-DETR extragrande | rtdetr-x.pt | Detección de objetos | ✅ | ✅ | ✅ | ✅ |
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 entrénalas o ajústalas según sea necesario.
Casos de uso ideales#
RT-DETR es especialmente adecuado para aplicaciones que requieren tanto una alta precisión como rendimiento en tiempo real:
- Conducción autónoma: Para una percepción fiable del entorno en sistemas de conducción autónoma, donde tanto la velocidad como la precisión son fundamentales. Más información sobre la IA en los coches autónomos.
- Robótica avanzada: Permite a los robots realizar tareas complejas que requieren un reconocimiento y una interacción precisos con objetos en entornos dinámicos. Explora el papel de la IA en la robótica.
- Imágenes médicas: Para aplicaciones sanitarias en las que la precisión de la detección de objetos puede ser crucial para el diagnóstico. Descubre la IA en la sanidad.
- Sistemas de vigilancia: Para aplicaciones de seguridad que requieren monitorización en tiempo real con una alta precisión de detección. Más información sobre los sistemas de alarma de seguridad.
- Análisis de imágenes de satélite: Para el análisis detallado de imágenes de alta resolución en el que es importante comprender el contexto global. Lee sobre la visión artificial aplicada a imágenes de satélite.
Citas y agradecimientos#
Si utilizas RT-DETR de Baidu en tu trabajo de investigación o desarrollo, cita el artículo 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, puedes citar el artículo 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}
}Queremos agradecer a Baidu y al equipo de PaddlePaddle la creación y el mantenimiento de este valioso recurso para la comunidad de visión artificial. Apreciamos enormemente su contribución al campo mediante el desarrollo del detector de objetos en tiempo real basado en Vision Transformer, RT-DETR.
Preguntas frecuentes#
RT-DETR de Baidu (Transformer de detección en tiempo real) es un detector de objetos avanzado en tiempo real basado en la arquitectura Vision Transformer. Procesa eficazmente las características multiescala separando la interacción dentro de la escala y la fusión entre escalas mediante 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 y mejora la precisión de detección. Su velocidad de inferencia adaptable, conseguida ajustando las capas del decodificador sin volver a entrenar, 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 RT-DETR en Arxiv.
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 lograr un FPS alto en una GPU T4, puedes utilizar el siguiente ejemplo:
Ejemplofrom 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")RT-DETR de Baidu destaca por su codificador híbrido eficiente y su selección de consultas consciente de IoU, que reducen drásticamente los costes computacionales manteniendo una alta precisión. Su capacidad única para ajustar la velocidad de inferencia utilizando distintas capas del decodificador sin volver a entrenar aporta una flexibilidad considerable. 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.
RT-DETR de Baidu permite ajustar de forma flexible la velocidad de inferencia utilizando distintas capas del decodificador sin necesidad de volver a entrenar. 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 requisitos de menor precisión como detecciones más lentas y precisas, RT-DETR se puede adaptar a tus necesidades específicas. Esta función es especialmente valiosa al desplegar modelos en dispositivos con distintas capacidades computacionales.
No. En RT-DETR,
max_detlimita el número de predicciones que se devuelven después de la inferencia, pero no aumenta el número de consultas de objetos generadas por el decodificador. Los checkpoints preentrenados de RT-DETR de Ultralytics utilizan 300 consultas de objetos, por lo que no pueden devolver más de 300 detecciones por imagen aunque establezcasmax_deten un valor mayor.Utiliza
max_detpara reducir las detecciones devueltas, por ejemplo amax_det=100, cuando solo necesites menos predicciones con alta confianza. Si tu conjunto de datos puede contener más de 300 objetos por imagen, entrena un modelo RT-DETR personalizado con un número mayor de consultas del decodificador (nq) en el YAML del modelo; cambiar este valor en un checkpoint preentrenado después del entrenamiento no es equivalente y requiere volver a entrenar 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. Consulta la documentación correspondiente 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 framework de Ultralytics proporciona una API coherente en distintas arquitecturas de modelos, lo que facilita el trabajo con modelos RT-DETR.