YOLO Vision 2026:

Exportação Ambarella CVflow para Modelos Ultralytics YOLO#

Guia de visualização — ainda não verificado pelo fornecedor

Este guia é uma prévia inicial e ainda não está completo ou verificado pela Ambarella. Os comandos, detalhes de compatibilidade e etapas do fluxo de trabalho podem mudar à medida que o feedback do fornecedor estiver disponível. Atualmente, não há um destino de exportação format="ambarella"; o fluxo de trabalho usa a exportação ONNX padrão (format="onnx") combinada com os argumentos amba_config/amba_chipset, e então compila o modelo ONNX resultante para o formato AmbaPB implantável offline com o conjunto de ferramentas CVflow da Ambarella.

Implantar modelos do Ultralytics YOLO em SoCs da Ambarella requer um formato de modelo otimizado para o motor de IA CVflow®. Esta bifurcação do Ultralytics integra o kit de ferramentas de compactação SpongeTorch da Ambarella diretamente no pipeline de treino, validação e exportação, para que possas produzir modelos podados e otimizados por quantização que executam eficientemente no hardware da Ambarella. Este guia descreve o fluxo de trabalho atual de detecção de objetos: treino ciente da compactação, exportação ONNX, compilação com o conjunto de ferramentas CVflow e inferência com o modelo AmbaPB compilado.

Nota

Este fluxo de trabalho requer componentes proprietários do conjunto de ferramentas da Ambarella (spongetorch, o compilador CVflow e cvflowbackend) que não estão disponíveis no PyPI. Registra-te na Zona de Desenvolvedores da Ambarella para obter acesso ao SDK através da plataforma de desenvolvimento Cooper™.

O que é o Ambarella CVflow?#

A Ambarella é uma empresa de semicondutores sediada em Santa Clara, conhecida pelos seus SoCs de visão de IA de baixo consumo, amplamente utilizados em câmeras de segurança IP, câmeras de painel, drones, robótica e sistemas automotivos. Os seus chips são construídos em torno do CVflow®, uma arquitetura de processamento vetorial neural dedicada (o acelerador de IA no chip, ou NPU) que entrega alta taxa de transferência de inferência com consumo de energia muito baixo — o CV72S executa cargas de trabalho de IA de câmera de segurança 4K abaixo de 3 W. Modelos treinados em frameworks padrão como PyTorch são compilados para o formato nativo do CVflow com o conjunto de ferramentas offline da Ambarella antes da implantação.

Famílias de SoC CVflow atuais e as suas aplicações típicas:

Família de SoCAplicações típicas
CV72 / CV75Câmaras de segurança 4K com IA, câmaras inteligentes, visão industrial
CV5 / CV52Drones, câmaras de ação, robótica, sistemas multi-câmara
CV3-ADADAS automotivo e controladores de domínio de condução autónoma
N1Aparelhos de IA generativa no local e análise de vídeo multi-stream

Porquê implantar YOLO na Ambarella?#

  • Desempenho por watt: Os SoCs CVflow são projetados para IA de borda sempre ativa, executando detecção de objetos em tempo real dentro de limites de energia de nível de câmera.
  • Treino ciente da compactação: O SpongeTorch aplica otimização ciente de poda e quantização durante o treino, para que o modelo aprenda a permanecer preciso enquanto se torna amigável à NPU.
  • Validação de host bit a bit exata: o modelo AmbaPB compilado é executado através do Ultralytics predict/val na tua estação de trabalho exatamente como será executado no chip, para que possas medir o mAP quantizado antes de tocar no hardware.
  • Pipeline de câmara integrado: Os SoCs da Ambarella combinam o motor de IA com um ISP e codificadores de vídeo, tornando-os uma solução de chip único para câmaras com IA.

Visão geral do fluxo de trabalho#

O pipeline tem quatro estágios:

  1. Treino ciente da compactação — treina com uma configuração do SpongeKit (amba_config) para que o SpongeTorch aplique poda/quantização progressivamente durante o treino.
  2. Exportação ONNX — exporta o ponto de verificação compactado com o mesmo amba_config, preservando a estrutura de compactação no grafo ONNX.
  3. Compilação CVflow — compila o modelo ONNX para um artefacto AmbaPB com o conjunto de ferramentas CVflow.
  4. Inferência e validação — executa o modelo *.ambapb.ckpt.onnx compilado através do Ultralytics predict/val via backend AmbaPB, e depois implanta na placa.

O treino do SpongeTorch e a exportação ciente do SpongeTorch podem ser substituídos por uma exportação ONNX simples se não precisares das otimizações de tempo de treino do SpongeTorch (consulta Exportando Sem SpongeTorch).

Pré-requisitos#

Instalação#

Instala esta bifurcação do Ultralytics e, em seguida, instala os wheels do conjunto de ferramentas da Ambarella a partir da distribuição do SDK:

!!! Tip "Instalação"

# 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

O backend de inferência AmbaPB localiza cvflowbackend através do comando tv2 do conjunto de ferramentas CVflow (tv2 -libpath cvflowbackend), portanto o conjunto de ferramentas deve estar instalado e no teu PATH antes de executar a inferência ou validação com modelos compilados.

Ficheiro de configuração do SpongeKit#

O SpongeTorch é impulsionado por um arquivo de configuração do SpongeKit (formato protobuf-text, .prototxt) que define as passagens de compactação a serem aplicadas: metas de esparridade de poda, configurações de quantização e o cronograma de compactação. Obtém configurações de exemplo e a documentação de esquema correspondente no lançamento do teu SDK da Ambarella. Usa a configuração de treino sempre que a validação precisar preparar um modelo não preparado, e usa sempre a mesma configuração ao exportar um ponto de verificação compactado.

Argumentos Amba#

Dois argumentos controlam a integração do SpongeTorch nos modos train, val e export:

ArgumentoTipoPredefiniçãoDescrição
amba_configstrNoneCaminho para a configuração do SpongeKit passada para spongetorch.prepare(). Habilita o treino ciente da compactação e a exportação ciente do SpongeTorch.
amba_chipsetstrNoneNome do chipset de destino passado para spongetorch.set_target_chipset(), por exemplo, CV72.

O fork também adiciona um argumento de exportação geral:

ArgumentoTipoPredefiniçãoDescrição
export_filestrNoneCaminho/nome de saída de exportação personalizado, por exemplo, '/tmp/model.onnx' ou 'model.onnx'.

Treino ciente da compressão#

Treina (ou ajusta) o teu modelo com a compressão SpongeTorch ativada:

Uso
from ultralytics import YOLO

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

Quando amba_config está definido, o treinador envolve o modelo e o otimizador com spongetorch.prepare() na configuração. A compactação é aplicada progressivamente em um cronograma de etapas, para que a rede aprenda a permanecer precisa enquanto se torna esparsa e amigável à quantização. O ponto de verificação treinado armazena o estado esparso do SpongeTorch (tensores _orig/_mask), que a etapa de exportação exige posteriormente. O arquivo de configuração é copiado para o diretório de execução como amba_config.prototxt para reprodutibilidade.

Gating de checkpoint

best.pt e last.pt intencionalmente não são salvos até que o cronograma de compactação do SpongeTorch ultrapasse seu end_step — um ponto de verificação meio compactado não seria utilizável. Certifica-te de que epochs seja longo o suficiente para que o cronograma na tua configuração seja concluído; o log relata quando o salvamento do ponto de verificação começa. Se o treino terminar antes que o cronograma seja concluído, a época final é salva de qualquer maneira com um aviso, mas tal ponto de verificação não deve ser implantado.

Ajustar em vez de treinar do zero

Para obter a melhor precisão, primeiro treina o teu modelo normalmente (ou começa a partir de um ponto de verificação pré-treinado) e, em seguida, executa um ajuste fino de compactação mais curto com amba_config nos pesos treinados.

Validar o checkpoint comprimido#

Valida a precisão antes de compilar, utilizando a mesma configuração:

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

O validador reaplica spongetorch.prepare() quando necessário e desativa a fusão Conv+BN para que a estrutura de compactação seja preservada. Compara o mAP com a tua linha de base não compactada; se a queda de precisão for muito grande, ajusta a configuração do SpongeKit e retreina.

Exportar para ONNX#

Exporta o ponto de verificação compactado com o mesmo amba_config usado no treino:

Uso
from ultralytics import YOLO

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

O exportador recompõe o modelo, reaplica spongetorch.prepare() com a tua configuração, recarrega os pesos do ponto de verificação esparso na estrutura preparada e traça para ONNX com a fusão Conv+BN desativada — produzindo um grafo na forma exata que o compilador CVflow espera.

Preservar metadados do modelo#

A exportação ONNX incorpora a tarefa do modelo, nomes das classes, passo (stride) e tamanho da entrada no arquivo ONNX, enquanto o backend AmbaPB lê essas informações de um arquivo auxiliar metadata.yaml próximo ao modelo compilado. A menos que o teu compilador CVflow crie este arquivo auxiliar, extraia-o do modelo ONNX antes da compilação:

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ém metadata.yaml no mesmo diretório que o arquivo *.ambapb.ckpt.onnx ou *.ambapb.fastckpt.onnx compilado.

Aviso
  • O ponto de verificação deve conter o estado de compactação do SpongeTorch. Exportar um ponto de verificação simples com amba_config definido gera o erro: "Checkpoint has no SpongeTorch pruning state... Use a compressed checkpoint from amba training before export."
  • A configuração deve corresponder à usada durante o treino, ou o recarregamento do peso falha.

Compilar com o conjunto de ferramentas CVflow#

Compila o modelo ONNX exportado para o teu chipset alvo utilizando o compilador CVflow do SDK, seguindo o guia de compilação do SDK. O compilador mapeia o grafo para o motor de IA CVflow (quantização, agendamento, planeamento de memória) e produz o artefacto AmbaPB implantável.

Nota

Para que o Ultralytics reconheça o modelo compilado, o nome do arquivo deve terminar com .ambapb.ckpt.onnx ou .ambapb.fastckpt.onnx.

Executar inferência com o modelo compilado#

O modelo AmbaPB compilado é carregado diretamente através da API do Ultralytics — o AutoBackend detecta o sufixo .ambapb e encaminha a inferência através de cvflowbackend, executando o modelo de forma bit a bit exata como será executado no 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 é a verificação final de precisão antes da implantação no hardware, incluindo todos os efeitos de quantização do compilador. Se um arquivo metadata.yaml estiver próximo ao modelo compilado, o backend lê os nomes das classes, o passo e as informações da tarefa a partir dele. O backend usa o modo de inferência CVflow acinf por padrão; define a variável de ambiente ULTRALYTICS_AMBAPB_DEBUG=1 para registrar detalhes de entrada/saída para depuração.

Implantar na placa#

Carrega o modelo compilado no teu dispositivo Ambarella usando o tempo de execução do SDK da Ambarella. O pré-processamento e o pós-processamento devem corresponder ao que o modelo de detecção foi compilado para: entrada RGB com margens (letterbox) no intervalo 0–255 (o backend Ultralytics AmbaPB alimenta o modelo compilado com RGB 0–255), e decodificação de detecção YOLO padrão nas saídas. Consulta a documentação de implantação do SDK para APIs de tempo de execução.

Exportar sem SpongeTorch#

Se não precisares das otimizações de poda e quantização cientes do treino do SpongeTorch, o pipeline Ultralytics padrão também produz um modelo compilável por CVflow:

Uso
yolo export model=yolo26n.pt format=onnx

Compila o ONNX resultante com o conjunto de ferramentas CVflow, que realiza a quantização pós-treino por conta própria. Este caminho troca parte do desempenho da NPU e da precisão quantizada por um fluxo de trabalho mais simples, sem nenhuma dependência de spongetorch no momento do treino.

Aplicações do Mundo Real#

Os modelos Ultralytics YOLO em SoCs Ambarella CVflow alimentam visão sempre ativa na edge:

  • Câmaras de segurança com IA: detecção de pessoas e veículos em tempo real em câmaras IP 4K dentro de um orçamento de energia abaixo de 3 W.
  • Drones e robótica: detecção e rastreamento de objetos a bordo para navegação, inspeção e entrega em chips da classe CV5.
  • Automotivo: cargas de trabalho de percepção ADAS como detecção de peões e veículos em controladores de domínio CV3-AD.
  • Análise industrial e retalhista: contagem de pessoas multi-stream, detecção de EPI e monitorização de prateleiras em aparelhos de edge.

Resumo#

Este guia de prévia delineou o fluxo de trabalho atual para implantar modelos Ultralytics YOLO em SoCs Ambarella CVflow: treino ciente da compactação com SpongeTorch (amba_config/amba_chipset), exportação ONNX do ponto de verificação compactado, compilação offline para AmbaPB com o conjunto de ferramentas CVflow e validação bit a bit exata do modelo compilado através do Ultralytics antes da implantação na placa.

Para outros destinos de IA de borda, consulta os guias relacionados de Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPX e Axelera. Para a lista completa de formatos de exportação, visita a documentação do Modo de exportação e a página de integrações.

FAQ#

  • Não. Não existe nenhum destino format="ambarella". Exporta para ONNX (opcionalmente com compactação SpongeTorch via amba_config), e depois compila o modelo ONNX para AmbaPB offline com o conjunto de ferramentas CVflow da Ambarella a partir do SDK.

  • Qualquer SoC baseado em CVflow suportado pelo teu conjunto de ferramentas CVflow pode ser utilizado como alvo, incluindo as famílias CV72/CV75 para câmeras de IA, CV5/CV52 para drones e robótica, e CV3-AD para automotivo. O argumento amba_chipset configura o destino de otimização do SpongeTorch; seleciona o destino correspondente separadamente ao compilar. As strings de chipset aceitas e a disponibilidade dependem da versão do SDK instalada.

  • SpongeTorch é o kit de ferramentas de compressão de modelos da Ambarella, integrado no fork Ambarella do Ultralytics para treino ciente de poda e quantização. É opcional: uma exportação ONNX simples do Ultralytics também pode ser compilada com o conjunto de ferramentas CVflow usando quantização pós-treino, a algum custo no desempenho da NPU e precisão quantizada.

  • Eles são proprietários e não estão no PyPI. Registra-te na Zona de Desenvolvedores da Ambarella para solicitar acesso ao SDK; os wheels spongetorch e cvflowbackend e o compilador CVflow vêm incluídos na distribuição do SDK.

  • Executa yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml com a bifurcação da Ambarella instalada. O backend AmbaPB executa o modelo compilado de forma bit a bit exata como ele é executado no motor de IA CVflow, de modo que o mAP relatado inclui todos os efeitos de quantização do compilador.

Contribuidores

Comentários