RT-DETR de Baidu : un détecteur d'objets en temps réel basé sur un Transformer de vision

Présentation

Le Real-Time Detection Transformer (RT-DETR), développé par Baidu, est un détecteur d'objets de pointe de bout en bout qui offre des performances en temps réel tout en maintenant une précision élevée. Il repose sur le concept de DETR (le framework sans NMS), tout en introduisant un backbone basé sur les convolutions et un encodeur hybride efficace pour obtenir une vitesse en temps réel. RT-DETR traite efficacement les caractéristiques multi-échelles en découplant l'interaction intra-échelle et la fusion inter-échelle. Le modèle est hautement adaptable, prenant en charge un ajustement flexible de la vitesse d'inférence en utilisant différentes couches de décodeur sans réentraînement. RT-DETR excelle sur les backends accélérés comme CUDA avec TensorRT, surpassant de nombreux autres détecteurs d'objets en temps réel.



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

Aperçu de l'architecture du modèle Baidu RT-DETR Aperçu du RT-DETR de Baidu. Le schéma de l'architecture du modèle RT-DETR montre les trois derniers étages du backbone {S3, S4, S5} comme entrée pour l'encodeur. L'encodeur hybride efficace transforme les caractéristiques multi-échelles en une séquence de caractéristiques d'image grâce à une interaction inter-échelle (AIFI) et un module de fusion de caractéristiques multi-échelles (CCFM). La sélection de requêtes basée sur l'IoU est utilisée pour choisir un nombre fixe de caractéristiques d'image servant de requêtes d'objets initiales pour le décodeur. Enfin, le décodeur avec des têtes de prédiction auxiliaires optimise de manière itérative les requêtes d'objets pour générer des boîtes et des scores de confiance (source).

Fonctionnalités clés

  • Encodeur hybride efficace : Le RT-DETR de Baidu utilise un encodeur hybride efficace qui traite les caractéristiques multi-échelles en découplant l'interaction intra-échelle et la fusion inter-échelle. Cette conception unique basée sur les Vision Transformers réduit les coûts de calcul et permet une détection d'objets en temps réel.
  • Sélection de requêtes basée sur l'IoU : Le RT-DETR de Baidu améliore l'initialisation des requêtes d'objets en utilisant la sélection de requêtes basée sur l'IoU. Cela permet au modèle de se concentrer sur les objets les plus pertinents dans la scène, améliorant ainsi la précision de la détection.
  • Vitesse d'inférence adaptable : Le RT-DETR de Baidu prend en charge des ajustements flexibles de la vitesse d'inférence en utilisant différentes couches de décodeur sans avoir besoin de réentraînement. Cette adaptabilité facilite l'application pratique dans divers scénarios de détection d'objets en temps réel.
  • Framework sans NMS : Basé sur DETR, RT-DETR élimine le besoin de post-traitement par non-maximum suppression, simplifiant le pipeline de détection et améliorant potentiellement l'efficacité.
  • Détection sans ancres : En tant que détecteur sans ancres, RT-DETR simplifie le processus de détection et peut améliorer la généralisation sur différents jeux de données.

Modèles pré-entraînés

L'API Python d'Ultralytics fournit des modèles PaddlePaddle RT-DETR pré-entraînés avec différentes échelles :

  • RT-DETR-L : 53,0% AP sur COCO val2017, 114 FPS sur GPU T4
  • RT-DETR-X : 54,8% AP sur COCO val2017, 74 FPS sur GPU T4

De plus, Baidu a publié RTDETRv2 en juillet 2024, qui améliore encore l'architecture d'origine avec des mesures de performance accrues.

Exemples d'utilisation

Cet exemple fournit des exemples simples d'entraînement et d'inférence avec RT-DETR. Pour la documentation complète sur ces modes et d'autres, consulte les pages de documentation Predict, Train, Val et Export. Les modèles peuvent également être entraînés sur des GPU cloud via la plateforme Ultralytics.

Exemple
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")
Compromis pour une inférence plus rapide

Les poids pré-entraînés de RT-DETR prennent en charge deux paramètres au moment de l'inférence pour réduire la latence sans réentraînement :

  • eval_idx : Arrêt précoce du décodage. Pour le décodeur par défaut à 6 couches, utilise un index commençant à zéro (05). eval_idx=5 utilise toutes les couches ; eval_idx=3 utilise 4 couches. Sur un GPU T4 avec TensorRT v10.11, RT-DETR-L passe de 8,0 ms / 52,7 mAP à 7,4 ms / 52,5 mAP avec 4 couches.
  • num_queries : Réduction des requêtes d'objets (par défaut : 300). Réduire à 100 permet d'atteindre 7,4 ms / 51,7 mAP sur COCO dans la même configuration. Sur les jeux de données avec moins d'objets par image, la baisse de mAP est généralement plus faible, mais garde la valeur au-dessus du nombre maximal d'objets attendus par image.

Les deux paramètres peuvent réduire le mAP — valide le compromis sur ton jeu de données avant le déploiement.

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)

Tâches et modes pris en charge

Ce tableau présente les types de modèles, les poids pré-entraînés spécifiques, les tâches prises en charge par chaque modèle et les différents modes (Train, Val, Predict, Export) pris en charge, indiqués par des émojis ✅.

Type de modèlePoids pré-entraînésTâches prises en chargeInférenceValidationEntraînementExportation
RT-DETR Largertdetr-l.ptDétection d'objets
RT-DETR Extra-Largertdetr-x.ptDétection d'objets
Variantes d'architecture uniquement

rtdetr-resnet50.yaml et rtdetr-resnet101.yaml sont fournis uniquement en tant qu'architectures YAML. Ultralytics publie des poids pré-entraînés uniquement pour rtdetr-l et rtdetr-x. Instancie les variantes ResNet à partir du YAML (par exemple, RTDETR("rtdetr-resnet50.yaml")) et entraîne-les ou ajuste-les selon tes besoins.

Cas d'utilisation idéaux

RT-DETR est particulièrement bien adapté aux applications exigeant à la fois une précision élevée et des performances en temps réel :

Citations et remerciements

Si tu utilises le RT-DETR de Baidu dans tes travaux de recherche ou de développement, cite l'article original :

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

Pour RTDETRv2, tu peux citer l'article de 2024 :

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

Nous tenons à remercier Baidu et l'équipe PaddlePaddle pour la création et la maintenance de cette ressource précieuse pour la communauté de la vision par ordinateur. Leur contribution au domaine avec le développement de RT-DETR, un détecteur d'objets en temps réel basé sur les Vision Transformers, est grandement appréciée.

FAQ

Qu'est-ce que le modèle RT-DETR de Baidu et comment fonctionne-t-il ?

Le RT-DETR (Real-Time Detection Transformer) de Baidu est un détecteur d'objets en temps réel avancé construit sur l'architecture Vision Transformer. Il traite efficacement les caractéristiques multi-échelles en découplant l'interaction intra-échelle et la fusion inter-échelle grâce à son encodeur hybride efficace. En utilisant la sélection de requêtes basée sur l'IoU, le modèle se concentre sur les objets les plus pertinents, améliorant ainsi la précision de la détection. Sa vitesse d'inférence adaptable, obtenue en ajustant les couches du décodeur sans réentraînement, rend RT-DETR adapté à divers scénarios de détection d'objets en temps réel. Apprends-en plus sur les fonctionnalités de RT-DETR dans l'article Arxiv sur RT-DETR.

Comment puis-je utiliser les modèles RT-DETR pré-entraînés fournis par Ultralytics ?

Tu peux tirer parti de l'API Python d'Ultralytics pour utiliser les modèles PaddlePaddle RT-DETR pré-entraînés. Par exemple, pour charger un modèle RT-DETR-l pré-entraîné sur COCO val2017 et atteindre un FPS élevé sur un GPU T4, tu peux utiliser l'exemple suivant :

Exemple
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")

Pourquoi devrais-je choisir le RT-DETR de Baidu plutôt que d'autres détecteurs d'objets en temps réel ?

Le RT-DETR de Baidu se distingue par son encodeur hybride efficace et sa sélection de requêtes basée sur l'IoU, qui réduisent considérablement les coûts de calcul tout en maintenant une précision élevée. Sa capacité unique à ajuster la vitesse d'inférence en utilisant différentes couches de décodeur sans réentraînement ajoute une flexibilité significative. Cela le rend particulièrement avantageux pour les applications nécessitant des performances en temps réel sur des backends accélérés comme CUDA avec TensorRT, surpassant de nombreux autres détecteurs d'objets en temps réel. L'architecture Transformer offre également une meilleure compréhension du contexte global par rapport aux détecteurs basés sur les CNN traditionnels.

Comment RT-DETR prend-il en charge une vitesse d'inférence adaptable pour différentes applications en temps réel ?

Le RT-DETR de Baidu permet des ajustements flexibles de la vitesse d'inférence en utilisant différentes couches de décodeur sans nécessiter de réentraînement. Cette adaptabilité est cruciale pour adapter les performances à diverses tâches de détection d'objets en temps réel. Que tu aies besoin d'un traitement plus rapide pour des besoins de précision moindres ou de détections plus lentes et plus précises, RT-DETR peut être adapté pour répondre à tes besoins spécifiques. Cette fonctionnalité est particulièrement précieuse lors du déploiement de modèles sur des appareils dotés de capacités de calcul variées.

Puis-je utiliser les modèles RT-DETR avec d'autres modes d'Ultralytics, tels que l'entraînement, la validation et l'exportation ?

Oui, les modèles RT-DETR sont compatibles avec divers modes d'Ultralytics, notamment l'entraînement, la validation, la prédiction et l'exportation. Tu peux te référer à la documentation respective pour des instructions détaillées sur la façon d'utiliser ces modes : Train, Val, Predict et Export. Cela garantit un flux de travail complet pour développer et déployer tes solutions de détection d'objets. Le framework Ultralytics fournit une API cohérente à travers différentes architectures de modèles, facilitant ainsi le travail avec les modèles RT-DETR.

Commentaires