Creare facilmente app mobile di Machine Learning con Google Firebase
Firebase è la piattaforma di Google Cloud dedicata allo sviluppo di applicazioni web e mobile. In particolare, può essere considerata un back-end già pronto da associare alle proprie applicazioni client. Se, per esempio, creassimo un’app per l’ordinazione di cibo a domicilio potremmo predisporre uno strumento da far utilizzare ai clienti dai propri smartphone e inglobare tutta la gestione degli ordini (compresa la parte di ricezione e perfezionamento da parte del ristoratore) attraverso gli strumenti server in Cloud che Firebase offre: il database NoSQL Firestore, le Cloud Functions per la creazione di API (Application Programming Interface) e l’hosting per la pubblicazione di pagine web.
Tutto questo rappresenta gran parte di quello che può servire per la gestione di applicazioni web/mobile lato server ma con l’avanzare dell’Intelligenza Artificiale ci sono una serie di funzionalità che possono essere abilitate sui nostri stessi smartphone. Da un lato ciò è incentivato dalle tante nuove esigenze che gli utenti riscontrano nella vita quotidiana (interpretazione di testo, lettura di codici a barre, scansione di QR code, etc.) dall’altro è reso possibile dalle potenzialità hardware dei dispositivi attuali che dimostrano capacità di elaborazione e disponibilità di memoria RAM pari a quelle di un PC.
Firebase quindi si propone anche come vettore delle tecnologie di Intelligenza Artificiale del Cloud di Google e in questo articolo vedremo una panoramica di tutto ciò che può essere sfruttato nello sviluppo dei nostri software.
Il Machine Learning nelle applicazioni web e mobile
Lo sviluppo di applicazioni basate su modelli di machine learning è piuttosto difficile da approcciare. Chi ha affrontato percorsi di studio sull’Intelligenza Artificiale sa bene che ci sono algoritmi da capire, matematica da rivedere e librerie informatiche da applicare. Il bello dell’implementazione che troviamo in Firebase è che tutto questo viene offerto in maniera molto intuitiva, con tutta la potenza necessaria nell’arco di poche righe di codice.
In pratica, potremo passare dal momento in cui avvertiamo la necessità di implementare tali funzionalità al momento di metterle in moto bypassando tutto lo studio e l’acquisizione delle conoscenze necessarie.
È importante ricordare che non basta scrivere codice e avere dei dati per sviluppare un modello di machine learning. A volte i dati storici servono in gran quantità e sono onerosi da recuperare pertanto i tempi di produzione di un modello spesso non saranno brevi. Oltre a ciò, è fondamentale mantenere il modello aggiornato: determinati modelli si basano su contesti in così veloce evoluzione che la “storicità” dei dati relativi può essere anche molto breve.
Uno dei grandi vantaggi del Machine Learning su Firebase è che viene offerta una serie di modelli già pronti e costantemente aggiornati per la risoluzione delle problematiche più comuni: in questo modo diventa estremamente comodo integrare tali funzionalità ottenendo il massimo del risultato con il minimo sforzo.
Un grande dilemma che si presenta in questi casi, data anche la grandissima connettività a Internet che offre un dispositivo mobile oggigiorno, consiste nella decisione di utilizzare il Machine Learning in Cloud o all’interno dello stesso device.
Le API di Firebase per il Machine Learning funzionano sia nel dispositivo, sia su Cloud ma sono due situazioni diverse. Infatti, il Cloud offre una capacità di elaborazione gigantesca rispetto a quella di un singolo smartphone ma con due aspetti a cui fare attenzione:
- un device mobile può sfruttare la capacità di elaborazione in Cloud scambiando dati (consumandone quindi) con tempi di latenza che indubbiamente sono maggiori rispetto al calcolo interno al dispositivo, cosa che potrebbe impattare su applicazioni realtime;
- ci sono circostanze in cui i dispositivi non godono di connettività e si tratta spesso di situazioni ad alto rischio come la strumentazione in dotazione a soccorritori, quella messa a disposizione di tecnici nel sottosuolo, nello spazio o su piattaforme al lavoro in mezzo all’Oceano.
Per questo, molto spesso conviene implementare (o si è obbligati a farlo) modelli all’interno del dispositivo stesso che possono lavorare molto velocemente, senza necessità di scambiare dati in rete e supportare al meglio le applicazioni realtime.
In questo scenario, riveste una grande importanza la libreria TensorFlow, prodotta da Google e dedicata all’Intelligenza Artificiale, e nello specifico qui mette lo zampino la sua versione TensorFlow Lite dedicata espressamente alla distribuzione di modelli sulle piattaforme mobile ed edge.
Con TensorFlow Lite è possibile:
- produrre un modello;
- convertirlo in un formato portabile;
- distribuirlo su dispositivi mobile sotto forma di file .tflite.
Implementazione in un’app
L’Intelligenza Artificiale su Firebase è pensata per lo più per mobile quindi essenzialmente per dispositivi Android e iOS.
I linguaggi utilizzati dalla prima tipologia sono Java e il più moderno Kotlin. Per il sistema operativo Apple si pensa soprattutto al linguaggio Swift. In questo settore, si innesta anche un’altra realtà estremamente importante che è Flutter, una tecnologia di sviluppo mobile di Google, ideata per la creazione di progetti che possono essere compilati sia come app Android sia come app iOS.
Se ci si vuole rivolgere direttamente a modelli preimpostati Google mette a disposizione il progetto ML Kit in cui si possono trovare già pronti e gratuiti tutti i modelli più comuni, preaddestrati e aggiornati da Google, resi disponibili comodamente per le proprie applicazioni iOS, Android e Flutter. Tra questi abbiamo:
- riconoscimento di oggetti;
- riconoscimento di testi;
- interpretazione di testo scritto a mano su dispositivi digitali;
- estrapolazione dalle immagini (tipo i selfie) del soggetto principale rispetto allo sfondo.
La documentazione guida nella realizzazione delle proprie applicazioni per ogni sistema operativo e qualora ci si occupasse già di progetti mobile si potrebbe integrare queste nuove funzionalità con l’utilizzo di pochissimo codice: a fronte di poco sforzo avremmo un gran numero di funzionalità pronte per far fare un salto di qualità ai nostri progetti.
Anche l’utilizzo di modelli custom, ovvero preparati appositamente per il progetto, non sarà affatto traumatico. La documentazione ci guiderà nei dettagli ma a grandi linee dovremo:
- occuparci del deployment del modello TensorFlow usando la console di Firebase o gli SDK di Firebase Admin per Python o Node.js;
- predisporre il download del modello e istruire l’Intepreter, un oggetto che si occupa dell’attivazione del modello;
- eseguire le analisi sui dati in input sfruttando l’intelligenza che il modello offre.
Tutto ciò andrà integrato con la nostra applicazione, recuperando dati in input dall’interfaccia utente, interallacciandone il flusso con il nostro back-end e i database a disposizione nonché delegando la produzione dei risultati al lavoro del modello.
Come iniziare a lavorare con Firebase
Da quanto illustrato, Firebase può essere un’ottima soluzione per innestare Intelligenza Artificiale in molti tipi di dispositivi. Se si hanno già in piedi progetti mobile, probabilmente staremo già usando Firebase come backend pertanto l’implementazione di tali funzionalità sarà comoda scegliendo il linguaggio più adatto. Qualora invece non si avesse già la sufficiente dimestichezza con Firebase si potrà seguire i tutorial che la documentazione ufficiale offre per poter muovere i primi passi: si tratterà tra l’altro di casi estremamente comuni essendo spesso operazioni su testo o codici a barre che già conosciamo bene come semplici utenti.