Ir al contenido

TensorRT Exportación para modelos YOLO11

La implementación de modelos de visión por ordenador en entornos de alto rendimiento puede requerir un formato que maximice la velocidad y la eficiencia. Esto es especialmente cierto cuando se despliega el modelo en GPUs NVIDIA .

Utilizando el formato de exportación TensorRT , puede mejorar sus Ultralytics YOLO11 modelos para una inferencia rápida y eficiente en el hardware de NVIDIA . Esta guía te proporcionará pasos fáciles de seguir para el proceso de conversión y te ayudará a sacar el máximo partido de la tecnología avanzada de NVIDIA en tus proyectos de aprendizaje profundo.

TensorRT

TensorRT Visión general

TensorRTdesarrollado por NVIDIA, es un kit de desarrollo de software (SDK) avanzado 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. La conversión de 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, incluidos TensorFlow, PyTorchy ONNX, lo que proporciona a los desarrolladores una solución flexible para integrar y optimizar modelos de diferentes marcos de trabajo. Esta versatilidad permite una implantación 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 de 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 kernel: TensorRT aplica el ajuste automático del kernel para seleccionar el kernel GPU más optimizado para cada capa del modelo. Este enfoque adaptativo garantiza que el modelo aproveche al máximo la capacidad de cálculo de la GPU.

Opciones de implantación en TensorRT

Antes de ver el código para exportar modelos YOLO11 al formato TensorRT , entendamos dónde se utilizan normalmente los modelos TensorRT .

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

  • Despliegue dentro de TensorFlow: Este método integra TensorRT en TensorFlow, permitiendo que los modelos optimizados se ejecuten en un entorno familiar TensorFlow . Es útil para modelos con una mezcla de capas soportadas y no soportadas, ya que TF-TRT puede manejarlas eficientemente.

TensorRT Visión general

  • API de tiempo de ejecución independiente 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 inferencia: Una opción que admite modelos de varios marcos. Especialmente adecuado para la inferencia en la nube o en los bordes, ofrece funciones como la ejecución concurrente de modelos y el análisis de modelos.

Exportación de modelos YOLO11 a TensorRT

Puede mejorar la eficacia de la ejecución y optimizar el rendimiento convirtiendo los modelos de YOLO11 al formato TensorRT .

Instalación

Para instalar el paquete necesario, ejecute

Instalación

# Install the required package for YOLO11
pip install ultralytics

Para obtener instrucciones detalladas y buenas prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalaciónYOLO11 . Mientras instala los paquetes necesarios para YOLO11, si encuentra alguna dificultad, consulte nuestra guía de problemas comunes para obtener soluciones y consejos.

Utilización

Antes de sumergirse en las instrucciones de uso, asegúrese de consultar la gama de modelos deYOLO11 que ofrece Ultralytics. Esto le ayudará a elegir el modelo más apropiado para los requisitos de su proyecto.

Utilización

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'

Argumentos de exportación

Argumento Tipo Por defecto Descripción
format str 'engine' Formato de destino para el modelo exportado, que define la compatibilidad con varios entornos de despliegue.
imgsz int o tuple 640 Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas.
half bool False Permite la cuantización FP16 (media precisión), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en hardware compatible.
int8 bool False Activa la cuantización INT8, comprimiendo aún más el modelo y acelerando la inferencia con una pérdida mínima de precisión, principalmente para dispositivos de borde.
dynamic bool False Permite tamaños de entrada dinámicos, lo que aumenta la flexibilidad a la hora de manejar dimensiones de imagen variables.
simplify bool True Simplifica el gráfico del modelo con onnxslimmejorando potencialmente el rendimiento y la compatibilidad.
workspace float o None None Establece el tamaño máximo del espacio de trabajo en GiB para las optimizaciones de TensorRT , equilibrando el uso de memoria y el rendimiento; utilice None para autoasignación por TensorRT hasta el máximo del dispositivo.
nms bool False Añade supresión no máxima (NMS), esencial para un postprocesado de detección preciso y eficaz.
batch int 1 Especifica el tamaño de la inferencia por lotes del modelo de exportación o el número máximo de imágenes que el modelo exportado procesará simultáneamente en predict modo.
data str 'coco8.yaml' Camino a la conjunto de datos archivo de configuración (por defecto: coco8.yaml), esencial para la cuantización.

Para más detalles sobre el proceso de exportación, visite la página de documentaciónUltralytics sobre exportación.

Exportación de 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 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.

Cuando se procesan 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 le asigna un kernel con precisión INT8, de lo contrario TensorRT selecciona una precisión de FP32 o FP16 para el kernel basándose en 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 el despliegue se utiliza para exportar con precisión INT8, ya que los resultados de calibración pueden variar de un dispositivo a otro.

Configuración de la exportación INT8

Los argumentos proporcionados al utilizar exportar para un modelo Ultralytics YOLO muy influyen en el rendimiento del modelo exportado. También tendrán que seleccionarse en función de los recursos de dispositivo disponibles, aunque 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 puede leer más detalles sobre las opciones disponibles en la Guía del desarrollador TensorRT. Ultralytics las pruebas determinaron que "ENTROPY_CALIBRATION_2" era la mejor opción y las exportaciones se fijan en el uso de este algoritmo.

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

    • Ajuste el workspace en función de sus necesidades de calibración y de 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 del modelo y precisión. 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=Noneque permitirá a TensorRT asignar memoria automáticamente, cuando se configura manualmente, puede ser necesario aumentar este valor si la calibración se bloquea (sale sin aviso).

    • 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 o ajustarse a None.

    • Si workspace está ajustado al valor máximo y la calibración falla/se bloquea, considere la posibilidad de utilizar None para la autoasignación o reduciendo los valores de imgsz y batch para reducir los requisitos de memoria.

    • Recuerde que la calibración para INT8 es específica para cada dispositivo, tomar prestado un GPU de "gama alta" para la calibración, podría resultar en un rendimiento pobre cuando la inferencia se ejecuta 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, dos veces el batch se utilizará el tamaño proporcionado. El uso de lotes pequeños puede dar lugar a un escalado impreciso 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 con la calibración final, por lo que el batch se duplica automáticamente. Si no se tamaño del lote se especifica 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 que sean representativas de los datos de su modelo, con calibración de cuantización INT8. Esto es una directriz y no una duro y tendrá que experimentar con lo que se requiere para obtener buenos resultados para su conjunto de datos. Dado que los datos de calibración son necesarios para la calibración INT8 con TensorRT, asegúrese de utilizar la funció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á una de las "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,  
    batch=8,  
    workspace=4,  
    int8=True,
    data="coco.yaml",  
)

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

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
# 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'
Caché de calibración

TensorRT generará una calibración .cache que puede reutilizarse para acelerar la exportación de las ponderaciones de futuros modelos utilizando los mismos datos, pero esto puede dar lugar a una calibración deficiente cuando los datos son muy diferentes o si el batch se modifica drásticamente. En estas circunstancias, el .cache debe ser renombrado y movido a un directorio diferente o eliminado 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 en 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 en dispositivos alimentados por batería.

  • Mayor velocidad de inferencia: TensorRT optimiza el modelo para el hardware de destino, lo que puede acelerar la velocidad de inferencia 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 el especificado 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 más baja 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

Consulte Detection 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.engine

Precisión Prueba de evaluación media
(ms)
min | max
(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

Consulte 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)
min | max
(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

Consulte 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)
min | max
(ms)
top-1 top-5 batch tamaño
(píxeles)
FP32 Predecir 0.26 0.25 | 0.28 8 640
FP32 ImageNetval 0.26 0.35 0.61 1 640
FP16 Predecir 0.18 0.17 | 0.19 8 640
FP16 ImageNetval 0.18 0.35 0.61 1 640
INT8 Predecir 0.16 0.15 | 0.57 8 640
INT8 ImageNetval 0.15 0.32 0.59 1 640

Ver Pose Estimation Docs para ejemplos de uso con estos modelos entrenados en COCO, que incluyen 1 clase pre-entrenada, "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)
min | max
(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

Consulte Oriented Detection Docs 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)
min | max
(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)
min | max
(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)
min | max
(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)
min | max
(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)
min | max
(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íe las secciones siguientes para obtener información sobre cómo se exportaron y probaron estos modelos.

Exportar configuraciones

Consulte el modo de exportación para obtener más información sobre los argumentos de configuración de 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

Consulte el modo de predicción 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

Véase 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 YOLO11 TensorRT

Tras haber exportado correctamente sus modelos Ultralytics YOLO11 al formato TensorRT , ya está listo para desplegarlos. Para obtener instrucciones detalladas sobre el despliegue de los modelos TensorRT en distintos entornos, consulte los siguientes recursos:

Resumen

En esta guía, nos centramos en la conversión de los modelos Ultralytics YOLO11 al formato de modelo NVIDIA's TensorRT . Este paso de conversión es crucial para mejorar la eficiencia y la velocidad de los modelos YOLO11 , haciéndolos más eficaces y adecuados para diversos entornos de despliegue.

Para más información sobre los detalles de uso, eche un vistazo a la documentación oficial deTensorRT .

Si tiene curiosidad por conocer otras integraciones de Ultralytics YOLO11 , en nuestra página de guía de integraciones encontrará una amplia selección de recursos informativos y puntos de vista.

PREGUNTAS FRECUENTES

¿Cómo puedo convertir los modelos de YOLO11 al formato TensorRT ?

Para convertir sus modelos Ultralytics YOLO11 al formato TensorRT para una inferencia optimizada NVIDIA GPU , siga estos pasos:

  1. Instale el paquete necesario:

    pip install ultralytics
    
  2. Exporte su modelo YOLO11 :

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

Para más detalles, consulte la guía de instalaciónYOLO11 y la documentación de exportación.

¿Cuáles son las ventajas de utilizar TensorRT para los modelos YOLO11 ?

La utilización de TensorRT para optimizar los modelos de YOLO11 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 la memoria de tensor de forma dinámica, lo que reduce la sobrecarga y mejora la utilización de la memoria de GPU .
  • Fusión de capas: Combina varias capas en una sola operación, lo que reduce 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 obtener más información, explore las características detalladas de TensorRT aquí y lea nuestra secciónTensorRT overview.

¿Puedo utilizar la cuantización INT8 con TensorRT para los modelos YOLO11 ?

Sí, puede exportar modelos YOLO11 utilizando TensorRT con cuantización INT8. Este proceso implica la cuantización post-entrenamiento (PTQ) y la calibración:

  1. Exportar con INT8:

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

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

Para más detalles, consulte la sección de exportación de TensorRT con cuantización INT8.

¿Cómo implanto modelos YOLO11 TensorRT en un servidor de inferencia NVIDIA Triton ?

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

Estas guías le ayudarán a integrar eficazmente los modelos de 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. A continuación se muestran 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á pruebas de rendimiento detalladas para distintas configuraciones de hardware.

Para obtener información más completa sobre el rendimiento de TensorRT , consulte la documentación deUltralytics y nuestros informes de análisis de rendimiento.

Creado hace 1 año ✏️ Actualizado hace 4 días

Comentarios