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 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.
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")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.
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 (0–5).eval_idx=5utilise toutes les couches ;eval_idx=3utilise 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èle | Poids pré-entraînés | Tâches prises en charge | Entraînement | Validation | Inférence | Exporter (Export) |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
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 :
- Conduite autonome : Pour une perception environnementale fiable dans les systèmes de conduite autonome où la vitesse et la précision sont toutes deux essentielles. En savoir plus sur l'IA dans les voitures autonomes.
- Robotique avancée : Permettre aux robots d'exécuter des tâches complexes nécessitant une reconnaissance précise des objets et une interaction dans des environnements dynamiques. Explorer le rôle de l'IA en robotique.
- Imagerie médicale : Pour les applications de santé où la précision de la détection d'objets peut être cruciale pour les diagnostics. Découvrir l'IA dans la santé.
- Systèmes de surveillance : Pour les applications de sécurité nécessitant une surveillance en temps réel avec une haute précision de détection. En savoir plus sur les systèmes d'alarme de sécurité.
- Analyse d'images satellites : Pour l'analyse détaillée d'images haute résolution où la compréhension du contexte global est importante. Lire des articles sur la vision par ordinateur dans l'imagerie satellite.
Citations et remerciements#
Si tu utilises le RT-DETR de Baidu dans ton travail de recherche ou de développement, cite l'article 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}
}Pour RTDETRv2, tu peux citer l'article 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}
}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.
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_detlimite 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éfinismax_detsur une valeur plus élevée.Utilise
max_detpour réduire les détections renvoyées, par exemplemax_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.
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 :