Exportación de Ultralytics YOLO a NCNN#
Desplegar modelos de computer vision en dispositivos con potencia de cálculo limitada, como sistemas móviles o integrados, requiere una cuidadosa selección del formato. Utilizar un formato optimizado garantiza que incluso los dispositivos con recursos limitados puedan gestionar tareas avanzadas de computer vision de manera eficiente.
Exportar al formato NCNN te permite optimizar tus modelos de Ultralytics YOLO26 para aplicaciones ligeras basadas en dispositivos. Esta guía explica cómo convertir tus modelos al formato NCNN para mejorar el rendimiento en dispositivos móviles e integrados.
¿Por qué exportar a NCNN?#
El framework NCNN, desarrollado por Tencent, es un framework de inferencia y computación de neural network de alto rendimiento optimizado específicamente para plataformas móviles, incluidos teléfonos móviles, dispositivos integrados y dispositivos IoT. NCNN es compatible con una amplia gama de plataformas, como Linux, Android, iOS y macOS.
NCNN es conocido por su rápida velocidad de procesamiento en CPU móviles y permite el despliegue rápido de modelos de deep learning en plataformas móviles, lo que lo convierte en una excelente opción para construir aplicaciones impulsadas por IA.
Características clave de los modelos NCNN#
Los modelos NCNN ofrecen varias características clave que permiten el machine learning en el dispositivo, ayudando a los desarrolladores a desplegar modelos en dispositivos móviles, integrados y de borde:
-
Eficiente y de alto rendimiento: Los modelos NCNN son ligeros y están optimizados para dispositivos móviles e integrados como Raspberry Pi con recursos limitados, al tiempo que mantienen una alta accuracy en tareas de computer vision.
-
Cuantización: NCNN admite la cuantización, una técnica que reduce la precision de los pesos y activaciones del modelo para mejorar el rendimiento y reducir la huella de memoria.
-
Compatibilidad: Los modelos NCNN son compatibles con populares frameworks de deep learning, incluidos TensorFlow, Caffe y ONNX, lo que permite a los desarrolladores aprovechar los modelos y flujos de trabajo existentes.
-
Facilidad de uso: NCNN proporciona herramientas fáciles de usar para convertir modelos entre formatos, asegurando una interoperabilidad fluida a través de diferentes entornos de desarrollo.
-
Aceleración de GPU Vulkan: NCNN admite Vulkan para la inferencia acelerada por GPU a través de múltiples proveedores, incluyendo AMD, Intel y otras GPUs que no son NVIDIA, lo que permite un despliegue de alto rendimiento en una gama más amplia de hardware.
Opciones de despliegue con NCNN#
Los modelos NCNN son compatibles con una variedad de plataformas de despliegue:
-
Despliegue móvil: Optimizado para Android e iOS, permitiendo una integración perfecta en aplicaciones móviles para una inferencia eficiente en el dispositivo.
-
Sistemas integrados y dispositivos IoT: Ideal para dispositivos con recursos limitados como Raspberry Pi y NVIDIA Jetson. Si la inferencia estándar en una Raspberry Pi con la Ultralytics Guide no es suficiente, NCNN puede proporcionar mejoras significativas de rendimiento.
-
Despliegue en escritorio y servidor: Admite el despliegue en Linux, Windows y macOS para flujos de trabajo de desarrollo, entrenamiento y evaluación.
Aceleración de GPU Vulkan#
NCNN admite la aceleración de GPU a través de Vulkan, permitiendo una inferencia de alto rendimiento en una amplia gama de GPUs, incluyendo AMD, Intel y otras tarjetas gráficas que no son de NVIDIA. Esto es particularmente útil para:
- Compatibilidad con GPUs de múltiples proveedores: A diferencia de CUDA, que está limitado a GPUs NVIDIA, Vulkan funciona con múltiples proveedores de GPU.
- Sistemas con múltiples GPU: Selecciona un dispositivo Vulkan específico en sistemas con múltiples GPU usando
device="vulkan:0",device="vulkan:1", etc. - Despliegues en el borde y escritorio: Aprovecha la aceleración de GPU en dispositivos donde CUDA no está disponible.
Para usar la aceleración Vulkan, especifica el dispositivo Vulkan al ejecutar la inferencia:
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Asegúrate de tener instalados los controladores Vulkan para tu GPU. La mayoría de los controladores de GPU modernos incluyen compatibilidad con Vulkan de forma predeterminada. Puedes verificar la disponibilidad de Vulkan utilizando herramientas como vulkaninfo en Linux o el SDK de Vulkan en Windows.
Tareas compatibles#
La exportación a NCNN es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles en YOLO26, la única familia que incluye esas cabezas.
Exportar a NCNN: Convirtiendo tu modelo YOLO26#
Puedes ampliar la compatibilidad del modelo y la flexibilidad de despliegue convirtiendo modelos YOLO26 al formato NCNN.
Instalación#
Para instalar los paquetes necesarios, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y mejores prácticas, consulta la Ultralytics Installation guide. Si encuentras alguna dificultad, consulta nuestra Common Issues guide para encontrar soluciones.
Uso#
Todos los modelos de Ultralytics YOLO26 están diseñados para admitir la exportación de serie, lo que facilita su integración en tu flujo de trabajo de despliegue preferido. Puedes ver la lista completa de formatos de exportación compatibles y opciones de configuración para elegir la mejor configuración para tu aplicación.
El formato NCNN es compatible con los modos Export, Predict y Validate. Exporta tu modelo y, a continuación, carga el modelo exportado para ejecutar la inferencia o validar su precisión.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates '/yolo26n_ncnn_model'from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argumentos de exportación#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'ncnn' | Formato de destino para el modelo exportado, definiendo la compatibilidad con diversos 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. |
quantize | int o str | None | Precisión de cuantización: 16 (FP16) reduce el tamaño del modelo y puede acelerar la inferencia; 32/sin definir es FP32. Sustituye al indicador obsoleto half. |
batch | int | 1 | Especifica el tamaño de 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. |
device | str | None | Especifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps). |
Para más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.
Desplegar modelos YOLO26 NCNN exportados#
Después de exportar tus modelos de Ultralytics YOLO26 al formato NCNN, puedes desplegarlos utilizando el método YOLO("yolo26n_ncnn_model/") como se muestra en el ejemplo de uso anterior. Para obtener instrucciones de despliegue específicas de cada plataforma, consulta los siguientes recursos:
-
Android: Construye e integra modelos NCNN para la object detection en aplicaciones de Android.
-
macOS: Despliega modelos NCNN en sistemas macOS.
-
Linux: Despliega modelos NCNN en dispositivos Linux, incluyendo Raspberry Pi y sistemas integrados similares.
-
Windows x64: Despliega modelos NCNN en Windows x64 utilizando Visual Studio.
Resumen#
Esta guía cubrió la exportación de modelos Ultralytics YOLO26 al formato NCNN para mejorar la eficiencia y la velocidad en dispositivos con recursos limitados.
Para obtener detalles adicionales, consulta la official NCNN documentation. Para otras opciones de exportación, visita nuestra integration guide page.
FAQ#
Para exportar tu modelo Ultralytics YOLO26 al formato NCNN:
-
Python: Utiliza el método
exportde la clase YOLO.from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates '/yolo26n_ncnn_model' -
CLI: Utiliza el comando
yolo export.yolo export model=yolo26n.pt format=ncnn # creates '/yolo26n_ncnn_model'
Para ver las opciones de exportación detalladas, consulta la documentación de Export.
-
Exportar tus modelos Ultralytics YOLO26 a NCNN ofrece varios beneficios:
- Eficiencia: Los modelos NCNN están optimizados para dispositivos móviles e integrados, garantizando un alto rendimiento incluso con recursos computacionales limitados.
- Cuantización: NCNN admite técnicas como la cuantización que mejoran la velocidad del modelo y reducen el uso de memoria.
- Amplia compatibilidad: Puedes desplegar modelos NCNN en múltiples plataformas, incluyendo Android, iOS, Linux y macOS.
- Aceleración de GPU Vulkan: Aprovecha la aceleración de GPU en AMD, Intel y otras GPUs que no son de NVIDIA a través de Vulkan para una inferencia más rápida.
Para más detalles, consulta la sección Why Export to NCNN?.
NCNN, desarrollado por Tencent, está específicamente optimizado para plataformas móviles. Las razones clave para usar NCNN incluyen:
- Alto rendimiento: Diseñado para un procesamiento eficiente y rápido en CPUs móviles.
- Multiplataforma: Compatible con frameworks populares como TensorFlow y ONNX, lo que facilita la conversión y el despliegue de modelos en diferentes plataformas.
- Soporte de la comunidad: El soporte activo de la comunidad garantiza mejoras y actualizaciones continuas.
Para más información, consulta la sección Key Features of NCNN Models.
NCNN es versátil y admite varias plataformas:
- Móvil: Android, iOS.
- Sistemas integrados y dispositivos IoT: Dispositivos como Raspberry Pi y NVIDIA Jetson.
- Escritorio y servidores: Linux, Windows y macOS.
Para un mejor rendimiento en Raspberry Pi, considera usar el formato NCNN tal como se detalla en nuestra Raspberry Pi Guide.
Para desplegar tus modelos YOLO26 en Android:
- Compilar para Android: Sigue la guía NCNN Build for Android.
- Integrar con tu aplicación: Usa el SDK de NCNN para Android para integrar el modelo exportado en tu aplicación para una inferencia eficiente en el dispositivo.
Para obtener instrucciones detalladas, consulta Deploying Exported YOLO26 NCNN Models.
Para guías y casos de uso más avanzados, visita la Ultralytics deployment guide.
NCNN admite Vulkan para la aceleración de GPU en AMD, Intel y otras GPUs que no son de NVIDIA. Para usar Vulkan:
from ultralytics import YOLO # Load NCNN model and run with Vulkan GPU model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Use first Vulkan devicePara sistemas con múltiples GPU, especifica el índice del dispositivo (por ejemplo,
vulkan:1para la segunda GPU). Asegúrate de que los controladores Vulkan estén instalados para tu GPU. Consulta la sección Vulkan GPU Acceleration para obtener más detalles.