AutoML Vision: classificazione di immagini

Lo sviluppo di modelli di classificazioni di dati non strutturati, quali immagini o testi, non è un task semplice. In molti casi sono richieste competenze di sviluppo molto specifiche. Scopriamo come è possibile, mediante AutoML Vision di Google Cloud, creare un modello di classificazione di immagini senza scrivere una linea di codice ma solo selezionando le immagini per il nostro modello.

Share

Reading time: 7 minutes

L’applicazione del Machine Learning su dati non strutturati ha acquisito un grandissimo valore per molti business. Ad esempio, Aucnet ha costruito un proprio modello per classificare le immagini di parti di automobili e stimare il prezzo. Differentemente, Ocado ha utilizzato le Natural Language API per classificare le e-mail dei clienti al fine di gestire al meglio le emergenze e/o le lamentele. Giphy utilizza invece le API di Google Cloud per rilevare il testo nelle immagini e individuare contenuti inappropriati. Altre aziende hanno sviluppato chat bot per migliorare l’esperienza dei clienti durante l’acquisto sui siti di e-commerce. Ma ci sono anche altri settori, come quello medico, che beneficiano del Machine Learning per velocizzare e/o migliorare i processi e le analisi dei dati in loro possesso.

Poiché l’utilizzo del Machine Learning richiede per alcuni tasks risorse computazionali molto elevate, una possibile soluzione è di sfruttare il cloud computing. Tra i vari provider non possiamo citare Google, Amazon e Azure. Nell’articolo Google Cloud: introduzione alla piattaforma abbiamo visto le potenzialità della piattaforma offerta da Google.

In questo articolo utilizzeremo questa piattaforma, chiamata anche GCP, per creare un classificatore di immagini. Per fare ciò non verrà richiesta nessuna conoscenza di Machine Learning né di programmazione. Vedremo, infatti, come è possibile richiedere a GCP di creare un modello fornendo solo alcuni dati iniziali. Valuteremo le performance del modello creato e la sua capacità predittiva.

Preparazione dell’ambiente GCP

Google Cloud Platform (GCP) è la piattaforma cloud di Google. Per poterla utilizzare è necessario creare un account e collegare un metodo di pagamento. Infatti, l’utilizzo della piattaforma non è gratuito. Si paga in base alle risorse che si utilizzano. Per valutare la piattaforma, si ricevono 300$ alla creazione dell’account. Potete trovare tutti i dettagli sui prezzi sulla pagina ufficiale.

Se avete bisogno di esercitarvi anche su altri progetti oltre a quello presentato, potete utilizzare il servizio di Qwiklabs. In questo caso non pagate la piattaforma di Google Cloud ma solamente i laboratori che vi vengono offerti. Insomma, un ottima alternativa per esercitarvi con GCP senza il rischio di sbagliare qualche configurazione e trovarvi delle spese impreviste a fine mese sul vostro conto. I dettagli sui piani di Qwiklabs li trovate qui.

Obbiettivi

In questo esercitazione vedremo come caricare un dataset etichettato su Cloud Storage e collegarlo ad AutoML Vision con un file CSV contente la classificazione delle immagini. Dopo aver addestrato un modello con AutoML Vision, valuteremo la sua accuratezza. Infine, utilizzeremo il modello creato per classificare nuove immagini.

Potete usare l’ambiente che preferite. Vi ricordiamo solo che nel caso stiate utilizzando un vostro account personale dovrete rilasciare tutte le risorse alla fine dell’esercitazione per evitare spese inutili.

Task 1. Impostare AutoML Vision

AutoML Vision fornisce un’interfaccia per tutte le fasi di addestramento di un modello di classificazione delle immagini e la generazione di previsioni su di esso. Prima di iniziare dovete abilitare l’API AutoML.

Aprite il menu di navigazione e selezionate API & Services > Library. Nella barra di ricerca che appare, digitate “Cloud AutoML API”. Cliccate, quindi, sul risultato di Cloud AutoML API e infine sul bottone Enable.

Non appena le API saranno abilitate, il che potrebbe richiedere un attimo, vi verrà mostrata la seguente pagina.

Creare un bucket di Cloud Storage per i dati

Al fine di caricare i dati per l’addestramento del modello, abbiamo la necessità di creare un bucket nel Cloud Storage. Per farlo utilizziamo la console di GCP.

Sulla barra del titolo in alto a destra, cliccate su Activate Cloud Shell (). A questo punto, al fondo della schermata si aprirà un riquadro. Se vi viene richiesto, cliccate su Continue o Authorize.

Per creare un nuovo bucket, digitate il seguente comando nella shell.

gsutil mb -p $DEVSHELL_PROJECT_ID \
    -c regional    \
    -l us-central1 \
    gs://$DEVSHELL_PROJECT_ID-vcm/ 

La variabile $DEVSHELL_PROJECT_ID, contiene il valore del progetto attuale. IN questo modo non dobbiamo recuperarlo dalla home di GCP. Il nome del bucket sarà uguale all’identificativo del progetto su cui stiamo lavorando seguito dalla stringa -vcm.

Lasciate aperta la finestra di Cloud Shell perché servirà ancora.

Cliccando su questo link, vi verrà aperta una nuova scheda del browser relativa ai datasets di AutoML. Se non vi viene aperta, dovete verificare che le API di Cloud AutoML siano abilitate.

Task 2. Caricare le immagini su Cloud Storage

Per addestrare un modello a classificare delle immagini, è necessario fornire dei dati etichettati, In questo modo il modello potrà sviluppare una comprensione delle caratteristiche dell’immagine associate alle diverse categorie. In questo esempio, il vostro modello imparerà a classificare tre diversi tipi di nuvole: cirri, cumuli e cumulonembi. Per utilizzare AutoML Vision è necessario salvare le immagini per l’addestramento del modello nel Cloud Storage.

Nella Console Cloud, aprire il menu di navigazione e selezionare Cloud Storage > Browser.

La pagina che vi verrà mostrata dovrebbe contenere il bucket creato nel passo precedente.

Potete cliccare sul pulsante Refresh per aggiornare la visualizzazione qualora sia necessario.

Le immagini che utilizzeremo per il modello sono disponibili pubblicamente in un bucket di Cloud Storage. Per copiare le immagini nel bucket del nostro progetto digitiamo il seguente comando nella shell.

gsutil -m cp -r gs://cloud-training/automl-lab-clouds/* gs://$DEVSHELL_PROJECT_ID-vcm/ 

Terminata la copia dei file, potete visualizzare le cartelle per le tre categorie di nuvole che classificheremo mediante il seguente comando.

gsutil ls gs://$DEVSHELL_PROJECT_ID-vcm/ 

Visualizzare le immagini utilizzando l’interfaccia Cloud Storage Console UI

Per visualizzare il contenuto del bucket e le cartelle copiate, è possibile anche utilizzare l’interfaccia del Cloud Storage. Selezionando il bucket nella pagina del Cloud Storage dovreste vedere il seguente contenuto. Nel caso non sia visibile cliccate su pulsante Refresh.

Se cliccate sui singoli file di immagine in ogni cartella, e poi ancora una volta sull’URL, potete vedere le foto che useremo per addestrare il modello.

Task 3. Creare un dataset per l’addestramento di AutoML Vision

Ora che i dati sono nel Cloud Storage, abbiamo bisogno di un modo affinché AutoML Vision possa accedervi. Si utilizzerò un file CSV dove ogni riga contiene una URL di un’immagine per il training del modello e l’etichetta associata a quell’immagine. Questo file CSV è già stato creato. E’ necessario copiarlo nel bucket ed aggiornare il contenuto affinché le url contengano il nome del bucket del vostro progetto. Il tutto può essere eseguito dalla shell di GCP con i seguenti comandi.

 

gsutil cp gs://cloud-training/automl-lab-clouds/data.csv .
head --lines=10 data.csv
sed -i -e "s/placeholder/$DEVSHELL_PROJECT_ID-vcm/g" ./data.csv
head --lines=10 data.csv
gsutil cp ./data.csv gs://$DEVSHELL_PROJECT_ID-vcm/
gsutil ls gs://$DEVSHELL_PROJECT_ID-vcm/ 

Per vedere se l’operazione è andata a buon fine potete semplicemente visualizzare il contenuto del bucket tramite l’interfaccia grafica. Diversamente, eseguite il seguente comando dalla shell per visualizzare il contenuto del bucket.

gsutil ls gs://$DEVSHELL_PROJECT_ID-vcm/* 

Copiate il percorso del file csv negli appunti che sarà simile a: gs://projectid-vcm/data.csv

Tornate alla pagina dei datasets di AutoML Vision. Nella parte superiore della schermata, clicca su + New dataset.

Digitate clouds per il nome del dataset e lascia te selezionata la classificazione ad etichetta singola. Infine, cliccate su Create dataset per continuare.

Nella schermata successiva dovete indicare la posizione delle immagini per l’addestramento del modello (quelle caricate nel passaggio precedente).

Scegliete “Select a CSV file on Cloud Storage” e aggiungete la URL del file csv dei dati che avete copiato negli appunti. Se per caso non ve la siete segnate nessun problema. Potete usare la funzione Sfoglia per trovare il file csv. Quando vedete la casella di controllo in verde, potete selezionare Continue per procedere.

Ci vorranno circa 10 minuti affinché i metadati delle immagini vengano elaborati. Una volta completata l’importazione cliccate sulla scheda Immagini per vedere le immagini nel tuo set di dati.

Potete filtrare per le diverse etichette nel menu di sinistra per vedere le immagini di training. In questo esempio, si utilizzano solo 20 immagini per ogni categoria per velocizzare il processo di generazione del modello. Per un modello più accurato si consiglia di utilizzare almeno 100 immagini per ogni categoria.

Nota: Se state lavorando con un dataset che non è già etichettato, AutoML Vision fornisce un servizio interno di etichettatura manuale.

Task 4. Addestrare il modello

Ora è tutto pronto per addestrare il modello! AutoML Vision gestisce tutto questo automaticamente, senza richiedere la scrittura di nessuna linea di codice.

Cliccate sulla scheda Train e successivamente su Start training. Inserite un nome per il modello, o utilizzate il nome predefinito generato automaticamente. Lasciare selezionato Cloud hosted e fare clic su Continue.

Per il passo successivo, digitate il valore “8” nella casella Set your budget * e selezionate Deploy model to 1 node after training. Questo processo (auto-deploy) renderà il modello immediatamente disponibile per le previsioni dopo il completamento dei test.

Fate clic su Start training.

L’addestramento del modello può richiedere più di un’ora per essere completato. 

Task 5. Valutazione del modello

Una volta completato l’addestramento, selezionate la scheda Evaluate. Qui vedrete le informazioni su Precision e Recall del modello.  Se scorrete scorrete verso il basso potete vedere anche la matrice di confusione.

Task 6. Generare previsioni

Adesso è il momento della parte più importante: generare previsioni con il modello addestrato usando dati completamente nuovi.

Per generare una classificazione utilizzeremo l’interfaccia grafica. E’ necessario quindi scaricare sul proprio pc le immagini che vogliamo classificare. Di seguito riportiamo due immagini appartenenti a due classi diverse.

Come si può notare le due immagini sono molto diverse. In quella relativa ai cumuli vi è addirittura la presenza del suolo. Ma vediamo l’accuratezza del modello nel classificare queste due nuove immagini.

Per farlo, andate nella scheda Test & Use.

In questa pagina vedrete che i modelli disponibili. Se non avete creato altri modelli, automaticamente viene selezionato quello che avete appena creato.

Fate clic su Upload Images per caricare una o più immagini (fino ad un massimo di 10) che volete classificare.

Quando la classificazione viene completata vedrete qualcosa di simile.

Eccellente: il modello ha classificato correttamente ogni tipo di nuvola!

Ma sopratutto: Congratulazioni! Avete imparato come addestrare in modo automatico un modello partendo da dati non strutturati come le immagini e generare previsioni su di esso attraverso l’interfaccia web. Ora avete gli strumenti che vi servono per creare un vostro modello su un vostro dataset di immagini.

Letture consigliate

 

More To Explore

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte2]

Gradio è una libraria python che ci permette di creare applicazioni web in modo veloce e intuitivo per i nostri modelli di machine learning e AI. Le nostre applicazioni richiedono sempre un’interazione con l’utente e una personalizzazione del layout. Scopriamo, mediante degli esempi, come migliorare le nostre applicazioni.

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte1]

Scrivere applicazioni web per i nostri modelli di machine learning e/o di intelligenza artificiale può richiedere molto tempo e competenze che non sono in nostro possesso. Per snellire e velocizzare questo compito ci viene in aiuto Gradio, una libreria Python pensata per creare applicazioni web con poche righe di codice. Scopriamo le sue funzionalità base con alcuni esempi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Design with MongoDB

Design with MongoDB!!!

Buy the new book that will help you to use MongoDB correctly for your applications. Available now on Amazon!