7.11. NPU¶
L’H7 e l’RT1062 eseguono l’inferenza su una CPU Cortex-M tramite TFLM e CMSIS-NN. L’AE3 e l’N6 aggiungono una NPU dedicata sullo stesso die – una pipeline tensoriale in silicio fisso che esegue gli operatori pesanti senza occupare la CPU. Le due NPU della gamma OpenMV provengono da fornitori diversi e le loro toolchain sono differenti, ma la camera espone entrambe attraverso la stessa API ml.Model. Ciò che cambia è il file su disco e il runtime che lo percorre.
7.11.1. AE3 – Arm Ethos-U55¶
L’AE3 monta una NPU Arm Ethos-U55 sullo stesso die del core applicativo Cortex-M55. Vela è il compilatore offline che prepara un modello per essa: Vela prende in ingresso un normale .tflite ed emette in uscita un .tflite i cui subgraph idonei alla NPU sono stati ripiegati in un operatore Ethos-U personalizzato che trasporta i comandi byte eseguiti dalla NPU. Al momento dell’inferenza, TFLM percorre il file normalmente; l’operatore Ethos-U invia i suoi comandi byte attraverso il driver Ethos-U, e qualsiasi operatore che Vela non ha ripiegato ricade su CMSIS-NN sull’M55.
7.11.2. N6 – ST Neural-ART¶
L’N6 monta la NPU Neural-ART di ST ed esegue STAI – il runtime di ST per essa – al posto di TFLM. STEdgeAI è il compilatore offline: prende in ingresso un modello ed emette un blob di rete rilocabile predisposto per l’hardware Neural-ART. STAI carica il blob da ROMFS e lo percorre direttamente sulla NPU. La copertura degli operatori è qualunque STEdgeAI supporti per il componente.
7.11.3. Stesso script, camera diversa¶
Entrambe le NPU espongono gli stessi tensori di input e output, con gli stessi parametri di quantizzazione che avrebbe un modello eseguito su CPU. Uno script scritto per una camera viene eseguito su un’altra caricando un file di modello preparato per la NPU di quella camera. Le soglie di rilevamento, la gestione della ROI e il collegamento del post-processore – le decisioni a livello di script – non cambiano.