Pixel è un termine che abbiamo sempre associato alle immagini, ai display e a cose piuttosto banali nell’informatica di tutti i giorni. Ma se non fosse solo questo? La visione artificiale fornisce una fonte molto densa di informazioni sul mondo che ci circonda, quindi non dovrebbe sorprendere che questa tecnologia venga utilizzata in un’ampia gamma di applicazioni, dalla sorveglianza al monitoraggio della fauna selvatica e alla guida autonoma, solo per citarne alcune. Ma la ricchezza di questi dati è un’arma a doppio taglio: mentre consente lo sviluppo di molte nuove fantastiche tecnologie, richiede anche molta potenza di calcolo per avere effettivamente senso ed essere applicabile. Questo, spesso, si traduce in costi molto elevati, scarsa efficienza energetica e portabilità limitata. Per ridurre l’impatto di queste problematiche e portare la visione artificiale in più ambiti possibile, negli ultimi anni sono stati intrapresi numerosi sforzi per avvicinare l’elaborazione al sensore di immagine, dove può funzionare in modo più efficiente.
Questi sforzi sono generalmente rientrati in una delle tre grandi categorie: elaborazione vicino al sensore, elaborazione nel sensore o elaborazione in pixel. Nel primo caso, un chip di elaborazione specializzato si trova sullo stesso circuito stampato del sensore di immagine, il che consente di risparmiare uno spostamento nel cloud per l’elaborazione, ma presenta comunque un collo di bottiglia nel trasferimento dei dati tra il sensore e il processore. L’elaborazione nel sensore avvicina l’elaborazione posizionandola all’interno del sensore di immagine stesso, ma non elimina completamente il collo di bottiglia nel trasferimento dei dati visto con l’elaborazione vicino al sensore. Come miglior percorso in avanti, sono state sviluppate tecniche di elaborazione in pixel che spostano l’elaborazione direttamente in ogni singolo pixel del sensore di immagine, eliminando i ritardi nel trasferimento dei dati.
Sebbene questo metodo prometta bene, le attuali implementazioni tendono a fare affidamento su tecnologie emergenti che non sono ancora pronte per la produzione o non supportano i tipi di operazioni richieste da un modello di apprendimento automatico del mondo reale, come multi-bit, multicanale con operazioni di convoluzione, normalizzazione batch e unità lineari rettificate. Queste soluzioni sembrano impressionanti sulla carta, ma all’atto pratico, sono utili soltanto per impieghi secondari.
L’elaborazione in pixel adatta per le applicazioni del mondo reale sembra essere a pochi passi dal diventare una realtà come risultato del recente lavoro di un team dell’Università della California. Chiamato Processing-in-Pixel-in-Memory, il loro metodo incorpora pesi e attivazioni della rete a livello di singolo pixel per consentire un’elaborazione altamente parallela all’interno di sensori di immagine in grado di eseguire operazioni come le convoluzioni che molte reti neurali devono eseguire. Infatti, i sensori che implementano queste tecniche sono in grado di eseguire tutte le operazioni necessarie per elaborare i primi strati di una moderna rete neurale profonda. Nessun problema con i dispositivi che coinvolgono le classificazioni delle cifre MNIST.
I ricercatori hanno testato il loro approccio costruendo un modello MobileNetV2 addestrato su un set di dati di parole di scia visiva utilizzando i loro metodi. È stato riscontrato che i ritardi nel trasferimento dei dati sono stati ridotti di ben 21 volte rispetto alle implementazioni standard all’interno del sensore. Tale efficienza si è manifestata anche in un budget energetico inferiore, con il prodotto di ritardo energetico che si è scoperto essere stato ridotto di 11 volte. È importante sottolineare che questi guadagni di efficienza sono stati raggiunti senza alcuna riduzione sostanziale dell’accuratezza del modello.
Poiché i primi strati del modello vengono elaborati in pixel, è necessario inviare solo una piccola quantità di dati compressi a un processore esterno al sensore. Ciò non solo elimina i colli di bottiglia nel trasferimento dei dati, ma significa anche che è possibile accoppiare microcontrollori economici con questi sensori di immagine per consentire l’esecuzione di algoritmi visivi avanzati su piattaforme sempre più piccole, senza sacrificare la qualità. Assicurati di tenere d’occhio questo lavoro in futuro per vedere quali modifiche potrebbe apportare alle applicazioni tinyML.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano