YOLO Vision 2026:

TensorRT-Export für YOLO26-Modelle#

Das Bereitstellen von computer vision-Modellen in Leistungsumgebungen kann ein Format erfordern, das Geschwindigkeit und Effizienz maximiert. Dies gilt insbesondere dann, wenn du dein Modell auf NVIDIA-GPUs bereitstellst.

Durch die Nutzung des TensorRT-Exportformats kannst du deine Ultralytics YOLO26-Modelle für eine schnelle und effiziente Inferenz auf NVIDIA-Hardware optimieren. Diese Anleitung bietet dir leicht verständliche Schritte für den Konvertierungsprozess und hilft dir, die fortschrittliche Technologie von NVIDIA optimal in deinen deep learning-Projekten zu nutzen.

TensorRT#

NVIDIA TensorRT optimization workflow

TensorRT, entwickelt von NVIDIA, ist ein fortschrittliches Software Development Kit (SDK) für die Hochgeschwindigkeits-Deep-Learning-Inferenz. Es eignet sich hervorragend für Echtzeitanwendungen wie die object detection.

Dieses Toolkit optimiert Deep-Learning-Modelle für NVIDIA GPUs und führt zu schnelleren sowie effizienteren Abläufen. TensorRT-Modelle durchlaufen eine TensorRT-Optimierung, die Techniken wie Layer-Fusion, Präzisionskalibrierung (INT8 und FP16), dynamisches Tensor-Speichermanagement und Kernel-Auto-Tuning umfasst. Die Konvertierung von Deep-Learning-Modellen in das TensorRT-Format ermöglicht es Entwicklern, das volle Potenzial von NVIDIA GPUs auszuschöpfen.

TensorRT ist bekannt für seine Kompatibilität mit verschiedenen Modellformaten, darunter TensorFlow, PyTorch und ONNX, und bietet Entwicklern eine flexible Lösung zur Integration und Optimierung von Modellen aus unterschiedlichen Frameworks. Diese Vielseitigkeit ermöglicht eine effiziente model deployment über diverse Hard- und Softwareumgebungen hinweg.

TensorRT-Engines sind Hardware- und Laufzeit-spezifisch.

TensorRT profiliert und stimmt eine Engine auf ihrer Build-GPU ab. Erstelle sie für die Ziel-GPU-Architektur und passe die TensorRT/CUDA-Laufzeitumgebung an; betrachte eine .engine-Datei nicht als portables Modellformat. Für die Edge-Bereitstellung bietet die Ultralytics Platform acht Jetson-Zielauswahlen, bei denen der physische Build- und Validierungsstatus für jede dokumentiert ist, oder du kannst sie lokal auf dem Zielgerät exportieren.

Hauptmerkmale von TensorRT-Modellen#

TensorRT-Modelle bieten eine Reihe wichtiger Funktionen, die zu ihrer Effizienz und Effektivität bei der Hochgeschwindigkeits-Deep-Learning-Inferenz beitragen:

  • Präzisionskalibrierung: TensorRT unterstützt die Präzisionskalibrierung, wodurch Modelle für spezifische Genauigkeitsanforderungen feinabgestimmt werden können. Dies beinhaltet die Unterstützung für Formate mit reduzierter Präzision wie INT8 und FP16, die die Inferenzgeschwindigkeit weiter steigern können, während ein akzeptables Genauigkeitsniveau erhalten bleibt.

  • Layer Fusion: Der TensorRT-Optimierungsprozess umfasst das Zusammenlegen von Layern, bei dem mehrere Schichten eines neural network zu einer einzigen Operation kombiniert werden. Dies reduziert den Rechenaufwand und verbessert die Inferenzgeschwindigkeit, indem Speicherzugriffe und Berechnungen minimiert werden.

TensorRT neural network layer fusion optimization

  • Dynamisches Tensor-Speichermanagement: TensorRT verwaltet die Tensorspeichernutzung während der Inferenz effizient, reduziert den Speicher-Overhead und optimiert die Speicherzuweisung. Dies führt zu einer effizienteren GPU-Speichernutzung.

  • Automatisches Kernel-Tuning: TensorRT wendet automatisches Kernel-Tuning an, um den am besten optimierten GPU-Kernel für jede Schicht des Modells auszuwählen. Dieser adaptive Ansatz stellt sicher, dass das Modell die Rechenleistung der GPU optimal ausnutzt.

Bereitstellungsoptionen in TensorRT#

Bevor wir uns den Code für den Export von YOLO26-Modellen in das TensorRT-Format ansehen, wollen wir verstehen, wo TensorRT-Modelle normalerweise verwendet werden.

TensorRT bietet mehrere Bereitstellungsoptionen, wobei jede Option das Gleichgewicht zwischen Integrationsfreundlichkeit, Leistungsoptimierung und Flexibilität unterschiedlich gewichtet:

  • Bereitstellung in TensorFlow: Diese Methode integriert TensorRT in TensorFlow, sodass optimierte Modelle in einer vertrauten TensorFlow-Umgebung ausgeführt werden können. Sie ist nützlich für Modelle mit einer Mischung aus unterstützten und nicht unterstützten Schichten, da TF-TRT diese effizient verarbeiten kann.

NVIDIA TensorRT optimization workflow

  • Eigenständige TensorRT-Runtime-API: Bietet eine granulare Steuerung und ist ideal für leistungskritische Anwendungen. Sie ist komplexer, ermöglicht jedoch die benutzerdefinierte Implementierung nicht unterstützter Operatoren.

  • NVIDIA Triton Inference Server: Eine Option, die Modelle verschiedener Frameworks unterstützt. Sie ist besonders für Cloud- oder Edge-Inferenz geeignet und bietet Funktionen wie gleichzeitige Modellausführung und Modellanalyse.

Unterstützte Aufgaben#

Der TensorRT-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Familie, die diese Köpfe bereitstellt.

AufgabeYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Exportieren von YOLO26-Modellen nach TensorRT#

Du kannst die Ausführungseffizienz verbessern und die Leistung optimieren, indem du YOLO26-Modelle in das TensorRT-Format konvertierst.

Installation#

Um das erforderliche Paket zu installieren, führe Folgendes aus:

Installation
# Install the required package for YOLO26
pip install ultralytics

Detaillierte Anweisungen und Best Practices zum Installationsprozess findest du in unserer YOLO26-Installationsanleitung. Solltest du bei der Installation der erforderlichen Pakete für YOLO26 auf Schwierigkeiten stoßen, ziehe unsere Anleitung für häufige Probleme für Lösungen und Tipps heran.

Verwendung#

Bevor du in die Nutzungshinweise eintauchst, solltest du dir unbedingt die Reihe der von Ultralytics angebotenen YOLO26-Modelle ansehen. Dies hilft dir dabei, das am besten geeignete Modell für deine Projektanforderungen auszuwählen.

Das TensorRT-Format unterstützt die Modi Export, Predict und Validate. Für Inferenz und Validierung ist eine NVIDIA-GPU erforderlich. Exportiere dein Modell und lade es anschließend, um die Inferenz auszuführen oder seine Genauigkeit zu validieren.

Exportieren
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo26n.engine'
Vorhersagen
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validieren
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Export-Argumente#

ArgumentTypStandardBeschreibung
formatstr'engine'Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen definiert.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein.
quantizeint oder strNoneQuantisierungspräzision: 16 (FP16) oder 8 (INT8/PTQ; erfordert Kalibrierung data/fraction); 32/nicht gesetzt ist FP32. Ersetzt die veralteten Flags half/int8.
dynamicboolFalseErmöglicht dynamische Eingabegrößen, was die Flexibilität bei der Verarbeitung variierender Bilddimensionen erhöht.
simplifyboolTrueVereinfacht den Modellgraphen mit onnxslim, wodurch möglicherweise Leistung und Kompatibilität verbessert werden.
opsetintNoneGibt die ONNX opset-Version für den zwischengeschalteten ONNX-Graph an. Falls nicht festgelegt, wird die neueste unterstützte Version verwendet.
workspacefloat oder NoneNoneLegt die maximale Arbeitsbereichsgröße in GiB für TensorRT-Optimierungen fest und gleicht dabei Speicherauslastung und Leistung aus; verwende None für die automatische Zuweisung durch TensorRT bis zum Gerätemaximum.
nmsboolFalseFügt Non-Maximum Suppression (NMS) hinzu, was für eine genaue und effiziente Detektions-Nachbearbeitung unerlässlich ist.
batchint1Legt die Batch-Inferenzgröße des exportierten Modells fest oder die maximale Anzahl an Bildern, die das exportierte Modell im Modus predict gleichzeitig verarbeitet.
datastrNonePfad zum dataset-YAML, das für die Quantisierung unerlässlich ist; für die Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name verwendet. Wenn dies bei quantize=8 weggelassen wird, wählt Ultralytics das Standard-Kalibrierungs-Dataset für die Modellaufgabe aus.
fractionfloat, int oder list1.0Kalibrierungs-Teilmenge als Verhältnis, Bildanzahl oder [train, val]-Verhältnisse/-Anzahlen; eine Liste schränkt train oder val ein, während test vollständig bleibt.
devicestrNoneGibt das Gerät für den Export an: GPU (device=0), DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1).
Tipp

Bitte stelle sicher, dass du eine GPU mit CUDA-Unterstützung verwendest, wenn du nach TensorRT exportierst.

TensorRT 11.0 und DLA

TensorRT 11.0 unterstützt DLA nicht; verwende TensorRT 10.x für device=dla:0 oder device=dla:1 oder exportiere eine TensorRT 11.0-GPU-Engine.

Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.

Exportieren von TensorRT mit INT8-Quantisierung#

Das Exportieren von Ultralytics YOLO-Modellen mit TensorRT und INT8-precision führt eine Quantisierung nach dem Training (PTQ) aus. TensorRT verwendet für PTQ eine Kalibrierung, die die Verteilung der Aktivierungen in jedem Aktivierungstensor misst, während das YOLO-Modell die Inferenz an repräsentativen Eingabedaten verarbeitet, und diese Verteilung dann verwendet, um Skalenwerte für jeden Tensor abzuschätzen. Jeder Aktivierungstensor, der für eine Quantisierung in Frage kommt, hat eine zugehörige Skala, die durch einen Kalibrierungsprozess abgeleitet wird.

TensorRT 11 Quantisierung

TensorRT 11 hat die implizite Quantisierung und die IInt8Calibrator-Schnittstelle entfernt. Ab TensorRT 11 führt Ultralytics die INT8-Quantisierung mit der expliziten Quantisierung von NVIDIA ModelOpt durch, die Q/DQ-Knoten in den ONNX-Graphen einfügt, bevor eine streng typisierte Engine erstellt wird, und FP16 wird mit der ModelOpt AutoCast-Mischpräzisionskonvertierung angewendet. Die Argumente quantize=8, quantize=16 und data funktionieren auf dieselbe Weise; ModelOpt wird bei der ersten Verwendung automatisch installiert. Bei TensorRT 7-10 wird stattdessen der unten beschriebene Legacy-Kalibrator verwendet.

Bei der Verarbeitung implizit quantisierter Netzwerke nutzt TensorRT INT8 opportunistisch, um die Layer-Ausführungszeit zu optimieren. Wenn eine Schicht in INT8 schneller läuft und zugewiesene Quantisierungsskalen an ihren Dateneingängen und -ausgängen hat, wird dieser Schicht ein Kernel mit INT8-Präzision zugewiesen; andernfalls wählt TensorRT eine Präzision von entweder FP32 oder FP16 für den Kernel, basierend darauf, was für diese Schicht zu einer schnelleren Ausführungszeit führt.

Tipp

Es ist entscheidend, sicherzustellen, dass für den Export mit INT8-Präzision dasselbe Gerät verwendet wird, das später auch die TensorRT-Modellgewichte für die Bereitstellung einsetzt, da die Kalibrierungsergebnisse je nach Gerät variieren können.

Konfiguration des INT8-Exports#

Die Argumente, die beim export für ein Ultralytics YOLO-Modell angegeben werden, beeinflussen die Leistung des exportierten Modells stark. Sie müssen zudem basierend auf den verfügbaren Geräteressourcen ausgewählt werden, allerdings sollten die Standardargumente für die meisten diskreten NVIDIA-GPUs der Ampere-Architektur (oder neuer) funktionieren. Der verwendete Kalibrierungsalgorithmus ist "MINMAX_CALIBRATION" für GPU-Exporte, während DLA-Exporte auf NVIDIA Jetson "ENTROPY_CALIBRATION_2" verwenden. Weitere Details zu den verfügbaren Optionen kannst du im TensorRT Developer Guide nachlesen. Ultralytics-Tests ergaben, dass "MINMAX_CALIBRATION" die beste Wahl für GPU-Exporte ist, und der Algorithmus wird basierend auf dem Exportgerät automatisch ausgewählt.

  • workspace : Steuert die Größe (in GiB) der Gerätespeicherzuweisung während der Konvertierung der Modellgewichte.

    • Passe den Wert von workspace an deine Kalibrierungsanforderungen und die verfügbaren Ressourcen an. Während ein größerer workspace die Kalibrierungszeit verlängern kann, ermöglicht es TensorRT, einen größeren Bereich von Optimierungstaktiken zu untersuchen, was die Modellleistung und -genauigkeit möglicherweise verbessert. Umgekehrt kann ein kleinerer workspace die Kalibrierungszeit verkürzen, aber die Optimierungsstrategien einschränken, was sich auf die Qualität des quantisierten Modells auswirkt.

    • Der Standardwert ist workspace=None, wodurch TensorRT Speicher automatisch zuweisen kann. Bei manueller Konfiguration muss dieser Wert möglicherweise erhöht werden, wenn die Kalibrierung abstürzt (ohne Warnung beendet wird).

    • TensorRT meldet während des Exports UNSUPPORTED_STATE, wenn der Wert für workspace größer ist als der dem Gerät zur Verfügung stehende Speicher, was bedeutet, dass der Wert für workspace verringert oder auf None gesetzt werden sollte.

    • Wenn workspace auf den Maximalwert eingestellt ist und die Kalibrierung fehlschlägt/abstürzt, erwäge die Verwendung von None für die automatische Zuweisung oder reduziere die Werte für imgsz und batch, um den Speicherbedarf zu senken.

    • Denke daran, dass die Kalibrierung für INT8 gerätespezifisch ist; das Ausleihen einer "High-End"-GPU für die Kalibrierung könnte zu einer schlechten Leistung führen, wenn die Inferenz später auf einem anderen Gerät ausgeführt wird.

  • batch : Die maximale Batch-Größe, die für die Inferenz verwendet wird. Während der Inferenz können kleinere Batches verwendet werden, aber die Inferenz akzeptiert keine Batches, die größer sind als angegeben.

Hinweis

Die Verwendung kleiner Batches kann während der INT8-Kalibrierung zu einer ungenauen Skalierung führen. Dies liegt daran, dass sich der Prozess basierend auf den gesehenen Daten anpasst. Kleine Batches erfassen möglicherweise nicht den vollständigen Wertebereich, was zu Problemen bei der endgültigen Kalibrierung führt. Die Verwendung einer größeren batch size trägt dazu bei, repräsentativere Kalibrierungsergebnisse sicherzustellen.

Experimente von NVIDIA führten zu der Empfehlung, bei der INT8-Quantisierungskalibrierung mindestens 500 Kalibrierungsbilder zu verwenden, die für die Daten deines Modells repräsentativ sind. Dies ist eine Richtlinie und keine strenge Anforderung, und du musst damit experimentieren, was erforderlich ist, um für deinen Datensatz gute Ergebnisse zu erzielen. Da die Kalibrierungsdaten für die INT8-Kalibrierung mit TensorRT erforderlich sind, stelle sicher, dass du das Argument data verwendest, wenn quantize=8 für TensorRT gilt, und verwende data="my_dataset.yaml", wodurch die Bilder aus der validation zur Kalibrierung herangezogen werden. Wenn beim Export nach TensorRT mit INT8-Quantisierung kein Wert für data übergeben wird, wird standardmäßig einer der "kleinen" Beispieldatensätze basierend auf der Modellaufgabe verwendet, anstatt einen Fehler auszugeben.

Beispiel
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(
    format="engine",
    dynamic=True,  # (1)!
    batch=8,  # (2)!
    workspace=4,  # (3)!
    quantize=8,
    data="coco.yaml",  # (4)!
)

# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Exporte mit dynamischen Achsen – dies ist beim Exportieren mit quantize=8 standardmäßig aktiviert, selbst wenn es nicht explizit festgelegt wird. Weitere Informationen findest du unter export arguments.
  2. Legt eine maximale Batch-Größe von 8 für das exportierte Modell und die INT8-Kalibrierung fest.
  3. Zuweisung von 4 GiB Speicher anstelle der Zuweisung des gesamten Geräts für den Konvertierungsprozess.
  4. Verwendet das COCO-Dataset für die Kalibrierung, insbesondere die Bilder, die für die validation verwendet werden (insgesamt 5.000).
Kalibrierungs-Cache

TensorRT generiert eine Kalibrierungs-.cache, die wiederverwendet werden kann, um den Export zukünftiger Modellgewichte unter Verwendung derselben Daten zu beschleunigen. Dies kann jedoch zu einer schlechten Kalibrierung führen, wenn sich die Daten stark unterscheiden oder wenn der Wert von batch drastisch geändert wird. Unter diesen Umständen sollte die vorhandene .cache umbenannt und in ein anderes Verzeichnis verschoben oder vollständig gelöscht werden.

Vorteile der Nutzung von YOLO mit TensorRT INT8#

  • Reduzierte Modellgröße: Die Quantisierung von FP32 auf INT8 kann die Modellgröße um das Vierfache reduzieren (auf der Festplatte oder im Speicher), was zu schnelleren Downloadzeiten, geringerem Speicherbedarf und einem kleineren Speicher-Footprint bei der Bereitstellung eines Modells führt.

  • Geringerer Stromverbrauch: Operationen mit reduzierter Präzision für INT8-exportierte YOLO-Modelle können im Vergleich zu FP32-Modellen weniger Strom verbrauchen, insbesondere bei batteriebetriebenen Geräten.

  • Verbesserte Inferenzgeschwindigkeiten: TensorRT optimiert das Modell für die Zielhardware, was potenziell zu schnelleren Inferenzgeschwindigkeiten auf GPUs, eingebetteten Geräten und Beschleunigern führt.

Hinweis zu Inferenzgeschwindigkeiten

Bei den ersten Inferenzaufrufen mit einem nach TensorRT INT8 exportierten Modell ist mit längeren Vorverarbeitungs-, Inferenz- und/oder Nachverarbeitungszeiten als üblich zu rechnen. Dies kann auch auftreten, wenn imgsz während der Inferenz geändert wird, insbesondere wenn imgsz nicht mit dem bei der Export festgelegten Wert übereinstimmt (die Export-imgsz ist als „optimales“ TensorRT-Profil festgelegt).

Nachteile der Nutzung von YOLO mit TensorRT INT8#

  • Abnahmen bei den Evaluierungsmetriken: Die Verwendung einer geringeren Präzision bedeutet, dass mAP, Precision, Recall oder jede andere Metrik zur Bewertung der Modellleistung wahrscheinlich etwas schlechter ausfällt. Sigmoid-Schichten werden auf einer höheren Präzision gehalten, um die Score-Kalibrierung zu bewahren, aber INT8 kann Konfidenzwerte dennoch verschieben, wähle den Betriebsschwellenwert also aus der F1-Kurve des INT8-Modells selbst. Siehe den Abschnitt zu den Leistungsergebnissen, um die Unterschiede in mAP50 und mAP50-95 beim Export mit INT8 auf einer kleinen Stichprobe verschiedener Geräte zu vergleichen.

  • Erhöhte Entwicklungszeiten: Das Finden der "optimalen" Einstellungen für die INT8-Kalibrierung je nach Datensatz und Gerät kann eine erhebliche Menge an Tests erfordern.

  • Hardwareabhängigkeit: Kalibrierung und Leistungsgewinne können stark hardwareabhängig sein und Modellgewichte sind weniger übertragbar.

Ultralytics YOLO TensorRT Export-Leistung#

NVIDIA A100#

Leistung

Getestet mit Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Siehe Detection Docs für Anwendungsbeispiele mit diesen Modellen, die auf COCO trainiert wurden und 80 vortrainierte Klassen umfassen.

Hinweis

Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine

PräzisionEval-TestMittelwert
(ms)
Min | Max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchGröße
(Pixel)
FP32Vorhersagen0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Vorhersagen0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Vorhersagen0.280.27 | 0.318640
INT8COCOval0.290.470.331640

Consumer GPUs#

Erkennungsleistung (COCO)

Getestet mit Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Hinweis

Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine

PräzisionEval-TestMittelwert
(ms)
Min | Max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchGröße
(Pixel)
FP32Vorhersagen1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Vorhersagen0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Vorhersagen0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Embedded-Geräte#

Erkennungsleistung (COCO)

Getestet mit JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

Hinweis

Inferenzzeiten angezeigt für mean, min (am schnellsten) und max (am langsamsten) für jeden Test unter Verwendung von vortrainierten Gewichten yolov8n.engine

PräzisionEval-TestMittelwert
(ms)
Min | Max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchGröße
(Pixel)
FP32Vorhersagen6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Vorhersagen3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Vorhersagen2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Info

Lies unseren Schnellstart-Leitfaden zu NVIDIA Jetson mit Ultralytics YOLO, um mehr über Setup und Konfiguration zu erfahren.

Info

Lies unseren Schnellstart-Leitfaden zu NVIDIA DGX Spark mit Ultralytics YOLO, um mehr über Setup und Konfiguration zu erfahren.

Evaluierungsmethoden#

Erweitere die untenstehenden Abschnitte für Informationen darüber, wie diese Modelle exportiert und getestet wurden.

Exportkonfigurationen

Siehe export mode für Details zu den Argumenten der Exportkonfiguration.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)

# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)

# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)
Vorhersageschleife

Siehe predict mode für zusätzliche Informationen.

import cv2

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
Validierungskonfiguration

Siehe val mode, um mehr über die Argumente der Validierungskonfiguration zu erfahren.

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Bereitstellung exportierter YOLO26 TensorRT-Modelle#

Nachdem du deine Ultralytics YOLO26-Modelle erfolgreich in das TensorRT-Format exportiert hast, bist du bereit, sie bereitzustellen. Ausführliche Anweisungen zur Bereitstellung deiner TensorRT-Modelle in verschiedenen Umgebungen findest du in den folgenden Ressourcen:

Zusammenfassung#

In diesem Leitfaden haben wir uns auf die Konvertierung von Ultralytics YOLO26-Modellen in das NVIDIA TensorRT-Modellformat konzentriert. Dieser Konvertierungsschritt ist entscheidend, um die Effizienz und Geschwindigkeit von YOLO26-Modellen zu verbessern, sie effektiver zu machen und für verschiedene Bereitstellungsumgebungen geeignet zu gestalten.

Weitere Informationen zu den Verwendungsdetails findest du in der offiziellen TensorRT-Dokumentation.

Wenn du neugierig auf weitere Ultralytics YOLO26-Integrationen bist, bietet unsere Integrationsleitfaden-Seite eine umfangreiche Auswahl an informativen Ressourcen und Einblicken.

FAQ#

  • Um deine Ultralytics YOLO26-Modelle für eine optimierte NVIDIA GPU-Inferenz in das TensorRT-Format zu konvertieren, befolge diese Schritte:

    1. Installiere das erforderliche Paket:

      pip install ultralytics
    2. Exportiere dein YOLO26 Modell:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine")  # creates 'yolo26n.engine'
      
      # Run inference
      model = YOLO("yolo26n.engine")
      results = model("https://ultralytics.com/images/bus.jpg")

    Weitere Details findest du in der YOLO26-Installationsanleitung und der export documentation.

  • Die Verwendung von TensorRT zur Optimierung von YOLO26 Modellen bietet mehrere Vorteile:

    • Höhere Inferenzgeschwindigkeit: TensorRT optimiert die Modellschichten und verwendet Präzisionskalibrierung (INT8 und FP16), um die Inferenz zu beschleunigen, ohne die Genauigkeit wesentlich zu beeinträchtigen.
    • Speichereffizienz: TensorRT verwaltet den Tensor-Speicher dynamisch, wodurch der Overhead reduziert und die GPU-Speicherauslastung verbessert wird.
    • Layer Fusion: Kombiniert mehrere Schichten zu einzelnen Operationen, wodurch die Rechenkomplexität reduziert wird.
    • Kernel Auto-Tuning: Wählt automatisch optimierte GPU-Kernel für jede Modellschicht aus, um maximale Leistung zu gewährleisten.

    Um mehr zu erfahren, erkunde die offizielle TensorRT-Dokumentation von NVIDIA und unsere detaillierte TensorRT-Übersicht.

  • Ja, du kannst YOLO26 Modelle mit TensorRT unter Verwendung von INT8-Quantisierung exportieren. Dieser Prozess umfasst Post-Training-Quantisierung (PTQ) und Kalibrierung:

    1. Export mit INT8:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
    2. Inferenz ausführen:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.engine", task="detect")
      result = model.predict("https://ultralytics.com/images/bus.jpg")

    Weitere Details findest du im Abschnitt zum Exportieren von TensorRT mit INT8-Quantisierung.

  • Die Bereitstellung von YOLO26 TensorRT Modellen auf einem NVIDIA Triton Inference Server kann mithilfe der folgenden Ressourcen erfolgen:

    Diese Anleitungen helfen dir, YOLO26 Modelle effizient in verschiedenen Bereitstellungsumgebungen zu integrieren.

  • Die Leistungsverbesserungen mit TensorRT können je nach verwendeter Hardware variieren. Hier sind einige typische Benchmarks:

    • NVIDIA A100:

      • FP32 Inferenz: ~0,52 ms / Bild
      • FP16 Inferenz: ~0,34 ms / Bild
      • INT8 Inferenz: ~0,28 ms / Bild
      • Leichte Reduzierung der mAP bei INT8-Präzision, aber deutliche Verbesserung der Geschwindigkeit.
    • Consumer-GPUs (z. B. RTX 3080):

      • FP32 Inferenz: ~1,06 ms / Bild
      • FP16 Inferenz: ~0,62 ms / Bild
      • INT8 Inferenz: ~0,52 ms / Bild

    Detaillierte Leistungs-Benchmarks für verschiedene Hardwarekonfigurationen findest du im Performance-Abschnitt.

    Umfassendere Einblicke in die TensorRT-Leistung findest du in der Ultralytics-Dokumentation und unseren Leistungsanalyseberichten.

Kommentare