Exportación de Ultralytics YOLO a NCNN

Desplegar modelos de visión artificial en dispositivos con potencia computacional limitada, como sistemas móviles o integrados, requiere una selección cuidadosa del formato. Utilizar un formato optimizado asegura que incluso los dispositivos con recursos limitados puedan gestionar tareas avanzadas de visión artificial de manera eficiente.

Exportar al formato NCNN te permite optimizar tus modelos de Ultralytics YOLO26 para aplicaciones ligeras basadas en dispositivos. Esta guía cubre cómo convertir tus modelos al formato NCNN para mejorar el rendimiento en dispositivos móviles e integrados.

¿Por qué exportar a NCNN?

NCNN high-performance neural network inference framework

El framework NCNN, desarrollado por Tencent, es un framework de inferencia de redes neuronales de alto rendimiento optimizado específicamente para plataformas móviles, incluyendo teléfonos móviles, dispositivos integrados y dispositivos IoT. NCNN es compatible con una amplia gama de plataformas, incluyendo Linux, Android, iOS y macOS.

NCNN es conocido por su rápida velocidad de procesamiento en CPUs móviles y permite el despliegue rápido de modelos de aprendizaje profundo en plataformas móviles, lo que lo convierte en una opción excelente para construir aplicaciones basadas en IA.

Características clave de los modelos NCNN

Los modelos NCNN ofrecen varias características clave que permiten el aprendizaje automático en el propio 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, mientras 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 activaciones del modelo para mejorar el rendimiento y reducir el uso de memoria.

  • Compatibilidad: Los modelos NCNN son compatibles con frameworks de aprendizaje profundo populares, incluyendo TensorFlow, Caffe y ONNX, permitiendo a los desarrolladores aprovechar 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 en diferentes entornos de desarrollo.

  • Aceleración por GPU Vulkan: NCNN admite Vulkan para inferencia acelerada por GPU en múltiples proveedores, incluyendo AMD, Intel y otras GPUs que no son de NVIDIA, permitiendo 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 Guía de Ultralytics es insuficiente, NCNN puede proporcionar mejoras de rendimiento significativas.

  • 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 por GPU Vulkan

NCNN admite la aceleración por 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:

  • Soporte de GPU entre proveedores: A diferencia de CUDA, que está limitado a las GPUs de NVIDIA, Vulkan funciona con múltiples proveedores de GPU.
  • Sistemas multi-GPU: Selecciona un dispositivo Vulkan específico en sistemas con múltiples GPUs usando device="vulkan:0", device="vulkan:1", etc.
  • Despliegues en el borde y escritorio: Aprovecha la aceleración por GPU en dispositivos donde CUDA no está disponible.

Para usar la aceleración de Vulkan, especifica el dispositivo Vulkan al ejecutar la inferencia:

Inferencia con Vulkan
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")
Requisitos de Vulkan

Asegúrate de tener instalados los controladores de Vulkan para tu GPU. La mayoría de los controladores de GPU modernos incluyen soporte para Vulkan de forma predeterminada. Puedes verificar la disponibilidad de Vulkan usando herramientas como vulkaninfo en Linux o el Vulkan SDK en Windows.

Exportar a NCNN: Convirtiendo tu modelo YOLO26

Puedes ampliar la compatibilidad y la flexibilidad de despliegue de tus modelos convirtiendo modelos YOLO26 al formato NCNN.

Instalación

Para instalar los paquetes necesarios, ejecuta:

Instalación
# Install the required package for YOLO26
pip install ultralytics

Para obtener instrucciones detalladas y mejores prácticas, consulta la Guía de instalación de Ultralytics. Si encuentras alguna dificultad, consulta nuestra Guía de problemas comunes para encontrar soluciones.

Uso

Todos los modelos Ultralytics YOLO26 están diseñados para soportar la exportación de forma inmediata, facilitando 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.

Uso
  from ultralytics import YOLO

  # Load the YOLO26 model
  model = YOLO("yolo26n.pt")

  # Export the model to NCNN format
  model.export(format="ncnn")  # creates '/yolo26n_ncnn_model'

  # Load the exported NCNN model
  ncnn_model = YOLO("./yolo26n_ncnn_model")

  # Run inference
  results = ncnn_model("https://ultralytics.com/images/bus.jpg")

Argumentos de exportación

ArgumentoTipoPredeterminadoDescripción
formatstr'ncnn'Formato de destino para el modelo exportado, que define la compatibilidad con varios entornos de implementación.
imgszint o tuple640Tamañ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.
halfboolFalseActiva la cuantización FP16 (precisión media), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en hardware compatible.
batchint1Especifica 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 modo predict.
devicestrNoneEspecifica 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.

Despliegue de modelos YOLO26 NCNN exportados

Después de exportar tus modelos de Ultralytics YOLO26 al formato NCNN, puedes desplegarlos usando el método YOLO("yolo26n_ncnn_model/") como se muestra en el ejemplo de uso anterior. Para obtener instrucciones de despliegue específicas de la plataforma, consulta los siguientes recursos:

  • Android: Compila e integra modelos NCNN para detección de objetos 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 usando Visual Studio.

Resumen

Esta guía cubrió cómo exportar modelos de Ultralytics YOLO26 al formato NCNN para mejorar la eficiencia y la velocidad en dispositivos con recursos limitados.

Para obtener más detalles, consulta la documentación oficial de NCNN. Para otras opciones de exportación, visita nuestra página de guías de integración.

Preguntas frecuentes

¿Cómo exporto modelos de Ultralytics YOLO26 al formato NCNN?

Para exportar tu modelo de Ultralytics YOLO26 al formato NCNN:

  • Python: Utiliza el método export de la clase YOLO.

    from ultralytics import YOLO
    
    # Load the 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 opciones de exportación detalladas, consulta la documentación de Exportación.

¿Cuáles son las ventajas de exportar modelos YOLO26 a NCNN?

Exportar tus modelos de Ultralytics YOLO26 a NCNN ofrece varios beneficios:

  • Eficiencia: Los modelos NCNN están optimizados para dispositivos móviles e integrados, asegurando 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 por GPU Vulkan: Aprovecha la aceleración por GPU en AMD, Intel y otras GPUs que no son de NVIDIA mediante Vulkan para una inferencia más rápida.

Para obtener más detalles, consulta la sección ¿Por qué exportar a NCNN?.

¿Por qué debería usar NCNN para mis aplicaciones móviles de IA?

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 obtener más información, consulta la sección Características clave de los modelos NCNN.

¿Qué plataformas son compatibles para el despliegue de modelos con NCNN?

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 mejorar el rendimiento en Raspberry Pi, considera usar el formato NCNN tal como se detalla en nuestra Guía de Raspberry Pi.

¿Cómo puedo desplegar modelos de Ultralytics YOLO26 NCNN en Android?

Para desplegar tus modelos YOLO26 en Android:

  1. Compilar para Android: Sigue la guía de NCNN Compilar para Android.
  2. Integrar con tu aplicación: Utiliza el SDK de NCNN para Android para integrar el modelo exportado en tu aplicación para una inferencia eficiente en el dispositivo.

Para instrucciones detalladas, consulta Despliegue de modelos YOLO26 NCNN exportados.

Para guías y casos de uso más avanzados, visita la guía de despliegue de Ultralytics.

¿Cómo uso la aceleración por GPU Vulkan con modelos NCNN?

NCNN admite Vulkan para la aceleración por 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 device

Para sistemas multi-GPU, especifica el índice del dispositivo (por ejemplo, vulkan:1 para la segunda GPU). Asegúrate de que los controladores de Vulkan estén instalados para tu GPU. Consulta la sección Aceleración por GPU Vulkan para obtener más detalles.

Comentarios