Intelligenza Artificiale: abbiamo provato i kit fai-da-te di Google

Spazio Chirale Trends   •   1 gennaio, 2019

AIY Vision Kit

Il 2018 è stato l’anno in cui l’Intelligenza Artificiale è stata definitivamente sdoganata come tecnologia d’impiego corrente in molti dispositivi d’uso quotidiano.

Negli ultimi anni i progressi registrati nel settore del machine learning hanno profondamente influenzato lo sviluppo delle tecnologie di gestione dei big data che sono alla base dei sistemi di ricerca su web come Google o di distribuzione dei contenuti sui social network come Facebook.

Le Reti Neurali, inizialmente impiegate come architetture di calcolo più eleganti e alternative rispetto ai tradizionali paradigmi di model fitting tipici degli algoritmi di impostazione statistica tradizionali, hanno gradualmente raggiunto prestazioni elevate, inimmaginabili fino a pochi anni prima, e ottenuto risultati importanti in campi quali la visione artificiale, arrivando ad eguagliare, se non a superare, le prestazioni della corteccia visiva umana in molte applicazioni.

Mentre la ricerca nel campo dell’apprendimento automatico e delle Reti Neurali prosegue intensa negli ambienti accademici e nei laboratori dei grandi player che dominano il mercato dell’alta tecnologia, i primi risultati oramai consolidati nel campo del Deep Learning, basati su architetture come le Dense Neural Network e le Convolutional Neural Network, cominciano ad essere disponibili in logica open source e gratuita a tutti, favorendo quel processo di democratizzazione della tecnologia a cui i movimenti Hacker degli anni ’80-’90 e Maker in tempi più recenti ci hanno abituato, rivelandone i benefici in termini di progresso culturale e sociale.

Nell’autunno del 2015 Google ha rilasciato sotto licenza Apache 2.0 Open Source la piattaforma TensorFlow, un insieme di librerie di seconda generazione per lo sviluppo di applicazioni basate su reti neurali.

La piattaforma era stata inizialmente creata ad uso interno di Google, per supportare i progetti di sviluppo dei sistemi che sono alla base della maggior parte dei servizi del gigante californiano come: il motore di ricerca, l’interfaccia di riconoscimento vocale, Google Foto e Gmail.

Attualmente, TensorFlow rappresenta lo stato dell’arte degli strumenti di questo tipo e dalla data del suo rilascio le aziende e le organizzazioni che l’hanno adottata sono sempre più numerose.

Ma come è fatta una moderna applicazione d’Intelligenza Artificiale, e cosa sono le Reti Neurali?

Concettualmente la cosa è piuttosto semplice: si tratta di un sistema software che simula la struttura di una rete di cellule celebrali, i neuroni per l’appunto.

Se nel cervello degli animali superiori l’informazione si propaga dagli organi di senso attraverso la rete di neuroni sotto forma di segnale elettrico, nel software l’informazione è costituita da numeri che si propagano attraverso semplici operazioni di somme aritmetiche ponderate attraverso una rete virtuale di nodi di elaborazione che svolgono operazioni molto semplici.

Ad ogni collegamento logico tra un neurone virtuale e l’altro è associato un coefficiente, chiamato peso. Nel trasferimento tra un neurone e l’altro l’informazione numerica viene moltiplicata per il peso associato al collegamento. Quando si implementa la rete, cioè si scrive il software che rappresenta il modello di rete, i coefficienti, o pesi, sono valorizzati in modo casuale.

Successivamente la rete viene sottoposta ad un processo di apprendimento, durante il quale per mezzo di formule matematiche e algoritmi a volte complessi, di derivazione statistica, i pesi vengono modificati in modo iterativo finché la rete non inizia a classificare i dati in modo accettabile e sufficientemente preciso.

Scrivere da zero il software che modella la struttura di una rete neurale adatta a gestire problemi reali e i relativi algoritmi di funzionamento è un lavoro molto complesso.

TensorFlow facilita questo lavoro mettendo a disposizione, come una sorta di mattoncini lego, tutti i pezzi necessari, risparmiando al programmatore gran parte del lavoro, poiché quasi tutto è già stato scritto dagli autori del TensorFlow in modo elegante e parametrico. L’apprendimento di TensorFlow richiede tempo, ma una volta appreso come utilizzare i mattoncini, la realizzazione di una rete neurale di impiego pratico è molto veloce e richiede pochissime righe di codice.

Le librerie di alto livello del TensorFlow sono disponibili solo per il linguaggio Python, che ancora una volta si conferma il linguaggio d’elezione per questo tipo di applicazioni, e non è un caso che al Python e alle applicazioni di Deep Learning con TensorFlow abbiamo dedicato uno dei nostri corsi di maggiore successo.

Per programmare una rete neurale con TensorFlow è sufficiente un personal computer e un IDE Python.

L’addestramento di una rete su un insieme di dati reali richiede grandi capacità di calcolo e tempi comunque molto lunghi, anche di diversi giorni!

Oggi è possibile acquistare a consumo servizi di calcolo da aziende quali Amazon o la stessa Google, tuttavia il processo di training è comunque una cosa da esperti e i Data Scientist o Data Specialist sono tra le figure professionali più richieste e pagate dal mercato.

Una volta addestrata la rete, cioè calcolati i valori dei pesi dei collegamenti neurali che fanno funzionare la rete come classificatore di dati con l’accuratezza desiderata, l’operazione di classificazione, cioè il calcolo dell’output a partire da un campione di dati in input, è un processo veloce, quasi istantaneo, computazionalmente poco costoso.

Nel nostro centro di ricerca presso il Fab Lab dello Spazio Chirale alla Garbatella abbiamo fatto girare reti neurali già addestrate su piccoli processori come l’ATMega328 di Arduino o microcomputer da maker come Raspberry Pi.

Fortunatamente, poiché da diversi anni vengono intensivamente sviluppate e addestrate reti neurali in tutto il mondo, per i problemi più comuni e ricorrenti iniziano ad essere disponibili reti neurali già addestrate, scaricabili come componenti software a pagamento da siti di aziende o marketplace specializzati o in forma gratuita e open source, rendendo possibile la ricerca e lo sviluppo di nuove applicazioni a partire da una ulteriore categoria di mattoncini: i models già pronti, cioè pezzi di software, librerie o API, che implementano uno specifico modello (struttura) di rete neurale preaddestrata su un dominio di dati di interesse generale.

E’ in questa logica che Google nel corso del 2018 ha lanciato i suoi kit d’Intelligenza Artificiale fai da te, simpaticamente chiamati AIY, cioè Artificial Intelligence Yourself.

A dire il vero il Voice Kit, primo kit AIY presentato sul mercato, non ci aveva entusiasmato, di fatto un bel packaging per creare un accattivante box in cartone con pulsante luminoso RGB e altoparlante per confezionare l’interfaccia Raspberry Pi verso i servizi di riconoscimento vocale di Google disponibili in Cloud già ampiamente utilizzati per decine di prodotti smart e prototipi usciti dai nostri Fab Lab.

Il Vision Kit, al contrario, ci sembra un deciso passo in avanti. Per la prima volta, infatti, la Rete Neurale viene ospitata e quindi eseguita localmente nell’hardware del dispositivo che viene realizzato.

La cosa può apparire incredibile trattandosi, come è evidente dal nome del kit, di un sistema per la visione artificiale e per di più basato sul microcomputer Raspberry Pi Zero WH, cioè una board entry level da circa 10 euro di costo, che sulla carta dovrebbe elaborare e dare in pasto ad una probabile rete neurale convoluzionale, in tempo reale, un video streaming in risoluzione HD a colori!

La cosa è in realtà stata resa possibile dallo sviluppo di un hardware aggiuntivo, un bonnet per dirla in terminologia più consona al mondo Raspberry Pi Zero, che funge da coprocessore video e neurale specializzato, lasciando quindi alla microboard il solo compito di ricevere l’output della rete e pilotare gli attuatori che mettono in scena i relativi risultati secondo gli effetti speciali voluti.

Il vero cuore del sistema è quindi il Vision Bonnet, un PCB che ospita l’oramai celebre Processore Neurale Intel’s Movidius™ Myriad™ 2 VPU, che rende possibile l’elaborazione dello streaming video e l’esecuzione delle operazioni di feed forward della rete neurale, e un proprio MCU che permette di gestire servo motori e LED senza occupare ulteriori PIN GPIO della Raspberry Pi Zero.

Il kit è fornito completo di una sua immagine su scheda SD con una distribuzione Raspbian personalizzata da Google che include il TensorFlow e il package Python aiy.vision che permette lo sviluppo di applicazioni AI specifiche per il kit. Nella distribuzione sono inclusi numerosi esempi di utilizzo per le principali API che fanno parte del package.

Dal repository GitHub del progetto AIY è possibile scaricare un compilatore, che purtroppo gira solo su sistemi Linux Intel, per trasformare un frozen graph TensorFlow, cioè un modello di rete neurale sviluppata e già addestrata con TensorFlow, in un grafo in formato binario caricabile sulla Vision Bonnet a run-time.

È quindi possibile progettare e realizzare i propri modelli di visione artificiale, addestrando le reti su un sistema di sviluppo per il TensorFlow di adeguata potenza, ed esportare i grafi compilandoli per il sistema Vision Bonnet + Raspberry Pi consentendo la costruzione di prototipi e prodotti interattivi secondo i metodi della cultura maker.

In ogni caso vanno tenuti presenti i limiti in termini di risorse di elaborazione del sistema Vision Bonnet, per cui Google offre degli script per verificare la compatibilità dei modelli sviluppati con le capacità di questo kit che resta comunque una piattaforma di tinkering più che di vero sviluppo.

Costruendo il kit secondo le istruzioni fornite dal sito web dedicato al progetto AIY si assembla un divertente box in cartone su cui di default è attiva una demo di riconoscimento delle espressioni facciali. Ogni volta che nel campo visuale della telecamera sono presenti dei volti, questi vengono identificati e a ciascuno viene attribuito un punteggio in base al grado di gioia mostrato dall’espressione del viso. Il colore RGB del pulsante luminoso varia dal blu al giallo in base al valore medio di gioia calcolato dal sistema. Se si sorride in modo molto evidente il kit emette dei beep gioiosi tramite il buzzer accluso.

Le istruzioni di montaggio sono ben fatte e molto chiare, chiaramente indirizzate a persone poco esperte del mondo Linux e Raspberry Pi. Per fare qualunque cosa oltre a giocare con la demo che si avvia di default è necessario accedere alla Raspberry Pi collegandosi direttamente con mouse, tastiera e monitor, oppure da remoto via terminale SSH, in quest’ultimo caso la Raspberry deve essere collegata alla rete Wi-Fi.

Per configurare la rete Wi-Fi le istruzioni ufficiali elencano solo due metodi: l’utilizzo di un’apposita app per smartphone Android, oppure l’uso di monitor, mouse e tastiera che però sulla Pi Zero richiede un hub USB con ingresso Micro-USB.

Non avendo a portata di mano sul tavolo utilizzato per il set-up del primo kit né uno smartphone Android né un hub USB adatto, abbiamo prosaicamente provveduto ad effettuare una configurazione headless della Raspberry Pi Zero, molto più standard della bizzarra alternativa tramite app dedicata e inspiegabilmente non citata dalle istruzioni ufficiali tra le diverse possibilità.

Ciò che ci piace maggiormente è che il kit è facilmente hackerabile ed utilizzabile in qualunque progetto maker. Proprio come succede con il Lego il bello comincia quando si gettano via le istruzioni per costruire il kit illustrato sulla confezione e si inizia a creare!