Exportación de Ultralytics YOLO a NCNN#
Implementar modelos de visión artificial en dispositivos con poca capacidad de cálculo, como móviles o sistemas integrados, requiere elegir cuidadosamente el formato. Usar un formato optimizado garantiza que incluso los dispositivos con recursos limitados puedan realizar tareas avanzadas de visión artificial de forma eficiente.
La exportación al formato NCNN permite optimizar los modelos Ultralytics YOLO26 para aplicaciones ligeras 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 cálculo de inferencia de redes neuronales de alto rendimiento, optimizado específicamente para plataformas móviles, como teléfonos móviles, dispositivos integrados y dispositivos IoT. NCNN es compatible con una amplia variedad de plataformas, como Linux, Android, iOS y macOS.
NCNN es conocido por su alta velocidad de procesamiento en las CPU móviles y permite implementar rápidamente modelos de aprendizaje profundo en plataformas móviles, por lo que es una opción excelente para crear aplicaciones basadas en IA.
Características principales de los modelos NCNN#
Los modelos NCNN ofrecen varias características clave que permiten el aprendizaje automático en el dispositivo y ayudan a los desarrolladores a implementar modelos en dispositivos móviles, integrados y de borde:
-
Eficiencia y alto rendimiento: Los modelos NCNN son ligeros y están optimizados para dispositivos móviles e integrados con recursos limitados, como Raspberry Pi, y mantienen una alta precisión en tareas de visión artificial.
-
Cuantización: NCNN admite la cuantización, una técnica que reduce la precisión de los pesos y las activaciones del modelo para mejorar el rendimiento y reducir el uso de memoria.
-
Compatibilidad: los modelos NCNN son compatibles con marcos populares de aprendizaje profundo, como 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 y garantizar una interoperabilidad fluida en distintos entornos de desarrollo.
-
Aceleración de GPU con Vulkan: NCNN admite Vulkan para ejecutar inferencias aceleradas por GPU en tarjetas de distintos fabricantes, como AMD, Intel y otros distintos de NVIDIA, lo que permite implementar modelos de alto rendimiento en una gama más amplia de hardware.
Opciones de implementación con NCNN#
Los modelos NCNN son compatibles con diversas plataformas de implementación:
-
Implementación en móviles: optimizados para Android e iOS, permiten una integración fluida en aplicaciones móviles para ejecutar inferencias de forma eficiente en el propio dispositivo.
-
Sistemas integrados y dispositivos IoT: ideales para dispositivos con recursos limitados, como Raspberry Pi y NVIDIA Jetson. Si la inferencia estándar en una Raspberry Pi con la guía de Ultralytics no es suficiente, NCNN puede ofrecer mejoras de rendimiento considerables.
-
Implementación en equipos de escritorio y servidores: admite la implementación en Linux, Windows y macOS para flujos de trabajo de desarrollo, entrenamiento y evaluación.
Aceleración de GPU con Vulkan#
NCNN admite la aceleración de GPU mediante Vulkan, lo que permite ejecutar inferencias de alto rendimiento en una amplia gama de GPU, incluidas las de AMD, Intel y otros fabricantes distintos de NVIDIA. Esto resulta especialmente útil para:
- Compatibilidad con GPU de distintos fabricantes: a diferencia de CUDA, que está limitado a las GPU de NVIDIA, Vulkan funciona con GPU de varios fabricantes.
- Sistemas con varias GPU: selecciona un dispositivo Vulkan específico en sistemas con varias GPU mediante
device="vulkan:0",device="vulkan:1", etc. - Implementaciones en el borde y en equipos de escritorio: aprovecha la aceleración de GPU en dispositivos donde CUDA no está disponible.
Para usar la aceleración de Vulkan, especifica el dispositivo Vulkan al ejecutar la inferencia:
from ultralytics import YOLO
# Carga el modelo exportado a NCNN
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Ejecutar inferencias con aceleración de GPU mediante Vulkan (primer dispositivo Vulkan)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Usar el segundo dispositivo Vulkan en sistemas con varias GPU
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Asegúrate de tener instalados los controladores de Vulkan para tu GPU. La mayoría de los controladores de GPU modernos incluyen compatibilidad con Vulkan de forma predeterminada. Puedes comprobar si Vulkan está disponible con herramientas como vulkaninfo en Linux o el SDK de Vulkan en Windows.
Tareas compatibles#
La exportación a NCNN admite las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esos cabezales.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar a NCNN: convierte tu modelo YOLO26#
Puedes ampliar la compatibilidad y flexibilidad de implementación de los modelos convirtiendo los modelos YOLO26 al formato NCNN.
Instalación#
Para instalar los paquetes necesarios, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara ver instrucciones detalladas y prácticas recomendadas, consulta la guía de instalación de Ultralytics. Si tienes algún problema, consulta nuestra guía de problemas habituales para encontrar soluciones.
Uso#
Todos los modelos Ultralytics YOLO26 están diseñados para admitir la exportación desde el primer momento, lo que facilita su integración en el flujo de trabajo de implementación que prefieras. Puedes consultar la lista completa de formatos de exportación y opciones de configuración compatibles para elegir la configuración más adecuada para tu aplicación.
El formato NCNN admite los modos Export, Predict y Validate. Exporta tu modelo y, después, carga el modelo exportado para ejecutar inferencias o validar su precisión.
from ultralytics import YOLO
# Carga un modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta el modelo al formato NCNN
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Carga el modelo exportado a NCNN
model = YOLO("./yolo26n_ncnn_model")
# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carga el modelo exportado a NCNN
model = YOLO("./yolo26n_ncnn_model")
# Valida la precisión con el conjunto de datos COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportación#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'ncnn' | Formato de destino del modelo exportado, que define su compatibilidad con distintos entornos de implementación. |
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 a la mitad el tamaño de los pesos exportados; 32/sin definir exporta pesos FP32, que el entorno de ejecución de CPU de NCNN sigue calculando en FP16 de forma predeterminada cuando el hardware lo admite. Sustituye la marca obsoleta half. |
batch | int | 1 | Especifica el tamaño del lote de inferencia del modelo exportado 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 obtener más información sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.
Implementar modelos YOLO26 exportados a NCNN#
Después de exportar tus modelos Ultralytics YOLO26 al formato NCNN, puedes implementarlos mediante el método YOLO("yolo26n_ncnn_model/"), como se muestra en el ejemplo de uso anterior. Para consultar instrucciones de implementación específicas de cada plataforma, visita los siguientes recursos:
-
Android: crea e integra modelos NCNN para la detección de objetos en aplicaciones Android.
-
macOS: implementa modelos NCNN en sistemas macOS.
-
Linux: implementa modelos NCNN en dispositivos Linux, como Raspberry Pi y otros sistemas integrados similares.
-
Windows x64: implementa modelos NCNN en Windows x64 con Visual Studio.
Resumen#
En esta guía hemos explicado cómo exportar modelos Ultralytics YOLO26 al formato NCNN para mejorar la eficiencia y la velocidad en dispositivos con recursos limitados.
Para obtener más información, consulta la documentación oficial de NCNN. Para ver otras opciones de exportación, visita nuestra página de guías de integración.
Preguntas frecuentes#
Para exportar tu modelo Ultralytics YOLO26 al formato NCNN:
-
Python: usa el método
exportde la clase YOLO.from ultralytics import YOLO # Carga un modelo YOLO26 model = YOLO("yolo26n.pt") # Exportar al formato NCNN model.export(format="ncnn") # creates 'yolo26n_ncnn_model' -
CLI: usa 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 varias ventajas:
- Eficiencia: los modelos NCNN están optimizados para dispositivos móviles e integrados, por lo que ofrecen 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 implementar modelos NCNN en varias plataformas, como Android, iOS, Linux y macOS.
- Aceleración de GPU con Vulkan: aprovecha la aceleración de GPU mediante Vulkan en GPU de AMD, Intel y otros fabricantes distintos de NVIDIA para ejecutar inferencias más rápido.
Para obtener más información, consulta la sección ¿Por qué exportar a NCNN?.
NCNN, desarrollado por Tencent, está optimizado específicamente para plataformas móviles. Estas son algunas razones clave para usar NCNN:
- Alto rendimiento: diseñado para procesar datos de forma eficiente y rápida en las CPU de dispositivos móviles.
- Multiplataforma: compatible con marcos populares como TensorFlow y ONNX, lo que facilita la conversión y la implementación de modelos en distintas plataformas.
- Comunidad activa: la comunidad ofrece asistencia continua y garantiza mejoras y actualizaciones constantes.
Para obtener más información, consulta la sección Características principales de los modelos NCNN.
NCNN es versátil y admite varias plataformas:
- Móviles: Android e iOS.
- Sistemas integrados y dispositivos IoT: dispositivos como Raspberry Pi y NVIDIA Jetson.
- Equipos de escritorio y servidores: Linux, Windows y macOS.
Para mejorar el rendimiento en Raspberry Pi, considera usar el formato NCNN, tal como se explica en nuestra guía de Raspberry Pi.
Para implementar tus modelos YOLO26 en Android:
- Compilar para Android: sigue la guía para compilar NCNN para Android.
- Integrar en tu aplicación: usa el SDK de Android de NCNN para integrar el modelo exportado en tu aplicación y ejecutar inferencias de forma eficiente en el propio dispositivo.
Para ver instrucciones detalladas, consulta Implementar modelos YOLO26 exportados a NCNN.
Para consultar guías y casos de uso más avanzados, visita la guía de implementación de Ultralytics.
NCNN admite Vulkan para acelerar la GPU en dispositivos de AMD, Intel y otros fabricantes distintos de NVIDIA. Para usar Vulkan:
from ultralytics import YOLO # Cargar el modelo NCNN y ejecutarlo con la GPU mediante Vulkan model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Usar el primer dispositivo VulkanEn sistemas con varias GPU, especifica el índice del dispositivo (por ejemplo,
vulkan:1para la segunda GPU). Asegúrate de tener instalados los controladores de Vulkan para tu GPU. Consulta la sección Aceleración de GPU con Vulkan para obtener más información.