Ultralytics YOLO27:

Baidus RT-DETR: Ein auf Vision Transformer basierender Objektdetektor für Echtzeitverarbeitung#

Übersicht#

Der von Baidu entwickelte Echtzeit-Erkennungstransformer (RT-DETR) ist ein moderner End-to-End-Objektdetektor, der Echtzeitleistung bei gleichzeitig hoher Genauigkeit bietet. Er basiert auf dem Konzept von DETR (dem NMS-freien Framework) und führt zugleich ein faltungsbasiertes Backbone sowie einen effizienten hybriden Encoder ein, um Echtzeitgeschwindigkeit zu erreichen. RT-DETR verarbeitet Merkmale aus mehreren Maßstäben effizient, indem Interaktionen innerhalb eines Maßstabs und die Fusion zwischen Maßstäben entkoppelt werden. Das Modell ist äußerst anpassungsfähig und unterstützt die flexible Anpassung der Inferenzgeschwindigkeit durch unterschiedliche Decoder-Schichten, ohne dass ein erneutes Training erforderlich ist. RT-DETR erzielt auf beschleunigten Backends wie CUDA mit TensorRT hervorragende Ergebnisse und übertrifft viele andere Objektdetektoren für Echtzeitanwendungen.



Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀

Übersicht über die Architektur des Baidu-RT-DETR-Modells Ü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 Merkmale aus mehreren Maßstäben mithilfe der Interaktion von Merkmalen innerhalb eines Maßstabs (AIFI) und des Moduls zur Fusion von Merkmalen zwischen Maßstäben (CCFM) in eine Sequenz von Bildmerkmalen um. Die IoU-bewusste Auswahl von Abfragen 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 zusätzlichen Vorhersageköpfen die Objektabfragen iterativ, um Boxen und Konfidenzwerte zu erzeugen (Quelle).

Wichtige Funktionen#

  • Effizienter hybrider Encoder: Baidus RT-DETR verwendet einen effizienten hybriden Encoder, der Merkmale aus mehreren Maßstäben verarbeitet, indem Interaktionen innerhalb eines Maßstabs und die Fusion zwischen Maßstäben entkoppelt werden. Dieses einzigartige, auf Vision Transformer basierende Design senkt den Rechenaufwand und ermöglicht eine Objekterkennung in Echtzeit.
  • IoU-bewusste Auswahl von Abfragen: Baidus RT-DETR verbessert die Initialisierung von Objektabfragen durch die Verwendung einer IoU-bewussten Auswahl von Abfragen. Dadurch kann sich das Modell auf die relevantesten Objekte in der Szene konzentrieren und die Erkennungsgenauigkeit verbessern.
  • Anpassbare Inferenzgeschwindigkeit: Baidus RT-DETR unterstützt die flexible Anpassung der Inferenzgeschwindigkeit durch die Verwendung unterschiedlicher Decoder-Schichten, ohne dass ein erneutes Training erforderlich ist. Diese Anpassungsfähigkeit erleichtert den praktischen Einsatz in verschiedenen Szenarien der Echtzeitobjekterkennung.
  • NMS-freies Framework: RT-DETR basiert auf DETR und macht eine Nachverarbeitung durch Non-Maximum Suppression überflüssig. Dadurch wird die Erkennungspipeline vereinfacht und möglicherweise die Effizienz verbessert.
  • 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 stellt vortrainierte RT-DETR-Modelle für PaddlePaddle in verschiedenen Größen bereit:

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

Zusätzlich hat Baidu im Juli 2024 RTDETRv2 veröffentlicht, das die ursprüngliche Architektur mit verbesserten Leistungskennzahlen weiter optimiert.

Verwendungsbeispiele#

Dieses Beispiel enthält einfache Beispiele für das Training und die Inferenz mit RT-DETR. Eine vollständige Dokumentation dieser und weiterer Modi findest du auf den Dokumentationsseiten zu Predict, Train, Val und Export. Modelle können außerdem über Ultralytics Platform auf Cloud-GPUs trainiert werden.

Beispiel
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")
Deterministisches Training

Setze deterministic=False, wenn du RT-DETR mit CUDA und PyTorch 2.0 oder höher trainierst. Die verformbare Aufmerksamkeit verwendet F.grid_sample, für die kein deterministischer CUDA-Rückwärtslauf existiert. Daher kann deterministic=True die Reproduzierbarkeit des Laufs nicht sicherstellen und den Trainingsdurchsatz verringern. seed steuert weiterhin die Initialisierung der Gewichte, die Datenreihenfolge und die Auswahl der Augmentierungen.

Abwägungen bei schnellerer Inferenz

Die vortrainierten RT-DETR-Gewichte unterstützen zwei Einstellungen zur Inferenzzeit, um die Latenz ohne erneutes Training zu reduzieren:

  • eval_idx: Beende die Decodierung vorzeitig. Verwende für den standardmäßigen Decoder mit 6 Schichten einen nullbasierten Index (05). eval_idx=5 verwendet alle Schichten; eval_idx=3 verwendet 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: Reduziere die Anzahl der Objektabfragen (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 fällt der mAP-Verlust typischerweise geringer aus. Der Wert sollte jedoch über der maximal erwarteten Objektanzahl pro Bild liegen.

Beide Einstellungen können den mAP verringern – validiere die Abwägung daher vor der Bereitstellung 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), die durch ✅-Emojis gekennzeichnet sind.

ModelltypVortrainierte GewichteUnterstützte AufgabenTrainingValidierungInferenzExport
RT-DETR Largertdetr-l.ptObjekterkennung
RT-DETR Extra-Largertdetr-x.ptObjekterkennung
Varianten nur mit Architektur

rtdetr-resnet50.yaml und rtdetr-resnet101.yaml werden ausschließlich als YAML-Architekturen bereitgestellt. Ultralytics veröffentlicht vortrainierte Gewichte nur für rtdetr-l und rtdetr-x. Initialisiere die ResNet-Varianten aus YAML (beispielsweise RTDETR("rtdetr-resnet50.yaml")) und trainiere oder feinjustiere sie nach Bedarf.

Ideale Anwendungsfälle#

RT-DETR eignet sich besonders für Anwendungen, die sowohl hohe Genauigkeit als auch Echtzeitleistung erfordern:

Zitate und Danksagungen#

Wenn du Baidus RT-DETR in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das Originalpapier:

Zitat
@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:

Zitat
@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 zu diesem Bereich durch die Entwicklung des auf Vision Transformer basierenden Echtzeit-Objektdetektors RT-DETR wird sehr geschätzt.

FAQ#

  • Baidus RT-DETR (Echtzeit-Erkennungstransformer) ist ein fortschrittlicher Echtzeit-Objektdetektor, der auf der Vision-Transformer-Architektur basiert. Durch seinen effizienten hybriden Encoder verarbeitet er Merkmale aus mehreren Maßstäben, indem Interaktionen innerhalb eines Maßstabs und die Fusion zwischen Maßstäben entkoppelt werden. Mithilfe der IoU-bewussten Auswahl von Abfragen konzentriert sich das Modell auf die relevantesten Objekte und verbessert dadurch die Erkennungsgenauigkeit. Seine anpassbare Inferenzgeschwindigkeit, die durch die Anpassung der Decoder-Schichten ohne erneutes Training erreicht wird, macht RT-DETR für verschiedene Szenarien der Echtzeitobjekterkennung geeignet. Erfahre mehr über die Funktionen von RT-DETR im Arxiv-Paper zu RT-DETR.

  • Du kannst die Ultralytics Python API nutzen, um vortrainierte RT-DETR-Modelle für PaddlePaddle zu verwenden. Um beispielsweise ein auf COCO val2017 vortrainiertes RT-DETR-l-Modell zu laden und eine hohe FPS auf einer T4-GPU zu erreichen, kannst du das folgende Beispiel verwenden:

    Beispiel
    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")
  • Baidus RT-DETR zeichnet sich durch seinen effizienten hybriden Encoder und die IoU-bewusste Auswahl von Abfragen aus, die den Rechenaufwand deutlich reduzieren und gleichzeitig eine hohe Genauigkeit gewährleisten. Die einzigartige Möglichkeit, die Inferenzgeschwindigkeit durch die Verwendung unterschiedlicher Decoder-Schichten ohne erneutes Training anzupassen, bietet zusätzliche Flexibilität. Dadurch eignet sich das Modell besonders für Anwendungen, die Echtzeitleistung auf beschleunigten Backends wie CUDA mit TensorRT erfordern, und übertrifft viele andere Objektdetektoren für Echtzeitanwendungen. Die Transformer-Architektur ermöglicht außerdem im Vergleich zu herkömmlichen CNN-basierten Detektoren ein besseres Verständnis globaler Zusammenhänge.

  • Baidus RT-DETR ermöglicht die flexible Anpassung der Inferenzgeschwindigkeit durch die Verwendung unterschiedlicher Decoder-Schichten, ohne dass ein erneutes Training erforderlich ist. Diese Anpassungsfähigkeit ist entscheidend, um die Leistung über verschiedene Aufgaben der Echtzeitobjekterkennung hinweg zu skalieren. Unabhängig davon, ob du eine schnellere Verarbeitung für geringere Anforderungen an die Präzision oder langsamere, genauere Erkennungen benötigst, lässt sich RT-DETR an deine spezifischen Anforderungen anpassen. 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 RT-DETR-Prüfpunkte von Ultralytics verwenden 300 Objektabfragen. Daher können sie pro Bild nicht mehr als 300 Erkennungen zurückgeben, selbst wenn du max_det auf einen höheren Wert setzt.

    Verwende max_det, um die Anzahl der zurückgegebenen Erkennungen zu reduzieren, beispielsweise auf max_det=100, wenn du nur wenige Vorhersagen mit hoher Konfidenz benötigst. Wenn dein Datensatz mehr als 300 Objekte pro Bild enthalten kann, trainiere ein benutzerdefiniertes RT-DETR-Modell mit einer höheren Anzahl von Decoder-Abfragen (nq) in der Model-YAML. Das Ändern dieses Werts in einem vortrainierten Prüfpunkt nach dem Training ist nicht gleichwertig und erfordert ein erneutes Training, damit die zusätzlichen Abfragen erlernt werden.

  • Ja, RT-DETR-Modelle sind mit verschiedenen Ultralytics-Modi kompatibel, darunter Training, Validierung, Vorhersage und Export. Ausführliche Anleitungen zur Nutzung dieser Modi findest du in der jeweiligen Dokumentation: Train, Val, Predict und Export. Dadurch erhältst du einen umfassenden Workflow für die Entwicklung und Bereitstellung deiner Lösungen zur Objekterkennung. Das Ultralytics-Framework stellt über verschiedene Modellarchitekturen hinweg eine einheitliche API bereit und erleichtert so die Arbeit mit RT-DETR-Modellen.

Kommentare