Exportación de modelos con Ultralytics YOLO#
Introducción#
El objetivo final de entrenar un modelo es desplegarlo para aplicaciones del mundo real. El modo de exportación en Ultralytics YOLO26 ofrece una gama versátil de opciones para exportar tu modelo entrenado a diferentes formatos, haciéndolo desplegable a través de varias plataformas y dispositivos. Esta guía completa tiene como objetivo explicarte los matices de la exportación de modelos, mostrando cómo lograr la máxima compatibilidad y rendimiento.
Watch: How to Export Ultralytics YOLO26 in different formats for Deployment | ONNX, TensorRT, CoreML 🚀
¿Por qué elegir el modo de exportación de YOLO26?#
- Versatilidad: Exporta a múltiples formatos, incluidos ONNX, TensorRT, CoreML y más.
- Rendimiento: Consigue una aceleración de hasta 5x en GPU con TensorRT y de 3x en CPU con ONNX o OpenVINO.
- Compatibilidad: Haz que tu modelo sea desplegable universalmente a través de numerosos entornos de hardware y software.
- Facilidad de uso: API de Python y CLI simples para una exportación de modelos rápida y directa.
Características clave del modo de exportación#
Aquí tienes algunas de las funcionalidades destacadas:
- Exportación con un clic: Comandos simples para exportar a diferentes formatos.
- Exportación por lotes: Exporta modelos capaces de realizar inferencias por lotes.
- Inferencia optimizada: Los modelos exportados están optimizados para tiempos de inferencia más rápidos.
- Vídeos tutoriales: Guías detalladas y tutoriales para una experiencia de exportación fluida.
Ejemplos de uso#
Exporta un modelo YOLO26n a un formato diferente como ONNX o TensorRT. Consulta la sección de Argumentos a continuación para obtener una lista completa de los argumentos de exportación.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Argumentos#
Esta tabla detalla las configuraciones y opciones disponibles para exportar modelos YOLO a diferentes formatos. Estos ajustes son fundamentales para optimizar el rendimiento, tamaño y compatibilidad del modelo exportado en varias plataformas y entornos. Una configuración adecuada asegura que el modelo esté listo para el despliegue en la aplicación prevista con una eficiencia óptima.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'torchscript' | Formato de destino para el modelo exportado, como 'onnx', 'torchscript', 'engine' (TensorRT) u otros. Cada formato permite la compatibilidad con diferentes deployment environments. |
name | str | None | Nombre del objetivo de hardware para los formatos que requieren uno: arquitectura Hailo ('hailo8', 'hailo8l', 'hailo10h', 'hailo15h', 'hailo15l'; el valor predeterminado es 'hailo8l'), chip Rockchip RKNN (el valor predeterminado es 'rk3588'), SoC Huawei Ascend (un --soc_version de CANN; el valor predeterminado es 'Ascend310B4'), o el objetivo Qualcomm QNN HTP (el valor predeterminado es '73'). Es distinto del par de nombres de ejecución project/name utilizado por otros modos. |
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 (por ejemplo, 640 para 640×640) o una tupla (height, width) para dimensiones específicas. Cuando no se pasa, una exportación reutiliza el tamaño de entrenamiento registrado en el punto de control cargado: los puntos de control oficiales de YOLO26 registran 768 para profundidad, 224 para clasificación, 1024 para OBB y 640 para las otras tareas, mientras que un ajuste fino registra el imgsz con el que se entrenó. Un modelo construido a partir de un YAML no tiene tamaño de entrenamiento registrado y utiliza 640. |
keras | bool | False | Habilita la exportación al formato Keras para SavedModel de TensorFlow, proporcionando compatibilidad con las API y el servicio de TensorFlow. |
optimize | bool | False | Habilita una mayor optimización del compilador para DEEPX, lo que reduce la latencia de inferencia mientras aumenta el tiempo de compilación. |
quantize | int o str | None | Precisión de cuantización: 16 (FP16, reduce el tamaño del modelo y puede acelerar la inferencia en hardware compatible) o 8 (INT8/PTQ, comprime aún más el modelo con una pérdida de accuracy mínima, principalmente para edge devices; necesita calibración data/fraction); 32/sin establecer es FP32. Los formatos de exportación que admiten precisión mixta de pesos y activaciones también aceptan la notación 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Sustituye a los indicadores obsoletos half/int8 (half=True → 16, int8=True → 8, que todavía se aceptan con una advertencia de obsolescencia). Solo se permiten las precisiones compatibles con el formato de destino (véase más abajo). |
dynamic | bool | False | Permite tamaños de entrada dinámicos para exportaciones de TorchScript, ONNX, OpenVINO, TensorRT y CoreML, mejorando la flexibilidad en el manejo de dimensiones de imagen variables. |
simplify | bool | True | Simplifica el grafo ONNX intermedio con onnxslim para las exportaciones que construyen uno (consulta Export Formats), mejorando potencialmente el rendimiento y la compatibilidad con los motores de inferencia. |
opset | int | None | Especifica la versión del conjunto de operadores (opset) de ONNX para las exportaciones que construyen un grafo ONNX (consulta Export Formats), para garantizar la compatibilidad con diferentes analizadores y tiempos de ejecución de ONNX. Si no se establece, utiliza la última versión compatible. |
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. Utiliza None para la asignación automática por parte de TensorRT hasta el máximo del dispositivo. |
nms | bool | False | Añade Non-Maximum Suppression (NMS) al modelo exportado cuando sea compatible (consulta Export Formats), mejorando la eficiencia del postprocesamiento de detecciones. No disponible para modelos end2end. En el caso de CoreML, solo es compatible con modelos de detección. |
conf | float | None | Umbral de confianza utilizado siempre que se genera NMS en el tiempo de exportación: exportaciones de nms=True; exportaciones de detección sin fin a fin de Hailo; y exportaciones de detección, pose y segmentación de IMX, que fuerzan nms=True internamente. Por defecto es 0.25 cuando no se establece, excepto para las exportaciones de IMX, cuyo valor por defecto es 0.001. |
iou | float | 0.7 | Umbral de IoU utilizado siempre que se genera NMS en el tiempo de exportación: exportaciones de nms=True; exportaciones de detección sin fin a fin de Hailo; y exportaciones de detección, pose y segmentación de IMX, que fuerzan nms=True internamente. |
max_det | int | 300 | Número máximo de detecciones conservadas en la salida del modelo exportado. Se aplica a las exportaciones de nms=True en todos los formatos excepto CoreML, cuyo pipeline de NMS no tiene límite de detecciones, además de las exportaciones de detección fin a fin sin NMS (YOLO26, YOLOv10, limitadas al número de anclajes disponibles) y las exportaciones de detección, pose y segmentación de IMX. |
agnostic_nms | bool | False | Habilita NMS agnóstica de clases donde la NMS en el momento de la exportación se genera a través de la canalización estándar de nms=True, incluida la propia etapa de NMS de CoreML, suprimiendo cajas superpuestas con puntuaciones más bajas entre diferentes clases en lugar de solo dentro de la misma clase. No es compatible con las configuraciones de NMS generadas por Hailo o IMX, las cuales no tienen una opción agnóstica de clases y siguen siendo sensibles a las clases independientemente de este indicador. También está integrado en las exportaciones de extremo a extremo sin NMS (YOLO26, YOLOv10), donde solo evita que la misma detección aparezca bajo múltiples etiquetas de clase (duplicados con IoU=1.0), y no la supresión por umbral de IoU entre cajas distintas. |
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 el modo predict. Para las exportaciones a Edge TPU, esto se establece automáticamente en 1. |
device | str | None | Especifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para silicio de Apple (device=mps), NPU Ascend de Huawei (device=npu o device=npu:0), o DLA para NVIDIA Jetson (device=dla:0 o device=dla:1). Las exportaciones de TensorRT utilizan automáticamente la GPU, pero TensorRT 11.0 no es compatible con DLA. |
verbose | bool | False | Eleva el registro del constructor de TensorRT a la gravedad VERBOSE durante la exportación de format='engine'. Otros formatos de exportación lo ignoran. |
data | str | None | Ruta al YAML del dataset, esencial para la calibración de cuantización INT8; la clasificación en su lugar toma un directorio de dataset o un nombre de dataset integrado. Si no se especifica con INT8 habilitado, Ultralytics selecciona un dataset de calibración específico de la tarea cuando es necesario, o recurre al dataset predeterminado para la tarea del modelo. |
split | str | 'val' | División del dataset ('train', 'val' o 'test') utilizada para construir el cargador de datos de calibración de cuantización INT8 a partir de data. |
fraction | float, int o list | 1.0 | Subconjunto de dataset utilizado para la calibración INT8: una proporción, un recuento de imágenes o [train, val] proporciones/recuentos. El entero 1 selecciona una imagen, mientras que el flotante 1.0 selecciona todas las imágenes. Una lista limita train o val; test permanece completo. |
end2end | bool | None | Anula el modo de extremo a extremo (end-to-end) en los modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite exportar estos modelos para que sean compatibles con la canalización de postprocesamiento tradicional basada en NMS. Consulta la End-to-End Detection guide para obtener más detalles. |
Ajustar estos parámetros permite personalizar el proceso de exportación para adaptarlo a requisitos específicos, como el entorno de despliegue, las limitaciones de hardware y los objetivos de rendimiento. Seleccionar el formato y los ajustes adecuados es fundamental para lograr el mejor equilibrio entre el tamaño del modelo, la velocidad y la precisión.
Formatos de exportación#
Los formatos de exportación de YOLO26 disponibles se encuentran en la tabla siguiente. Puedes exportar a cualquier formato usando el argumento format, es decir, format='onnx' o format='engine'. Puedes predecir o validar directamente en modelos exportados, es decir, yolo predict model=yolo26n.onnx. Se muestran ejemplos de uso para tu modelo una vez finalizada la exportación. Los modelos también se pueden exportar directamente desde el navegador en Ultralytics Platform sin necesidad de configuración local.
| Formato | Argumento de format | Modelo | Metadatos | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
Opciones de cuantización#
Usa el argumento quantize para solicitar la precisión de exportación. Los valores de cadena no distinguen entre mayúsculas y minúsculas, y Ultralytics normaliza los alias aceptados antes de la exportación:
| Valores de solicitud | Valor normalizado | Significado |
|---|---|---|
8, "8", "int8", "w8a8" | 8 | Pesos y activaciones INT8 |
16, "16", "fp16", "w16a16" | 16 | Pesos y activaciones FP16 |
32, "32", "fp32", "w32a32" | 32 | Exportación FP32; igual que sin definir, excepto para ML Programs de NMS en CoreML, que utilizan FP16 de forma predeterminada |
"w8a16" | "w8a16" | Pesos INT8 con activaciones de 16 bits (FP16; INT16 en LiteRT) |
"w8a32" | "w8a32" | Pesos INT8 con activaciones FP32 (INT8 dinámico de LiteRT, no requiere calibración) |
Los flags obsoletos half=True y int8=True todavía se aceptan con advertencias de obsolescencia y se reenvían a quantize=16 y quantize=8.
No todos los formatos de exportación admiten todas las precisiones. Las solicitudes explícitas de quantize generan dicha precisión o fallan antes de la exportación:
| Formato | FP32 (32/no establecido) | FP16 (16) | INT8 (8) | W8A16 ("w8a16") | Notas |
|---|---|---|---|---|---|
| PyTorch | ✅ | N/A | N/A | N/A | Formato nativo de entrenamiento/punto de control. |
| TorchScript | ✅ | ✅ Solo GPU | ❌ | ❌ | La exportación a TorchScript en FP16 requiere device=0; la exportación a CPU es en FP32. |
| ONNX | ✅ | ✅ | ✅ | ❌ | INT8 utiliza cuantización estática y datos de calibración de ONNX Runtime. |
| OpenVINO | ✅ | ✅ | ✅ | ❌ | INT8 utiliza cuantización post-entrenamiento de NNCF. |
| TensorRT | ✅ | ✅ | ✅ | ❌ | INT8 necesita datos de calibración representativos. |
| CoreML | ✅¹ | ✅ | ✅ | ✅ | CoreML INT8 es cuantización de pesos; W8A16 utiliza pesos INT8 con activaciones FP16. ¹Los ML Programs de NMS sin definir utilizan FP16 de forma predeterminada. |
| TF SavedModel | ✅ | ❌ | ✅ | ❌ | La exportación INT8 utiliza la calibración de TensorFlow. |
| TF GraphDef | ✅ | ❌ | ❌ | ❌ | Sin conversión de precisión durante la exportación. |
| Edge TPU | ❌ | ❌ | ✅ automático | ❌ | Edge TPU requiere INT8; se habilita automáticamente cuando no está definido. |
| PaddlePaddle | ✅ | ❌ | ❌ | ❌ | Sin conversión de precisión durante la exportación. |
| MNN | ✅ | ✅ | ✅ | ❌ | INT8 es cuantización de pesos mediante la conversión a MNN. |
| NCNN | ✅ | ✅ | ❌ | ❌ | Formato de ejecución para móviles/integrados. |
| IMX500 | ❌ | ❌ | ✅ automático | ✅ | IMX500 requiere cuantización; INT8 se habilita automáticamente cuando no está definido. |
| RKNN | ❌ | ✅ depende del chip | ✅ | ❌ | RK3588/RK3576/RK3566/RK3568/RK3562/RK2118/RV1126B admiten FP16 o INT8; las variantes RV1103/RV1106 son solo INT8. |
| ExecuTorch | ✅ | ❌ | ❌ | ❌ | Sin conversión de precisión durante la exportación. |
| Axelera | ❌ | ❌ | ✅ automático | ❌ | La exportación a Axelera requiere INT8; se habilita automáticamente cuando no está definido. |
| DEEPX | ❌ | ❌ | ✅ automático | ❌ | La exportación a DEEPX requiere INT8; se habilita automáticamente cuando no está definido. |
| Qualcomm QNN | ❌ | ❌ | ❌ | ✅ automático | La exportación QNN HTP está fijada a pesos INT8 con activaciones de 16 bits. |
| LiteRT | ✅ | ❌ | ✅ | ✅ | El INT8 estático (8) y "w8a16" (pesos int8 + activaciones int16) usan datos de calibración; también admite "w8a32" INT8 dinámico (sin calibración). quantize=16 no es una exportación separada; un modelo en FP32 se ejecuta en FP16 en tiempo de ejecución a través del delegado de GPU. |
| Huawei Ascend | ❌ | ✅ automático | ❌ | ❌ | Las convoluciones del núcleo de Ascend AI aceptan solo entradas FP16/INT8, por lo que ATC compila en FP16; se activa automáticamente si no se define. |
Para las exportaciones INT8 y W8A16, proporciona datos de calibración representativos con data, como data="coco8.yaml", a menos que la integración de destino documente un comportamiento predeterminado o activado automáticamente. El esquema LiteRT "w8a32" (INT8 dinámico) no necesita datos de calibración.
Qué sigue#
Encuentra la guía de integración de tu destino de despliegue —ONNX, TensorRT, CoreML y más están en la lista completa de integraciones— para saber cómo ejecutar el modelo exportado.
FAQ#
Exportar un modelo YOLO26 a formato ONNX es directo con Ultralytics. Proporciona métodos tanto de Python como de CLI para exportar modelos.
Ejemplofrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # load an official model model = YOLO("path/to/best.pt") # load a custom-trained model # Export the model model.export(format="onnx")Para obtener más detalles sobre el proceso, incluidas opciones avanzadas como el manejo de diferentes tamaños de entrada, consulta la guía de integración de ONNX.
Usar TensorRT para la exportación de modelos ofrece mejoras de rendimiento significativas. Los modelos YOLO26 exportados a TensorRT pueden lograr hasta una aceleración de 5 veces en GPU, lo que lo hace ideal para aplicaciones de inferencia en tiempo real.
- Versatilidad: Optimiza modelos para una configuración de hardware específica.
- Velocidad: Logra una inferencia más rápida a través de optimizaciones avanzadas.
- Compatibilidad: Integra sin problemas con hardware NVIDIA.
Para obtener más información sobre la integración de TensorRT, consulta la guía de integración de TensorRT.
La cuantización INT8 es una excelente manera de comprimir el modelo y acelerar la inferencia, especialmente en dispositivos de borde. Aquí tienes cómo puedes habilitar la cuantización INT8:
Ejemplofrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Load a model model.export(format="onnx", quantize=8, data="coco8.yaml")La cuantización INT8 se puede aplicar a formatos como ONNX, TensorRT, OpenVINO, CoreML y Rockchip RKNN. Para obtener resultados óptimos de cuantización, proporciona un conjunto de datos representativo utilizando el parámetro
data. Consulta Opciones de cuantización para ver los valores aceptados dequantizey los formatos compatibles.El tamaño de entrada dinámico permite que el modelo exportado gestione dimensiones de imagen variables, lo que proporciona flexibilidad y optimiza la eficiencia de procesamiento para diferentes casos de uso. Al exportar a formatos como ONNX o TensorRT, habilitar el tamaño de entrada dinámico garantiza que el modelo pueda adaptarse a diferentes formas de entrada sin problemas.
Para habilitar esta característica, usa el flag
dynamic=Truedurante la exportación:Ejemplofrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="onnx", dynamic=True)El dimensionamiento de entrada dinámico es particularmente útil para aplicaciones donde las dimensiones de entrada pueden variar, como en el procesamiento de vídeo o cuando se manejan imágenes de diferentes fuentes.
Entender y configurar los argumentos de exportación es crucial para optimizar el rendimiento del modelo:
format:El formato de destino para el modelo exportado (por ejemplo,onnx,torchscript,tensorflow).imgsz:Tamaño de imagen deseado para la entrada del modelo (por ejemplo,640o(height, width)).quantize:Precisión de cuantización, como8/"int8",16/"fp16",32/"fp32", o los esquemas mixtos de peso/activación"w8a16"y"w8a32"(LiteRT INT8 dinámico) en formatos compatibles. Consulta Opciones de cuantización.optimize:Habilita una mayor optimización del compilador para las exportaciones DEEPX.
Para el despliegue en plataformas de hardware específicas, considera el uso de formatos de exportación especializados como TensorRT para GPUs NVIDIA, CoreML para dispositivos Apple, o Edge TPU para dispositivos Google Coral.
Cuando exportas un modelo YOLO a formatos como ONNX o TensorRT, la estructura del tensor de salida depende de la tarea del modelo. Entender estas salidas es importante para implementaciones de inferencia personalizadas.
Para modelos de detección YOLO26 (por ejemplo,
yolo26n.pt), la exportación de extremo a extremo está habilitada por defecto en los formatos que la admiten, por lo que la salida tiene una forma similar a(batch_size, max_detections, 6)con valores[x1, y1, x2, y2, confidence, class_id]. Con el valor predeterminadomax_det=300, esto suele ser(batch_size, 300, 6). Algunos formatos restringidos vuelven automáticamente al diseño de salida tradicional cuando los operadores de extremo a extremo no son compatibles.Para los modelos de detección que no son de extremo a extremo, o para los modelos YOLO26 exportados con
end2end=False, la salida suele ser un único tensor con una forma similar a(batch_size, 4 + num_classes, num_predictions)en el que los canales representan las coordenadas de las cajas más las puntuaciones por clase, ynum_predictionsdepende de la resolución de entrada de la exportación (y puede ser dinámico).Para los modelos de segmentación (por ejemplo,
yolo26n-seg.pt), normalmente obtendrás dos salidas: el primer tensor con una forma similar a(batch_size, 4 + num_classes + mask_dim, num_predictions)(cajas, puntuaciones de clase y coeficientes de máscara) y el segundo tensor con una forma similar a(batch_size, mask_dim, proto_h, proto_w)que contiene prototipos de máscara utilizados con los coeficientes para generar máscaras de instancia. Los tamaños dependen de la resolución de entrada de la exportación (y pueden ser dinámicos).Para los modelos de pose (por ejemplo,
yolo26n-pose.pt), el tensor de salida suele tener una forma similar a(batch_size, 4 + num_classes + keypoint_dims, num_predictions), dondekeypoint_dimsdepende de la especificación de pose (por ejemplo, el número de puntos clave y si se incluye la confianza), ynum_predictionsdepende de la resolución de entrada de la exportación (y puede ser dinámico).Los ejemplos de los ejemplos de inferencia de ONNX demuestran cómo procesar estas salidas para cada tipo de modelo.
Ultralytics no proporciona actualmente una API de inferencia en C++ dedicada para los modelos YOLO. Para despliegues en C++, exporta el modelo a un formato de tiempo de ejecución como ONNX, TensorRT, TorchScript o MNN, y luego carga el artefacto exportado con la API nativa de C++ de ese tiempo de ejecución.
Por ejemplo, exporta un modelo de detección con
yolo export model=yolo26n.pt format=onnxy ejecuta el archivo.onnxcon ONNX Runtime C++, o exporta conformat=enginey ejecuta el motor de TensorRT desde una aplicación de TensorRT en C++. Cuando utilices un postprocesamiento en C++ personalizado, haz que coincida con el diseño del tensor de salida para tu tarea y tus ajustes de exportación; las exportaciones de detección de extremo a extremo de YOLO26 suelen devolver(batch, max_det, 6), mientras que las exportaciones que no son de extremo a extremo devuelven tensores de predicción brutos que requieren un postprocesamiento externo.Al exportar con
quantize=16(FP16) oquantize=8(INT8), la mayoría de los tensores se convierten a una precisión menor para reducir el tamaño del modelo y mejorar el rendimiento. Sin embargo, cuandoend2end=Trueestá habilitado, el postprocesamiento (incluidos los índices de clase) se incrusta directamente en el grafo exportado.El tensor
output0contiene índices de clase, que se representan internamente como valores de coma flotante. FP16 no puede representar de forma fiable valores enteros superiores a 2048 debido a su limitada precisión de mantisa. Para evitar una posible pérdida de precisión o ID de clase incorrectos,output0se mantiene intencionadamente en FP32.Este comportamiento es esperado y también se aplica a exportaciones de menor precisión o cuantizadas donde la fidelidad del índice de clase debe preservarse.
Si se requieren salidas completas en FP16, exporta con
end2end=Falsey realiza el postprocesamiento externamente.