7.11. NPUs

O H7 e o RT1062 executam inferência em uma CPU Cortex-M por meio do TFLM e do CMSIS-NN. O AE3 e o N6 acrescentam uma NPU dedicada no mesmo die – um pipeline de tensores em silício fixo que executa os operadores pesados sem ocupar a CPU. As duas NPUs da linha da OpenMV vêm de fornecedores diferentes e suas toolchains são diferentes, mas a câmera expõe ambas por meio da mesma API ml.Model. O que difere é o arquivo no disco e o runtime que o percorre.

7.11.1. AE3 – Arm Ethos-U55

O AE3 carrega uma NPU Ethos-U55 da Arm no mesmo die que o núcleo de aplicação Cortex-M55. Vela é o compilador offline que prepara um modelo para ela: o Vela recebe um .tflite padrão e emite um .tflite cujos subgrafos elegíveis à NPU foram dobrados em um operador Ethos-U personalizado que carrega os comandos de bytes que a NPU executa. No momento da inferência, o TFLM percorre o arquivo normalmente; o operador Ethos-U despacha seus comandos de bytes pelo driver Ethos-U, e qualquer operador que o Vela não tenha dobrado recai sobre o CMSIS-NN no M55.

7.11.2. N6 – ST Neural-ART

O N6 carrega a NPU Neural-ART da ST e executa STAI – o runtime da ST para ela – no lugar do TFLM. STEdgeAI é o compilador offline: ele recebe um modelo e emite um blob de rede relocável organizado para o hardware Neural-ART. O STAI carrega o blob a partir do ROMFS e o percorre diretamente na NPU. A cobertura de operadores é o que o STEdgeAI suportar para a peça.

7.11.3. Mesmo script, câmera diferente

Ambas as NPUs expõem os mesmos tensores de entrada e saída com os mesmos parâmetros de quantização que um modelo executado na CPU exporia. Um script escrito para uma câmera roda em outra ao carregar um arquivo de modelo preparado para a NPU daquela câmera. Limiares de detecção, tratamento de ROI e a fiação do pós-processador – as decisões em nível de script – não mudam.