Vai al contenuto

TensorRT Export for YOLO11 Models

La distribuzione di modelli di computer vision in ambienti ad alte prestazioni può richiedere un formato che massimizzi la velocità e l'efficienza. Questo è particolarmente vero quando il modello viene distribuito su GPU NVIDIA .

By using the TensorRT export format, you can enhance your Ultralytics YOLO11 models for swift and efficient inference on NVIDIA hardware. This guide will give you easy-to-follow steps for the conversion process and help you make the most of NVIDIA's advanced technology in your deep learning projects.

TensorRT

TensorRT Panoramica

TensorRT, sviluppato da NVIDIA, è un kit di sviluppo software (SDK) avanzato progettato per l'inferenza di apprendimento profondo ad alta velocità. È adatto ad applicazioni in tempo reale come il rilevamento di oggetti.

Questo toolkit ottimizza i modelli di deep learning per le GPU NVIDIA e consente di ottenere operazioni più rapide ed efficienti. I modelli TensorRT sono sottoposti all'ottimizzazione TensorRT , che comprende tecniche come la fusione dei livelli, la calibrazione della precisione (INT8 e FP16), la gestione dinamica della memoria tensor e l'autotuning del kernel. La conversione dei modelli di deep learning nel formato TensorRT consente agli sviluppatori di sfruttare appieno il potenziale delle GPU NVIDIA .

TensorRT è noto per la sua compatibilità con diversi formati di modelli, tra cui TensorFlow, PyTorch, e ONNX, offrendo agli sviluppatori una soluzione flessibile per l'integrazione e l'ottimizzazione di modelli provenienti da framework diversi. Questa versatilità consente una distribuzione efficiente dei modelli in diversi ambienti hardware e software.

Caratteristiche principali dei modelli TensorRT

TensorRT offrono una serie di caratteristiche chiave che contribuiscono alla loro efficienza ed efficacia nell'inferenza di deep learning ad alta velocità:

  • Calibrazione di precisione: TensorRT supporta la calibrazione di precisione, consentendo di regolare i modelli in base a specifici requisiti di accuratezza. Questo include il supporto di formati a precisione ridotta come INT8 e FP16, che possono aumentare ulteriormente la velocità di inferenza mantenendo livelli di accuratezza accettabili.

  • Fusione di livelli: Il processo di ottimizzazione di TensorRT include la fusione dei livelli, in cui più livelli di una rete neurale vengono combinati in un'unica operazione. Ciò riduce l'overhead computazionale e migliora la velocità di inferenza, riducendo al minimo l'accesso alla memoria e il calcolo.

TensorRT Fusione di strati

  • Gestione dinamica della memoria di Tensor : TensorRT gestisce in modo efficiente l'utilizzo della memoria di tensor durante l'inferenza, riducendo l'overhead di memoria e ottimizzando l'allocazione della stessa. Ciò si traduce in un utilizzo più efficiente della memoria di GPU .

  • Automatic Kernel Tuning: TensorRT applies automatic kernel tuning to select the most optimized GPU kernel for each layer of the model. This adaptive approach ensures that the model takes full advantage of the GPUs computational power.

Opzioni di distribuzione in TensorRT

Before we look at the code for exporting YOLO11 models to the TensorRT format, let's understand where TensorRT models are normally used.

TensorRT offre diverse opzioni di implementazione, ognuna delle quali bilancia in modo diverso la facilità di integrazione, l'ottimizzazione delle prestazioni e la flessibilità:

  • Distribuzione all'interno di TensorFlow: questo metodo integra TensorRT in TensorFlow, consentendo ai modelli ottimizzati di essere eseguiti nell'ambiente familiare di TensorFlow . È utile per i modelli con un mix di livelli supportati e non supportati, poiché TF-TRT può gestirli in modo efficiente.

TensorRT Panoramica

  • API runtime standalone TensorRT : Offre un controllo granulare, ideale per le applicazioni critiche dal punto di vista delle prestazioni. È più complessa, ma consente l'implementazione personalizzata di operatori non supportati.

  • NVIDIA Triton Server di inferenza: Un'opzione che supporta modelli di vari framework. Particolarmente adatto per l'inferenza su cloud o su bordi, offre funzionalità come l'esecuzione concorrente del modello e l'analisi del modello.

Exporting YOLO11 Models to TensorRT

You can improve execution efficiency and optimize performance by converting YOLO11 models to TensorRT format.

Installazione

Per installare il pacchetto richiesto, eseguire:

Installazione

# Install the required package for YOLO11
pip install ultralytics

Per istruzioni dettagliate e buone pratiche relative al processo di installazione, consultare la nostra guida all'installazione diYOLO11 . Durante l'installazione dei pacchetti necessari per YOLO11, se si incontrano difficoltà, consultare la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.

Utilizzo

Prima di immergersi nelle istruzioni per l'uso, assicuratevi di controllare la gamma di modelliYOLO11 offerti da Ultralytics. Questo vi aiuterà a scegliere il modello più adatto alle esigenze del vostro progetto.

Utilizzo

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo11n.engine'

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

# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format
yolo export model=yolo11n.pt format=engine  # creates 'yolo11n.engine''

# Run inference with the exported model
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'

Per maggiori dettagli sul processo di esportazione, visitare la pagina di documentazioneUltralytics sull'esportazione.

Esportazione di TensorRT con quantizzazione INT8

L'esportazione dei modelli Ultralytics YOLO utilizzando TensorRT con precisione INT8 esegue la quantizzazione post-training (PTQ). TensorRT utilizza la calibrazione per la PTQ, che misura la distribuzione delle attivazioni all'interno di ciascuna attivazione tensor mentre il modello YOLO elabora l'inferenza su dati di input rappresentativi, e quindi utilizza tale distribuzione per stimare i valori di scala per ciascuna tensor. Ogni attivazione tensor candidata alla quantizzazione ha una scala associata che viene dedotta da un processo di calibrazione.

Quando elabora reti implicitamente quantizzate, TensorRT utilizza INT8 in modo opportunistico per ottimizzare il tempo di esecuzione dei livelli. Se un livello funziona più velocemente in INT8 e ha assegnato scale di quantizzazione ai suoi ingressi e uscite di dati, allora a quel livello viene assegnato un kernel con precisione INT8, altrimenti TensorRT seleziona una precisione di FP32 o FP16 per il kernel in base a quella che risulta in un tempo di esecuzione più veloce per quel livello.

Suggerimento

È fondamentale assicurarsi che lo stesso dispositivo che utilizzerà i pesi del modello TensorRT per la distribuzione sia utilizzato per l'esportazione con precisione INT8, poiché i risultati della calibrazione possono variare da un dispositivo all'altro.

Configurazione dell'esportazione INT8

Gli argomenti forniti quando si usa esportazione per un modello Ultralytics YOLO molto influenzano le prestazioni del modello esportato. Dovranno essere selezionati anche in base alle risorse del dispositivo disponibili, tuttavia gli argomenti predefiniti sono dovrebbe funziona per la maggior parte GPU discrete Ampere (o più recenti) NVIDIA. L'algoritmo di calibrazione utilizzato è "ENTROPY_CALIBRATION_2" e potete leggere maggiori dettagli sulle opzioni disponibili nella Guida per gli sviluppatori di TensorRT. Ultralytics test hanno rilevato che "ENTROPY_CALIBRATION_2" è stata la scelta migliore e le esportazioni sono fissate per l'utilizzo di questo algoritmo.

  • workspace : Controlla la dimensione (in GiB) dell'allocazione della memoria del dispositivo durante la conversione dei pesi del modello.

    • Regolare il workspace in base alle esigenze di calibrazione e alla disponibilità di risorse. Mentre un valore più grande workspace può aumentare il tempo di calibrazione, ma permette a TensorRT di esplorare una gamma più ampia di tattiche di ottimizzazione, potenzialmente migliorando le prestazioni del modello e precisione. Al contrario, una dimensione più piccola workspace può ridurre i tempi di calibrazione, ma può limitare le strategie di ottimizzazione, influenzando la qualità del modello quantizzato.

    • L'impostazione predefinita è workspace=None, che consentirà a TensorRT di allocare automaticamente la memoria; quando si configura manualmente, potrebbe essere necessario aumentare questo valore se la calibrazione si blocca (esce senza avvertire).

    • TensorRT riferirà UNSUPPORTED_STATE durante l'esportazione se il valore per workspace è più grande della memoria disponibile per il dispositivo, il che significa che il valore di workspace dovrebbe essere abbassato o impostato su None.

    • Se workspace è impostato sul valore massimo e la calibrazione fallisce o si blocca, considerare l'uso di None per l'autoassegnazione o riducendo i valori di imgsz e batch per ridurre i requisiti di memoria.

    • Ricordate che la calibrazione per INT8 è specifica per ogni dispositivo; prendere in prestito un GPU "high-end" per la calibrazione, potrebbe risultare in prestazioni scadenti quando l'inferenza viene eseguita su un altro dispositivo.

  • batch : La dimensione massima del lotto che verrà utilizzata per l'inferenza. Durante l'inferenza si possono usare lotti più piccoli, ma l'inferenza non accetterà lotti più grandi di quello specificato.

Nota

Durante la calibrazione, due volte il tasto batch saranno utilizzate le dimensioni fornite. L'uso di piccoli lotti può portare a una scalatura imprecisa durante la calibrazione. Questo perché il processo si regola in base ai dati che vede. I piccoli lotti potrebbero non catturare l'intera gamma di valori, causando problemi con la calibrazione finale. batch viene raddoppiata automaticamente. Se non Dimensione del lotto è specificato batch=1, la calibrazione verrà eseguita a batch=1 * 2 per ridurre gli errori di scala della calibrazione.

La sperimentazione di NVIDIA ha portato a consigliare l'uso di almeno 500 immagini di calibrazione rappresentative dei dati del modello, con calibrazione di quantizzazione INT8. Questa è una linea guida e non una duro e è necessario sperimentare ciò che è necessario per ottenere buone prestazioni per il proprio set di dati. Poiché i dati di calibrazione sono necessari per la calibrazione di INT8 con TensorRT, assicurarsi di utilizzare il parametro data argomento quando int8=True per TensorRT e utilizzare data="my_dataset.yaml"che utilizzerà le immagini di convalida con cui effettuare la calibrazione. Quando non viene passato alcun valore per data con l'esportazione in TensorRT con quantizzazione INT8, l'impostazione predefinita prevede l'utilizzo di uno degli elementi di "piccoli" insiemi di dati di esempio basati sul compito del modello invece di lanciare un errore.

Esempio

from ultralytics import YOLO

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

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

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Esportazioni con assi dinamici, questo sarà abilitato per impostazione predefinita quando si esporta con int8=True anche se non esplicitamente impostato. Vedere argomenti di esportazione per ulteriori informazioni.
  2. Imposta la dimensione massima del batch di 8 per il modello esportato, che si calibra con batch = 2 * 8 per evitare errori di scala durante la calibrazione.
  3. Alloca 4 GiB di memoria invece di allocare l'intero dispositivo per il processo di conversione.
  4. Utilizza il set di dati COCO per la calibrazione, in particolare le immagini utilizzate per la convalida (5.000 in totale).
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml  # creates 'yolov8n.engine''

# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Cache di calibrazione

TensorRT genererà una calibrazione .cache che possono essere riutilizzati per accelerare l'esportazione dei pesi dei modelli futuri utilizzando gli stessi dati, ma questo può risultare in una calibrazione scadente quando i dati sono molto diversi o se i dati batch valore viene modificato drasticamente. In queste circostanze, l'attuale .cache deve essere rinominato e spostato in un'altra directory o eliminato del tutto.

Vantaggi dell'utilizzo di YOLO con TensorRT INT8

  • Riduzione delle dimensioni del modello: La quantizzazione da FP32 a INT8 può ridurre le dimensioni del modello di 4 volte (su disco o in memoria), con conseguenti tempi di download più rapidi, minori requisiti di archiviazione e un'impronta di memoria ridotta quando si distribuisce un modello.

  • Consumo di energia ridotto: Le operazioni a precisione ridotta per i modelli INT8 esportati da YOLO possono consumare meno energia rispetto ai modelli FP32, soprattutto per i dispositivi alimentati a batteria.

  • Migliori velocità di inferenza: TensorRT ottimizza il modello per l'hardware di destinazione, portando potenzialmente a velocità di inferenza più elevate su GPU, dispositivi embedded e acceleratori.

Nota sulle velocità di inferenza

Le prime chiamate di inferenza con un modello esportato in TensorRT INT8 possono avere tempi di preelaborazione, inferenza e/o postelaborazione più lunghi del solito. Questo può accadere anche quando si cambia imgsz durante l'inferenza, soprattutto quando imgsz non è uguale a quello specificato durante l'esportazione (export imgsz è impostato come TensorRT profilo "ottimale").

Svantaggi dell'utilizzo di YOLO con TensorRT INT8

  • Diminuzione delle metriche di valutazione: L'utilizzo di una precisione inferiore significa che mAP, Precision, Recall o qualsiasi altra metrica utilizzata per valutare le prestazioni del modello è probabile che sia un po' peggiore. Si veda il Sezione risultati delle prestazioni per confrontare le differenze di mAP50 e mAP50-95 quando si esporta con INT8 su un piccolo campione di vari dispositivi.

  • Aumento dei tempi di sviluppo: Trovare le impostazioni "ottimali" per la calibrazione INT8 in base al set di dati e al dispositivo può richiedere una quantità significativa di test.

  • Dipendenza dall'hardware: La calibrazione e i guadagni di prestazioni potrebbero dipendere fortemente dall'hardware e i pesi dei modelli sono meno trasferibili.

Ultralytics YOLO TensorRT Prestazioni di esportazione

NVIDIA A100

Prestazioni

Testato con Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono 80 classi pre-addestrate, si vedano i Detection Docs.

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 0.52 0.51 | 0.56 8 640
FP32 COCOval 0.52 0.52 0.37 1 640
FP16 Prevedere 0.34 0.34 | 0.41 8 640
FP16 COCOval 0.33 0.52 0.37 1 640
INT8 Prevedere 0.28 0.27 | 0.31 8 640
INT8 COCOval 0.29 0.47 0.33 1 640

Per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono 80 classi pre-addestrate, si veda Segmentation Docs.

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n-seg.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(M)
mAPval
50-95(M)
batch dimensione
(pixel)
FP32 Prevedere 0.62 0.61 | 0.68 8 640
FP32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
FP16 Prevedere 0.40 0.39 | 0.44 8 640
FP16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 Prevedere 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

Per gli esempi di utilizzo di questi modelli addestrati su ImageNet, che includono 1000 classi pre-addestrate, si veda Classification Docs.

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n-cls.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
top-1 top-5 batch dimensione
(pixel)
FP32 Prevedere 0.26 0.25 | 0.28 8 640
FP32 ImmagineNetval 0.26 0.35 0.61 1 640
FP16 Prevedere 0.18 0.17 | 0.19 8 640
FP16 ImmagineNetval 0.18 0.35 0.61 1 640
INT8 Prevedere 0.16 0.15 | 0.57 8 640
INT8 ImmagineNetval 0.15 0.32 0.59 1 640

Per gli esempi di utilizzo di questi modelli addestrati su COCO, che includono una classe preaddestrata, "persona", si vedano i Pose Estimation Docs.

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n-pose.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(P)
mAPval
50-95(P)
batch dimensione
(pixel)
FP32 Prevedere 0.54 0.53 | 0.58 8 640
FP32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
FP16 Prevedere 0.37 0.35 | 0.41 8 640
FP16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 Prevedere 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

Per gli esempi di utilizzo di questi modelli addestrati su DOTAv1, che includono 15 classi pre-addestrate, si vedano i documenti sul rilevamento orientato.

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n-obb.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 0.52 0.51 | 0.59 8 640
FP32 DOTAv1val 0.76 0.50 0.36 1 640
FP16 Prevedere 0.34 0.33 | 0.42 8 640
FP16 DOTAv1val 0.59 0.50 0.36 1 640
INT8 Prevedere 0.29 0.28 | 0.33 8 640
INT8 DOTAv1val 0.32 0.45 0.32 1 640

GPU consumer

Prestazioni di rilevamento (COCO)

Testato con Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 1.06 0.75 | 1.88 8 640
FP32 COCOval 1.37 0.52 0.37 1 640
FP16 Prevedere 0.62 0.75 | 1.13 8 640
FP16 COCOval 0.85 0.52 0.37 1 640
INT8 Prevedere 0.52 0.38 | 1.00 8 640
INT8 COCOval 0.74 0.47 0.33 1 640

Testato con Windows 10.0.22631, python 3.11.9, ultralytics==8.2.4, tensorrt==10.0.1

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 1.76 1.69 | 1.87 8 640
FP32 COCOval 1.94 0.52 0.37 1 640
FP16 Prevedere 0.86 0.75 | 1.00 8 640
FP16 COCOval 1.43 0.52 0.37 1 640
INT8 Prevedere 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

Testato con Pop!_OS 22.04 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 2.84 2.84 | 2.85 8 640
FP32 COCOval 2.94 0.52 0.37 1 640
FP16 Prevedere 1.09 1.09 | 1.10 8 640
FP16 COCOval 1.20 0.52 0.37 1 640
INT8 Prevedere 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

Dispositivi integrati

Prestazioni di rilevamento (COCO)

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

Nota

Tempi di inferenza mostrati per mean, min (più veloce), e max (il più lento) per ogni test utilizzando i pesi pre-trainati yolov8n.engine

Precisione Test di valutazione media
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch dimensione
(pixel)
FP32 Prevedere 6.11 6.10 | 6.29 8 640
FP32 COCOval 6.17 0.52 0.37 1 640
FP16 Prevedere 3.18 3.18 | 3.20 8 640
FP16 COCOval 3.19 0.52 0.37 1 640
INT8 Prevedere 2.30 2.29 | 2.35 8 640
INT8 COCOval 2.32 0.46 0.32 1 640

Metodi di valutazione

Per informazioni su come questi modelli sono stati esportati e testati, si vedano le sezioni seguenti.

Esportazione di configurazioni

Per informazioni dettagliate sugli argomenti di configurazione dell'esportazione, vedere Modalità di esportazione.

from ultralytics import YOLO

model = YOLO("yolov8n.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, half=True)

# 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, int8=True, data="coco8.yaml"
)
Prevedere il ciclo

Per ulteriori informazioni, vedere Modalità di previsione.

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.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",
    )
Configurazione della convalida

Vedi val modalità per saperne di più sugli argomenti di configurazione della convalida.

from ultralytics import YOLO

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

Deploying Exported YOLO11 TensorRT Models

Having successfully exported your Ultralytics YOLO11 models to TensorRT format, you're now ready to deploy them. For in-depth instructions on deploying your TensorRT models in various settings, take a look at the following resources:

Sintesi

In this guide, we focused on converting Ultralytics YOLO11 models to NVIDIA's TensorRT model format. This conversion step is crucial for improving the efficiency and speed of YOLO11 models, making them more effective and suitable for diverse deployment environments.

Per ulteriori informazioni sui dettagli di utilizzo, consultare la documentazione ufficiale di TensorRT .

If you're curious about additional Ultralytics YOLO11 integrations, our integration guide page provides an extensive selection of informative resources and insights.

FAQ

How do I convert YOLO11 models to TensorRT format?

To convert your Ultralytics YOLO11 models to TensorRT format for optimized NVIDIA GPU inference, follow these steps:

  1. Installare il pacchetto richiesto:

    pip install ultralytics
    
  2. Export your YOLO11 model:

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

For more details, visit the YOLO11 Installation guide and the export documentation.

What are the benefits of using TensorRT for YOLO11 models?

Using TensorRT to optimize YOLO11 models offers several benefits:

  • Velocità di inferenza più rapida: TensorRT ottimizza i livelli del modello e utilizza la calibrazione di precisione (INT8 e FP16) per accelerare l'inferenza senza sacrificare significativamente l'accuratezza.
  • Efficienza della memoria: TensorRT gestisce la memoria di tensor in modo dinamico, riducendo l'overhead e migliorando l'utilizzo della memoria di GPU .
  • Fusione di livelli: Combina più strati in singole operazioni, riducendo la complessità computazionale.
  • Kernel Auto-Tuning: Seleziona automaticamente i kernel ottimizzati di GPU per ogni strato del modello, garantendo le massime prestazioni.

Per ulteriori informazioni, esplorate le caratteristiche dettagliate di TensorRT qui e leggete la nostra sezioneTensorRT .

Can I use INT8 quantization with TensorRT for YOLO11 models?

Yes, you can export YOLO11 models using TensorRT with INT8 quantization. This process involves post-training quantization (PTQ) and calibration:

  1. Esportazione con INT8:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
    
  2. Eseguire l'inferenza:

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

Per ulteriori dettagli, consultare la sezione Esportazione di TensorRT con quantizzazione INT8.

How do I deploy YOLO11 TensorRT models on an NVIDIA Triton Inference Server?

Deploying YOLO11 TensorRT models on an NVIDIA Triton Inference Server can be done using the following resources:

Queste guide vi aiuteranno a integrare in modo efficiente i modelli di YOLOv8 in vari ambienti di distribuzione.

Quali sono i miglioramenti delle prestazioni osservati con i modelli YOLOv8 esportati in TensorRT?

I miglioramenti delle prestazioni con TensorRT possono variare in base all'hardware utilizzato. Ecco alcuni benchmark tipici:

  • NVIDIA A100:

    • Inferenza FP32: ~0,52 ms / immagine
    • Inferenza FP16: ~0,34 ms / immagine
    • Inferenza INT8: ~0,28 ms / immagine
    • Leggera riduzione della mAP con precisione INT8, ma significativo miglioramento della velocità.
  • GPU consumer (ad esempio, RTX 3080):

    • Inferenza FP32: ~1,06 ms / immagine
    • Inferenza FP16: ~0,62 ms / immagine
    • Inferenza INT8: ~0,52 ms / immagine

I benchmark dettagliati delle prestazioni per le diverse configurazioni hardware sono disponibili nella sezione prestazioni.

Per informazioni più complete sulle prestazioni di TensorRT , consultate la documentazione diUltralytics e i nostri rapporti di analisi delle prestazioni.

📅C reato 11 mesi fa ✏️ Aggiornato 6 giorni fa

Commenti