Meet YOLO26: next-gen vision AI.

Link to this sectionExportación a Ambarella CVflow para modelos Ultralytics YOLO#

Guía preliminar: aún no verificada por el proveedor

Esta guía es un avance preliminar y aún no está completa ni ha sido verificada por Ambarella. Los comandos, los detalles de compatibilidad y los pasos del flujo de trabajo pueden cambiar a medida que haya comentarios del proveedor. Actualmente no existe un objetivo de exportación format="ambarella"; el flujo de trabajo utiliza la exportación ONNX estándar (format="onnx") combinada con los argumentos amba_config/amba_chipset, y luego compila el modelo ONNX resultante en el formato desplegable AmbaPB sin conexión con la cadena de herramientas CVflow de Ambarella.

Desplegar modelos Ultralytics YOLO en SoCs Ambarella requiere un formato de modelo optimizado para el motor de IA CVflow®. Esta bifurcación de Ultralytics integra el kit de herramientas de compresión SpongeTorch de Ambarella directamente en el flujo de trabajo de entrenamiento, validación y exportación, para que puedas producir modelos podados y optimizados por cuantización que se ejecuten de forma eficiente en el hardware de Ambarella. Esta guía resume el flujo de trabajo actual de detección de objetos: entrenamiento con compresión, exportación ONNX, compilación con la cadena de herramientas CVflow e inferencia con el modelo AmbaPB compilado.

Nota

Este flujo de trabajo requiere componentes propietarios de la cadena de herramientas de Ambarella (spongetorch, el compilador de CVflow y cvflowbackend) que no están disponibles en PyPI. Regístrate en la Zona de Desarrolladores de Ambarella para obtener acceso al SDK a través de la plataforma Cooper™ Developer Platform.

Link to this section¿Qué es Ambarella CVflow?#

Ambarella es una empresa de semiconductores con sede en Santa Clara conocida por sus SoCs de visión con IA de bajo consumo, ampliamente utilizados en cámaras de seguridad IP, cámaras para tablero, drones, robótica y sistemas automotrices. Sus chips están construidos en torno a CVflow®, una arquitectura de procesamiento vectorial neuronal dedicada (el acelerador de IA en el chip, o NPU) que ofrece un alto rendimiento de inferencia a un consumo de energía muy bajo: el CV72S ejecuta cargas de trabajo de IA para cámaras de seguridad 4K por debajo de 3 W. Los modelos entrenados en marcos estándar como PyTorch se compilan al formato nativo de CVflow con la cadena de herramientas fuera de línea de Ambarella antes del despliegue.

Familias actuales de SoCs CVflow y sus aplicaciones típicas:

Familia de SoCAplicaciones típicas
CV72 / CV75Cámaras de seguridad 4K con IA, cámaras inteligentes, visión industrial
CV5 / CV52Drones, cámaras de acción, robótica, sistemas multicámara
CV3-ADADAS automotriz y controladores de dominio para conducción autónoma
N1IA generativa local y dispositivos de análisis de video de múltiples flujos

Link to this section¿Por qué desplegar YOLO en Ambarella?#

  • Rendimiento por vatio: Los SoCs CVflow están diseñados para IA en el borde (edge) siempre activa, ejecutando detección de objetos en tiempo real con presupuestos de energía de grado de cámara.
  • Entrenamiento con compresión: SpongeTorch aplica optimización consciente de la poda y la cuantización durante el entrenamiento, por lo que el modelo aprende a mantener la precisión mientras se vuelve apto para la NPU.
  • Validación host bit-exact: el modelo AmbaPB compilado se ejecuta a través de predict/val de Ultralytics en tu estación de trabajo exactamente como lo hará en el chip, por lo que puedes medir el mAP cuantizado antes de tocar el hardware.
  • Flujo de trabajo de cámara integrado: Los SoCs Ambarella combinan el motor de IA con un ISP y codificadores de video, convirtiéndolos en una solución de chip único para cámaras con IA.

Link to this sectionResumen del flujo de trabajo#

El pipeline tiene cuatro etapas:

  1. Entrenamiento con compresión — entrena con una configuración de SpongeKit (amba_config) para que SpongeTorch aplique poda/cuantización progresivamente durante el entrenamiento.
  2. Exportación ONNX — exporta el punto de control comprimido con la misma amba_config, preservando la estructura de compresión en el gráfico ONNX.
  3. Compilación CVflow — compila el modelo ONNX a un artefacto AmbaPB con la cadena de herramientas CVflow.
  4. Inferencia y validación — ejecuta el modelo *.ambapb.ckpt.onnx compilado a través de predict/val de Ultralytics mediante el backend AmbaPB, y luego despliégalo en la placa.

El entrenamiento con SpongeTorch y la exportación consciente de SpongeTorch pueden ser sustituidos por una exportación ONNX simple si no necesitas las optimizaciones durante el entrenamiento de SpongeTorch (consulta Exportación sin SpongeTorch).

Link to this sectionRequisitos previos#

Link to this sectionInstalación#

Instala esta bifurcación de Ultralytics, luego instala las ruedas de la cadena de herramientas de Ambarella desde la distribución del SDK:

!!! Tip "Instalación"

# Install this Ultralytics fork from source
git clone https://github.com/Ambarella-Inc/ultralytics
cd ultralytics
git checkout amba_v8.4.46
pip install -e .

# Install Ambarella toolchain wheels from the SDK
pip install /path/to/spongetorch-*.whl
pip install /path/to/cvflowbackend-*.whl

El backend de inferencia AmbaPB localiza cvflowbackend a través del comando tv2 de la cadena de herramientas CVflow (tv2 -libpath cvflowbackend), por lo que la cadena de herramientas debe estar instalada y en tu PATH antes de ejecutar la inferencia o validación con modelos compilados.

Link to this sectionArchivo de configuración de SpongeKit#

SpongeTorch se maneja mediante un archivo de configuración de SpongeKit (formato de texto protobuf, .prototxt) que define los pases de compresión a aplicar: objetivos de esparcimiento de poda, ajustes de cuantización y el cronograma de compresión. Obtén configuraciones de ejemplo y la documentación del esquema correspondiente de tu versión del SDK de Ambarella. Utiliza la configuración de entrenamiento siempre que la validación deba preparar un modelo no preparado, y utiliza siempre la misma configuración al exportar un punto de control comprimido.

Link to this sectionArgumentos Amba#

Dos argumentos controlan la integración de SpongeTorch a través de los modos train, val y export:

ArgumentoTipoPredeterminadoDescripción
amba_configstrNoneRuta a la configuración de SpongeKit que se pasa a spongetorch.prepare(). Habilita el entrenamiento con compresión y la exportación consciente de SpongeTorch.
amba_chipsetstrNoneNombre del chipset de destino que se pasa a spongetorch.set_target_chipset(), por ejemplo CV72.

La bifurcación también añade un argumento general de exportación:

ArgumentoTipoPredeterminadoDescripción
export_filestrNoneRuta/nombre de salida de exportación personalizado, por ejemplo '/tmp/model.onnx' o 'model.onnx'.

Link to this sectionEntrenamiento con compresión#

Entrena (o ajusta) tu modelo con la compresión SpongeTorch habilitada:

Uso
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco8.yaml",
    epochs=100,
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

Cuando amba_config está configurado, el entrenador envuelve el modelo y el optimizador con spongetorch.prepare() en la configuración inicial. La compresión se aplica progresivamente en un cronograma de pasos, por lo que la red aprende a mantener la precisión mientras se vuelve dispersa y apta para la cuantización. El punto de control entrenado almacena el estado disperso de SpongeTorch (tensores _orig/_mask), que el paso de exportación requiere posteriormente. El archivo de configuración se copia en el directorio de ejecución como amba_config.prototxt para garantizar la reproducibilidad.

Control de puntos de control

best.pt y last.pt no se guardan intencionadamente hasta que el cronograma de compresión de SpongeTorch supera su end_step: un punto de control a medio comprimir no sería utilizable. Asegúrate de que epochs sea lo suficientemente largo para completar el cronograma en tu configuración; el registro informa cuándo comienza el guardado del punto de control. Si el entrenamiento finaliza antes de que se complete el cronograma, la época final se guarda de todos modos con una advertencia, pero dicho punto de control no debe ser desplegado.

Ajuste fino en lugar de entrenamiento desde cero

Para obtener la mejor precisión, primero entrena tu modelo normalmente (o comienza desde un punto de control preentrenado), luego ejecuta un ajuste fino de compresión más corto con amba_config sobre los pesos entrenados.

Link to this sectionValidación del punto de control comprimido#

Valida la precisión antes de compilar, utilizando la misma configuración:

Uso
yolo val model=runs/detect/train/weights/best.pt data=coco8.yaml \
  amba_config=config.prototxt amba_chipset=CV72

El validador vuelve a aplicar spongetorch.prepare() cuando es necesario y deshabilita la fusión Conv+BN para que se conserve la estructura de compresión. Compara el mAP con tu línea base no comprimida; si la caída en la precisión es demasiado grande, ajusta la configuración de SpongeKit y vuelve a entrenar.

Link to this sectionExportar a ONNX#

Exporta el punto de control comprimido con la misma amba_config utilizada en el entrenamiento:

Uso
from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")
model.export(
    format="onnx",
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

El exportador reconstruye el modelo, vuelve a aplicar spongetorch.prepare() con tu configuración, recarga los pesos del punto de control disperso en la estructura preparada y realiza el rastreo a ONNX con la fusión Conv+BN deshabilitada, produciendo un gráfico en la forma exacta que espera el compilador de CVflow.

Link to this sectionPreservar metadatos del modelo#

La exportación ONNX incrusta la tarea del modelo, los nombres de clase, el paso (stride) y el tamaño de entrada en el archivo ONNX, mientras que el backend AmbaPB lee esta información de un archivo adjunto metadata.yaml junto al modelo compilado. A menos que tu compilador CVflow cree este archivo adjunto, extráelo del modelo ONNX antes de la compilación:

import onnx

from ultralytics.utils import YAML

model = onnx.load("model.onnx")
YAML.save("metadata.yaml", {item.key: item.value for item in model.metadata_props})

Mantén metadata.yaml en el mismo directorio que el archivo *.ambapb.ckpt.onnx o *.ambapb.fastckpt.onnx compilado.

Advertencia
  • El punto de control debe contener el estado de compresión de SpongeTorch. Exportar un punto de control simple con amba_config configurado arroja: "El punto de control no tiene estado de poda de SpongeTorch... Usa un punto de control comprimido del entrenamiento amba antes de la exportación."
  • La configuración debe coincidir con la utilizada durante el entrenamiento, o la recarga de pesos fallará.

Link to this sectionCompilación con la cadena de herramientas CVflow#

Compila el modelo ONNX exportado para tu chipset de destino utilizando el compilador CVflow del SDK, siguiendo la guía de compilación del SDK. El compilador mapea el gráfico en el motor de IA CVflow (cuantización, programación, planificación de memoria) y produce el artefacto AmbaPB desplegable.

Nota

Para que Ultralytics reconozca el modelo compilado, su nombre de archivo debe terminar en .ambapb.ckpt.onnx o .ambapb.fastckpt.onnx.

Link to this sectionEjecutar inferencia con el modelo compilado#

El modelo AmbaPB compilado se carga directamente a través de la API de Ultralytics: AutoBackend detecta el sufijo .ambapb y enruta la inferencia a través de cvflowbackend, ejecutando el modelo bit-exactamente como lo hará en el motor de IA:

Uso
from ultralytics import YOLO

model = YOLO("model.ambapb.ckpt.onnx")

# Inference
results = model("https://ultralytics.com/images/bus.jpg")

# Validation
metrics = model.val(data="coco8.yaml")

Esta es la verificación de precisión final antes del despliegue en hardware, incluyendo todos los efectos de cuantización del compilador. Si un archivo metadata.yaml se encuentra junto al modelo compilado, el backend lee los nombres de clase, el paso y la información de la tarea desde él. El backend utiliza el modo de inferencia acinf de CVflow de forma predeterminada; establece la variable de entorno ULTRALYTICS_AMBAPB_DEBUG=1 para registrar los detalles de entrada/salida para depuración.

Link to this sectionDesplegar en la placa#

Carga el modelo compilado en tu dispositivo Ambarella utilizando el tiempo de ejecución del SDK de Ambarella. El preprocesamiento y el posprocesamiento deben coincidir con aquello para lo que se compiló el modelo de detección: entrada RGB tipo "letterbox" en el rango 0–255 (el backend AmbaPB de Ultralytics alimenta al modelo compilado con RGB 0–255), y la decodificación de detección YOLO estándar en las salidas. Consulta la documentación de despliegue del SDK para las APIs de tiempo de ejecución.

Link to this sectionExportación sin SpongeTorch#

Si no necesitas las optimizaciones de poda y cuantización durante el entrenamiento de SpongeTorch, el flujo de trabajo estándar de Ultralytics también produce un modelo compilable por CVflow:

Uso
yolo export model=yolo26n.pt format=onnx

Compila el ONNX resultante con la cadena de herramientas CVflow, que realiza la cuantización posterior al entrenamiento por sí misma. Este camino sacrifica algo de rendimiento de NPU y precisión cuantizada a cambio de un flujo de trabajo más sencillo sin dependencia de spongetorch en el momento del entrenamiento.

Link to this sectionAplicaciones en el mundo real#

Los modelos Ultralytics YOLO en SoCs Ambarella CVflow potencian la visión siempre activa en el borde:

  • Cámaras de seguridad con IA: detección de personas y vehículos en tiempo real en cámaras IP 4K con un presupuesto de energía inferior a 3 W.
  • Drones y robótica: detección y seguimiento de objetos a bordo para navegación, inspección y entrega en chips de la clase CV5.
  • Automotriz: cargas de trabajo de percepción ADAS como la detección de peatones y vehículos en controladores de dominio CV3-AD.
  • Análisis industrial y minorista: conteo de personas, detección de EPIs y monitoreo de estantes en múltiples flujos en dispositivos de borde.

Link to this sectionResumen#

Esta guía preliminar resumió el flujo de trabajo actual para desplegar modelos Ultralytics YOLO en SoCs Ambarella CVflow: entrenamiento con compresión con SpongeTorch (amba_config/amba_chipset), exportación ONNX del punto de control comprimido, compilación fuera de línea a AmbaPB con la cadena de herramientas CVflow y validación bit-exact del modelo compilado a través de Ultralytics antes del despliegue en placa.

Para otros objetivos de IA en el borde, consulta las guías relacionadas de Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPX y Axelera. Para obtener la lista completa de formatos de exportación, visita la documentación de Modo de exportación y la página de integraciones.

Link to this sectionFAQ#

Link to this section¿Puedo exportar un modelo YOLO directamente al formato Ambarella con model.export()?#

No. No existe un objetivo format="ambarella". Exporta a ONNX (opcionalmente con compresión SpongeTorch mediante amba_config), luego compila el modelo ONNX a AmbaPB fuera de línea con la cadena de herramientas CVflow de Ambarella del SDK.

Link to this section¿Qué chips Ambarella pueden ejecutar modelos Ultralytics YOLO?#

Cualquier SoC basado en CVflow compatible con tu cadena de herramientas CVflow puede ser objetivo, incluyendo las familias CV72/CV75 para cámaras de IA, CV5/CV52 para drones y robótica, y CV3-AD para automotriz. El argumento amba_chipset configura el objetivo de optimización de SpongeTorch; selecciona el objetivo correspondiente por separado al compilar. Las cadenas de chipset aceptadas y la disponibilidad dependen de la versión del SDK instalada.

Link to this section¿Qué es SpongeTorch y lo necesito?#

SpongeTorch es el kit de herramientas de compresión de modelos de Ambarella, integrado en la bifurcación de Ambarella de Ultralytics para la poda y el entrenamiento consciente de la cuantización. Es opcional: una exportación ONNX simple de Ultralytics también puede compilarse con la cadena de herramientas CVflow mediante cuantización posterior al entrenamiento, con cierto costo en el rendimiento de la NPU y la precisión cuantizada.

Link to this section¿Dónde consigo el SDK de Ambarella, SpongeTorch y la cadena de herramientas CVflow?#

Son propietarios y no están en PyPI. Regístrate en la Zona de Desarrolladores de Ambarella para solicitar acceso al SDK; las ruedas de spongetorch y cvflowbackend y el compilador CVflow se envían con la distribución del SDK.

Link to this section¿Cómo verifico la precisión del modelo compilado antes de desplegarlo?#

Ejecuta yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml con la bifurcación de Ambarella instalada. El backend AmbaPB ejecuta el modelo compilado bit-exactamente como se ejecuta en el motor de IA CVflow, por lo que el mAP reportado incluye todos los efectos de cuantización del compilador.

Colaboradores

Comentarios