Ultralytics YOLO27 :

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

Présentation#

Le Transformer de détection en temps réel (RT-DETR), développé par Baidu, est un détecteur d’objets de bout en bout de pointe qui offre des performances en temps réel tout en conservant une précision élevée. Il repose sur l’idée de DETR (le framework sans NMS), tout en introduisant un backbone basé sur des convolutions et un encodeur hybride efficace afin d’atteindre 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-échelles. Le modèle est hautement adaptable et permet d’ajuster la vitesse d’inférence de manière flexible à l’aide de différentes couches du décodeur, sans réentraînement. RT-DETR est particulièrement performant sur les backends accélérés comme CUDA avec TensorRT, dépassant 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 🚀

Vue d’ensemble de l’architecture du modèle Baidu RT-DETR Vue d’ensemble du RT-DETR de Baidu. Le diagramme de l’architecture du modèle RT-DETR montre les trois dernières étapes du backbone {S3, S4, S5} en entrée de l’encodeur. L’encodeur hybride efficace transforme les caractéristiques multi-échelles en une séquence de caractéristiques d’image grâce à l’interaction des caractéristiques intra-échelle (AIFI) et au module de fusion des caractéristiques inter-échelles (CCFM). La sélection de requêtes prenant en compte l’IoU est utilisée pour sélectionner un nombre fixe de caractéristiques d’image afin de servir de requêtes d’objets initiales pour le décodeur. Enfin, le décodeur et ses têtes de prédiction auxiliaires optimisent itérativement les requêtes d’objets afin de générer les boîtes et les 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-échelles. Cette conception unique basée sur des Vision Transformers réduit les coûts de calcul et permet la détection d’objets en temps réel.
  • Sélection de requêtes prenant en compte l’IoU : Le RT-DETR de Baidu améliore l’initialisation des requêtes d’objets en utilisant une sélection de requêtes prenant en compte l’IoU. Cela permet au modèle de se concentrer sur les objets les plus pertinents de la scène et d’améliorer la précision de la détection.
  • Vitesse d’inférence adaptable : Le RT-DETR de Baidu permet d’ajuster la vitesse d’inférence de manière flexible en utilisant différentes couches du décodeur, sans réentraînement. Cette adaptabilité facilite son utilisation 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 d’un post-traitement de suppression non maximale, ce qui simplifie le pipeline de détection et peut améliorer 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 RT-DETR préentraînés de PaddlePaddle avec différentes tailles :

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

De plus, Baidu a publié RTDETRv2 en juillet 2024, qui améliore encore l’architecture originale avec de meilleures métriques de performance.

Exemples d’utilisation#

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

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 mécanisme d’attention déformable utilise F.grid_sample, qui ne dispose pas d’un calcul rétrograde CUDA déterministe ; deterministic=True ne peut donc pas rendre l’exécution reproductible et peut réduire le débit d’entraînement. seed continue de contrôler 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ête le décodage plus tôt. 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 en utilise 4. 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éduis le nombre de requêtes d’objets (valeur par défaut : 300). Le réduire à 100 peut atteindre 7,4 ms / 51,7 mAP sur COCO dans la même configuration. Sur les jeux de données contenant moins d’objets par image, la baisse de mAP est généralement plus faible, mais conserve une valeur supérieure au nombre maximal d’objets attendu par image.

Les deux paramètres peuvent réduire la 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érenceExportation
RT-DETR Largertdetr-l.ptDétection d’objets
RT-DETR Extra-Largertdetr-x.ptDétection d’objets
Variantes limitées à l’architecture

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

Cas d’utilisation idéaux#

RT-DETR est particulièrement adapté aux applications nécessitant à la fois une grande précision 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 du détecteur d’objets en temps réel basé sur des Vision Transformers, RT-DETR, est vivement appréciée.

FAQ#

  • Le RT-DETR de Baidu (Transformer de détection en temps réel) est un détecteur d’objets avancé en temps réel fondé sur l’architecture Vision Transformer. Il traite efficacement les caractéristiques multi-échelles en découplant l’interaction intra-échelle et la fusion inter-échelles grâce à son encodeur hybride efficace. En utilisant une sélection de requêtes prenant en compte l’IoU, le modèle se concentre sur les objets les plus pertinents et améliore 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 sur RT-DETR.

  • Tu peux utiliser l’API Python d’Ultralytics pour exploiter les modèles RT-DETR préentraînés de PaddlePaddle. 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")
  • Le RT-DETR de Baidu se distingue par son encodeur hybride efficace et sa sélection de requêtes prenant en compte l’IoU, qui réduisent considérablement les coûts de calcul tout en conservant une précision élevée. Sa capacité unique à ajuster la vitesse d’inférence en utilisant différentes couches du décodeur sans réentraînement offre une grande flexibilité. 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 que les détecteurs traditionnels basés sur des CNN.

  • Le RT-DETR de Baidu permet d’ajuster la vitesse d’inférence de manière flexible en utilisant différentes couches du décodeur, sans nécessiter de réentraînement. Cette adaptabilité est essentielle pour faire évoluer les performances dans diverses tâches de détection d’objets en temps réel. Que tu aies besoin d’un traitement plus rapide pour des exigences moindres en matière de précision ou de détections plus lentes et plus précises, RT-DETR peut être adapté à tes besoins spécifiques. Cette fonctionnalité est particulièrement utile lors du déploiement de modèles sur des appareils aux capacités de calcul différentes.

  • Non. Pour RT-DETR, max_det plafonne 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 checkpoints RT-DETR préentraînés d’Ultralytics 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 supérieure.

    Utilise max_det pour réduire le nombre de détections renvoyées, par exemple à max_det=100, lorsque tu as seulement besoin de moins 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 supérieur de requêtes du décodeur (nq) dans le YAML du modèle ; modifier cette valeur sur un checkpoint 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 différents modes Ultralytics, notamment l’entraînement, la validation, la prédiction et l’exportation. Consulte la documentation correspondante pour obtenir des instructions détaillées sur l’utilisation de ces modes : Train, Val, Predict et Export. Cela garantit un workflow complet pour développer et déployer tes solutions de détection d’objets. Le framework Ultralytics fournit une API cohérente entre les différentes architectures de modèles, ce qui facilite l’utilisation des modèles RT-DETR.

Commentaires