Baidus RT-DETR: Ein auf Vision Transformer basierender Echtzeit-Objektdetektor
Übersicht
Der von Baidu entwickelte Real-Time Detection Transformer (RT-DETR) ist ein hochmoderner End-to-End-Objektdetektor, der Echtzeit-Leistung bei gleichzeitig hoher Genauigkeit bietet. Er basiert auf der Idee von DETR (dem NMS-freien Framework) und führt gleichzeitig ein auf Convolution basierendes Backbone sowie einen effizienten Hybrid-Encoder ein, um Echtzeitgeschwindigkeit zu erreichen. RT-DETR verarbeitet multiskalige Merkmale effizient durch die Entkopplung von intra-skalaren Interaktionen und der klassenübergreifenden Fusion. Das Modell ist hochgradig anpassungsfähig und unterstützt eine flexible Einstellung der Inferenzgeschwindigkeit durch die Nutzung verschiedener Decoder-Layer ohne erneutes Training. RT-DETR zeichnet sich auf beschleunigten Backends wie CUDA mit TensorRT aus und übertrifft viele andere Echtzeit-Objektdetektoren.
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
Übersicht über Baidus RT-DETR. Das Architekturdiagramm des RT-DETR-Modells zeigt die letzten drei Phasen des Backbones {S3, S4, S5} als Eingabe für den Encoder. Der effiziente Hybrid-Encoder wandelt multiskalige Merkmale durch Intrascale Feature Interaction (AIFI) und das Cross-Scale Feature-Fusion Module (CCFM) in eine Sequenz von Bildmerkmalen um. Die IoU-bewusste Query-Selektion wird eingesetzt, um eine feste Anzahl von Bildmerkmalen als anfängliche Objekt-Queries für den Decoder auszuwählen. Schließlich optimiert der Decoder mit zusätzlichen Vorhersage-Heads die Objekt-Queries iterativ, um Boxen und Konfidenzwerte zu generieren (Quelle).
Hauptmerkmale
- Effizienter Hybrid-Encoder: Baidus RT-DETR verwendet einen effizienten Hybrid-Encoder, der multiskalige Merkmale durch die Entkopplung von intra-skalaren Interaktionen und klassenübergreifender Fusion verarbeitet. Dieses einzigartige, auf Vision Transformer basierende Design reduziert die Rechenkosten und ermöglicht eine Objekterkennung in Echtzeit.
- IoU-bewusste Query-Selektion: Baidus RT-DETR verbessert die Initialisierung von Objekt-Queries durch die Nutzung der IoU-bewussten Query-Selektion. Dies ermöglicht es dem Modell, sich auf die relevantesten Objekte in der Szene zu konzentrieren, was die Erkennungsgenauigkeit verbessert.
- Anpassbare Inferenzgeschwindigkeit: Baidus RT-DETR unterstützt flexible Anpassungen der Inferenzgeschwindigkeit durch die Verwendung verschiedener Decoder-Layer ohne die Notwendigkeit eines erneuten Trainings. Diese Anpassungsfähigkeit erleichtert den praktischen Einsatz in verschiedenen Echtzeit-Objekterkennungsszenarien.
- NMS-freies Framework: Basierend auf DETR eliminiert RT-DETR die Notwendigkeit einer Non-Maximum Suppression Nachbearbeitung, was die Erkennungspipeline vereinfacht und potenziell die Effizienz verbessert.
- Anchor-freie Erkennung: Als Anchor-freier Detektor vereinfacht RT-DETR den Erkennungsprozess und kann die Generalisierung über verschiedene Datensätze hinweg verbessern.
Vortrainierte Modelle
Die Ultralytics Python API bietet vortrainierte PaddlePaddle RT-DETR Modelle in verschiedenen Größen an:
- RT-DETR-L: 53,0% AP auf COCO val2017, 114 FPS auf T4 GPU
- RT-DETR-X: 54,8% AP auf COCO val2017, 74 FPS auf T4 GPU
Zusätzlich hat Baidu im Juli 2024 RTDETRv2 veröffentlicht, das die ursprüngliche Architektur weiter verbessert und verbesserte Leistungsmetriken bietet.
Anwendungsbeispiele
Dieses Beispiel bietet einfache Beispiele für das Training und die Inferenz mit RT-DETR. Für die vollständige Dokumentation zu diesen und anderen Modi, siehe die Dokumentationsseiten zu Predict, Train, Val und Export. Modelle können auch auf Cloud-GPUs über die Ultralytics Platform trainiert werden.
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")Vortrainierte RT-DETR-Gewichte unterstützen zwei Inferenz-Zeit-Einstellungen, um die Latenz ohne erneutes Training zu reduzieren:
eval_idx: Beende die Dekodierung früher. Verwende für den standardmäßigen 6-Schicht-Decoder einen nullbasierten Index (0–5).eval_idx=5verwendet alle Schichten;eval_idx=3verwendet 4 Schichten. Auf einer T4 GPU mit TensorRT v10.11 verbessert sich RT-DETR-L von 8,0 ms / 52,7 mAP auf 7,4 ms / 52,5 mAP mit 4 Schichten.num_queries: Reduziere die Objekt-Queries (Standard: 300). Eine Verringerung auf 100 kann im selben Setup 7,4 ms / 51,7 mAP auf COCO erreichen. Bei Datensätzen mit weniger Objekten pro Bild ist der mAP-Abfall in der Regel geringer, aber halte den Wert über der maximal erwarteten Anzahl an Objekten pro Bild.
Beide Einstellungen können den mAP verringern – validiere den Kompromiss auf deinem Datensatz vor der Bereitstellung.
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)Unterstützte Aufgaben und Modi
Diese Tabelle präsentiert die Modelltypen, die spezifischen vortrainierten Gewichte, die von jedem Modell unterstützten Aufgaben sowie die verschiedenen Modi (Train, Val, Predict, Export), die durch ✅ Emojis gekennzeichnet sind.
| Modelltyp | Vortrainierte Gewichte | Unterstützte Aufgaben | Inferenz | Validierung | Training | Exportieren |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | Objekterkennung | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | Objekterkennung | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yaml und rtdetr-resnet101.yaml werden nur als YAML-Architekturen ausgeliefert. Ultralytics veröffentlicht vortrainierte Gewichte nur für rtdetr-l und rtdetr-x. Instanziiere die ResNet-Varianten aus der YAML (zum Beispiel RTDETR("rtdetr-resnet50.yaml")) und trainiere oder optimiere sie bei Bedarf.
Ideale Anwendungsfälle
RT-DETR eignet sich besonders gut für Anwendungen, die sowohl hohe Genauigkeit als auch Echtzeit-Leistung erfordern:
- Autonomes Fahren: Für eine zuverlässige Umgebungswahrnehmung in selbstfahrenden Systemen, bei denen sowohl Geschwindigkeit als auch Genauigkeit entscheidend sind. Erfahre mehr über KI beim autonomen Fahren.
- Fortgeschrittene Robotik: Ermöglicht Robotern die Durchführung komplexer Aufgaben, die eine genaue Objekterkennung und Interaktion in dynamischen Umgebungen erfordern. Erkunde die Rolle von KI in der Robotik.
- Medizinische Bildgebung: Für Anwendungen im Gesundheitswesen, bei denen die Präzision bei der Objekterkennung für Diagnosen entscheidend sein kann. Entdecke KI im Gesundheitswesen.
- Überwachungssysteme: Für Sicherheitsanwendungen, die eine Echtzeitüberwachung mit hoher Erkennungsgenauigkeit erfordern. Erfahre mehr über Sicherheitsalarmsysteme.
- Satellitenbildanalyse: Für die detaillierte Analyse hochauflösender Bilder, bei denen ein Verständnis des globalen Kontextes wichtig ist. Lies über Computer Vision in der Satellitenbildanalyse.
Zitate und Danksagungen
Wenn du Baidus RT-DETR in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das Original-Paper:
@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}
}Für RTDETRv2 kannst du das Paper von 2024 zitieren:
@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}
}Wir möchten Baidu und dem PaddlePaddle-Team für die Erstellung und Pflege dieser wertvollen Ressource für die Computer Vision-Community danken. Ihr Beitrag zur Fachwelt durch die Entwicklung des auf Vision Transformer basierenden Echtzeit-Objektdetektors, RT-DETR, wird sehr geschätzt.
FAQ
Was ist das RT-DETR-Modell von Baidu und wie funktioniert es?
Baidus RT-DETR (Real-Time Detection Transformer) ist ein fortschrittlicher Echtzeit-Objektdetektor, der auf der Vision-Transformer-Architektur aufbaut. Er verarbeitet multiskalige Merkmale effizient durch die Entkopplung von intra-skalaren Interaktionen und klassenübergreifender Fusion mittels seines effizienten Hybrid-Encoders. Durch die Verwendung der IoU-bewussten Query-Selektion konzentriert sich das Modell auf die relevantesten Objekte, was die Erkennungsgenauigkeit verbessert. Seine anpassungsfähige Inferenzgeschwindigkeit, die durch die Anpassung der Decoder-Layer ohne erneutes Training erreicht wird, macht RT-DETR für verschiedene Echtzeit-Objekterkennungsszenarien geeignet. Erfahre mehr über die Funktionen von RT-DETR im RT-DETR Arxiv-Paper.
Wie kann ich die von Ultralytics bereitgestellten vortrainierten RT-DETR-Modelle verwenden?
Du kannst die Ultralytics Python API nutzen, um vortrainierte PaddlePaddle RT-DETR-Modelle zu verwenden. Um beispielsweise ein auf COCO val2017 vortrainiertes RT-DETR-l Modell zu laden und hohe FPS auf einer T4 GPU zu erzielen, kannst du folgendes Beispiel verwenden:
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")Warum sollte ich Baidus RT-DETR gegenüber anderen Echtzeit-Objektdetektoren bevorzugen?
Baidus RT-DETR zeichnet sich durch seinen effizienten Hybrid-Encoder und die IoU-bewusste Query-Selektion aus, die die Rechenkosten drastisch senken und gleichzeitig eine hohe Genauigkeit beibehalten. Seine einzigartige Fähigkeit, die Inferenzgeschwindigkeit durch die Verwendung verschiedener Decoder-Layer ohne erneutes Training anzupassen, bietet eine erhebliche Flexibilität. Dies macht es besonders vorteilhaft für Anwendungen, die eine Echtzeit-Leistung auf beschleunigten Backends wie CUDA mit TensorRT erfordern, und übertrifft viele andere Echtzeit-Objektdetektoren. Die Transformer-Architektur bietet zudem ein besseres Verständnis des globalen Kontextes im Vergleich zu herkömmlichen CNN-basierten Detektoren.
Wie unterstützt RT-DETR eine anpassbare Inferenzgeschwindigkeit für verschiedene Echtzeit-Anwendungen?
Baidus RT-DETR ermöglicht flexible Anpassungen der Inferenzgeschwindigkeit durch die Verwendung verschiedener Decoder-Layer, ohne dass ein erneutes Training erforderlich ist. Diese Anpassungsfähigkeit ist entscheidend für die Skalierung der Leistung über verschiedene Echtzeit-Objekterkennungsaufgaben hinweg. Ob du eine schnellere Verarbeitung für geringere Präzisionsanforderungen oder langsamere, präzisere Erkennungen benötigst, RT-DETR kann an deine spezifischen Anforderungen angepasst werden. Diese Funktion ist besonders wertvoll bei der Bereitstellung von Modellen auf Geräten mit unterschiedlichen Rechenkapazitäten.
Kann ich RT-DETR-Modelle mit anderen Ultralytics-Modi verwenden, wie z. B. Training, Validierung und Export?
Ja, RT-DETR-Modelle sind mit verschiedenen Ultralytics-Modi kompatibel, einschließlich Training, Validierung, Vorhersage und Export. Du kannst dich auf die jeweilige Dokumentation beziehen, um detaillierte Anweisungen zur Verwendung dieser Modi zu erhalten: Train, Val, Predict und Export. Dies gewährleistet einen umfassenden Workflow für die Entwicklung und Bereitstellung deiner Objekterkennungslösungen. Das Ultralytics-Framework bietet eine konsistente API über verschiedene Modellarchitekturen hinweg, was die Arbeit mit RT-DETR-Modellen einfach macht.