Exportación de Ultralytics YOLO a NCNN#
Implementar modelos de visión por ordenador en dispositivos con una potencia computacional limitada, como sistemas móviles o integrados, requiere seleccionar cuidadosamente el formato. Usar un formato optimizado garantiza que incluso los dispositivos con recursos limitados puedan gestionar tareas avanzadas de visión por ordenador de forma eficiente.
Exportar al formato NCNN 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 computación de inferencia de redes neuronales 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 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 deep learning en plataformas móviles, lo que lo convierte en una excelente opción para crear aplicaciones basadas en IA.
Características principales de los modelos NCNN#
Los modelos NCNN ofrecen varias características clave que permiten el machine learning en el dispositivo y ayudan a los desarrolladores a implementar modelos en dispositivos móviles, integrados y periféricos:
-
Eficientes 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 precisión en tareas de visión por ordenador.
-
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 su huella de memoria.
-
Compatibilidad: los modelos NCNN son compatibles con frameworks populares de deep learning, 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, lo que garantiza una interoperabilidad fluida entre distintos entornos de desarrollo.
-
Aceleración de GPU mediante Vulkan: NCNN admite Vulkan para realizar inferencias aceleradas por GPU en múltiples proveedores, incluidos AMD, Intel y otras GPU que no son de NVIDIA, lo que permite implementaciones de alto rendimiento en una mayor variedad de hardware.
Opciones de implementación con NCNN#
Los modelos NCNN son compatibles con diversas plataformas de implementación:
-
Implementación móvil: optimizada para Android e iOS, permite una integración fluida en aplicaciones móviles para realizar inferencias eficientes 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 guía de Ultralytics no es suficiente, NCNN puede ofrecer mejoras de rendimiento significativas.
-
Implementación en ordenadores de sobremesa y servidores: admite implementaciones en Linux, Windows y macOS para flujos de trabajo de desarrollo, entrenamiento y evaluación.
Aceleración de GPU mediante Vulkan#
NCNN admite la aceleración de GPU mediante Vulkan, lo que permite realizar inferencias de alto rendimiento en una amplia variedad de GPU, incluidas AMD, Intel y otras tarjetas gráficas que no son de NVIDIA. Esto resulta especialmente útil para:
- Compatibilidad con GPU de distintos proveedores: a diferencia de CUDA, que está limitado a las GPU de NVIDIA, Vulkan funciona con GPU de múltiples proveedores.
- Sistemas con varias GPU: selecciona un dispositivo Vulkan específico en sistemas con varias GPU mediante
device="vulkan:0",device="vulkan:1", etc. - Implementaciones periféricas y de sobremesa: 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
# 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 de 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 mediante 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 esas cabezas.
| Tarea | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detección | ✅ | ✅ | ✅ |
| Segmentación | ✅ | ✅ | ✅ |
| Semántica | ❌ | ❌ | ✅ |
| Profundidad | ❌ | ❌ | ✅ |
| Clasificación | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar a NCNN: convertir tu modelo YOLO26#
Puedes ampliar la compatibilidad y la flexibilidad de implementación de los modelos YOLO26 convirtiéndolos al formato NCNN.
Instalación#
Para instalar los paquetes necesarios, ejecuta:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y conocer las prácticas recomendadas, consulta la guía de instalación de Ultralytics. Si tienes alguna dificultad, 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 de forma nativa, lo que facilita su integración en tu flujo de trabajo de despliegue preferido. 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
# 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 del modelo exportado, que define 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 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 los pesos exportados; 32/sin especificar exporta pesos FP32, que el runtime de CPU de NCNN sigue calculando en FP16 de forma predeterminada cuando el hardware lo admite. Sustituye al indicador obsoleto 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) o MPS para Apple silicon (device=mps). |
Para obtener más información sobre el proceso de exportación, visita la página de la documentación de Ultralytics sobre exportación.
Implementación de modelos YOLO26 NCNN exportados#
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, revisa 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, incluida Raspberry Pi y sistemas integrados similares.
-
Windows x64: implementa modelos NCNN en Windows x64 mediante Visual Studio.
Resumen#
Esta guía ha 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 conocer otras opciones de exportación, visita nuestra página de la guía de integraciones.
Preguntas frecuentes#
Para exportar tu modelo Ultralytics YOLO26 al formato NCNN:
-
Python: usa 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: usa el comando
yolo export.yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
Para consultar las opciones de exportación detalladas, revisa 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, lo que garantiza 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 mediante Vulkan: aprovecha la aceleración de GPU en GPU de AMD, Intel y otros proveedores que no son NVIDIA mediante Vulkan para obtener inferencias más rápidas.
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. Entre los motivos principales para usar NCNN se incluyen:
- Alto rendimiento: diseñado para ofrecer un procesamiento rápido y eficiente en CPU móviles.
- Multiplataforma: compatible con frameworks populares como TensorFlow y ONNX, lo que facilita la conversión y la implementación de modelos en distintas plataformas.
- Soporte de la comunidad: el apoyo activo de la comunidad garantiza mejoras y actualizaciones continuas.
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, iOS.
- Sistemas integrados y dispositivos IoT: dispositivos como Raspberry Pi y NVIDIA Jetson.
- Ordenadores de sobremesa y servidores: Linux, Windows y macOS.
Para mejorar el rendimiento en Raspberry Pi, considera usar el formato NCNN, como se detalla en nuestra guía de Raspberry Pi.
Para implementar tus modelos YOLO26 en Android:
- Compilar para Android: sigue la guía Compilar NCNN para Android.
- Integrar con tu aplicación: usa el SDK de Android de NCNN para integrar el modelo exportado en tu aplicación y realizar inferencias eficientes en el dispositivo.
Para consultar instrucciones detalladas, revisa Implementación de modelos YOLO26 NCNN exportados.
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 GPU de AMD, Intel y otros proveedores que no son 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 deviceEn sistemas con varias GPU, especifica el índice del dispositivo (por ejemplo,
vulkan:1para la segunda GPU). Asegúrate de que los controladores de Vulkan estén instalados para tu GPU. Consulta la sección Aceleración de GPU mediante Vulkan para obtener más información.