Sia i principianti che gli esperti di apprendimento automatico sapranno apprezzare l'ecosistema STM32

L'apprendimento automatico, in particolare tinyML, ha il potenziale per rivoluzionare il modo in cui vengono progettati e costruiti i sistemi embedded. In genere, questi sistemi hanno algoritmi procedurali basati sull'esperienza degli sviluppatori specifica per il sistema. L'apprendimento automatico offre un approccio diverso, in cui gli algoritmi di sistema sono basati su osservazioni e dati del mondo reale. Se i dati dell'ambiente mutano, il modello di apprendimento automatico è in grado di reimparare rapidamente in base ai nuovi dati. Una soluzione codificata a mano richiederebbe una riscrittura.

Questo articolo esplora le piattaforme e gli strumenti di apprendimento automatico per i sistemi embedded supportati nella famiglia di microcontroller STM32 di STMicroelectronics.

La famiglia di microcontroller STM32 supporta l'apprendimento automatico.

L'apprendimento automatico può essere uno strumento potente per gli sviluppatori di sistemi embedded. Tuttavia, gli sviluppatori spesso ritengono che gli algoritmi di apprendimento automatico richiedano una potenza di elaborazione eccessiva o che siano così pesanti da non poter essere inseriti in un tipico microcontroller. In realtà, il microcontroller selezionato dipenderà più da ciò che si sta cercando di fare con l'apprendimento automatico piuttosto che dal modo in cui un microcontroller specifico lo supporta.

Ad esempio, la Figura 1 mostra una serie di microcontroller STM32 che supportano l'apprendimento automatico. Questi dispositivi vanno da STM32F0, che opera a 48 MHz e offre un massimo di 256 kB di flash e 32 kB di RAM, a STM32F7, in grado di funzionare a 216 MHz con una flash massima di 2 MB e 512 kB di RAM.

Figura 1: I microcontroller STM32 che supportano l'apprendimento automatico utilizzando STM32Cube.AI e gli strumenti di sviluppo NanoEdge. (Immagine per gentile concessione di STMicroelectronics)

Come si può vedere, non sono pochi i microcontroller in grado di supportare l'apprendimento automatico. Il vero problema è che le piattaforme di apprendimento automatico devono supportare un'ampia tipologia di sviluppatori. Ad esempio, avere internamente un esperto di apprendimento automatico non è molto comune per i team che si occupano di software embedded. Al contrario, gli sviluppatori di software embedded sono costretti a familiarizzare con l'apprendimento automatico che in genere esula dalle loro competenze tradizionali. Pertanto, è necessaria una piattaforma che supporti i team con e senza esperti di apprendimento automatico. Le toolchain dell'ecosistema di apprendimento automatico di STM32 aiutano a risolvere questo problema.

Riescono a supportare i team che sviluppano soluzioni embedded anche se privi di esperti di apprendimento automatico

Sappiamo che la progettazione e l'addestramento degli algoritmi di apprendimento automatico possono scoraggiare. Gli sviluppatori devono poter acquisire dati, progettare un modello, addestrarlo e quindi assicurarsi che sia adatto per essere ottimizzato e distribuito su un sistema embedded.

Normalmente i modelli di apprendimento automatico vengono creati con TensorFlow Lite, PyTorch, Matlab o altri strumenti. Spesso tuttavia gli sviluppatori di software embedded non si sentono a proprio agio con questi strumenti o non hanno l'esperienza necessaria. Prendere confidenza con questi strumenti e ottenere buoni risultati richiede tempo ed è anche costoso.

L'ecosistema di apprendimento automatico STM32 include uno strumento denominato NanoEdge (Figura 2) progettato per aiutare gli sviluppatori che non hanno esperienza o competenze in questa disciplina a testare e distribuire applicazioni di apprendimento automatico sui loro dispositivi.

Ad esempio, gli sviluppatori possono creare facilmente librerie di apprendimento automatico per applicazioni come il rilevamento delle anomalie, la classificazione e la regressione. Queste librerie possono poi essere implementate in un microcontroller STM32.

Figura 2: NanoEdge può guidare gli sviluppatori attraverso l'intero processo di sviluppo di soluzioni di apprendimento automatico. (Immagine per gentile concessione di STMicroelectronics)

E i team che possono contare su esperti di apprendimento automatico?

Quando un team di sviluppo può contare anche su esperti di apprendimento automatico, ha la possibilità di sfruttare una varietà molto più ampia di strumenti per sviluppare i propri modelli per un microcontroller STM32. Ad esempio, quando le competenze sono disponibili, il team può utilizzare TensorFlow Lite, PyTorch, Matlab o altri strumenti per creare il modello. Spesso però si presenta il problema che questi strumenti producono una libreria non ottimizzata e poco efficiente in un microcontroller.

All'interno della famiglia STM32, gli sviluppatori possono sfruttare il plug-in STM32Cube.AI per importare modelli di apprendimento automatico e ottimizzarli per un funzionamento efficiente nei microcontroller STM32. Questo strumento consente agli sviluppatori di eseguire e mettere a punto i propri modelli di apprendimento automatico sul microcontroller desiderato. Possono iniziare importando il loro modello nella toolchain, come mostrato nella Figura 3. Quindi, possono convertirlo, analizzare la rete e convalidarlo. Fatto ciò, possono generare il codice direttamente da STM32CubeIDE, creando attorno al modello un framework di apprendimento automatico per semplificare lo sviluppo del software embedded.

Figura 3: In STM32CubeIDE.AI viene importato un modello di apprendimento automatico per un generatore di onde sinusoidali. (Immagine per gentile concessione di Beningo Embedded Group)

Gli sviluppatori di software embedded devono fornire gli input appropriati al modello di apprendimento automatico, nonché il codice per verificare il risultato. È possibile elaborare i risultati, oppure calcolarne la media o manipolarli in qualsiasi modo sia funzionale all'applicazione. La Figura 4 mostra il semplice ciclo applicativo per eseguire e verificare i risultati del modello.

Figura 4: Il ciclo principale ingloba il modello di apprendimento automatico. (Immagine per gentile concessione di Beningo Embedded Group)

Conclusione

L'apprendimento automatico, anche grazie alla potenza della tecnologia tinyML, si sta rapidamente diffondendo nelle applicazioni embedded. Per il successo, gli sviluppatori devono sfruttare una piattaforma. Le opzioni di piattaforma proliferano, ma l'ecosistema STM32 offre agli sviluppatori un percorso semplice e scalabile per la realizzazione della loro soluzione.

All'interno di questo ecosistema, gli sviluppatori con esperienza di apprendimento automatico possono sfruttare i loro strumenti tradizionali e utilizzare il plug-in STM32CubeIDE.AI per ottimizzare e mettere a punto le soluzioni. I team che non dispongono di competenze di apprendimento automatico possono utilizzare NanoEdge per semplificare lo sviluppo di librerie di apprendimento automatico e rendere la soluzione operativa in modo rapido ed economico.

Informazioni su questo autore

Image of Jacob Beningo

Jacob Beningo è un consulente software embedded e attualmente lavora con clienti in più di una decina di paesi per trasformare radicalmente le loro attività migliorando la qualità dei prodotti, i costi e il time-to-market. Ha pubblicato più di 200 articoli sulle tecniche di sviluppo di software embedded, è un relatore e un istruttore tecnico e ha conseguito tre lauree, tra cui un master in ingegneria presso University of Michigan. Risponde all'indirizzo jacob@beningo.com, ha un sito web personale www.beningo.com e produce una Newsletter mensile Embedded Bytes cui è possibile iscriversi.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum