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
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.
-
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.
-
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
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")
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 onnxslim mejorando 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 valorworkspace
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, unworkspace
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=None
que 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 deworkspace
es mayor que la memoria disponible en el dispositivo, lo que significa que el valor deworkspace
debe reducirse o ajustarse aNone
. -
Si
workspace
está ajustado al valor máximo y la calibración falla/se bloquea, considere la posibilidad de utilizarNone
para la autoasignación o reduciendo los valores deimgsz
ybatch
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=1
la 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 enmAP50
ymAP50-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 |
Información
Consulte nuestra guía de inicio rápido en NVIDIA Jetson con Ultralytics YOLO para obtener más información sobre la instalación y configuración.
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.
Configuración de validación
Véase val
modo para saber más sobre los argumentos de configuración de la validación.
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:
-
Despliegue Ultralytics con un servidor Triton : Nuestra guía sobre cómo utilizar NVIDIA's Triton Inference (anteriormente TensorRT Inference) Server específicamente para su uso con modelos Ultralytics YOLO .
-
Despliegue de redes neuronales profundas con NVIDIA TensorRT: Este artículo explica cómo utilizar NVIDIA TensorRT para desplegar redes neuronales profundas en plataformas de despliegue basadas en GPU de forma eficiente.
-
IA de extremo a extremo para PC basados en NVIDIA: NVIDIA TensorRT Despliegue: Esta entrada de blog explica el uso de NVIDIA TensorRT para optimizar y desplegar modelos de IA en PCs basados en NVIDIA.
-
Repositorio GitHub para NVIDIA TensorRT :: Este es el repositorio oficial de GitHub que contiene el código fuente y la documentación de NVIDIA TensorRT .
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:
-
Instale el paquete necesario:
-
Exporte su modelo YOLO11 :
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:
-
Exportar con INT8:
-
Ejecutar inferencia:
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:
- Despliegue Ultralytics YOLOv8 con Triton Server: Guía paso a paso para configurar y utilizar Triton Inference Server.
- NVIDIA Triton Documentación del servidor de inferencia: Documentación oficial de NVIDIA para opciones de despliegue y configuraciones detalladas.
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.