Trainieren Sie ein Objekterkennungsmodell mit AutoML Vision Edge

Ein Objekterkennungsmodell ähnelt einem Bildbeschriftungsmodell, aber statt ganzen Bildern Beschriftungen zuzuweisen, weist es Bildbereichen Beschriftungen zu. Sie können Objekterkennungsmodelle verwenden, um Objekte in einem Bild zu erkennen und zu lokalisieren oder um die Bewegungen eines Objekts über eine Reihe von Bildern hinweg zu verfolgen.

Um ein Objekterkennungsmodell zu trainieren, stellen Sie AutoML Vision Edge eine Reihe von Bildern mit entsprechenden Objektbeschriftungen und Objektgrenzen zur Verfügung. AutoML Vision Edge verwendet diesen Datensatz, um ein neues Modell in der Cloud zu trainieren, das Sie für die Objekterkennung auf dem Gerät verwenden können.

Bevor Sie beginnen

  • Wenn Sie noch kein Firebase-Projekt haben, erstellen Sie eines in der Firebase-Konsole .

  • Machen Sie sich mit den Richtlinien im Inclusive ML-Leitfaden – AutoML vertraut.

  • Wenn Sie AutoML Vision Edge einfach ausprobieren möchten und keine eigenen Trainingsdaten haben, laden Sie einen Beispieldatensatz wie einen der folgenden herunter:

1. Stellen Sie Ihre Trainingsdaten zusammen

Zunächst müssen Sie einen Trainingsdatensatz mit beschrifteten Bildern zusammenstellen. Beachten Sie die folgenden Richtlinien:

  • Die Bilder müssen in einem der folgenden Formate vorliegen: JPEG, PNG, GIF, BMP, ICO.

  • Jedes Bild darf maximal 30 MB groß sein. Beachten Sie, dass AutoML Vision Edge die meisten Bilder während der Vorverarbeitung herunterskaliert, sodass die Bereitstellung von Bildern mit sehr hoher Auflösung im Allgemeinen keinen Genauigkeitsvorteil bringt.

  • Fügen Sie mindestens 10, vorzugsweise 100 oder mehr Beispiele für jedes Etikett bei.

  • Geben Sie für jedes Etikett mehrere Blickwinkel, Auflösungen und Hintergründe an.

  • Die Trainingsdaten sollten möglichst nah an den Daten liegen, über die Vorhersagen getroffen werden sollen. Wenn Ihr Anwendungsfall beispielsweise verschwommene Bilder mit niedriger Auflösung umfasst (z. B. von einer Überwachungskamera), sollten Ihre Trainingsdaten aus verschwommenen Bildern mit niedriger Auflösung bestehen.

  • Die von AutoML Vision Edge generierten Modelle sind für Fotografien von Objekten in der realen Welt optimiert. Sie eignen sich möglicherweise nicht für Röntgenaufnahmen, Handzeichnungen, gescannte Dokumente, Quittungen usw.

    Außerdem können die Modelle generell keine Etiketten vorhersagen, die Menschen nicht zuordnen können. Wenn ein Mensch also keine Beschriftungen zuweisen kann, indem er das Bild ein bis zwei Sekunden lang betrachtet, kann das Modell wahrscheinlich auch nicht dafür trainiert werden.

Wenn Sie Ihre Trainingsbilder fertig haben, bereiten Sie sie für den Import in Google Cloud vor. Sie haben zwei Möglichkeiten:

Option 1: Cloud-Speicher mit CSV-Index

Laden Sie Ihre Trainingsbilder in Google Cloud Storage hoch und bereiten Sie eine CSV-Datei vor, in der die URL jedes Bildes sowie optional die richtigen Objektbezeichnungen und Begrenzungsbereiche für jedes Bild aufgeführt sind. Diese Option ist hilfreich, wenn Sie große Datensätze verwenden.

Laden Sie beispielsweise Ihre Bilder in Cloud Storage hoch und bereiten Sie eine CSV-Datei wie die folgende vor:

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,,

Objektbegrenzungsrahmen werden als relative Koordinaten im Bild angegeben. Siehe Formatieren einer Trainingsdaten-CSV .

Die Bilder müssen in einem Bucket gespeichert werden, der sich in der Region us-central1 befindet und Teil des entsprechenden Google Cloud-Projekts Ihres Firebase-Projekts ist.

Option 2: Unbeschriftete Bilder

Beschriften Sie Ihre Trainingsbilder und zeichnen Sie Objektgrenzen in der Google Cloud Console, nachdem Sie sie hochgeladen haben. Dies wird nur für kleine Datensätze empfohlen. Siehe den nächsten Schritt.

2. Trainieren Sie Ihr Modell

Als nächstes trainieren Sie ein Modell mithilfe Ihrer Bilder:

  1. Öffnen Sie die Seite „Vision-Datensätze“ in der Google Cloud Console. Wählen Sie Ihr Projekt aus, wenn Sie dazu aufgefordert werden.

  2. Klicken Sie auf Neuer Datensatz , geben Sie einen Namen für den Datensatz ein, wählen Sie den Modelltyp aus, den Sie trainieren möchten, und klicken Sie auf Datensatz erstellen .

  3. Laden Sie auf der Registerkarte „Importieren“ Ihres Datensatzes Ihre Trainingsbilder, ein ZIP-Archiv Ihrer Trainingsbilder oder eine CSV-Datei mit den Cloud-Speicherorten hoch, an die Sie sie hochgeladen haben. Siehe Zusammenstellen Ihrer Trainingsdaten .

  4. Nachdem die Importaufgabe abgeschlossen ist, verwenden Sie die Registerkarte „Bilder“ , um die Trainingsdaten zu überprüfen.

  5. Wenn Sie keine CSV-Datei hochgeladen haben, zeichnen Sie für jedes Bild Begrenzungsrahmen um die Objekte, die Sie erkennen möchten, und beschriften Sie jedes Objekt.

  6. Klicken Sie auf der Registerkarte „Training“ auf „Training starten“ .

    1. Benennen Sie das Modell und wählen Sie den Edge- Modelltyp aus.

    2. Konfigurieren Sie die folgenden Trainingseinstellungen, die die Leistung des generierten Modells steuern:

      Modell optimieren für... Die zu verwendende Modellkonfiguration. Sie können schnellere, kleinere Modelle trainieren, wenn niedrige Latenz oder kleine Paketgröße wichtig sind, oder langsamere, größere Modelle, wenn Genauigkeit am wichtigsten ist.
      Knotenstundenbudget

      Die maximale Zeit in Rechenstunden, die für das Training des Modells aufgewendet werden soll. Mehr Trainingszeit führt im Allgemeinen zu einem genaueren Modell.

      Beachten Sie, dass das Training in weniger als der angegebenen Zeit abgeschlossen werden kann, wenn das System feststellt, dass das Modell optimiert ist und zusätzliches Training die Genauigkeit nicht verbessern würde. Es werden Ihnen nur die tatsächlich in Anspruch genommenen Stunden in Rechnung gestellt.

      Typische Trainingszeiten
      Sehr kleine Sets 1 Stunde
      500 Bilder 2 Stunden
      1.000 Bilder 3 Stunden
      5.000 Bilder 6 Stunden
      10.000 Bilder 7 Stunden
      50.000 Bilder 11 Stunden
      100.000 Bilder 13 Stunden
      1.000.000 Bilder 18 Stunden

3. Bewerten Sie Ihr Modell

Wenn das Training abgeschlossen ist, können Sie auf die Registerkarte „Auswerten“ klicken, um Leistungsmetriken für das Modell anzuzeigen.

Eine wichtige Verwendung dieser Seite besteht darin, den Konfidenzschwellenwert zu bestimmen, der für Ihr Modell am besten geeignet ist. Der Konfidenzschwellenwert ist die Mindestkonfidenz, die das Modell haben muss, damit es einem Bild eine Bezeichnung zuweisen kann. Durch Verschieben des Schiebereglers „Konfidenzschwelle“ können Sie sehen, wie sich unterschiedliche Schwellenwerte auf die Leistung des Modells auswirken. Die Modellleistung wird anhand von zwei Metriken gemessen: Präzision und Rückruf .

Im Zusammenhang mit der Bildklassifizierung ist Präzision das Verhältnis der Anzahl der Bilder, die korrekt beschriftet wurden, zur Anzahl der Bilder, die das Modell unter Berücksichtigung des ausgewählten Schwellenwerts beschriftet hat. Wenn ein Modell über eine hohe Präzision verfügt, weist es Beschriftungen seltener falsch zu (weniger Fehlalarme).

Der Recall ist das Verhältnis der Anzahl der Bilder, die korrekt beschriftet wurden, zur Anzahl der Bilder, deren Inhalt das Modell hätte beschriften können müssen. Wenn ein Modell eine hohe Erinnerung aufweist, weist es seltener keine Bezeichnung zu (weniger falsch-negative Ergebnisse).

Ob Sie auf Präzision oder Rückruf optimieren, hängt von Ihrem Anwendungsfall ab. Weitere Informationen finden Sie im Einsteigerhandbuch für AutoML Vision und im Inclusive ML-Leitfaden – AutoML .

Wenn Sie einen Konfidenzschwellenwert gefunden haben, der Metriken liefert, mit denen Sie zufrieden sind, notieren Sie sich diesen. Sie verwenden den Konfidenzschwellenwert, um das Modell in Ihrer App zu konfigurieren. (Sie können dieses Tool jederzeit verwenden, um einen geeigneten Schwellenwert zu ermitteln.)

4. Veröffentlichen oder laden Sie Ihr Modell herunter

Wenn Sie mit der Leistung des Modells zufrieden sind und es in einer App verwenden möchten, haben Sie drei Optionen, aus denen Sie eine beliebige Kombination wählen können: Bereitstellen des Modells für die Online-Vorhersage, Veröffentlichen des Modells in Firebase oder Herunterladen des Modells und Bündeln mit Ihrer App.

Stellen Sie das Modell bereit

Auf der Registerkarte „Testen und verwenden“ Ihres Datensatzes können Sie Ihr Modell für die Online-Vorhersage bereitstellen, die Ihr Modell in der Cloud ausführt. Diese Option wird in den Cloud AutoML-Dokumenten behandelt. Die Dokumente auf dieser Website befassen sich mit den verbleibenden zwei Optionen.

Veröffentlichen Sie das Modell

Durch die Veröffentlichung des Modells in Firebase können Sie das Modell aktualisieren, ohne eine neue App-Version zu veröffentlichen, und Sie können Remote Config und A/B-Tests verwenden, um verschiedene Modelle dynamisch für verschiedene Benutzergruppen bereitzustellen.

Wenn Sie sich dafür entscheiden, das Modell nur durch Hosten mit Firebase bereitzustellen und es nicht mit Ihrer App zu bündeln, können Sie die anfängliche Downloadgröße Ihrer App reduzieren. Beachten Sie jedoch, dass, wenn das Modell nicht mit Ihrer App gebündelt ist, alle modellbezogenen Funktionen erst verfügbar sind, wenn Ihre App das Modell zum ersten Mal herunterlädt.

Um Ihr Modell zu veröffentlichen, können Sie eine von zwei Methoden verwenden:

  • Laden Sie das TF Lite-Modell von der Test- und Verwendungsseite Ihres Datensatzes in der Google Cloud-Konsole herunter und laden Sie das Modell dann auf der Seite „Benutzerdefiniertes Modell“ der Firebase-Konsole hoch. Dies ist normalerweise der einfachste Weg, ein einzelnes Modell zu veröffentlichen.
  • Veröffentlichen Sie das Modell mithilfe des Admin SDK direkt aus Ihrem Google Cloud-Projekt in Firebase. Mit dieser Methode können Sie mehrere Modelle stapelweise veröffentlichen oder dabei helfen, automatisierte Veröffentlichungspipelines zu erstellen.

So veröffentlichen Sie das Modell mit der Admin SDK- Modellverwaltungs-API :

  1. Installieren und initialisieren Sie das SDK .

  2. Veröffentlichen Sie das Modell.

    Sie müssen den Ressourcenbezeichner des Modells angeben, bei dem es sich um eine Zeichenfolge handelt, die wie im folgenden Beispiel aussieht:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Die Projektnummer des Cloud Storage-Buckets, der das Modell enthält. Dies kann Ihr Firebase-Projekt oder ein anderes Google Cloud-Projekt sein. Sie finden diesen Wert auf der Seite „Einstellungen“ der Firebase-Konsole oder im Dashboard der Google Cloud-Konsole.
    MODEL_ID Die ID des Modells, die Sie von der AutoML Cloud API erhalten haben.

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

Laden Sie das Modell herunter und bündeln Sie es mit Ihrer App

Durch die Bündelung Ihres Modells mit Ihrer App können Sie sicherstellen, dass die ML-Funktionen Ihrer App auch dann funktionieren, wenn das von Firebase gehostete Modell nicht verfügbar ist.

Wenn Sie das Modell veröffentlichen und es mit Ihrer App bündeln, verwendet die App die neueste verfügbare Version.

Um Ihr Modell herunterzuladen, klicken Sie auf der Test- und Verwendungsseite Ihres Datensatzes auf TF Lite .

Nächste Schritte

Nachdem Sie das Modell veröffentlicht oder heruntergeladen haben, erfahren Sie, wie Sie das Modell in Ihren iOS+- und Android -Apps verwenden.