Un modello di rilevamento di oggetti è simile a un modello di etichettatura delle immagini, ma anziché assegnare etichette a intere immagini, assegna etichette alle regioni delle immagini. Puoi utilizzare modelli di rilevamento degli oggetti per riconoscere e individuare gli oggetti in un'immagine o per tracciare i movimenti di un oggetto attraverso una serie di immagini.
Per addestrare un modello di rilevamento degli oggetti, fornisci ad AutoML Vision Edge un insieme di immagini con le etichette e i confini degli oggetti corrispondenti. AutoML Vision Edge utilizza questo set di dati per addestrare un nuovo modello nel cloud, che puoi utilizzare per il rilevamento di oggetti sul dispositivo.
Prima di iniziare
Se non hai ancora un progetto Firebase, creane uno nella console Firebase.
Acquisisci familiarità con le linee guida presentate nella Guida al machine learning inclusivo: AutoML.
Se vuoi solo provare AutoML Vision Edge e non hai i tuoi dati di addestramento, scarica un set di dati di esempio, ad esempio uno dei seguenti:
- Uno dei set di dati consigliati di TensorFlow.
- Un set di dati ospitato su Kaggle.
1. Raccogliere i dati di addestramento
Per prima cosa, devi creare un set di dati di addestramento di immagini etichettate. Tieni presenti le seguenti linee guida:
Le immagini devono essere in uno dei seguenti formati: JPEG, PNG, GIF, BMP, ICO.
Ogni immagine deve avere dimensioni massime pari a 30 MB. Tieni presente che AutoML Vision Edge riduce la dimensione della maggior parte delle immagini durante la preelaborazione, pertanto in genere non è vantaggioso fornire immagini ad altissima risoluzione.
Includi almeno 10 ed eventualmente 100 o più esempi di ogni etichetta.
Includi più angolazioni, risoluzioni e sfondi per ogni etichetta.
I dati di addestramento devono essere il più simili possibile ai dati su cui devono essere eseguite le previsioni. Ad esempio, se il tuo caso d'uso prevede immagini sfocate e a bassa risoluzione (come quelle di una videocamera di sicurezza), i dati di addestramento devono essere composti da immagini sfocate e a bassa risoluzione.
I modelli generati da AutoML Vision Edge sono ottimizzati per le fotografie di oggetti nel mondo reale. Potrebbero non funzionare bene per radiografie, disegni a mano, documenti scansionati, ricevute e così via.
Inoltre, in genere i modelli non possono prevedere etichette che non possono essere assegnate dagli esseri umani. Pertanto, se un essere umano non riesce ad assegnare le etichette guardando l'immagine per 1-2 secondi, è probabile che il modello non possa essere addestrato a farlo.
Quando le immagini di addestramento sono pronte, preparale per l'importazione in Google Cloud. Sono disponibili due opzioni:
Opzione 1: Cloud Storage con indice CSV
Carica le immagini di addestramento su Google Cloud Storage e prepara un file CSV che elenchi l'URL di ogni immagine e, facoltativamente, le etichette degli oggetti e le regioni di confine corrette per ogni immagine. Questa opzione è utile quando utilizzi set di dati di grandi dimensioni.
Ad esempio, carica le immagini su Cloud Storage e prepara un file CSV come seguente:
gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,, gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,, gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,
I riquadri di delimitazione degli oggetti sono specificati come coordinate relative nell'immagine. Consulta Formattazione di un file CSV con dati di addestramento.
Le immagini devono essere archiviate in un bucket nella regione us-central1
e
parte del progetto Google Cloud corrispondente del progetto Firebase.
Opzione 2: immagini non etichettate
Etichetta le immagini di addestramento e disegna i confini degli oggetti nella console Google Cloud dopo averle caricate. Questa opzione è consigliata solo per set di dati di piccole dimensioni. Vedi il passaggio successivo.
2. Addestra il modello
A questo punto, addestra un modello utilizzando le tue immagini:
Apri la pagina Set di dati di Vision nella console Google Cloud. Seleziona il tuo progetto quando richiesto.
Fai clic su Nuovo set di dati, fornisci un nome per il set di dati, seleziona il tipo di modello da addestrare e fai clic su Crea set di dati.
Nella scheda Importa del set di dati, carica le immagini di addestramento, un'archivio ZIP delle immagini di addestramento o un file CSV contenente le località Cloud Storage in cui le hai caricate. Vedi Raccogliere i dati di addestramento.
Al termine dell'attività di importazione, utilizza la scheda Immagini per verificare i dati di addestramento.
Se non hai caricato un file CSV, per ogni immagine disegna riquadri di delimitazione intorno agli oggetti che vuoi riconoscere ed etichetta ogni oggetto.
Nella scheda Addestramento, fai clic su Inizia addestramento.
Assegna un nome al modello e seleziona il tipo di modello Edge.
Configura le seguenti impostazioni di addestramento, che regolano il rendimento del modello generato:
Ottimizza il modello per... La configurazione del modello da utilizzare. Puoi addestrare modelli più veloci e più piccoli se la latenza ridotta o le dimensioni ridotte del pacchetto sono importanti oppure modelli più lenti e più grandi se la precisione è più importante. Budget per ora nodo Il tempo massimo, in ore di calcolo, da dedicare all'addestramento del modello. In genere, un tempo di addestramento più lungo comporta un modello più accurato.
Tieni presente che l'addestramento può essere completato in meno del tempo specificato se il sistema determina che il modello è ottimizzato e un addestramento aggiuntivo non migliorerebbe l'accuratezza. Ti vengono addebitate solo le ore effettivamente utilizzate.
Tempi di addestramento tipici Set molto piccoli 1 ora 500 immagini 2 ore 1000 immagini 3 ore 5000 immagini 6 ore 10.000 immagini 7 ore 50.000 immagini 11 ore 100.000 immagini 13 ore 1.000.000 di immagini 18 ore
3. valuta il modello
Al termine dell'addestramento, puoi fare clic sulla scheda Valuta per visualizzare le metriche relative alle prestazioni del modello.
Un uso importante di questa pagina è determinare la soglia di confidenza più adatta al tuo modello. La soglia di confidenza è il livello minimo di confidenza che il modello deve avere per assegnare un'etichetta a un'immagine. Spostando il cursore Soglia di confidenza, puoi vedere in che modo le diverse soglie influiscono sulle prestazioni del modello. Le prestazioni del modello vengono misurate utilizzando due metriche: precisione e richiamo.
Nel contesto della classificazione delle immagini, la precisione è il rapporto tra il numero di immagini etichettate correttamente e il numero di immagini etichettate dal modello in base alla soglia selezionata. Quando un modello ha una precisione elevata, assegna le etichette in modo errato e con minore frequenza (meno falsi positivi).
Per richiamo si intende il rapporto tra il numero di immagini etichettate correttamente e il numero di immagini con contenuti che il modello avrebbe dovuto essere in grado di etichettare. Quando un modello ha un richiamo elevato, non assegna alcuna etichetta meno spesso (meno falsi negativi).
L'ottimizzazione in funzione della precisione o del richiamo dipende dal caso d'uso. Per ulteriori informazioni, consulta la guida per principianti di AutoML Vision e la guida al machine learning inclusivo: AutoML.
Quando trovi una soglia di confidenza che genera metriche che ti soddisfano, annotala. La utilizzerai per configurare il modello nella tua app. Puoi utilizzare questo strumento in qualsiasi momento per ottenere un valore di soglia appropriato.
4. Pubblicare o scaricare il modello
Se ritieni che le prestazioni del modello vadano bene e vuoi utilizzarlo in un'app, hai tre opzioni tra cui scegliere: esegui il deployment del modello per la previsione online, pubblicalo su Firebase o scaricalo e raggruppalo con la tua app.
Esegui il deployment del modello
Nella scheda Testa e utilizza del set di dati, puoi eseguire il deployment del modello per la previsione online, che esegue il modello nel cloud. Questa opzione è descritta nella documentazione di Cloud AutoML. I documenti su questo sito riguardano le due opzioni rimanenti.
Pubblica il modello
Se pubblichi il modello su Firebase, puoi aggiornarlo senza rilasciare una nuova versione dell'app e puoi utilizzare Remote Config e A/B Testing per pubblicare dinamicamente modelli diversi per gruppi diversi di utenti.
Se scegli di fornire il modello solo ospitandolo con Firebase e non raggrupparlo nella tua app, puoi ridurre le dimensioni di download iniziali dell'app. Tieni presente, tuttavia, che se il modello non è integrato nella tua app, tutte le funzionalità relative al modello non saranno disponibili finché l'app non scarica il modello per la prima volta.
Per pubblicare il modello, puoi utilizzare uno dei due metodi:
- Scarica il modello TF Lite dalla pagina Testa e utilizza del set di dati nella console Google Cloud, quindi caricalo nella pagina Modello personalizzato della console Firebase. In genere, è il modo più semplice per pubblicare un singolo modello.
- Pubblica il modello direttamente dal tuo progetto Google Cloud su Firebase utilizzando l'SDK Admin. Puoi utilizzare questo metodo per pubblicare in batch diversi modelli o per creare pipeline di pubblicazione automatizzate.
Per pubblicare il modello con l'API di gestione del modello dell'SDK Admin:
Pubblica il modello.
Dovrai specificare l'identificatore della risorsa del modello, che è una stringa simile all'esempio seguente:
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
Il numero del progetto del bucket Cloud Storage che contiene il modello. Potrebbe trattarsi del tuo progetto Firebase o di un altro progetto Google Cloud. Puoi trovare questo valore nella pagina Impostazioni della console Firebase o nella dashboard della console Google Cloud. MODEL_ID
L'ID del modello che hai ottenuto dall'API AutoML Cloud. Python
# First, import and initialize the SDK. # Get a reference to the AutoML model source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format( # See above for information on these values. project_number, model_id )) # Create the model object tflite_format = ml.TFLiteFormat(model_source=source) model = ml.Model( display_name="example_model", # This is the name you will use from your app to load the model. tags=["examples"], # Optional tags for easier management. model_format=tflite_format) # Add the model to your Firebase project and publish it new_model = ml.create_model(model) new_model.wait_for_unlocked() ml.publish_model(new_model.model_id)
Node.js
// First, import and initialize the SDK. (async () => { // Get a reference to the AutoML model. See above for information on these // values. const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`; // Create the model object and add the model to your Firebase project. const model = await ml.createModel({ displayName: 'example_model', // This is the name you use from your app to load the model. tags: ['examples'], // Optional tags for easier management. tfliteModel: { automlModel: automlModel }, }); // Wait for the model to be ready. await model.waitForUnlocked(); // Publish the model. await ml.publishModel(model.modelId); process.exit(); })().catch(console.error);
Scaricare il modello e raggrupparlo nell'app
Associando il modello alla tua app, puoi assicurarti che le funzionalità ML dell'app continuino a funzionare anche quando il modello ospitato da Firebase non è disponibile.
Se pubblichi il modello e lo combini con la tua app, l'app utilizzerà la versione più recente disponibile.
Per scaricare il modello, fai clic su TF Lite nella pagina Testa e utilizza del set di dati.
Passaggi successivi
Ora che hai pubblicato o scaricato il modello, scopri come utilizzarlo nelle tue app per iOS e versioni successive e Android.