Android Machine Learning

Kayvan Kaseb

Follow

Nov 26, 2020 – 9 min read

La foto è fornita da Unsplash

Come sapete, un crescente interesse per il Machine Learning ha costretto le aziende a concentrarsi e investire su di esso. Il Machine Learning (ML) è la specializzazione della scienza computazionale, che si concentra sull’analisi e l’interpretazione di modelli e strutture nei dati per consentire l’apprendimento, il ragionamento e il processo decisionale al di fuori dell’interazione umana. Inoltre, il Machine Learning è un approccio di programmazione che fornisce alle vostre applicazioni Android la capacità di imparare e migliorare automaticamente dall’esperienza precedente. Di conseguenza, Google ha progettato e implementato una serie di funzioni e strumenti avanzati per il Machine Learning di Android. Questo articolo mira a discutere alcuni concetti principali e caratteristiche avanzate che sono state raccomandate agli sviluppatori Android.

Introduzione e panoramica

Fondamentalmente, l’apprendimento automatico (ML) è un approccio di programmazione che fornisce alle vostre applicazioni Android la capacità di imparare e migliorare automaticamente dall’esperienza senza essere esplicitamente programmate per farlo. Recentemente, Android ha una vasta gamma di strumenti di Machine Learning che sono disponibili per tutti: designer, product manager, ingegneri, sviluppatori mobili ed esperti di Machine Learning. Ora, Android è una piattaforma, e uno dei modi in cui si può misurare il successo di una piattaforma è attraverso le grandi realizzazioni che si costruiscono sopra di essa. Oggi, Android gira su 2,5 miliardi di dispositivi, e un certo numero di loro sta già utilizzando il ML on-device. Inoltre, il Machine Learning on-device non è più una tecnologia del futuro perché è accessibile per l’utilizzo proprio ora. Per esempio, è stato menzionato che più di 25.000 applicazioni su Android e iOS fanno uso delle caratteristiche di ML Kit.

In altre parole, i moderni telefoni cellulari hanno abbastanza capacità di elaborare quanto i computer tradizionali, e i nostri telefoni e tablet sono abbastanza potenti per eseguire applicazioni, che possono imparare e interagire in tempo reale. Il Machine Learning(ML) ci sta aiutando a costruire applicazioni intelligenti. Per esempio, la previsione di Google Apps per le prossime applicazioni che probabilmente userete, e un’applicazione mobile che risolve il più grande problema del mondo per trovare l’emoji perfetto. Inoltre, gli assistenti intelligenti, i filtri di Snapchat, le risposte intelligenti e le lenti di Google sono alcuni degli altri prodotti dell’utilizzo del Machine Learning sui dispositivi. Esiste un certo numero di SDK sui telefoni cellulari che aiutano a eseguire il Machine Learning sui dispositivi mobili. Alcuni di essi includono kit di sviluppo software sviluppati da aziende popolari come Amazon, Intel e Microsoft, e anche Google ha sviluppato il Kit ML. Le seguenti sezioni di questo saggio prenderanno in considerazione alcuni concetti principali e nuove caratteristiche che sono state raccomandate da Google per lo sviluppo di Android.

La definizione di Machine Learning (ML)

In effetti, il maggiore dei Machine Learning riguarda la questione di come costruire programmi informatici che migliorano automaticamente con le esperienze. Quindi, la risposta è nei dati. In breve, il Machine Learning è considerato come un sottoinsieme dell’IA, che utilizza metodi statistici per consentire alle macchine di migliorare con l’esperienza. Consente a un sistema informatico di prendere decisioni per svolgere un certo compito. Questi programmi o algoritmi sono progettati in modo che possano imparare e migliorare nel tempo osservando nuovi dati. L’obiettivo principale del Machine Learning è quello di ricavare significato dai dati. Pertanto, i dati sono la chiave per sbloccare il Machine Learning. Più dati qualificati ML ha, più accurato diventa l’algoritmo ML.

Machine Learning (ML) è la scienza degli algoritmi informatici che migliorano automaticamente attraverso le esperienze passate.

Per fare previsioni o decisioni senza essere esplicitamente programmati, gli algoritmi di Machine Learning costruiscono un modello basato su esempi chiamati dati di allenamento.

Il Machine Learning è l’estrazione della conoscenza dai dati.

Inoltre, ci sono alcune differenze tra l’Intelligenza Artificiale e il Machine Learning. L’obiettivo dell’Intelligenza Artificiale è quello di creare una macchina che possa imitare una mente umana, e richiede anche capacità di apprendimento. Tuttavia, non si tratta solo di apprendimento, ma anche di rappresentazione della conoscenza, ragionamento e pensiero astratto. Al contrario, il Machine Learning si concentra esclusivamente sulla scrittura di software, che può imparare dalle esperienze passate. Inoltre, il Machine Learning è più strettamente legato al Data Mining e alla Statistica che all’Intelligenza Artificiale.

Il Machine Learning ci permette di risolvere certi tipi di problemi in modi molto eleganti. Il punto importante è il motivo per cui usiamo il Machine Learning nella pratica. Per esempio, avete dovuto scrivere del codice per rilevare se qualcuno stava camminando. Inoltre, se si ha accesso alla sua velocità, si deve scrivere un po’ di codice abbastanza semplice per specificare una metrica per la velocità che mostri di camminare nella realtà. Estendere questa situazione alla corsa sembra abbastanza semplice. Inoltre, se volessimo coprire la bicicletta, dobbiamo solo aggiungere un’altra condizione limite al nostro codice. Al momento la domanda è: che ne è di altri tipi di attività, per esempio, il golf?

In effetti, il golf include molto camminare, ma c’è anche portare e oscillare un mucchio di mazze. Quindi, come spieghiamo questa condizione? È qui che il Machine Learning può aiutarci efficacemente. Nella programmazione tradizionale, esprimiamo regole in linguaggi, come Kotlin, Java. Poi, applichiamo quelle regole al problema di interesse. Nel Machine Learning, il paradigma è un po’ diverso. Invece di scrivere un mucchio di regole, prendiamo un sacco di dati di etichette come foto di persone impegnate in diversi tipi di attività con etichette corrispondenti a quelle attività. Inoltre, se forniamo questi dati alla nostra rete neurale, essa imparerà le regole di business per noi senza bisogno di definirle. In breve, il Machine Learning ha dimostrato di essere notevolmente efficace nel risolvere una serie di problemi di vario tipo come il rilevamento delle attività.

Machine Learning nello sviluppo di Android

Come avete notato, il Machine Learning è un approccio di programmazione che fornisce alle vostre applicazioni Android la capacità di imparare e migliorare automaticamente dall’esperienza senza essere esplicitamente programmate per farlo. Inoltre, questo è adatto per le applicazioni Android che utilizzano dati non strutturati come immagini e testo, o problemi con un gran numero di parametri come prevedere la squadra sportiva vincente. Attualmente, Android fornisce una grande varietà di strumenti e metodi di apprendimento automatico: Le guide di progettazione ML, l’SDK di apprendimento automatico chiavi in mano di Google ML Kit, TF Hub per trovare modelli all’avanguardia precostruiti, TF Lite Model Maker per addestrare un modello esistente con i propri dati, e modelli personalizzati ML Kit e Android Studio per integrare questi modelli nella tua app Android in modo appropriato.

Per sviluppare applicazioni ML per Android, dovrai affrontare quattro compiti principali come segue:

  1. Design: identificare gli obiettivi del prodotto e fornire modelli di progettazione ML per raggiungerli.
  2. Costruire e addestrare: costruire il modello ML, o addestrare modello pre-addestrato da Google.
  3. Inferenza: il processo di utilizzo di un modello di apprendimento automatico, che è già stato addestrato per svolgere un certo compito.
  4. Distribuire: Installazione e aggiornamento dei modelli ML per la tua app Android.

Guida per la progettazione di app Android

Inizialmente, non c’è differenza rispetto ad altre tecnologie avanzate. I vostri progettisti di prodotti e l’ingegneria sono tutti combinati per decidere che tipo di problema stiamo cercando di risolvere con il nostro prodotto. Quindi, non è un singolo sforzo. È un processo estremamente iterativo quando si ha una nuova tecnologia. Si vuole testare il confine e si vuole collaborare. Inoltre, vuoi osservare come l’utente usa realmente il tuo prodotto. Questo significa che Design, Product Management e Software Engineering giocano ruoli chiave in questo processo. Google ha prodotto due guide in questo campo di studio come segue:

  1. The People + AI Guidebook : In questa guida, ci sono sei diverse sezioni per aiutarti a strutturare la tua conversazione con i tuoi designer e product manager. In generale, offre le migliori pratiche per aiutare il tuo team a prendere decisioni sui prodotti AI centrate sull’uomo.

2. Il Material Design per le specifiche di Machine Learning: questa linea guida comprende le seguenti sezioni:

Primo, nuove linee guida di Material Design per i casi d’uso ML su mobile.

Secondo, permettendo una grande UX mobile end-to-end alimentata da ML.

In terzo luogo, il codice sorgente disponibile per il rilevamento e l’inseguimento di oggetti e la scansione di codici a barre.

La decisione chiave nello sviluppo di Android

In effetti, una decisione chiave che si dovrebbe affrontare nello sviluppo di Android è l’inferenza sarà eseguita sul dispositivo, o utilizzare un servizio cloud che sarebbe accessibile in remoto. Per prendere questa decisione con precisione, si dovrebbero considerare alcuni parametri come vantaggi o svantaggi. Per esempio, per l’approccio sul dispositivo si affrontano alcuni vantaggi come segue:

  1. Privacy: In molti casi, è più appropriato tenere tutto sul dispositivo. Pertanto, non dobbiamo preoccuparci di come i dati vengono elaborati nel cloud.

2. Offline: il Machine Learning su dispositivo funziona quando non c’è connettività, o quando la rete è discontinua. Per esempio, se passate del tempo in metropolitana, saprete che questo potrebbe essere utile.

3. Bassa latenza: eseguendo la nostra elaborazione sul dispositivo, possiamo essere in grado di rimuovere del tutto la latenza di rete dall’equazione. Inoltre, accoppiando questo con gli ultimi progressi nell’accelerazione hardware, possiamo dare agli utenti esperienze veramente in tempo reale su una vasta gamma di dispositivi Android.

ML Kit per gli sviluppatori di app

In effetti, ML Kit SDK è un nuovo prodotto di Google, che è stato presentato nel 2018. ML Kit è un kit di sviluppo software che consente agli sviluppatori di semplificare l’integrazione dei modelli di apprendimento automatico nelle loro app mobili. Inoltre, anche uno sviluppatore junior può affrontare facilmente questo compito. Un altro punto è che rende le app iOS e Android molto più coinvolgenti, personalizzate e utili con soluzioni che sono ottimizzate per l’esecuzione sul dispositivo. Come è stato menzionato, più di 25.000 app su Android e iOS fanno uso delle caratteristiche di ML Kit.

Un nuovo SDK che porta l’esperienza del Machine Learning di Google agli sviluppatori mobili in un pacchetto potente e facile da usare su Firebase.

ML Kit ha alcune caratteristiche che possono essere categorizzate in tre sezioni:

  1. Vision: API di analisi video e immagini per etichettare le immagini e rilevare codici a barre, testo, volti e oggetti.
  2. Linguaggio naturale: API di elaborazione del linguaggio naturale per identificare e tradurre tra 58 lingue e fornire suggerimenti di risposta.
  3. Custom: Costruisci i tuoi modelli usando AutoML Vision Edge, o porta i tuoi modelli TensorFlow Lite, esegui esperimenti e distribuiscili in produzione con ML Kit.

L’immagine è fornita da Google Documents

Ogni categoria ha alcune caratteristiche. Per esempio, Vision ha alcune caratteristiche come API di base: Barcode Scanning, Face Detection, Image Labeling, Object Detection, Landmark Detection, e Text Detection.

TensorFlow Lite

Fondamentalmente, TensorFlow Lite è un insieme di strumenti per aiutare i programmatori ad eseguire modelli TensorFlow su dispositivi mobili, embedded e IoT in modo appropriato. Infatti, fornisce un’inferenza di apprendimento automatico sul dispositivo con una bassa latenza e una piccola dimensione binaria. In altre parole, TensorFlow Lite è progettato per rendere facile l’esecuzione del Machine Learning sui dispositivi, ai margini della rete, invece di inviare dati avanti e indietro da un server. TensorFlow Lite include due componenti principali:

  1. L’interprete TensorFlow Lite: funziona (modelli ottimizzati) su diversi tipi di hardware, come telefoni cellulari e microcontrollori.

2. Il convertitore TensorFlow Lite: converte i modelli TensorFlow in una forma produttiva per l’uso da parte dell’interprete, e può essere in grado di introdurre ottimizzazioni per migliorare la dimensione binaria e le prestazioni.

Eventualmente, i passi per utilizzare TensorFlow Lite contengono brevemente i seguenti passaggi:

  1. Scegliere un modello
  2. Convertire il modello
  3. Deployare sul vostro dispositivo
  4. Ottimizzare il vostro modello

AutoML Vision Edge

Questa nuova funzione di Google può costruire modelli di classificazione delle immagini personalizzati dai vostri dati di allenamento. Infatti, se avete intenzione di riconoscere il contenuto di un’immagine, un’opzione potrebbe utilizzare l’API di etichettatura delle immagini su dispositivo di ML Kit. Tuttavia, se avete bisogno di un modello di etichettatura delle immagini più specializzato, potete essere in grado di utilizzare Firebase ML e AutoML Vision Edge per addestrare un modello con le vostre immagini e categorie. Per esempio, un modello per distinguere tra specie di fiori o tipi di cibo. Il modello personalizzato viene addestrato in Google Cloud, e poi può essere utilizzato completamente sul dispositivo.

In conclusione

A colpo d’occhio, il Machine Learning è un approccio di programmazione che fornisce alle vostre applicazioni Android la capacità di imparare e migliorare automaticamente dall’esperienza precedente. Di conseguenza, Google ha progettato e implementato una serie di funzioni e strumenti avanzati per lo sviluppo di Android. Questo articolo ha considerato alcuni concetti principali e caratteristiche avanzate che sono state suggerite per gli sviluppatori Android da Google.

.