1. Introduzione

Ultimo aggiornamento: 28/03/2022
Machine learning
Il machine learning è un campo in continua evoluzione. Ogni giorno vengono rilasciate nuove ricerche e possibilità che consentono casi d'uso prima impossibili.
Queste versioni di solito hanno come risultato un modello. I modelli possono essere intesi come equazioni matematiche molto lunghe che, dato un input (ad es. un'immagine), restituiscono un risultato (ad es. una classificazione).
- Cosa succede se vuoi utilizzare uno di questi nuovi modelli con i tuoi dati?
- Come puoi trarre vantaggio da questi modelli all'avanguardia per il tuo caso d'uso o nella tua app?
Questo codelab ti guiderà nel processo di personalizzazione dei modelli di machine learning in base ai tuoi dati in modo semplice.
La creazione e l'addestramento di modelli di machine learning presentano molte sfide:
- Richiede molto tempo.
- Utilizza grandi quantità di dati.
- Richiedono competenze in campi come matematica e statistica.
- Richiede molte risorse: l'addestramento di alcuni modelli può richiedere giorni.
La creazione di nuove architetture di modelli richiede molto tempo e potrebbe richiedere molti esperimenti e anni di esperienza. Ma se potessi sfruttare tutte queste conoscenze e utilizzarle sui tuoi dati semplicemente personalizzando la ricerca all'avanguardia per il tuo problema? È possibile utilizzando una tecnica chiamata transfer learning.
In questo codelab imparerai a eseguire il transfer learning, perché funziona e quando utilizzarlo.
Cosa imparerai a fare
- Che cos'è il Transfer Learning e quando utilizzarlo.
- Come utilizzare il trasferimento dei dati.
- Come ottimizzare i modelli.
- Come utilizzare TensorFlow Lite Model Maker.
- Come utilizzare TensorFlow Hub.
Che cosa ti serve
- Tutto il codice viene eseguito utilizzando Google Colaboratory, quindi non dovrai installare nulla sul tuo computer. Per accedere a Colab, ti servono solo una connessione a internet e un Account Google.
- Una conoscenza di base di TensorFlow e dell'API Keras.
- Conoscenza di Python.
Se non hai conoscenze di base di TensorFlow o machine learning, puoi comunque scoprire di più sul transfer learning. Leggi il passaggio successivo "Che cos'è il transfer learning" per la teoria alla base della tecnica, quindi continua con "Transfer learning con Model Maker". Se vuoi approfondire e vedere la procedura in modo più dettagliato, puoi farlo nelle sezioni sul Transfer Learning con TensorFlow Hub.
2. Che cos'è il transfer learning?
Un modello preaddestrato è una rete salvata che è stata precedentemente addestrata su un ampio set di dati, in genere su un'attività di classificazione delle immagini su larga scala. Utilizzi il modello preaddestrato così com'è o utilizzi il transfer learning per personalizzarlo in base a un'attività specifica.
L'intuizione alla base del transfer learning per la classificazione delle immagini è che se un modello viene addestrato su un set di dati sufficientemente ampio e generale, questo modello fungerà da modello generico del mondo visivo. Puoi quindi sfruttare queste mappe delle caratteristiche apprese senza dover ricominciare da zero addestrando un modello di grandi dimensioni su un set di dati di grandi dimensioni.
Esistono due modi per personalizzare un modello di machine learning
- Estrazione delle caratteristiche: utilizza le rappresentazioni apprese da una rete precedente per estrarre caratteristiche significative da nuovi campioni. Basta aggiungere un nuovo classificatore, addestrato da zero, sopra il modello preaddestrato, in modo da poter riutilizzare le mappe delle funzionalità apprese in precedenza per il set di dati. Non è necessario (ri)addestrare l'intero modello. La rete convoluzionale di base contiene già funzionalità utili in modo generico per classificare le immagini. Tuttavia, la parte di classificazione finale del modello preaddestrato è specifica per l'attività di classificazione originale e, di conseguenza, per l'insieme di classi su cui è stato addestrato il modello.
- Ottimizzazione: scongela alcuni dei livelli superiori di una base del modello congelata e addestra congiuntamente sia i livelli del classificatore appena aggiunti sia gli ultimi livelli del modello di base. In questo modo possiamo "ottimizzare" le rappresentazioni delle caratteristiche di ordine superiore nel modello di base per renderle più pertinenti per l'attività specifica.
L'estrazione delle caratteristiche è più rapida da addestrare, ma con il perfezionamento puoi ottenere risultati migliori.
Proverai entrambi i metodi (estrazione delle caratteristiche e ottimizzazione) utilizzando due modi diversi per eseguire il transfer learning:
- La libreria TensorFlow Lite Model Maker esegue automaticamente la maggior parte della pipeline di dati e della creazione del modello, semplificando notevolmente il processo. Il modello risultante è anche facilmente esportabile per essere utilizzato su dispositivi mobili e nel browser.
- I modelli TensorFlow Hub sfruttano il vasto repository di modelli di machine learning disponibili su TensorFlow Hub. I ricercatori e la community contribuiscono a questi modelli, rendendo disponibili modelli all'avanguardia molto più rapidamente e in una maggiore varietà.
3. Transfer learning con Model Maker
Ora che conosci l'idea alla base del Transfer Learning, iniziamo a utilizzare la libreria TensorFlow Lite Model Maker,uno strumento che ti aiuta a farlo in modo semplice.
La libreria TensorFlow Lite Model Maker è una libreria open source che semplifica il processo di Transfer Learning e lo rende molto più accessibile agli sviluppatori non ML, come gli sviluppatori di app mobile e web.
Il blocco note Colab ti guida attraverso i seguenti passaggi:
- Carica i dati.
- Suddividi i dati.
- Crea e addestra il modello
- Valutare il modello.
- Esporta il modello.
Dopo questo passaggio, puoi iniziare a eseguire il Transfer Learning con i tuoi dati seguendo esattamente la stessa procedura.
Colaboratory
A questo punto, passiamo a Google Colab per addestrare il modello personalizzato.
Per esaminare la spiegazione e comprendere le nozioni di base del notebook sono necessari circa 15 minuti.
Vantaggi:
- Un modo semplice per personalizzare i modelli.
- Non è necessario comprendere TensorFlow o l'API Keras.
- Strumento open source che può essere modificato se l'utente ha bisogno di qualcosa di specifico non ancora implementato.
- Esporta il modello direttamente per l'esecuzione su dispositivo mobile o browser.
Svantaggi
- Meno possibilità di configurazione rispetto alla creazione completa della pipeline e del modello, come nei due metodi precedenti
- Anche quando scegli il modello di base, non tutti i modelli possono essere utilizzati come base.
- Non adatto a grandi quantità di dati in cui la pipeline di dati è più complessa.
4. Trovare un modello su TensorFlow Hub
Al termine di questa sezione, sarai in grado di:
- Trova modelli di machine learning su TensorFlow Hub.
- Informazioni sulle raccolte.
- Comprendere i diversi tipi di modelli.
Per eseguire il Transfer Learning, devi iniziare con due elementi:
- Dati, ad esempio immagini dei soggetti che vuoi riconoscere.
- Un modello di base che puoi personalizzare in base ai tuoi dati.
La parte dei dati dipende in genere dall'attività, ma il percorso più semplice è scattare molte foto di ciò che vuoi riconoscere. Ma che dire del modello di base? Dove puoi trovarne uno? è qui che TensorFlow Hub può aiutarti.
TensorFlow Hub è il repository di modelli per le tue esigenze di modelli TensorFlow.
Puoi cercare e leggere la documentazione di migliaia di modelli, pronti per l'uso, e molti di questi sono pronti per il transfer learning e il fine-tuning.
Cercare un modello
Innanzitutto, eseguiamo una semplice ricerca di modelli da utilizzare su TensorFlow Hub che potrai utilizzare nel codice in un secondo momento.
Passaggio 1: nel browser, apri il sito tfhub.dev.

Per il Transfer Learning sul dominio delle immagini, abbiamo bisogno di vettori di caratteristiche. I vettori delle caratteristiche sono simili ai modelli di classificazione, ma senza l'intestazione di classificazione.
I vettori di caratteristiche possono convertire le immagini in una rappresentazione numerica nello spazio N (dove N è il numero di dimensioni dello strato di output del modello).
Su TFHub puoi cercare in modo specifico i vettori delle caratteristiche facendo clic su una scheda specifica.

Puoi anche cercare il nome di un modello con il filtro a sinistra per visualizzare solo Image feature vectors.

Le schede con icone blu sono raccolte di modelli. Se fai clic su una raccolta di immagini, avrai accesso a molti modelli simili tra cui scegliere. Scegliamo la raccolta di immagini.

Scorri verso il basso e seleziona MobileNet V3. È sufficiente uno qualsiasi dei vettori di caratteristiche.

Nella pagina dei dettagli del modello puoi leggere tutta la documentazione, visualizzare snippet di codice per provare il modello o persino provarlo direttamente in un notebook Colab.

Per il momento, ti serve solo l'URL in alto. Si tratta dell'handle del modello e del modo in cui puoi accedere facilmente a un modello dalla libreria TensorFlow Hub.
5. Transfer learning con TensorFlow Hub
Ora che hai scelto un modello da utilizzare, personalizzalo caricandolo con il metodo KerasLayer della libreria TensorFlow Hub.
Questo metodo carica un modello in modo che possa essere utilizzato come livello sul tuo modello, consentendoti di creare il modello attorno a questo livello.
In precedenza, quando hai imparato a utilizzare Model Maker, tutti i dettagli interni erano nascosti per semplificare la comprensione. No, vedrai cosa fa Model Maker dietro le quinte.
Colaboratory
A questo punto, passiamo a Google Colab per addestrare il modello personalizzato.
Ci vogliono circa 20 minuti per esaminare la spiegazione e comprendere le nozioni di base del notebook.
Vantaggi:
- Migliaia di modelli disponibili forniti da ricercatori e dalla community, addestrati su una varietà di set di dati.
- Modelli per tutte le attività, come visione artificiale, testo e audio.
- È facile sperimentare con diversi modelli simili. La modifica del modello di base potrebbe richiedere la modifica di una sola stringa.
Svantaggi
- Per utilizzare i modelli, è ancora necessario avere competenze in TensorFlow/Keras.
Se vuoi approfondire ulteriormente, puoi anche eseguire il Transfer Learning utilizzando Keras Application. Si tratta di un processo molto simile all'utilizzo di TensorFlow Hub, ma solo con le API TensorFlow di base.
6. Complimenti
Congratulazioni, hai imparato cos'è il Transfer Learning e come applicarlo ai tuoi dati.
In questo codelab hai imparato a personalizzare i modelli di machine learning in base ai tuoi dati utilizzando una tecnica chiamata Transfer Learning
Hai provato due forme di Transfer Learning:
- Utilizzando uno strumento come TensorFlow Lite Model Maker.
- Utilizzo di un vettore delle caratteristiche da TensorFlow Hub.
Entrambe le opzioni presentano vantaggi e svantaggi e molte configurazioni possibili per le tue esigenze specifiche.
Hai anche imparato che puoi andare un po' oltre e ottimizzare i modelli modificando leggermente i loro pesi per adattarli meglio ai tuoi dati.
Entrambe le opzioni possono eseguire l'ottimizzazione dei modelli.
Il Transfer Learning e la messa a punto non riguardano solo i modelli correlati alle immagini. Poiché l'idea è di utilizzare una rappresentazione appresa di un dominio per l'ottimizzazione del set di dati, può essere utilizzata anche per i domini Testo e Audio.
Passaggi successivi
- Prova con i tuoi dati.
- Condividi con noi i tuoi progetti e tagga TensorFlow sui social media.
Scopri di più
- Per ulteriori informazioni sull'ottimizzazione dei modelli all'avanguardia come BERT, consulta Ottimizzazione di un modello BERT.
- Per saperne di più sul Transfer Learning per i modelli audio, consulta Transfer Learning con YAMNet per la classificazione dei suoni ambientali.