YOLO Vision 2026 :

Le 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 bout en bout à la pointe de la technologie qui offre des performances en temps réel tout en maintenant une précision élevée. Il repose sur le concept de DETR (le cadre sans NMS), tout en introduisant un backbone basé sur la convolution et un encodeur hybride efficace pour atteindre une vitesse en temps réel. RT-DETR traite efficacement les caractéristiques multichaux en découplant l'interaction intra-échelle et la fusion inter-échelle. Le modèle est hautement adaptable et permet 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 diagramme de l'architecture du modèle RT-DETR montre les trois derniers étages du backbone {S3, S4, S5} comme entrée de l'encodeur. L'encodeur hybride efficace transforme les caractéristiques multichaux en une séquence de caractéristiques d'image par le biais de l'interaction des caractéristiques intra-échelle (AIFI) et du module de fusion des caractéristiques inter-échelle (CCFM). La sélection de requêtes consciente des IoU est utilisée pour sélectionner un nombre fixe de caractéristiques d'image servant de requêtes d'objets initiales pour le décodeur. Enfin, le décodeur doté de 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 multichaux 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 de 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.
  • Cadre sans NMS : Basé sur DETR, RT-DETR élimine le besoin de post-traitement par suppression non maximale, simplifiant le pipeline de détection et améliorant potentiellement l'efficacité.
  • Détection sans ancrage : En tant que détecteur sans ancrage, 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 RT-DETR PaddlePaddle 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 originale avec des mesures de performance accrues.

Exemples d'utilisation#

Cet exemple fournit des exemples simples d'entraînement et d'inférence pour RT-DETR. Pour une documentation complète sur ces modes et d'autres, consultez 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")
Entraînement déterministe

Définis deterministic=False lors de l'entraînement de RT-DETR sur CUDA avec PyTorch 2.0 ou une version ultérieure. Son attention déformable utilise F.grid_sample, qui ne dispose pas de rétropropagation CUDA déterministe, donc deterministic=True ne peut pas rendre l'exécution reproductible et peut réduire le débit d'entraînement. seed contrôle toujours l'initialisation des poids, l'ordre des données et l'échantillonnage des augmentations.

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êter le décodage plus tôt. Pour le décodeur à 6 couches par défaut, utilisez un index basé sur 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éduire les requêtes d'objets (par défaut : 300). Une réduction à 100 peut atteindre 7,4 ms / 51,7 mAP sur COCO dans la même configuration. Sur les jeux de données comportant moins d'objets par image, la baisse du mAP est généralement plus faible, mais il convient de maintenir la valeur au-dessus du nombre maximal d'objets attendu 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, quantize=16)

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 chargeEntraînementValidationInférenceExporter (Export)
RT-DETR Largertdetr-l.ptDétection d'objets
RT-DETR Extra-Largertdetr-x.ptDétection d'objets
Variantes uniquement architecturales

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

Cas d'utilisation idéaux#

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

Citations et remerciements#

Si tu utilises le RT-DETR de Baidu dans ton travail 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 du détecteur d'objets en temps réel basé sur les Vision Transformers, RT-DETR, est grandement appréciée.

FAQ#

  • Le RT-DETR de Baidu (Real-Time Detection Transformer) est un détecteur d'objets en temps réel avancé construit sur l'architecture Vision Transformer. Il traite efficacement les caractéristiques multichaux en découplant l'interaction intra-échelle et la fusion inter-échelle grâce à son encodeur hybride efficace. En employant la sélection de requêtes consciente des 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. Pour en savoir plus sur les fonctionnalités de RT-DETR, consulte l'article Arxiv de RT-DETR.

  • Tu peux tirer parti de l'API Python d'Ultralytics pour utiliser les modèles RT-DETR PaddlePaddle pré-entraînés. Par exemple, pour charger un modèle RT-DETR-l pré-entraîné sur COCO val2017 et obtenir 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")
  • Le RT-DETR de Baidu se distingue par son encodeur hybride efficace et sa sélection de requêtes consciente des IoU, qui réduisent considérablement les coûts de calcul tout en maintenant une grande précision. Sa capacité unique à ajuster la vitesse d'inférence en utilisant différentes couches de décodeur sans réentraînement apporte 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 traditionnels basés sur les CNN.

  • 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 mettre à l'échelle les performances sur 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 exigences spécifiques. Cette fonctionnalité est particulièrement précieuse lors du déploiement de modèles sur des appareils aux capacités de calcul variables.

  • Non. Pour RT-DETR, max_det limite le nombre de prédictions renvoyées après l'inférence, mais n'augmente pas le nombre de requêtes d'objets produites par le décodeur. Les points de contrôle pré-entraînés d'Ultralytics RT-DETR utilisent 300 requêtes d'objets, ils ne peuvent donc pas renvoyer plus de 300 détections par image, même si tu définis max_det sur une valeur plus élevée.

    Utilise max_det pour réduire les détections renvoyées, par exemple max_det=100, lorsque tu n'as besoin que d'un plus petit nombre de prédictions à haute confiance. Si ton jeu de données peut contenir plus de 300 objets par image, entraîne un modèle RT-DETR personnalisé avec un nombre de requêtes de décodeur plus élevé (nq) dans le fichier YAML du modèle ; modifier cette valeur sur un point de contrôle pré-entraîné après l'entraînement n'est pas équivalent et nécessite un réentraînement pour apprendre les requêtes supplémentaires.

  • 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 l'utilisation des modèles RT-DETR.

Commentaires