Saltar al contenido

TensorRT Exportar para YOLOv8 Modelos

Desplegar modelos de visi贸n por ordenador en entornos de alto rendimiento puede requerir un formato que maximice la velocidad y la eficacia. Esto es especialmente cierto cuando despliegas tu modelo en GPUs NVIDIA .

Utilizando el formato de exportaci贸n TensorRT , puedes mejorar tus Ultralytics YOLOv8 modelos para una inferencia r谩pida y eficaz en el hardware NVIDIA . Esta gu铆a te dar谩 unos pasos f谩ciles de seguir para el proceso de conversi贸n y te ayudar谩 a aprovechar al m谩ximo la avanzada tecnolog铆a de NVIDIA en tus proyectos de aprendizaje profundo.

TensorRT

TensorRT Visi贸n general

TensorRTdesarrollado por NVIDIA, es un kit avanzado de desarrollo de software (SDK) dise帽ado para la inferencia de aprendizaje profundo de alta velocidad. Es muy adecuado para aplicaciones en tiempo real como la detecci贸n de objetos.

Este conjunto de herramientas optimiza los modelos de aprendizaje profundo para las GPU NVIDIA y da lugar a operaciones m谩s r谩pidas y eficientes. Los modelos TensorRT se someten a la optimizaci贸n TensorRT , que incluye t茅cnicas como la fusi贸n de capas, la calibraci贸n de precisi贸n (INT8 y FP16), la gesti贸n din谩mica de la memoria tensor y el autoajuste del n煤cleo. Convertir los modelos de aprendizaje profundo al formato TensorRT permite a los desarrolladores aprovechar plenamente el potencial de las GPU NVIDIA .

TensorRT es conocido por su compatibilidad con varios formatos de modelos, como TensorFlow, PyTorch y ONNX, lo que proporciona a los desarrolladores una soluci贸n flexible para integrar y optimizar modelos de distintos marcos de trabajo. Esta versatilidad permite un despliegue eficaz de los modelos en diversos entornos de hardware y software.

Caracter铆sticas principales de los modelos TensorRT

TensorRT ofrecen una serie de caracter铆sticas clave que contribuyen a su eficiencia y eficacia en la inferencia de aprendizaje profundo de alta velocidad:

  • Calibraci贸n de precisi贸n: TensorRT admite la calibraci贸n de precisi贸n, lo que permite ajustar los modelos a requisitos de precisi贸n espec铆ficos. Esto incluye la compatibilidad con formatos de precisi贸n reducida como INT8 y FP16, que pueden aumentar a煤n m谩s la velocidad de inferencia manteniendo niveles de precisi贸n aceptables.

  • Fusi贸n de capas: El proceso de optimizaci贸n TensorRT incluye la fusi贸n de capas, en la que varias capas de una red neuronal se combinan en una sola operaci贸n. Esto reduce la sobrecarga computacional y mejora la velocidad de inferencia al minimizar el acceso a la memoria y el c谩lculo.

TensorRT Fusi贸n de capas

  • Gesti贸n din谩mica de la memoria Tensor : TensorRT gestiona eficazmente el uso de la memoria tensor durante la inferencia, reduciendo la sobrecarga de memoria y optimizando la asignaci贸n de memoria. El resultado es una utilizaci贸n m谩s eficiente de la memoria GPU .

  • Ajuste autom谩tico del n煤cleo: TensorRT aplica el ajuste autom谩tico del n煤cleo para seleccionar el n煤cleo GPU m谩s optimizado para cada capa del modelo. Este enfoque adaptativo garantiza que el modelo aproveche al m谩ximo la potencia de c谩lculo de GPU.

Opciones de despliegue en TensorRT

Antes de ver el c贸digo para exportar YOLOv8 modelos a la TensorRT formato, entendamos d贸nde TensorRT Normalmente se utilizan modelos.

TensorRT ofrece varias opciones de implantaci贸n, y cada opci贸n equilibra de forma diferente la facilidad de integraci贸n, la optimizaci贸n del rendimiento y la flexibilidad:

  • Desplegar dentro de TensorFlow: Este m茅todo integra TensorRT en TensorFlow, permitiendo que los modelos optimizados se ejecuten en un entorno familiar de TensorFlow . Es 煤til para modelos con una mezcla de capas admitidas y no admitidas, ya que TF-TRT puede manejarlas eficazmente.

TensorRT Visi贸n general

  • API independiente en tiempo de ejecuci贸n TensorRT : Ofrece un control granular, ideal para aplicaciones de rendimiento cr铆tico. Es m谩s compleja, pero permite la implementaci贸n personalizada de operadores no compatibles.

  • NVIDIA Triton Servidor de inferencias: Una opci贸n que admite modelos de varios marcos. Especialmente adecuado para la inferencia en la nube o en el borde, proporciona funciones como la ejecuci贸n concurrente de modelos y el an谩lisis de modelos.

Exportar modelos de YOLOv8 a TensorRT

Puedes mejorar la eficacia de la ejecuci贸n y optimizar el rendimiento convirtiendo los modelos de YOLOv8 al formato TensorRT .

Instalaci贸n

Para instalar el paquete necesario, ejecuta

Instalaci贸n

# Install the required package for YOLOv8
pip install ultralytics

Para obtener instrucciones detalladas y buenas pr谩cticas relacionadas con el proceso de instalaci贸n, consulta nuestra gu铆a de instalaci贸nYOLOv8 . Mientras instalas los paquetes necesarios para YOLOv8, si encuentras alguna dificultad, consulta nuestra gu铆a de Problemas comunes para encontrar soluciones y consejos.

Utilizaci贸n

Antes de sumergirte en las instrucciones de uso, aseg煤rate de consultar la gama de modelosYOLOv8 que ofrece Ultralytics. Esto te ayudar谩 a elegir el modelo m谩s apropiado para los requisitos de tu proyecto.

Utilizaci贸n

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

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

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

Para m谩s detalles sobre el proceso de exportaci贸n, visita la p谩gina de documentaci贸nUltralytics sobre exportaci贸n.

Exportar TensorRT con cuantizaci贸n INT8

La exportaci贸n de modelos Ultralytics YOLO utilizando TensorRT con precisi贸n INT8 ejecuta la cuantizaci贸n post-entrenamiento (PTQ). TensorRT utiliza la calibraci贸n para la PTQ, que mide la distribuci贸n de activaciones dentro de cada activaci贸n tensor a medida que el modelo YOLO procesa la inferencia sobre datos de entrada representativos, y luego utiliza esa distribuci贸n para estimar valores de escala para cada tensor. Cada activaci贸n tensor candidata a la cuantizaci贸n tiene una escala asociada que se deduce mediante un proceso de calibraci贸n.

Al procesar redes cuantificadas impl铆citamente, TensorRT utiliza INT8 de forma oportunista para optimizar el tiempo de ejecuci贸n de las capas. Si una capa se ejecuta m谩s r谩pido en INT8 y tiene asignadas escalas de cuantizaci贸n en sus entradas y salidas de datos, entonces se asigna a esa capa un n煤cleo con precisi贸n INT8; de lo contrario, TensorRT selecciona una precisi贸n de FP32 o FP16 para el n煤cleo en funci贸n de la que resulte en un tiempo de ejecuci贸n m谩s r谩pido para esa capa.

Consejo

Es fundamental asegurarse de que el mismo dispositivo que utilizar谩 los pesos del modelo TensorRT para la implantaci贸n se utiliza para exportar con precisi贸n INT8, ya que los resultados de la calibraci贸n pueden variar de un dispositivo a otro.

Configurar la exportaci贸n INT8

Los argumentos proporcionados al utilizar exportar para un modelo Ultralytics YOLO en gran medida influyen en el rendimiento del modelo exportado. Tambi茅n tendr谩n que seleccionarse en funci贸n de los recursos del dispositivo disponibles, sin embargo, los argumentos por defecto debe funcionan para la mayor铆a GPU discretas Ampere (o m谩s recientes) NVIDIA. El algoritmo de calibraci贸n utilizado es "ENTROPY_CALIBRATION_2" y puedes leer m谩s detalles sobre las opciones disponibles en la Gu铆a del desarrollador TensorRT. Ultralytics las pruebas constataron que "ENTROPY_CALIBRATION_2" era la mejor opci贸n y las exportaciones se fijan en utilizar este algoritmo.

  • workspace : Controla el tama帽o (en GiB) de la asignaci贸n de memoria del dispositivo al convertir los pesos del modelo.

    • Ajusta el workspace seg煤n tus necesidades de calibraci贸n y la disponibilidad de recursos. Mientras que un valor workspace puede aumentar el tiempo de calibraci贸n, permite a TensorRT explorar una gama m谩s amplia de t谩cticas de optimizaci贸n, mejorando potencialmente el rendimiento y la precisi贸n del modelo. Por el contrario, un workspace puede reducir el tiempo de calibraci贸n, pero puede limitar las estrategias de optimizaci贸n, afectando a la calidad del modelo cuantizado.

    • Por defecto es workspace=4 (GiB), puede ser necesario aumentar este valor si la calibraci贸n se bloquea (sale sin avisar).

    • TensorRT informar谩 UNSUPPORTED_STATE durante la exportaci贸n si el valor de workspace es mayor que la memoria disponible en el dispositivo, lo que significa que el valor de workspace debe reducirse.

    • Si workspace est谩 ajustado al valor m谩ximo y la calibraci贸n falla/se bloquea, considera la posibilidad de reducir los valores de imgsz y batch para reducir los requisitos de memoria.

    • Recuerda que la calibraci贸n para INT8 es espec铆fica de cada dispositivo, tomar prestado un GPU "de gama alta" para la calibraci贸n, podr铆a dar lugar a un rendimiento deficiente cuando se ejecute la inferencia en otro dispositivo.

  • batch : El tama帽o m谩ximo de lote que se utilizar谩 para la inferencia. Durante la inferencia se pueden utilizar lotes m谩s peque帽os, pero la inferencia no aceptar谩 lotes mayores que el especificado.

Nota

Durante la calibraci贸n, pulsa dos veces el bot贸n batch se utilizar谩 el tama帽o proporcionado. Utilizar lotes peque帽os puede dar lugar a un escalado inexacto durante el calibrado. Esto se debe a que el proceso se ajusta en funci贸n de los datos que ve. Los lotes peque帽os podr铆an no capturar toda la gama de valores, lo que provocar铆a problemas en la calibraci贸n final, por lo que el batch se duplica autom谩ticamente. Si no se especifica el tama帽o del lote batch=1la calibraci贸n se realizar谩 en batch=1 * 2 para reducir los errores de escala de calibraci贸n.

La experimentaci贸n de NVIDIA les ha llevado a recomendar el uso de al menos 500 im谩genes de calibraci贸n representativas de los datos de tu modelo, con calibraci贸n de cuantizaci贸n INT8. Se trata de una orientaci贸n y no de una duro requisito, y tendr谩s que experimentar con lo que se necesita para obtener buenos resultados en tu conjunto de datos. Dado que los datos de calibraci贸n son necesarios para la calibraci贸n INT8 con TensorRT, aseg煤rate de utilizar la opci贸n data argumento cuando int8=True para TensorRT y utilizar data="my_dataset.yaml"que utilizar谩 las im谩genes de validaci贸n para calibrar. Cuando no se pasa ning煤n valor para data con exportaci贸n a TensorRT con cuantizaci贸n INT8, por defecto se utilizar谩 uno de los "peque帽os" conjuntos de datos de ejemplo basados en la tarea modelo en lugar de lanzar un error.

Ejemplo

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. Exporta con ejes din谩micos, se activar谩 por defecto al exportar con int8=True aunque no se haya establecido expl铆citamente. Consulta argumentos de exportaci贸n para m谩s informaci贸n.
  2. Establece un tama帽o de lote m谩ximo de 8 para el modelo exportado, que se calibra con batch = 2 * 8 para evitar errores de escala durante el calibrado.
  3. Asigna 4 GiB de memoria en lugar de asignar todo el dispositivo para el proceso de conversi贸n.
  4. Utiliza el conjunto de datos COCO para la calibraci贸n, concretamente las im谩genes utilizadas para la validaci贸n (5.000 en total).
# Export a YOLOv8n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolov8n.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'
Cach茅 de calibraci贸n

TensorRT generar谩 una calibraci贸n .cache que puede reutilizarse para acelerar la exportaci贸n de futuras ponderaciones del modelo utilizando los mismos datos, pero esto puede dar lugar a una calibraci贸n deficiente cuando los datos son muy diferentes o si la batch se modifica dr谩sticamente. En estas circunstancias, la .cache debes cambiarle el nombre y moverlo a otro directorio o borrarlo por completo.

Ventajas de utilizar YOLO con TensorRT INT8

  • Reducci贸n del tama帽o del modelo: La cuantizaci贸n de FP32 a INT8 puede reducir el tama帽o del modelo 4 veces (en disco o en memoria), lo que se traduce en tiempos de descarga m谩s r谩pidos, menores requisitos de almacenamiento y menor huella de memoria al desplegar un modelo.

  • Menor consumo de energ铆a: Las operaciones de precisi贸n reducida de los modelos INT8 exportados a YOLO pueden consumir menos energ铆a en comparaci贸n con los modelos FP32, especialmente para los dispositivos alimentados por bater铆a.

  • Velocidades de inferencia mejoradas: TensorRT optimiza el modelo para el hardware de destino, lo que puede dar lugar a velocidades de inferencia m谩s r谩pidas en GPU, dispositivos integrados y aceleradores.

Nota sobre las velocidades de inferencia

Es de esperar que las primeras llamadas de inferencia con un modelo exportado a TensorRT INT8 tengan tiempos de preprocesamiento, inferencia y/o postprocesamiento m谩s largos de lo habitual. Esto tambi茅n puede ocurrir al cambiar imgsz durante la inferencia, especialmente cuando imgsz no es el mismo que se especific贸 durante la exportaci贸n (exportar imgsz se establece como TensorRT perfil "贸ptimo").

Inconvenientes de utilizar YOLO con TensorRT INT8

  • Disminuci贸n de las m茅tricas de evaluaci贸n: Utilizar una precisi贸n menor significar谩 que mAP, Precision, Recall o cualquier otra m茅trica utilizada para evaluar el rendimiento del modelo es probable que sea algo peor. V茅ase el Secci贸n de resultados para comparar las diferencias en mAP50 y mAP50-95 al exportar con INT8 en una peque帽a muestra de varios dispositivos.

  • Mayor tiempo de desarrollo: Encontrar los ajustes "贸ptimos" para la calibraci贸n INT8 para el conjunto de datos y el dispositivo puede llevar una cantidad significativa de pruebas.

  • Dependencia del hardware: La calibraci贸n y las mejoras de rendimiento podr铆an depender en gran medida del hardware y los pesos de los modelos son menos transferibles.

Ultralytics YOLO TensorRT Rendimiento de las exportaciones

NVIDIA A100

Rendimiento

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

Consulta los Documentos de Detecci贸n para ver ejemplos de uso con estos modelos entrenados en COCO, que incluyen 80 clases preentrenadas.

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 0.52 0.51 | 0.56 8 640
FP32 COCOval 0.52 0.52 0.37 1 640
FP16 Predecir 0.34 0.34 | 0.41 8 640
FP16 COCOval 0.33 0.52 0.37 1 640
INT8 Predecir 0.28 0.27 | 0.31 8 640
INT8 COCOval 0.29 0.47 0.33 1 640

Consulta Segmentation Docs para ver ejemplos de uso con estos modelos entrenados en COCO, que incluyen 80 clases preentrenadas.

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n-seg.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(M)
mAPval
50-95(M)
batch tama帽o
(p铆xeles)
FP32 Predecir 0.62 0.61 | 0.68 8 640
FP32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
FP16 Predecir 0.40 0.39 | 0.44 8 640
FP16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 Predecir 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

Consulta los Documentos de Clasificaci贸n para ver ejemplos de uso con estos modelos entrenados en ImageNet, que incluyen 1000 clases preentrenadas.

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n-cls.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
top-1 top-5 batch tama帽o
(p铆xeles)
FP32 Predecir 0.26 0.25 | 0.28 8 640
FP32 ImagenNetval 0.26 0.35 0.61 1 640
FP16 Predecir 0.18 0.17 | 0.19 8 640
FP16 ImagenNetval 0.18 0.35 0.61 1 640
INT8 Predecir 0.16 0.15 | 0.57 8 640
INT8 ImagenNetval 0.15 0.32 0.59 1 640

Consulta los Documentos de Estimaci贸n de la Pose para ver ejemplos de uso con estos modelos entrenados en COCO, que incluyen 1 clase preentrenada, "persona".

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n-pose.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(P)
mAPval
50-95(P)
batch tama帽o
(p铆xeles)
FP32 Predecir 0.54 0.53 | 0.58 8 640
FP32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
FP16 Predecir 0.37 0.35 | 0.41 8 640
FP16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 Predecir 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

Consulta los Documentos de Detecci贸n Orientada para ver ejemplos de uso con estos modelos entrenados en DOTAv1, que incluyen 15 clases preentrenadas.

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n-obb.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 0.52 0.51 | 0.59 8 640
FP32 DOTAv1val 0.76 0.50 0.36 1 640
FP16 Predecir 0.34 0.33 | 0.42 8 640
FP16 DOTAv1val 0.59 0.50 0.36 1 640
INT8 Predecir 0.29 0.28 | 0.33 8 640
INT8 DOTAv1val 0.32 0.45 0.32 1 640

GPU de consumo

Rendimiento de detecci贸n (COCO)

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

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 1.06 0.75 | 1.88 8 640
FP32 COCOval 1.37 0.52 0.37 1 640
FP16 Predecir 0.62 0.75 | 1.13 8 640
FP16 COCOval 0.85 0.52 0.37 1 640
INT8 Predecir 0.52 0.38 | 1.00 8 640
INT8 COCOval 0.74 0.47 0.33 1 640

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

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 1.76 1.69 | 1.87 8 640
FP32 COCOval 1.94 0.52 0.37 1 640
FP16 Predecir 0.86 0.75 | 1.00 8 640
FP16 COCOval 1.43 0.52 0.37 1 640
INT8 Predecir 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

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

Nota

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 2.84 2.84 | 2.85 8 640
FP32 COCOval 2.94 0.52 0.37 1 640
FP16 Predecir 1.09 1.09 | 1.10 8 640
FP16 COCOval 1.20 0.52 0.37 1 640
INT8 Predecir 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

Dispositivos integrados

Rendimiento de detecci贸n (COCO)

Probado 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

Tiempos de inferencia mostrados para mean, min (el m谩s r谩pido), y max (el m谩s lento) para cada prueba utilizando pesos preentrenados yolov8n.engine

Precisi贸n Prueba de evaluaci贸n media
(ms)
m铆n | m谩x
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch tama帽o
(p铆xeles)
FP32 Predecir 6.11 6.10 | 6.29 8 640
FP32 COCOval 6.17 0.52 0.37 1 640
FP16 Predecir 3.18 3.18 | 3.20 8 640
FP16 COCOval 3.19 0.52 0.37 1 640
INT8 Predecir 2.30 2.29 | 2.35 8 640
INT8 COCOval 2.32 0.46 0.32 1 640

M茅todos de evaluaci贸n

Ampl铆a las secciones siguientes para obtener informaci贸n sobre c贸mo se exportaron y probaron estos modelos.

Exportar configuraciones

Consulta el modo exportar para m谩s detalles sobre los argumentos de configuraci贸n de la exportaci贸n.

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

Consulta el modo Predecir para obtener informaci贸n adicional.

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",
    )
Configuraci贸n de validaci贸n

Consulta val modo para saber m谩s sobre los argumentos de configuraci贸n de la validaci贸n.

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

Despliegue de modelos exportados de YOLOv8 TensorRT

Una vez exportados con 茅xito tus modelos Ultralytics YOLOv8 al formato TensorRT , ya est谩s preparado para desplegarlos. Para obtener instrucciones detalladas sobre el despliegue de tus modelos TensorRT en distintos entornos, echa un vistazo a los siguientes recursos:

Resumen

En esta gu铆a, nos centramos en la conversi贸n de los modelos Ultralytics YOLOv8 al formato de modelo NVIDIA's TensorRT . Este paso de conversi贸n es crucial para mejorar la eficacia y velocidad de los modelos YOLOv8 , haci茅ndolos m谩s eficaces y adecuados para diversos entornos de despliegue.

Para m谩s informaci贸n sobre los detalles de uso, echa un vistazo a la documentaci贸n oficial deTensorRT .

Si tienes curiosidad por conocer otras integraciones de Ultralytics YOLOv8 , nuestra p谩gina de gu铆a de integraciones ofrece una amplia selecci贸n de recursos informativos y puntos de vista.

PREGUNTAS FRECUENTES

驴C贸mo convierto los modelos de YOLOv8 al formato TensorRT ?

Para convertir tus modelos Ultralytics YOLOv8 al formato TensorRT para una inferencia optimizada NVIDIA GPU , sigue estos pasos:

  1. Instala el paquete necesario:

    pip install ultralytics
    
  2. Exporta tu modelo YOLOv8 :

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

Para m谩s detalles, visita la gu铆a de instalaci贸nYOLOv8 y la documentaci贸n de exportaci贸n.

驴Cu谩les son las ventajas de utilizar TensorRT para los modelos YOLOv8 ?

Utilizar TensorRT para optimizar los modelos de YOLOv8 ofrece varias ventajas:

  • Mayor velocidad de inferencia: TensorRT optimiza las capas del modelo y utiliza la calibraci贸n de precisi贸n (INT8 y FP16) para acelerar la inferencia sin sacrificar significativamente la precisi贸n.
  • Eficiencia de la memoria: TensorRT gestiona din谩micamente la memoria de tensor , reduciendo la sobrecarga y mejorando la utilizaci贸n de la memoria de GPU .
  • Fusi贸n de capas: Combina varias capas en una sola operaci贸n, reduciendo la complejidad computacional.
  • Ajuste autom谩tico del n煤cleo: Selecciona autom谩ticamente n煤cleos GPU optimizados para cada capa del modelo, garantizando el m谩ximo rendimiento.

Para m谩s informaci贸n, explora las caracter铆sticas detalladas de TensorRT aqu铆 y lee nuestra secci贸nTensorRT visi贸n general.

驴Puedo utilizar la cuantizaci贸n INT8 con TensorRT para los modelos YOLOv8 ?

S铆, puedes exportar modelos YOLOv8 utilizando TensorRT con cuantizaci贸n INT8. Este proceso implica la cuantizaci贸n post-entrenamiento (PTQ) y la calibraci贸n:

  1. Exporta con INT8:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
    
  2. Ejecuta la inferencia:

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

Para m谩s detalles, consulta la secci贸n Exportar TensorRT con cuantizaci贸n INT8.

驴C贸mo despliego los modelos YOLOv8 TensorRT en un servidor de inferencia NVIDIA Triton ?

El despliegue de los modelos YOLOv8 TensorRT en un servidor de inferencia NVIDIA Triton puede realizarse utilizando los siguientes recursos:

Estas gu铆as te ayudar谩n a integrar eficazmente los modelos YOLOv8 en diversos entornos de implantaci贸n.

驴Cu谩les son las mejoras de rendimiento observadas con los modelos de YOLOv8 exportados a TensorRT?

Las mejoras de rendimiento con TensorRT pueden variar en funci贸n del hardware utilizado. Aqu铆 tienes algunos puntos de referencia t铆picos:

  • NVIDIA A100:

    • Inferencia FP32: ~0,52 ms / imagen
    • Inferencia FP16: ~0,34 ms / imagen
    • Inferencia INT8: ~0,28 ms / imagen
    • Ligera reducci贸n del mAP con precisi贸n INT8, pero mejora significativa de la velocidad.
  • GPU de consumo (por ejemplo, RTX 3080):

    • Inferencia FP32: ~1,06 ms / imagen
    • Inferencia FP16: ~0,62 ms / imagen
    • Inferencia INT8: ~0,52 ms / imagen

En la secci贸n de rendimiento encontrar谩s pruebas de rendimiento detalladas para distintas configuraciones de hardware.

Para obtener informaci贸n m谩s completa sobre el rendimiento de TensorRT , consulta la documentaci贸n deUltralytics y nuestros informes de an谩lisis del rendimiento.



Creado 2024-01-28, Actualizado 2024-07-10
Autores: glenn-jocher (10), ambitious-octopus (1), lakshanthad (1), IvorZhu331 (1), Burhan-Q (2), abirami-vina (1)

Comentarios