Addestra ed esegui il deployment di un modello di classificazione delle immagini on-device con AutoML Vision in ML Kit

1. Introduzione

I recenti progressi nel machine learning hanno reso relativamente facile per i computer riconoscere gli oggetti nelle immagini. In questo codelab, ti guideremo attraverso un percorso end-to-end per creare un modello di classificazione delle immagini in grado di riconoscere diversi tipi di oggetti e implementare il modello su app per Android e iOS. ML Kit e AutoML consentono di creare un modello ed eseguirne il deployment su larga scala senza alcuna esperienza di machine learning.

Che cos'è ML Kit?

ML Kit è un SDK mobile che porta l'esperienza di Google nel machine learning alle app per Android e iOS in un pacchetto potente e facile da usare. Che tu sia alle prime armi o abbia esperienza nel machine learning, puoi implementare facilmente le funzionalità di cui hai bisogno in poche righe di codice. Esistono diverse API in grado di riconoscere testo, volti ecc. che puoi usare subito. Tuttavia, se devi riconoscere oggetti non supportati dalle API, ad esempio riconoscere diversi tipi di fiori da un'immagine, devi addestrare un modello personalizzato. AutoML può esserti utile in questo caso.

Che cos'è AutoML?

Cloud AutoML è una suite di prodotti di machine learning che consente agli sviluppatori con un'esperienza limitata nell'ambito del machine learning di addestrare modelli di alta qualità specifici per le loro esigenze aziendali, sfruttando le tecnologie all'avanguardia di transfer learning e Neural Architecture Search (NAS) di Google.

In questo codelab, utilizzeremo AutoML Vision Edge in ML Kit per addestrare un modello di classificazione dei fiori. Il modello viene addestrato nel cloud, ma viene poi integrato o scaricato dall'app per eseguire le inferenze interamente sul dispositivo.

93f21fd287496e4e.png

Obiettivi didattici

  • Come addestrare un modello di classificazione delle immagini utilizzando AutoML Vision Edge in ML Kit.
  • Come eseguirlo in un'app per Android o iOS di esempio utilizzando l'SDK ML Kit.

Che cosa ti serve

Per l'app per Android

  • Una versione recente di Android Studio (v3.4 o successiva)
  • Emulatore di Android Studio con Play Store o dispositivo Android fisico (v5.0 e versioni successive)
  • Conoscenza di base dello sviluppo Android in Kotlin

Per l'app iOS

  • Una versione recente di XCode (v10.2+)
  • Simulatore di iOS o dispositivo iOS fisico (v9.0+)
  • CocoaPods
  • Conoscenza di base dello sviluppo iOS in Swift

2. Configurazione

Scarica il codice e il set di dati di addestramento

Scarica un archivio ZIP contenente il codice sorgente per questo codelab e un set di dati di addestramento. Estrai l'archivio nella macchina locale.

Crea progetto della console Firebase

  1. Vai alla Console Firebase.
  2. Seleziona Create New Project (Crea nuovo progetto) e assegna al progetto il nome "ML Kit Codelab".

Configura l'app per Android

  1. Aggiungi la nostra app per Android al progetto Firebase. Nome del pacchetto Android: com.google.firebase.codelab.mlkit.automl
  2. Scarica il file di configurazione google-services.json e inseriscilo nell'app per Android all'indirizzo android/mlkit-automl/app/google-services.json.

Configura l'app per iOS

  1. Aggiungi la nostra app per iOS al progetto Firebase. ID bundle iOS: com.google.firebase.codelab.mlkit.automl
  2. Scarica il file di configurazione GoogleService-Info.plist e segui le istruzioni per inserirlo nell'app per iOS all'indirizzo ios/mlkit-automl/GoogleService-Info.plist.

3. prepara il set di dati di addestramento

Per addestrare un modello a riconoscere diversi tipi di oggetti, devi preparare un insieme di immagini ed etichettarle. Abbiamo creato un archivio di foto di fiori concesse in licenza Creative Commons che puoi utilizzare in questo codelab.

Il set di dati è pacchettizzato in un file ZIP denominato flower_photos.zip che è incluso nell'archivio ZIP che hai scaricato nel passaggio precedente.

esplora il set di dati

Se estrai il file flower_photos.zip, vedrai che il set di dati contiene immagini di cinque tipi di fiori: dente di leone, margherita, tulipani, girasoli e rose, organizzate in cartelle che prendono il nome dai fiori. Questo è un modo pratico per creare un set di dati di addestramento da inviare ad AutoML e addestrare un modello di classificazione delle immagini.

In questo set di dati di addestramento sono presenti 200 immagini per ogni tipo di fiore. Per addestrare un modello sono necessarie solo 10 immagini per classe. Tuttavia, un numero maggiore di immagini di addestramento in genere migliora i modelli.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Addestra un modello

Carica set di dati di addestramento

  1. Nella console di Firebase, apri il progetto che hai appena creato.
  2. Seleziona ML Kit > AutoML.
  3. Potresti visualizzare alcune schermate di benvenuto. Seleziona Inizia dove applicabile.
  1. Al termine della configurazione, seleziona Aggiungi set di dati e assegna il nome "Fiori".
  2. In Obiettivo del modello, scegli Classificazione con etichetta singola,poiché i dati di addestramento contengono una sola etichetta per immagine.
  3. Seleziona Crea.
  4. Carica il file flower_photos.zip che hai scaricato nel passaggio precedente per importare il set di dati di addestramento dei fiori.
  5. Attendi alcuni minuti per il completamento dell'attività di importazione.
  6. Ora puoi verificare che il set di dati sia stato importato correttamente.
  7. Poiché tutte le immagini nel set di dati di addestramento sono state etichettate, puoi procedere con l'addestramento di un modello.

cdb18b61f890934f.png

Addestra un modello di classificazione delle immagini

Poiché il nostro modello verrà eseguito su un dispositivo mobile con potenza di calcolo e spazio di archiviazione limitati, dobbiamo fare attenzione non solo alla precisione, ma anche alle dimensioni e alla velocità. C'è sempre un compromesso tra accuratezza del modello, latenza (ovvero quanto tempo impiega per classificare un'immagine) e dimensioni del modello. In genere un modello con una maggiore precisione è anche più grande e impiegherà più tempo per classificare un'immagine.

AutoML offre diverse opzioni: puoi scegliere di ottimizzare l'accuratezza, ottimizzare la latenza e le dimensioni del modello o bilanciare tra loro. Puoi anche scegliere per quanto tempo consentire l'addestramento del modello. L'addestramento di set di dati più grandi deve durare più a lungo.

dd6b7eaa2dd5a9de.png

Di seguito sono riportati i passaggi da seguire se vuoi addestrare il modello autonomamente.

  1. Seleziona Addestra modello.
  2. Seleziona l'opzione Uso generico e il tempo di addestramento di 1 ora di calcolo.
  3. Attendi il completamento dell'attività di addestramento (probabilmente diverse ore).
  4. Al termine dell'attività di addestramento, vedrai le metriche di valutazione relative alle prestazioni del modello addestrato.

73f98fbed5ae5ee5.png

5. Utilizza il modello nelle app mobile

Preparazione

  • Questo codelab contiene un'app di esempio per Android e iOS che mostra come utilizzare il modello di classificazione delle immagini che abbiamo addestrato in precedenza in un'app mobile. Le due app hanno funzionalità simili. Puoi scegliere la piattaforma con cui hai più familiarità.
  • Prima di procedere, assicurati di aver scaricato le app di esempio e di averle configurate al passaggio 2.
  • Assicurati inoltre che il tuo ambiente locale sia stato configurato per poter creare app per la piattaforma scelta (Android/iOS).

Scarica modello di classificazione delle immagini

  • Se hai addestrato un modello nel passaggio precedente, seleziona Scarica per recuperarlo.
  • Se non hai addestrato un modello o se l'attività di addestramento non è ancora terminata, puoi utilizzare il modello incluso nelle app di esempio.

Aggiungi il modello alle app di esempio

Devi solo aggiungere il modello alle app di esempio, che funzioneranno subito. Per una guida completa su come integrare ML Kit AutoML nella tua app, consulta la nostra documentazione ( Android, iOS). Il codice che interagisce con l'SDK ML Kit si trova rispettivamente nel file ImageClassifier.kt e ImageClassifier.swift, quindi puoi iniziare a esplorare come funzionano le app.

Esistono due opzioni per il deployment del modello: locale e remoto.

  • Il modello locale viene utilizzato principalmente per raggruppare il modello di classificazione delle immagini nel file binario dell'app, ma è possibile fornire anche un modello salvato nello spazio di archiviazione locale. Con il raggruppamento, il modello è disponibile immediatamente per gli utenti dopo che hanno scaricato la tua app dall'App Store o dal Play Store e funzionerà senza connessione a internet.
  • Se si tratta di un modello remoto, il modello è ospitato su Firebase e verrà scaricato sul dispositivo dell'utente solo quando sarà necessario per la prima volta. In seguito, il modello funzionerà anche offline.

2e71ed2c7cb8757c.png

App per Android

  1. Apri Android Studio.
  2. Importa l'app per Android in android/mlkit-automl/
  3. (Facoltativo) Estrai il modello che hai scaricato e copiane i contenuti sul modello incluso nell'app di esempio. 10cf6b1e0f34de29.png
  4. Ora fai clic su Esegui ( c8b8a080b7ead886.png) nella barra degli strumenti di Android Studio e verifica che sia in grado di riconoscere i diversi tipi di fiori.

2e71ed2c7cb8757c.png

App per iOS

  1. Apri Terminale e vai alla cartella ios/mlkit-automl/
  2. Esegui pod install per scaricare le dipendenze tramite Cocoapods
  3. Esegui open MLVisionExample.xcworkspace/ per aprire l'area di lavoro del progetto in Xcode.
  4. (Facoltativo) Estrai il modello che hai scaricato e copiane i contenuti sul modello incluso nell'app di esempio in ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png
  5. Ora fai clic su Esegui ( 16629f86bbeb4208.png) nella barra degli strumenti di Xcode e verifica che sia in grado di riconoscere diversi tipi di fiori.

65172c3f35336d4e.png

6. (Facoltativo) Usa modello remoto

Il modello remoto di ML Kit ti consente di non includere i modelli Tensorflow Lite nel file binario dell'app, ma di scaricarli on demand da Firebase quando necessario. I modelli remoti offrono diversi vantaggi rispetto ai modelli locali:

  • Programma binario dell'app più piccolo
  • Possibilità di aggiornare i modelli senza aggiornare l'app
  • Test A/B con più versioni di un modello

In questo passaggio pubblicheremo un modello remoto e lo utilizzeremo nelle app di esempio. Assicurati di aver completato l'addestramento del tuo modello nel passaggio 4 di questo codelab.

Pubblica il modello

  1. Vai alla Console Firebase.
  2. Seleziona il "Codelab AutoML del kit ML" che hai creato in precedenza.
  3. Seleziona ML Kit > AutoML.
  4. Seleziona "Fiori". creato in precedenza.
  5. Verifica che l'attività di addestramento sia stata completata, quindi seleziona il modello.
  6. Seleziona Pubblica e assegnagli il nome "mlkit_flowers". b63a58b83e814acd.png

Riconosci i fiori con il modello remoto

Le app di esempio sono configurate per l'utilizzo del modello remoto, se disponibile. Dopo aver pubblicato il modello remoto, ti basta eseguire nuovamente le app per attivare il download del modello. Puoi verificare se l'app sta usando il modello remoto osservando la sezione "Origine". nel piè di pagina della schermata dell'app. Consulta la sezione "Risoluzione dei problemi" sezione in basso se non funziona.

7c8292293fd858ad.png de359886ccecef2.png

Risoluzione dei problemi

Se l'app di esempio usa ancora il modello locale, verifica che il nome del modello remoto sia impostato correttamente all'interno del codice.

App per Android

  1. Vai a ImageClassifier.kt e trova questo blocco.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Verifica che il nome del modello impostato nel codice corrisponda al nome del modello che hai pubblicato in precedenza tramite la console Firebase.
  2. Ora fai clic su Esegui ( c8b8a080b7ead886.png) nella barra degli strumenti di Android Studio per eseguire nuovamente l'app.

App per iOS

  1. Vai su ImageClassifier.swift e trova questo blocco,
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Verifica che il nome del modello impostato nel codice corrisponda al nome del modello pubblicato in precedenza tramite la console Firebase
  2. Ora fai clic su Esegui ( 16629f86bbeb4208.png) nella barra degli strumenti di Xcode per eseguire nuovamente l'app.

7. Complimenti

Hai seguito un percorso end-to-end di addestramento di un modello di classificazione delle immagini con i tuoi dati di addestramento utilizzando AutoML e quindi utilizzato il modello in un'app mobile utilizzando ML Kit.

Consulta la nostra documentazione per scoprire come integrare AutoML Vision Edge in ML Kit nella tua app.

Puoi anche provare le app di esempio ML Kit per vedere altre funzionalità di Firebase ML Kit.

Campioni Android

Esempi per iOS