Eseguire il codice di apprendimento automatico in un nodo IoT embedded per identificare facilmente gli oggetti
Contributo di Editori nordamericani di DigiKey
2020-10-08
Le reti Internet delle cose (IoT) che operano in ambienti dinamici si stanno estendendo oltre il rilevamento degli oggetti per includere l'identificazione visiva degli oggetti in applicazioni quali la sicurezza, il monitoraggio ambientale, la sicurezza e l'Industrial IoT (IIoT). Poiché l'identificazione degli oggetti è adattiva e comporta l'utilizzo di modelli di apprendimento automatico (ML), si tratta di un campo complesso difficile da affrontare da zero e da implementare in modo efficiente.
La difficoltà deriva dal fatto che un modello ML è tanto valido quanto il suo set di dati e, una volta acquisiti i dati corretti, il sistema deve essere adeguatamente addestrato ad agire di conseguenza.
Questo articolo mostrerà agli sviluppatori come implementare il modello TensorFlow Lite di Google per il modello ML in un microcontroller di Microchip Technology. Spiegherà poi come usare la classificazione delle immagini e i set di dati di apprendimento per il rilevamento degli oggetti con TensorFlow Lite al fine di identificare facilmente gli oggetti con un minimo di programmazione personalizzata.
Introdurrà poi uno starter kit TensorFlow Lite ML di Adafruit Industries che può tornare utile agli sviluppatori per familiarizzare con le basi di ML.
ML per i sistemi di visione embedded
ML in senso lato dà a un computer o a un sistema embedded capacità di riconoscimento dei modelli comportamentali simili a quelle di un essere umano. Dal punto di vista sensoriale umano ciò significa utilizzare sensori come microfoni e fotocamere per imitare le percezioni sensoriali umane dell'udito e della vista. Mentre i sensori sono facili da usare per l'acquisizione di dati audiovisivi, una volta che i dati sono digitalizzati e memorizzati devono poi essere elaborati in modo da poterli confrontare con i modelli memorizzati che rappresentano suoni oppure oggetti noti. La sfida è che i dati di immagine catturati con una fotocamera per un oggetto visivo, ad esempio, non corrispondono esattamente ai dati in memoria per un oggetto. Un'applicazione ML che deve identificare visivamente l'oggetto deve elaborare i dati in modo da poter abbinare in modo accurato ed efficiente il modello catturato dalla fotocamera a un modello memorizzato.
Esistono diverse librerie e motori utilizzati per abbinare i dati catturati dai sensori. TensorFlow è una libreria di codice open-source utilizzata per abbinare i modelli. La libreria di codice TensorFlow Lite for Microcontrollers è progettata specificamente per essere eseguita su un microcontroller, e di conseguenza ha ridotto i requisiti di memoria e di CPU e può funzionare su hardware più limitato. In particolare, richiede un microcontroller a 32 bit e utilizza meno di 25 kB di memoria flash.
Tuttavia, mentre TensorFlow Lite for Microcontrollers è il motore ML, il sistema ha ancora bisogno di un set di dati di apprendimento dei modelli da identificare. Indipendentemente da quanto sia buono il motore ML, il sistema è tanto buono quanto il suo set di dati di apprendimento, e per gli oggetti visivi alcuni di questi set possono richiedere parecchi gigabyte di dati per molti modelli grandi. Un maggior numero di dati richiede maggiori prestazioni dalla CPU per trovare rapidamente una corrispondenza precisa, motivo per cui questi tipi di applicazioni sono normalmente eseguiti su computer potenti o laptop di fascia alta.
Per un'applicazione di sistemi embedded, dovrebbe essere necessario memorizzare in un set di dati di apprendimento solo i modelli specifici necessari per l'applicazione. Se un sistema deve riconoscere strumenti e hardware, i modelli che rappresentano, ad esempio, frutta e giocattoli possono essere ignorati. Questo riduce la dimensione del set di dati di apprendimento, che a sua volta riduce le esigenze di memoria del sistema embedded, migliorando così le prestazioni e riducendo i costi.
Un microcontroller ML
Per eseguire TensorFlow Lite for Microcontrollers, la tecnologia di Microchip punta all'apprendimento automatico nei microcontroller con l'MCU basato su Arm® Cortex®-M4F ATSAMD51J19A-AFT (Figura 1). Ha 512 kB di memoria flash e 192 kB di memoria SRAM e funziona a 120 MHz. ATSAMD51J19A-AFT fa parte della famiglia di microcontroller ML ATSAMD51 di Microchip Technology. È conforme agli standard di qualità AEC-Q100 Grado 1 per il settore automotive e funziona da -40 a +125 °C, il che lo rende applicabile agli ambienti IoT e IIoT più difficili. È un microcontroller a bassa tensione e funziona da 1,71 a 3,63 V quando viene eseguito a 120 MHz.
Figura 1: ATSAMD51J19A è basato su un core Arm Cortex-M4F che funziona a 120 MHz. Si tratta di un microcontroller completo con 512 kB di flash e 192 kB di SRAM. (Immagine per gentile concessione di Microchip Technology)
Le opzioni di rete di ATSAMD51J19A includono CAN 2.0B per reti industriali e 10/100 Ethernet per la maggior parte delle reti cablate. Questo permette al microcontroller di funzionare su una varietà di reti IoT. Un'interfaccia USB 2.0 supporta sia la modalità operativa Host che Device e può essere utilizzata per il debug del dispositivo o per il collegamento in rete del sistema.
Un'istruzione combinata e la cache dei dati di 4 kB migliora le prestazioni durante l'elaborazione del codice ML. Un'unità a virgola mobile (FPU) è utile anche per migliorare le prestazioni del codice ML e per l'elaborazione dei dati grezzi dei sensori.
Memorizzazione dei set di dati di apprendimento
ATSAMD51J19A dispone anche di un'interfaccia QSPI per la memorizzazione esterna di programmi o di dati. Questa è utile per la memorizzazione di dati supplementari dei set di dati di apprendimento che superano la capacità della memoria flash del chip. QSPI prevede anche il supporto eXecute in Place (XiP) per l'espansione esterna ad alta velocità della memoria di programma.
ATSAMD51J19A ha anche un controllore host per schede di memoria SD/MMC (SDHC), molto utile per applicazioni ML in quanto consente un facile scambio di memoria del codice ML e dei set di dati di apprendimento. Mentre il motore TensorFlow Lite for Microcontrollers può funzionare nei 512 kB di flash su ATSAMD51J19A, i set di dati di apprendimento possono essere aggiornati e migliorati regolarmente. Il set di dati di apprendimento può essere memorizzato in una flash QSPI esterna o EEPROM QSPI e, a seconda della configurazione della rete, può essere aggiornato a distanza attraverso la rete. Tuttavia, per alcuni sistemi può essere più pratico scambiare fisicamente una scheda di memoria con un'altra che abbia un set di dati di apprendimento migliorato. In questa configurazione lo sviluppatore deve decidere se il sistema deve essere progettato per lo scambio a caldo della scheda di memoria o se il nodo IoT deve essere spento.
Se il nodo IoT è molto limitato in termini di spazio, allora invece di usare la memoria esterna sarebbe vantaggioso salvare quanto più possibile dell'applicazione nella memoria del microcontroller. ATSAMD51J20A-AFT di Microchip Technology è simile e compatibile con ATSAMD51J19A, tranne per il fatto che ha 1 MB di flash e 256 kB di SRAM, che fornisce più memoria su chip per i set di dati di apprendimento.
Sviluppo con TensorFlow Lite for Microcontrollers
Adafruit Industries supporta lo sviluppo su ATSAMD51J19A con il kit di sviluppo 4317 TensorFlow Lite for Microcontrollers (Figura 2). La scheda ha 2 MB di flash QSPI che possono essere utilizzati per memorizzare i set di dati di apprendimento. Il kit viene fornito con una presa per microfono per il riconoscimento audio ML. Il display LCD TFT a colori da 1,8 pollici 160 x 128 può essere utilizzato per lo sviluppo e il debug. Questo display può essere utilizzato anche per le demo di riconoscimento vocale quando TensorFlow Lite for Microcontrollers viene utilizzato con un set di dati di apprendimento per il riconoscimento vocale. Poiché l'applicazione riconosce diverse parole, queste possono essere visualizzate sullo schermo.
Il kit di Adafruit Industries ha anche otto pulsanti, un accelerometro a tre assi, un sensore di luce, un minialtoparlante e una batteria LiPo. La porta USB 2.0 di ATSAMD51J19A accetta un connettore per la carica della batteria, il debug e la programmazione.
Figura 2: Il kit di sviluppo 4317 TensorFlow Lite for Microcontrollers di Adafruit Industries viene fornito con un LCD TFT a colori per lo sviluppo e può visualizzare i risultati delle operazioni ML. (Immagine per gentile concessione di Adafruit Industries)
Il kit di Adafruit viene fornito con l'ultima versione di TensorFlow Lite for Microcontrollers. I set di dati di apprendimento possono essere caricati attraverso la porta USB nei 512 kB di memoria flash del microcontroller ATSAMD51J19A oppure caricati nella nei 2 MB di memoria esterna QSPI.
Per la valutazione del riconoscimento delle immagini, è possibile caricare sulla scheda di sviluppo il set di apprendimento per il riconoscimento degli oggetti TensorFlow. La scheda di sviluppo dispone di porte per il collegamento alle porte parallele e seriali del microcontroller, molte delle quali possono essere utilizzate per il collegamento a una fotocamera esterna. Con il set di apprendimento per il rilevamento degli oggetti caricato sul microcontroller, il display LCD può essere utilizzato per mostrare i risultati dell'elaborazione ML del rilevamento degli oggetti, quindi se riconosce una banana, il display TFT potrebbe visualizzare l'oggetto riconosciuto con una percentuale di certezza. Un esempio dei risultati visualizzati potrebbe essere:
Banana: 95%
Chiave: 12%
Occhiali da vista: 8%
Pettine: 2%
Per le applicazioni di rilevamento di oggetti IoT, questo può velocizzare lo sviluppo e aiutare a diagnosticare eventuali risultati di rilevamento non corretti.
Conclusione
ML è un campo in espansione che richiede competenze specializzate per sviluppare motori e modelli di microcontroller da zero e implementarli in modo efficiente sull'edge. Tuttavia, l'utilizzo di una libreria di codice esistente come TensorFlow Lite for Microcontrollers su microcontroller o schede di sviluppo a basso costo e ad alta efficienza fa risparmiare tempo e denaro, dando vita a un sistema ML ad alte prestazioni che può essere utilizzato per rilevare oggetti in un nodo IoT in modo rapido, affidabile ed efficiente.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.


