Ultralytics YOLO27:

Esportazione TensorRT per modelli YOLO26#

La distribuzione di modelli di computer vision in ambienti ad alte prestazioni può richiedere un formato che massimizzi velocità ed efficienza. Questo è particolarmente vero quando distribuisci il tuo modello su GPU NVIDIA.

Utilizzando il formato di esportazione TensorRT, puoi ottimizzare i tuoi modelli Ultralytics YOLO26 per un'inferenza rapida ed efficiente sull'hardware NVIDIA. Questa guida ti fornirà passaggi semplici da seguire per il processo di conversione e ti aiuterà a sfruttare al meglio la tecnologia avanzata di NVIDIA nei tuoi progetti di deep learning.

TensorRT#

NVIDIA TensorRT optimization workflow

TensorRT, sviluppato da NVIDIA, è un kit avanzato di sviluppo software (SDK) progettato per l'inferenza ad alta velocità nel deep learning. È particolarmente adatto per applicazioni in tempo reale come la rilevazione degli oggetti.

Questo toolkit ottimizza i modelli di deep learning per le GPU NVIDIA, ottenendo operazioni più rapide ed efficienti. I modelli TensorRT vengono sottoposti all'ottimizzazione TensorRT, che include tecniche come la fusione dei layer, la calibrazione della precisione (INT8 e FP16), la gestione dinamica della memoria dei tensori e l'ottimizzazione automatica dei kernel. Convertire i modelli di deep learning nel formato TensorRT consente agli sviluppatori di sfruttare appieno il potenziale delle GPU NVIDIA.

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

I motori TensorRT sono specifici per hardware e runtime

TensorRT crea il profilo e ottimizza un motore sulla GPU di compilazione. Compila per l'architettura della GPU di destinazione e utilizza un runtime TensorRT/CUDA compatibile; non considerare un file .engine come un formato di modello portabile. Per la distribuzione edge, Ultralytics Platform offre otto selezioni di destinazione Jetson, con lo stato della compilazione fisica e della convalida documentato per ciascuna, oppure puoi esportare localmente sul dispositivo di destinazione.

Funzionalità principali dei modelli TensorRT#

I modelli TensorRT offrono diverse funzionalità chiave che contribuiscono alla loro efficienza ed efficacia nell'inferenza ad alta velocità nel deep learning:

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

  • Fusione dei layer: il processo di ottimizzazione TensorRT include la fusione dei layer, in cui più layer di una rete neurale vengono combinati in un'unica operazione. Ciò riduce il sovraccarico computazionale e migliora la velocità di inferenza minimizzando l'accesso alla memoria e i calcoli.

TensorRT neural network layer fusion optimization

  • Gestione dinamica della memoria dei tensori: TensorRT gestisce in modo efficiente l'utilizzo della memoria dei tensori durante l'inferenza, riducendo il sovraccarico di memoria e ottimizzando l'allocazione della memoria. Ciò si traduce in un utilizzo più efficiente della memoria della GPU.

  • Ottimizzazione automatica dei kernel: TensorRT applica l'ottimizzazione automatica dei kernel per selezionare il kernel della GPU più ottimizzato per ogni layer del modello. Questo approccio adattivo garantisce che il modello sfrutti appieno la potenza di calcolo della GPU.

Opzioni di distribuzione in TensorRT#

Prima di esaminare il codice per esportare i modelli YOLO26 nel formato TensorRT, vediamo dove vengono normalmente utilizzati i modelli TensorRT.

TensorRT offre diverse opzioni di distribuzione e ciascuna bilancia in modo diverso facilità di integrazione, ottimizzazione delle prestazioni e flessibilità:

  • Distribuzione all'interno di TensorFlow: questo metodo integra TensorRT in TensorFlow, consentendo l'esecuzione di modelli ottimizzati in un ambiente TensorFlow familiare. È utile per i modelli che combinano layer supportati e non supportati, poiché TF-TRT può gestirli in modo efficiente.

NVIDIA TensorRT optimization workflow

  • API del runtime TensorRT standalone: offre un controllo granulare ed è ideale per le applicazioni in cui le prestazioni sono fondamentali. È più complessa, ma consente un'implementazione personalizzata degli operatori non supportati.

  • NVIDIA Triton Inference Server: un'opzione che supporta modelli provenienti da vari framework. Particolarmente adatta all'inferenza cloud o edge, offre funzionalità come l'esecuzione concorrente dei modelli e l'analisi dei modelli.

Attività supportate#

L'esportazione TensorRT supporta tutti e sette i task Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.

AttivitàYOLOv8YOLO11YOLO26
Rilevamento
Segmentazione
Semantica
Profondità
Classificazione
Posa
OBB

Esportazione dei modelli YOLO26 in TensorRT#

Puoi migliorare l'efficienza di esecuzione e ottimizzare le prestazioni convertendo i modelli YOLO26 nel formato TensorRT.

Installazione#

Per installare il pacchetto richiesto, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Per istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di YOLO26. Se durante l'installazione dei pacchetti richiesti per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.

Utilizzo#

Prima di passare alle istruzioni per l'utilizzo, dai un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto ai requisiti del tuo progetto.

Il formato TensorRT supporta le modalità Export, Predict e Validate. L'inferenza e la convalida richiedono una GPU NVIDIA. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.

Esportazione
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'
Predizione
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Valida
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")

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'engine'Formato di destinazione del modello esportato, che definisce la compatibilità con diversi ambienti di distribuzione.
imgszint o tuple640Dimensione desiderata dell'immagine per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione di quantizzazione: 16 (FP16) o 8 (INT8/PTQ; richiede la calibrazione di data/fraction); 32/non impostato è FP32. Un checkpoint addestrato con quantize=8 esporta sempre INT8 dagli intervalli che trasporta, senza calibrazione. Sostituisce i flag deprecati half/int8.
dynamicboolFalseConsente dimensioni di input dinamiche, aumentando la flessibilità nella gestione di immagini con dimensioni variabili.
simplifyboolTrueSemplifica il grafo del modello con onnxslim, migliorando potenzialmente prestazioni e compatibilità.
opsetintNoneSpecifica la versione dell'opset ONNX per il grafo ONNX intermedio. Se non impostata, viene utilizzata la versione supportata più recente.
workspacefloat o NoneNoneImposta la dimensione massima dell'area di lavoro in GiB per le ottimizzazioni TensorRT, bilanciando l'utilizzo della memoria e le prestazioni; usa None per l'allocazione automatica da parte di TensorRT fino al massimo del dispositivo.
nmsbool, facoltativoNoneSeleziona l'output grezzo (None, predefinito), l'NMS integrato (True) o la testa senza NMS (False).
batchint1Specifica la dimensione del batch di inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict.
datastrNonePercorso del file YAML del dataset, essenziale per la quantizzazione; la classificazione richiede invece una directory di dataset o un nome di dataset integrato. Se omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione predefinito per il task del modello; un checkpoint addestrato con quantize=8 non ne richiede alcuno.
fractionfloat, int o list1.0Sottoinsieme di calibrazione espresso come rapporto, numero di immagini oppure rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo salta.
devicestrNoneSpecifica il dispositivo per l'esportazione: GPU (device=0), DLA per NVIDIA Jetson (device=dla:0 o device=dla:1).
Suggerimento

Assicurati di utilizzare una GPU con supporto CUDA durante l'esportazione in TensorRT.

Compatibilità con JetPack e DLA

TensorRT 11.2.1 non supporta JetPack, incluso Thor; usa il runtime di TensorRT 10.x supportato dalla tua versione di JetPack. Per device=dla:0 o device=dla:1, NVIDIA identifica TensorRT 10.7 come l'ultima versione con supporto DLA. TensorRT 11.0, 11.1 e 11.2 non supportano DLA.

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'esportazione.

Esportazione TensorRT con quantizzazione INT8#

Esportare modelli YOLO di Ultralytics usando TensorRT con precisione INT8 esegue la quantizzazione post-addestramento (PTQ). TensorRT utilizza la calibrazione per la PTQ, che misura la distribuzione delle attivazioni all'interno di ciascun tensore di attivazione mentre il modello YOLO elabora l'inferenza su dati di input rappresentativi, e utilizza quindi tale distribuzione per stimare i valori di scala per ciascun tensore. Ciascun tensore di attivazione candidato alla quantizzazione ha una scala associata dedotta da un processo di calibrazione. Un checkpoint messo a punto con quantize=8 tramite quantization-aware training trasporta già i suoi intervalli INT8, quindi la sua esportazione li utilizza e salta la calibrazione.

Quantizzazione TensorRT 11

TensorRT 11 ha rimosso la quantizzazione implicita e l'interfaccia IInt8Calibrator. Con TensorRT 11 e versioni successive, Ultralytics esegue la quantizzazione INT8 esplicita con NVIDIA ModelOpt, che inserisce nodi Q/DQ nel grafo ONNX prima di compilare un motore fortemente tipizzato; FP16 viene applicato con la conversione a precisione mista AutoCast di ModelOpt. Gli argomenti quantize=8, quantize=16 e data funzionano allo stesso modo; ModelOpt viene installato automaticamente al primo utilizzo. Con TensorRT 7-10 viene invece utilizzato il calibratore legacy descritto di seguito.

Durante l'elaborazione di reti quantizzate implicitamente, TensorRT utilizza INT8 in modo opportunistico per ottimizzare il tempo di esecuzione dei layer. Se un layer viene eseguito più velocemente in INT8 e ha scale di quantizzazione assegnate ai propri input e output, a quel layer viene assegnato un kernel con precisione INT8; in caso contrario, TensorRT seleziona per il kernel una precisione FP32 o FP16, in base a quella che garantisce il tempo di esecuzione più rapido per quel layer.

Suggerimento

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

Configurazione dell'esportazione INT8#

Gli argomenti forniti durante l'uso di export per un modello Ultralytics YOLO influenzeranno notevolmente le prestazioni del modello esportato. Dovranno inoltre essere selezionati in base alle risorse disponibili sul dispositivo; tuttavia, gli argomenti predefiniti dovrebbero funzionare per la maggior parte delle GPU NVIDIA discrete Ampere (o successive). L'algoritmo di calibrazione utilizzato è "MINMAX_CALIBRATION" per le esportazioni su GPU, mentre le esportazioni DLA su NVIDIA Jetson utilizzano "ENTROPY_CALIBRATION_2". Puoi leggere ulteriori dettagli sulle opzioni disponibili nella TensorRT Developer Guide. I test di Ultralytics hanno rilevato che "MINMAX_CALIBRATION" è la scelta migliore per le esportazioni su GPU; l'algoritmo viene selezionato automaticamente in base al dispositivo di esportazione.

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

    • Regola il valore di workspace in base alle tue esigenze di calibrazione e alla disponibilità di risorse. Sebbene un workspace più grande possa aumentare il tempo di calibrazione, consente a TensorRT di esplorare una gamma più ampia di strategie di ottimizzazione, migliorando potenzialmente le prestazioni e l'accuratezza del modello. Al contrario, un workspace più piccolo può ridurre il tempo di calibrazione, ma può limitare le strategie di ottimizzazione e influire sulla qualità del modello quantizzato.

    • Il valore predefinito è workspace=None, che consente a TensorRT di allocare automaticamente la memoria; durante la configurazione manuale, potrebbe essere necessario aumentare questo valore se la calibrazione si interrompe (termina senza avviso).

    • TensorRT segnalerà UNSUPPORTED_STATE durante l'esportazione se il valore di workspace è maggiore della memoria disponibile sul dispositivo; ciò significa che il valore di workspace deve essere ridotto o impostato su None.

    • Se workspace è impostato sul valore massimo e la calibrazione non riesce o si interrompe, valuta l'utilizzo di None per l'allocazione automatica oppure riduci i valori di imgsz e batch per diminuire i requisiti di memoria.

    • Ricorda che la calibrazione per INT8 è specifica per ogni dispositivo: prendere in prestito una GPU di "fascia alta" per la calibrazione potrebbe causare prestazioni scarse quando l'inferenza viene eseguita su un altro dispositivo.

  • batch : la dimensione massima del batch utilizzata per l'inferenza. Durante l'inferenza è possibile utilizzare batch più piccoli, ma l'inferenza non accetterà batch più grandi di quello specificato.

Nota

L'utilizzo di batch piccoli può causare una scalatura inaccurata durante la calibrazione INT8. Questo accade perché il processo si adatta in base ai dati che osserva. I batch piccoli potrebbero non acquisire l'intero intervallo di valori, causando problemi con la calibrazione finale. L'utilizzo di una dimensione del batch maggiore contribuisce a garantire risultati di calibrazione più rappresentativi.

La sperimentazione di NVIDIA li ha portati a consigliare l'uso di almeno 500 immagini di calibrazione rappresentative dei dati per il tuo modello, con la calibrazione della quantizzazione INT8. Questa è una linea guida e non un requisito rigoroso, e dovrai sperimentare ciò che è necessario per ottenere buone prestazioni per il tuo dataset. Poiché i dati di calibrazione sono necessari per la calibrazione INT8 con TensorRT, assicurati di usare l'argomento data quando esporti un checkpoint che non è stato addestrato con quantize=8 (quantizzazione post-addestramento) a quantize=8 per TensorRT, e usa data="my_dataset.yaml", che utilizzerà le immagini della validazione per eseguire la calibrazione. Un checkpoint addestrato con quantize=8 salta la calibrazione, quindi ometti data per il checkpoint. Quando non viene passato alcun valore per data con l'esportazione in TensorRT con quantizzazione INT8, l'impostazione predefinita sarà l'uso di uno dei dataset di esempio "piccoli" basati sul task del modello invece di generare un errore.

Esempio
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. Esporta con assi dinamici; dynamic rimane False a meno che non venga impostato esplicitamente. Vedi gli argomenti di esportazione per ulteriori informazioni.
  2. Imposta la dimensione massima del batch a 8 per il modello esportato e la calibrazione INT8.
  3. Alloca 4 GiB di memoria invece di allocare l'intero dispositivo per il processo di conversione.
  4. Utilizza il dataset COCO per la calibrazione, in particolare le immagini utilizzate per la convalida (5.000 in totale).
Cache di calibrazione

TensorRT genererà una .cache di calibrazione che può essere riutilizzata per accelerare l'esportazione di futuri pesi del modello utilizzando gli stessi dati; tuttavia, ciò può causare una calibrazione scadente quando i dati sono molto diversi o se il valore di batch cambia drasticamente. In queste circostanze, la .cache esistente deve essere rinominata e spostata in una directory diversa oppure eliminata completamente.

Vantaggi dell'utilizzo di YOLO con TensorRT INT8#

  • Dimensioni ridotte del modello: la quantizzazione da FP32 a INT8 può ridurre le dimensioni del modello di 4 volte (su disco o in memoria), consentendo download più rapidi, requisiti di archiviazione inferiori e un minore ingombro di memoria durante la distribuzione di un modello.

  • Minore consumo energetico: le operazioni a precisione ridotta per i modelli YOLO esportati in INT8 possono consumare meno energia rispetto ai modelli FP32, soprattutto sui dispositivi alimentati a batteria.

  • Velocità di inferenza migliorate: TensorRT ottimizza il modello per l'hardware di destinazione, con un potenziale aumento della velocità di inferenza su GPU, dispositivi integrati e acceleratori.

Nota sulle velocità di inferenza

È normale che le prime chiamate di inferenza con un modello esportato in TensorRT INT8 abbiano tempi di pre-elaborazione, inferenza e/o post-elaborazione più lunghi del solito. Questo può verificarsi anche quando si modifica imgsz durante l'inferenza, soprattutto se imgsz non corrisponde a quello specificato durante l'esportazione (l'esportazione imgsz è impostata come profilo "optimal" di TensorRT).

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 sarà probabilmente leggermente peggiore. I layer Sigmoid vengono mantenuti a una precisione maggiore per preservare la calibrazione dei punteggi, ma INT8 può comunque modificare i valori di confidenza; seleziona quindi la soglia operativa dalla curva F1 del modello INT8 stesso. Consulta la sezione sui risultati delle prestazioni per confrontare le differenze in mAP50 e mAP50-95 durante l'esportazione con INT8 su un piccolo campione di dispositivi diversi.

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

  • Dipendenza dall'hardware: la calibrazione e i miglioramenti delle prestazioni possono dipendere fortemente dall'hardware e i pesi del modello sono meno trasferibili.

Prestazioni dell'esportazione Ultralytics YOLO TensorRT#

NVIDIA A100#

Prestazioni

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

Consulta la documentazione sul rilevamento per esempi di utilizzo con questi modelli addestrati su COCO, che includono 80 classi pretrained.

Nota

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

PrecisionTest di valutazionemedia
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchdimensione
(pixel)
FP32Predizione0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Predizione0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Predizione0.280.27 | 0.318640
INT8COCOval0.290.470.331640

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 (più lento) per ogni test, utilizzando i pesi pretrained yolov8n.engine

PrecisionTest di valutazionemedia
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchdimensione
(pixel)
FP32Predizione1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Predizione0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Predizione0.520.38 | 1.008640
INT8COCOval0.740.470.331640

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 (più lento) per ogni test, utilizzando i pesi pretrained yolov8n.engine

PrecisionTest di valutazionemedia
(ms)
min | max
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchdimensione
(pixel)
FP32Predizione6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Predizione3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Predizione2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Informazioni

Consulta la nostra guida rapida su NVIDIA Jetson con Ultralytics YOLO per saperne di più sulla configurazione.

Informazioni

Consulta la nostra guida rapida su NVIDIA DGX Spark con Ultralytics YOLO per saperne di più sulla configurazione.

Metodi di valutazione#

Espandi le sezioni seguenti per informazioni su come sono stati esportati e testati questi modelli.

Configurazioni di esportazione

Consulta la modalità export per informazioni dettagliate sugli argomenti di configurazione dell'esportazione.

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"
)
Ciclo predict

Consulta la modalità predict per ulteriori informazioni.

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",
    )
Configurazione della convalida

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

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",
)

Distribuzione dei modelli YOLO26 esportati in TensorRT#

Dopo aver esportato correttamente i tuoi modelli Ultralytics YOLO26 in formato TensorRT, ora puoi distribuirli. Per istruzioni approfondite sulla distribuzione dei tuoi modelli TensorRT in vari contesti, consulta le seguenti risorse:

In questa guida ci siamo concentrati sulla conversione dei modelli Ultralytics YOLO26 nel formato di modello TensorRT di NVIDIA. Questo passaggio di conversione è fondamentale per migliorare l'efficienza e la velocità dei modelli YOLO26, rendendoli più efficaci e adatti a diversi ambienti di distribuzione.

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

Se vuoi conoscere altre integrazioni Ultralytics YOLO26, la nostra pagina della guida alle integrazioni offre un'ampia selezione di risorse informative e approfondimenti.

FAQ#

  • Per convertire i tuoi modelli Ultralytics YOLO26 in formato TensorRT per un'inferenza ottimizzata su GPU NVIDIA, segui questi passaggi:

    1. Installa il pacchetto richiesto:

      pip install ultralytics
    2. Esporta il tuo modello YOLO26:

      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")

    Per ulteriori dettagli, visita la guida all'installazione di YOLO26 e la documentazione sull'esportazione.

  • L'utilizzo di TensorRT per ottimizzare i modelli YOLO26 offre diversi vantaggi:

    • Maggiore velocità di inferenza: TensorRT ottimizza i livelli del modello e utilizza la calibrazione della precisione (INT8 e FP16) per accelerare l'inferenza senza sacrificare significativamente la precisione.
    • Efficienza della memoria: TensorRT gestisce dinamicamente la memoria dei tensori, riducendo l'overhead e migliorando l'utilizzo della memoria GPU.
    • Fusione dei livelli: combina più livelli in singole operazioni, riducendo la complessità computazionale.
    • Ottimizzazione automatica dei kernel: seleziona automaticamente i kernel GPU ottimizzati per ogni livello del modello, garantendo le massime prestazioni.

    Per saperne di più, consulta la documentazione ufficiale di TensorRT di NVIDIA e la nostra panoramica approfondita di TensorRT.

  • Sì, puoi esportare modelli YOLO26 usando TensorRT con quantizzazione INT8. Questo processo comporta la quantizzazione post-addestramento (PTQ) e la calibrazione, a meno che il checkpoint non sia stato addestrato con quantize=8 (quantization-aware training), nel qual caso gli intervalli trasportati dal checkpoint vengono esportati senza calibrazione:

    1. Esporta con INT8:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
    2. Esegui l'inferenza:

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

    Per ulteriori dettagli, consulta la sezione sull'esportazione in TensorRT con quantizzazione INT8.

  • La distribuzione dei modelli YOLO26 TensorRT su un NVIDIA Triton Inference Server può essere eseguita utilizzando le seguenti risorse:

    Queste guide ti aiuteranno a integrare in modo efficiente i modelli YOLO26 in diversi ambienti di distribuzione.

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

    • NVIDIA A100:

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

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

    Benchmark dettagliati delle prestazioni per diverse configurazioni hardware sono disponibili nella sezione sulle prestazioni.

    Per approfondimenti più completi sulle prestazioni di TensorRT, consulta la documentazione Ultralytics e i nostri report di analisi delle prestazioni.

Commenti