TensorRT Exportar para YOLOv8 Modelos
La implantaci贸n de modelos de visi贸n computerizada en entornos de alto rendimiento puede requerir un formato que maximice la velocidad y la eficiencia. Esto es especialmente cierto cuando implantas 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谩 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
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. 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.
-
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 de la GPU.
-
Ajuste autom谩tico del n煤cleo: TensorRT aplica el ajuste autom谩tico del n煤cleo para seleccionar el n煤cleo de 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 la GPU.
Opciones de despliegue en TensorRT
Antes de ver el c贸digo para exportar los modelos YOLOv8 al formato TensorRT , vamos a entender d贸nde se utilizan normalmente los modelos TensorRT .
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.
-
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 Inferencia: 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
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')
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 GPUs discretas NVIDIA Ampere (o m谩s recientes). 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.-
Intenta utilizar la m铆nimo
workspace
valor requerido, ya que esto impide probar algoritmos que requieren m谩sworkspace
de ser tenida en cuenta por el constructor de TensorRT . Establecer un valor m谩s alto paraworkspace
puede tomar considerablemente m谩s largo para calibrar y exportar. -
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 deworkspace
es mayor que la memoria disponible en el dispositivo, lo que significa que el valor deworkspace
debe reducirse. -
Si
workspace
est谩 ajustado al valor m谩ximo y la calibraci贸n falla/se bloquea, considera la posibilidad de reducir los valores deimgsz
ybatch
para reducir los requisitos de memoria. -
Recuerda que la calibraci贸n para INT8 es espec铆fica de cada dispositivo, tomar prestada una GPU de "gama alta" para la calibraci贸n, podr铆a dar lugar a un rendimiento deficiente cuando la inferencia se ejecute 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 elbatch
se duplica autom谩ticamente. Si no se especifica el tama帽o del lotebatch=1
la calibraci贸n se realizar谩 enbatch=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 tu modelo, con calibraci贸n de cuantizaci贸n INT8. Se trata de una directriz 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)!
)
model = YOLO("yolov8n.engine", task="detect") # load the model
- 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. - 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).
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 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
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 | 0.35 | 0.61 | 8 | 640 |
FP32 | ImagenNetval | 0.26 | 1 | 640 | |||
FP16 | Predecir | 0.18 | 0.17 | 0.19 | 0.35 | 0.61 | 8 | 640 |
FP16 | ImagenNetval | 0.18 | 1 | 640 | |||
INT8 | Predecir | 0.16 | 0.15 | 0.57 | 0.32 | 0.59 | 8 | 640 |
INT8 | ImagenNetval | 0.15 | 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 5.1.3 (L4T 35.5.0) Ubuntu 20.04.6, python 3.8.10
, ultralytics==8.2.4
, tensorrt==8.5.2.2
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.90 | 6.89 | 6.93 | 8 | 640 | ||
FP32 | COCOval | 6.97 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Predecir | 3.36 | 3.35 | 3.39 | 8 | 640 | ||
FP16 | COCOval | 3.39 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Predecir | 2.32 | 2.32 | 2.34 | 8 | 640 | ||
INT8 | COCOval | 2.33 | 0.47 | 0.33 | 1 | 640 |
Informaci贸n
Consulta nuestra gu铆a de inicio r谩pido sobre NVIDIA Jetson con Ultralytics YOLO para obtener m谩s informaci贸n sobre la instalaci贸n y la configuraci贸n.
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
out = model.export(
format="engine",
imgsz:640,
dynamic:True,
verbose:False,
batch:8,
workspace:2,
int8=True,
data:"data.yaml" # COCO, ImageNet, or DOTAv1 for appropriate model task
)
Predecir bucle
Consulta el modo Predecir para obtener informaci贸n adicional.
Configuraci贸n de validaci贸n
Consulta val
modo para saber m谩s sobre los argumentos de configuraci贸n de la validaci贸n.
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:
-
Despliega Ultralytics con un servidor Triton : Nuestra gu铆a sobre c贸mo utilizar el Servidor Triton Inference (antes TensorRT Inference) de NVIDIA espec铆ficamente para su uso con modelos Ultralytics YOLO .
-
Implantaci贸n 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 PCs basados en NVIDIA: Implementaci贸n de NVIDIA TensorRT : Esta entrada de blog explica el uso de NVIDIA TensorRT para optimizar e implantar 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 TensorRT de NVIDIA. Este paso de conversi贸n es crucial para mejorar la eficacia y la velocidad de los modelos YOLOv8 , haci茅ndolos m谩s eficaces y adecuados para diversos entornos de implantaci贸n.
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.