Baidus RT-DETR: Ein Vision-Transformer-basierter Echtzeit-Objektdetektor#
Übersicht#
Real-Time Detection Transformer (RT-DETR), entwickelt von Baidu, ist ein hochmoderner End-to-End-Objektdetektor, der Echtzeitleistung bei gleichzeitig hoher Genauigkeit bietet. Er basiert auf der Idee von DETR (dem NMS-freien Framework) und führt gleichzeitig ein Conv-basiertes Backbone sowie einen effizienten hybriden Encoder ein, um Echtzeitgeschwindigkeit zu erreichen. RT-DETR verarbeitet multiskalige Merkmale effizient durch Entkopplung der Intraskalen-Interaktion und der skalenübergreifenden Fusion. Das Modell ist äußerst anpassungsfähig und unterstützt die flexible Anpassung der Inferenzgeschwindigkeit mithilfe verschiedener Decoder-Schichten ohne Neutraining. 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 Diagramm der RT-DETR-Modellarchitektur zeigt die letzten drei Stufen des Backbones {S3, S4, S5} als Eingabe für den Encoder. Der effiziente hybride Encoder wandelt multiskalige Merkmale durch Intraskalen-Merkmalsinteraktion (AIFI) und ein skalenübergreifendes Merkmalsfusionsmodul (CCFM) in eine Sequenz von Bildmerkmalen um. Die IoU-bewusste Abfrageauswahl wird verwendet, um eine feste Anzahl von Bildmerkmalen auszuwählen, die als anfängliche Objektabfragen für den Decoder dienen. Schließlich optimiert der Decoder mit Hilfskorrigierenden Vorhersageköpfen Objektabfragen iterativ, um Boxen und Konfidenzwerte zu generieren (Quelle).
Hauptfunktionen#
- Effizienter hybrider Encoder: Baidus RT-DETR verwendet einen effizienten hybriden Encoder, der multiskalige Merkmale durch Entkopplung der Intraskalen-Interaktion und der skalenübergreifenden Fusion verarbeitet. Dieses einzigartige, auf Vision Transformers basierende Design reduziert die Rechenkosten und ermöglicht Objekterkennung in Echtzeit.
- IoU-bewusste Query-Selektion: Baidus RT-DETR verbessert die Initialisierung von Objekt-Queries durch den Einsatz von IoU-bewusster Query-Selektion. Dies ermöglicht es dem Modell, sich auf die relevantesten Objekte in der Szene zu konzentrieren, was die Genauigkeit der Erkennung verbessert.
- Anpassbare Inferenzgeschwindigkeit: Baidus RT-DETR unterstützt flexible Anpassungen der Inferenzgeschwindigkeit durch die Verwendung unterschiedlicher 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 macht RT-DETR die Nachbearbeitung zur Non-Maximum Suppression überflüssig, wodurch die Erkennungspipeline vereinfacht und die Effizienz möglicherweise gesteigert wird.
- Ankerfreie Erkennung: Als ankerfreier 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 mit verschiedenen Skalierungen:
- 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 mit verbesserten Leistungsmetriken weiter optimiert.
Anwendungsbeispiele#
Dieses Beispiel bietet einfache RT-DETR-Trainings- und Inferenzbeispiele. Vollständige Dokumentationen zu diesen und anderen Modi finden Sie auf den Dokumentationsseiten Predict, Train, Val und Export. Modelle können auch über die Ultralytics Platform auf Cloud-GPUs 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")Setze deterministic=False, wenn du RT-DETR auf CUDA mit PyTorch 2.0 oder neuer trainierst. Seine deformierbare Attention verwendet F.grid_sample, das kein deterministisches CUDA Backward besitzt, weshalb deterministic=True den Durchlauf nicht reproduzierbar machen kann und den Trainingsdurchsatz verringern kann. seed steuert weiterhin die Gewichtsinitialisierung, die Datenreihenfolge und das Augmentierungs-Sampling.
Die vortrainierten RT-DETR Gewichte unterstützen zwei Einstellungen während der Inferenzzeit, um die Latenz ohne erneutes Training zu reduzieren:
eval_idx: Dekodierung vorzeitig stoppen. Verwenden Sie für den Standard-Decoder mit 6 Schichten einen auf Null basierenden 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 mit 4 Schichten von 8,0 ms / 52,7 mAP auf 7,4 ms / 52,5 mAP.num_queries: Objektabfragen reduzieren (Standard: 300). Eine Reduzierung 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-Rückgang typischerweise geringer, aber halten Sie den Wert über der maximal erwarteten Anzahl von Objekten pro Bild.
Beide Einstellungen können den mAP senken – validiere den Kompromiss vor dem Deployment auf deinem Datensatz.
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)Unterstützte Aufgaben und Modi#
Diese Tabelle zeigt die Modelltypen, die spezifischen vortrainierten Gewichte, die von jedem Modell unterstützten Aufgaben und die verschiedenen unterstützten Modi (Train, Val, Predict, Export), gekennzeichnet durch ✅-Emojis.
| Modelltyp | Vortrainierte Gewichte | Unterstützte Aufgaben | Training | Validation | Inference | 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. Instanziieren Sie die ResNet-Varianten aus YAML (zum Beispiel RTDETR("rtdetr-resnet50.yaml")) und trainieren oder feinabstimmen Sie diese nach Bedarf.
Ideale Anwendungsfälle#
RT-DETR ist besonders gut für Anwendungen geeignet, die sowohl hohe Genauigkeit als auch Echtzeitleistung erfordern:
- Autonomes Fahren: Für eine zuverlässige Umweltwahrnehmung in selbstfahrenden Systemen, bei denen sowohl Geschwindigkeit als auch Genauigkeit entscheidend sind. Erfahren Sie mehr über KI in selbstfahrenden Autos.
- Fortgeschrittene Robotik: Roboter in die Lage versetzen, komplexe Aufgaben auszuführen, die eine präzise Objekterkennung und Interaktion in dynamischen Umgebungen erfordern. Erkunden Sie die Rolle von KI in der Robotik.
- Medizinische Bildgebung: Für Anwendungen im Gesundheitswesen, bei denen Präzision bei der Objekterkennung für die Diagnostik entscheidend sein kann. Entdecken Sie KI im Gesundheitswesen.
- Überwachungssysteme: Für Sicherheitsanwendungen, die Echtzeitüberwachung mit hoher Erkennungsgenauigkeit erfordern. Erfahren Sie mehr über Sicherheitsalarmsysteme.
- Satellitenbildanalyse: Für die detaillierte Analyse hochauflösender Bilddaten, bei der das Verständnis des globalen Kontexts wichtig ist. Lesen Sie über Computer Vision in Satellitenbildern.
Zitate und Danksagungen#
Wenn Sie Baidus RT-DETR in Ihrer Forschung oder Entwicklungsarbeit verwenden, zitieren Sie bitte das Originalpapier:
@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 können Sie das Papier 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 zum Bereich durch die Entwicklung des auf Vision Transformers basierenden Echtzeit-Objektdetektors RT-DETR wird sehr geschätzt.
FAQ#
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 Entkopplung der Intraskalen-Interaktion und skalenübergreifenden Fusion über seinen effizienten hybriden Encoder. Durch den Einsatz einer IoU-bewussten Abfrageauswahl konzentriert sich das Modell auf die relevantesten Objekte und verbessert so die Erkennungsgenauigkeit. Seine anpassbare Inferenzgeschwindigkeit, die durch das Anpassen von Decoder-Schichten ohne Neutraining erreicht wird, macht RT-DETR für verschiedene Echtzeit-Objekterkennungsszenarien geeignet. Erfahren Sie mehr über RT-DETR-Funktionen im RT-DETR Arxiv-Papier.
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 erreichen, kannst du das folgende Beispiel verwenden:
Beispielfrom 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")Baidus RT-DETR zeichnet sich durch seinen effizienten hybriden Encoder und die IoU-bewusste Abfrageauswahl aus, die die Rechenkosten drastisch reduzieren und gleichzeitig eine hohe Genauigkeit aufrecht erhalten. Seine einzigartige Fähigkeit, die Inferenzgeschwindigkeit durch die Verwendung verschiedener Decoder-Schichten ohne Neutraining anzupassen, bietet eine erhebliche Flexibilität. Dies macht es besonders vorteilhaft für Anwendungen, die Echtzeitleistung auf beschleunigten Backends wie CUDA mit TensorRT erfordern, und übertrifft viele andere Echtzeit-Objektdetektoren. Die Transformer-Architektur bietet im Vergleich zu herkömmlichen CNN-basierten Detektoren zudem ein besseres Verständnis des globalen Kontexts.
Baidus RT-DETR ermöglicht flexible Anpassungen der Inferenzgeschwindigkeit durch die Verwendung verschiedener Decoder-Schichten, ohne dass ein Neutraining erforderlich ist. Diese Anpassungsfähigkeit ist entscheidend für die Skalierung der Leistung über verschiedene Echtzeit-Objekterkennungsaufgaben hinweg. Egal, ob Sie eine schnellere Verarbeitung für geringere Genauigkeitsanforderungen oder langsamere, präzisere Erkennungen benötigen, RT-DETR kann auf Ihre spezifischen Anforderungen zugeschnitten werden. Diese Funktion ist besonders wertvoll, wenn Modelle auf Geräten mit unterschiedlichen Rechenkapazitäten bereitgestellt werden.
Nein. Bei RT-DETR begrenzt
max_det, wie viele Vorhersagen nach der Inferenz zurückgegeben werden, erhöht jedoch nicht die Anzahl der vom Decoder erzeugten Objektabfragen. Die vortrainierten Ultralytics RT-DETR-Prüfpunkte verwenden 300 Objektabfragen, sodass sie pro Bild nicht mehr als 300 Erkennungen zurückgeben können, selbst wenn Siemax_detauf einen größeren Wert einstellen.Verwenden Sie
max_det, um die zurückgegebenen Erkennungen zu reduzieren, zum Beispielmax_det=100, wenn Sie nur wenige Vorhersagen mit hoher Konfidenz benötigen. Wenn Ihr Datensatz mehr als 300 Objekte pro Bild enthalten kann, trainieren Sie ein benutzerdefiniertes RT-DETR-Modell mit einer höheren Decoder-Abfrageanzahl (nq) in der Modell-YAML; das Ändern dieses Wertes bei einem vortrainierten Prüfpunkt nach dem Training ist nicht äquivalent und erfordert ein Neutraining, um die zusätzlichen Abfragen zu lernen.Ja, RT-DETR-Modelle sind mit verschiedenen Ultralytics-Modi kompatibel, einschließlich Training, Validierung, Vorhersage und Export. Sie können sich 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 Ihrer Objekterkennungslösungen. Das Ultralytics-Framework bietet eine konsistente API über verschiedene Modellarchitekturen hinweg, wodurch die Arbeit mit RT-DETR-Modellen erleichtert wird.