Addestra un modello di rilevamento degli oggetti con AutoML Vision Edge

Un modello di rilevamento degli oggetti è simile a un modello di etichettatura delle immagini, ma anziché assegnare etichette a intere immagini, assegna etichette a regioni delle immagini. È possibile utilizzare modelli di rilevamento degli oggetti per riconoscere e individuare gli oggetti in un'immagine o per tenere traccia dei movimenti di un oggetto in una serie di immagini.

Per addestrare un modello di rilevamento degli oggetti, fornisci ad AutoML Vision Edge un set di immagini con le etichette degli oggetti 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

1. Assemblare i dati di allenamento

Innanzitutto, devi mettere insieme un set di dati di addestramento di immagini etichettate. Tieni a mente le seguenti linee guida:

  • Le immagini devono essere in uno dei seguenti formati: JPEG, PNG, GIF, BMP, ICO.

  • Ogni immagine deve essere di 30 MB o più piccola. Tieni presente che AutoML Vision Edge riduce la maggior parte delle immagini durante la preelaborazione, quindi in genere non vi è alcun vantaggio in termini di precisione nel fornire immagini a risoluzione molto elevata.

  • Includere almeno 10, e preferibilmente 100 o più, esempi di ciascuna etichetta.

  • Includi più angolazioni, risoluzioni e sfondi per ciascuna etichetta.

  • I dati di addestramento dovrebbero essere il più vicino possibile ai dati su cui devono essere fatte le previsioni. Ad esempio, se il tuo caso d'uso prevede immagini sfocate e a bassa risoluzione (come quelle provenienti da una telecamera di sicurezza), i dati di addestramento dovrebbero essere composti da immagini sfocate e a bassa risoluzione.

  • I modelli generati da AutoML Vision Edge sono ottimizzati per fotografie di oggetti nel mondo reale. Potrebbero non funzionare bene per radiografie, disegni a mano, documenti scansionati, ricevute e così via.

    Inoltre, i modelli generalmente non possono prevedere etichette che gli esseri umani non possono assegnare. Pertanto, se un essere umano non riesce ad assegnare etichette guardando l'immagine per 1-2 secondi, probabilmente non sarà possibile addestrare nemmeno il modello a farlo.

Quando hai pronte le immagini di formazione, preparale per l'importazione in Google Cloud. Hai due opzioni:

Opzione 1: archiviazione nel cloud con indice CSV

Carica le tue immagini di formazione su Google Cloud Storage e prepara un file CSV che elenca l'URL di ciascuna immagine e, facoltativamente, le etichette degli oggetti corrette e le regioni di delimitazione per ciascuna immagine. Questa opzione è utile quando si utilizzano set di dati di grandi dimensioni.

Ad esempio, carica le tue immagini su Cloud Storage e prepara un file CSV come il 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 vengono specificati come coordinate relative nell'immagine. Vedere Formattazione di un CSV di dati di addestramento .

Le immagini devono essere archiviate in un bucket che si trova nella regione us-central1 e fa parte del progetto Google Cloud corrispondente del tuo progetto Firebase.

Opzione 2: immagini senza etichetta

Etichetta le immagini di addestramento e disegna i confini degli oggetti nella console Google Cloud dopo averle caricate. Questo è consigliato solo per set di dati di piccole dimensioni. Vedi il passaggio successivo.

2. Addestra il tuo modello

Successivamente, addestra un modello utilizzando le tue immagini:

  1. Apri la pagina Vision Dataset nella console Google Cloud. Seleziona il tuo progetto quando richiesto.

  2. Fai clic su Nuovo set di dati , fornisci un nome per il set di dati, seleziona il tipo di modello che desideri addestrare e fai clic su Crea set di dati .

  3. Nella scheda Importa del tuo set di dati, carica le immagini di addestramento, un archivio zip delle immagini di addestramento o un file CSV contenente le posizioni di Cloud Storage in cui le hai caricate. Consulta Assemblare i dati di addestramento .

  4. Una volta completata l'attività di importazione, utilizzare la scheda Immagini per verificare i dati di training.

  5. Se non hai caricato un CSV, per ciascuna immagine, disegna riquadri di delimitazione attorno agli oggetti che desideri riconoscere ed etichetta ciascun oggetto.

  6. Nella scheda Formazione , fare clic su Inizia formazione .

    1. Assegna un nome al modello e seleziona il tipo di modello Edge .

    2. Configura le seguenti impostazioni di training, che regolano le prestazioni del modello generato:

      Ottimizza il modello per... La configurazione del modello da utilizzare. È possibile addestrare modelli più veloci e più piccoli quando sono importanti la bassa latenza o le dimensioni ridotte del pacchetto oppure modelli più lenti e più grandi quando la precisione è la cosa più importante.
      Budget ore-nodo

      Il tempo massimo, in ore di calcolo, da dedicare all'addestramento del modello. Un tempo di addestramento maggiore generalmente si traduce in 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 la precisione. Ti verranno fatturate solo le ore effettivamente utilizzate.

      Tempi tipici di formazione
      Set molto piccoli 1 ora
      500 immagini 2 ore
      1.000 immagini 3 ore
      5.000 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 tuo modello

Una volta completato l'addestramento, puoi fare clic sulla scheda Valutazione per visualizzare le metriche delle prestazioni per il modello.

Un utilizzo importante di questa pagina è determinare la soglia di confidenza che funziona meglio per il tuo modello. La soglia di confidenza è la confidenza minima che il modello deve avere per assegnare un'etichetta a un'immagine. Spostando il dispositivo di scorrimento della Soglia di confidenza , puoi vedere come le diverse soglie influiscono sulle prestazioni del modello. Le prestazioni del modello vengono misurate utilizzando due parametri: 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 un'elevata precisione, assegna le etichette in modo errato meno spesso (meno falsi positivi).

Il richiamo è il rapporto tra il numero di immagini etichettate correttamente e il numero di immagini con contenuto che il modello avrebbe dovuto essere in grado di etichettare. Quando un modello ha un elevato ricordo, non riesce ad assegnare alcuna etichetta meno spesso (meno falsi negativi).

L'ottimizzazione per la precisione o il richiamo dipenderà dal caso d'uso. Per ulteriori informazioni, consulta la guida per principianti di AutoML Vision e la guida Inclusive ML - AutoML .

Quando trovi una soglia di confidenza che produce parametri con cui ti senti a tuo agio, prendine nota; utilizzerai la soglia di confidenza per configurare il modello nella tua app. (Puoi utilizzare questo strumento in qualsiasi momento per ottenere un valore di soglia appropriato.)

4. Pubblica o scarica il tuo modello

Se sei soddisfatto delle prestazioni del modello e desideri utilizzarlo in un'app, hai tre opzioni, tra le quali puoi scegliere qualsiasi combinazione: distribuire il modello per la previsione online, pubblicare il modello su Firebase o scaricare il modello e raggrupparlo con la tua app.

Distribuire il modello

Nella scheda Test e utilizzo del set di dati, puoi distribuire il modello per la previsione online, che esegue il modello nel cloud. Questa opzione è trattata nella documentazione di Cloud AutoML . I documenti su questo sito trattano le restanti due opzioni.

Pubblica il modello

Pubblicando il modello su Firebase, puoi aggiornarlo senza rilasciare una nuova versione dell'app e puoi utilizzare Remote Config e A/B Testing per servire dinamicamente modelli diversi a diversi gruppi di utenti.

Se scegli di fornire il modello solo ospitandolo con Firebase e non raggruppandolo con la tua app, puoi ridurre le dimensioni di download iniziali della tua app. Tieni presente, tuttavia, che se il modello non è incluso nella tua app, qualsiasi funzionalità relativa al modello non sarà disponibile finché l'app non scaricherà il modello per la prima volta.

Per pubblicare il tuo modello, puoi utilizzare uno dei due metodi:

  • Scarica il modello TF Lite dalla pagina Test e utilizzo del set di dati nella console Google Cloud, quindi carica il modello nella pagina Modello personalizzato della console Firebase. Questo è solitamente il modo più semplice per pubblicare un singolo modello.
  • Pubblica il modello direttamente dal tuo progetto Google Cloud su Firebase utilizzando l'SDK Admin. È possibile 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 Admin SDK:

  1. Installa e inizializza l'SDK .

  2. Pubblica il modello.

    Dovrai specificare l'identificatore della risorsa del modello, che è una stringa simile al seguente esempio:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Il numero di 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, ottenuto dall'API AutoML Cloud.

    Pitone

    # 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);
    

Scarica e raggruppa il modello con la tua app

Raggruppando il tuo modello con la tua app, puoi assicurarti che le funzionalità ML della tua app continuino a funzionare quando il modello ospitato da Firebase non è disponibile.

Se pubblichi il modello e lo raggruppi con la tua app, l'app utilizzerà l'ultima versione disponibile.

Per scaricare il modello, fai clic su TF Lite nella pagina Test e utilizzo del set di dati.

Prossimi passi

Ora che hai pubblicato o scaricato il modello, scopri come utilizzarlo nelle tue app iOS+ e Android .