TensorRT Exportaci贸n para modelos YOLOv8
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 YOLOv8 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 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 implantaci贸n en TensorRT
Antes de ver el c贸digo para exportar modelos YOLOv8 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 YOLOv8 a TensorRT
Puede 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, ejecute
Para obtener instrucciones detalladas y buenas pr谩cticas relacionadas con el proceso de instalaci贸n, consulta nuestra gu铆a de instalaci贸nYOLOv8 . Mientras instala los paquetes necesarios para YOLOv8, 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 deYOLOv8 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 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")
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, # (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")
- Exporta con ejes din谩micos, esto se activar谩 por defecto al exportar con
int8=True
aunque no se haya establecido expl铆citamente. V茅ase argumentos de exportaci贸n para m谩s informaci贸n. - 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. - Asigna 4 GiB de memoria en lugar de asignar todo el dispositivo para el proceso de conversi贸n.
- 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 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 YOLOv8 TensorRT
Tras haber exportado correctamente sus modelos Ultralytics YOLOv8 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 YOLOv8 al formato de modelo NVIDIA's TensorRT . Este paso de conversi贸n es crucial para mejorar la eficiencia y la 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, eche un vistazo a la documentaci贸n oficial deTensorRT .
Si tiene curiosidad por conocer otras integraciones de Ultralytics YOLOv8 , 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 YOLOv8 al formato TensorRT ?
Para convertir sus modelos Ultralytics YOLOv8 al formato TensorRT para una inferencia optimizada NVIDIA GPU , siga estos pasos:
-
Instale el paquete necesario:
-
Exporte su modelo YOLOv8 :
Para m谩s detalles, consulte 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 ?
La utilizaci贸n de 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 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 YOLOv8 ?
S铆, puede exportar modelos YOLOv8 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 YOLOv8 TensorRT en un servidor de inferencia NVIDIA Triton ?
El despliegue de modelos YOLOv8 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.