On-Device-Bildklassifizierungsmodell mit AutoML Vision im ML Kit trainieren und bereitstellen

1. Einführung

Aufgrund neuer Fortschritte im Bereich des maschinellen Lernens ist es für Computer relativ einfach, Objekte in Bildern zu erkennen. In diesem Codelab werden Sie Schritt für Schritt durch die Erstellung eines Bildklassifizierungsmodells geführt, das verschiedene Objekttypen erkennen und das Modell dann in einer Android- oder iOS-App bereitstellen kann. Mit ML Kit und AutoML können Sie das Modell auch ohne ML-Kenntnisse in großem Maßstab erstellen und bereitstellen.

Was ist ML Kit?

ML Kit ist ein mobiles SDK, mit dem das Fachwissen von Google im Bereich maschinelles Lernen in einem leistungsstarken und dennoch nutzerfreundlichen Paket auf Android- und iOS-Apps übertragen wird. Ganz gleich, ob Sie noch keine Erfahrung mit maschinellem Lernen haben – die Funktionalität, die Sie benötigen, lässt sich mit nur wenigen Codezeilen implementieren. Es gibt verschiedene APIs, die Text, Gesichter usw. erkennen und sofort verwenden können. Wenn Sie jedoch Objekte erkennen müssen, die nicht von den APIs unterstützt werden, z. B. verschiedene Blumenarten auf einem Bild, müssen Sie Ihr eigenes Modell trainieren. Hier kann AutoML Ihnen helfen.

Was ist AutoML?

Cloud AutoML ist eine Produktsuite für maschinelles Lernen, mit der auch Entwickler mit geringem ML-Fachwissen qualitativ hochwertige Modelle trainieren können, die auf die Anforderungen ihres Unternehmens zugeschnitten sind. Dazu kommen die hochmodernen Technologien für Lerntransfer und Neural Architecture Search von Google zum Einsatz.

In diesem Codelab verwenden wir AutoML Vision Edge im ML Kit, um ein Blumenklassifizierungsmodell zu trainieren. Das Modell wird in der Cloud trainiert, dann aber von der App gebündelt oder heruntergeladen, um Inferenzen vollständig auf dem Gerät auszuführen.

93f21fd287496e4e.png

Lerninhalte

  • Hier erfahren Sie, wie Sie ein Bildklassifizierungsmodell mit AutoML Vision Edge im ML Kit trainieren.
  • Ausführung in einer Android- oder iOS-Beispiel-App mit dem ML Kit SDK

Voraussetzungen

Für die Android-App

  • Eine aktuelle Version von Android Studio (Version 3.4 und höher)
  • Android Studio-Emulator mit Play Store oder einem physischen Android-Gerät (Version 5.0 oder höher)
  • Grundkenntnisse der Android-Entwicklung in Kotlin

Für die iOS-App

  • Eine aktuelle Version von XCode (Version 10.2 und höher)
  • iOS-Simulator oder ein physisches iOS-Gerät (Version 9.0 oder höher)
  • CocoaPods
  • Grundkenntnisse der iOS-Entwicklung in Swift

2. Einrichtung

Code und Trainings-Dataset herunterladen

Laden Sie ein ZIP-Archiv herunter, das den Quellcode für dieses Codelab und ein Trainings-Dataset enthält. Extrahieren Sie das Archiv auf Ihrem lokalen Computer.

Firebase Console-Projekt erstellen

  1. Rufen Sie die Firebase Console auf.
  2. Wählen Sie Create New Project (Neues Projekt erstellen) aus und nennen Sie das Projekt „ML Kit Codelab“.

Android-App einrichten

  1. Fügen Sie unsere Android-App zum Firebase-Projekt hinzu. Android-Paketname: com.google.firebase.codelab.mlkit.automl
  2. Lade die Konfigurationsdatei google-services.json herunter und platziere sie in der Android-App unter android/mlkit-automl/app/google-services.json.

iOS-App einrichten

  1. Fügen Sie unsere iOS-App zum Firebase-Projekt hinzu. iOS-Paket-ID: com.google.firebase.codelab.mlkit.automl
  2. Laden Sie die Konfigurationsdatei GoogleService-Info.plist herunter und folgen Sie der Anleitung, um sie in der iOS-App unter ios/mlkit-automl/GoogleService-Info.plist zu platzieren.

3. Trainings-Dataset vorbereiten

Wenn Sie ein Modell trainieren möchten, damit es verschiedene Objekttypen erkennt, müssen Sie eine Reihe von Bildern vorbereiten und jedem ein Label hinzufügen. Wir haben ein Archiv mit Creative-Commons-Lizenzen für Blumenfotos erstellt, die Sie in diesem Codelab verwenden können.

Das Dataset wird als ZIP-Datei namens flower_photos.zip gepackt, die sich im ZIP-Archiv befindet, das Sie im vorherigen Schritt heruntergeladen haben.

Dataset untersuchen

Wenn Sie die Datei flower_photos.zip extrahieren, sehen Sie, dass das Dataset Bilder von fünf Blumentypen enthält: Löwenzahn, Gänseblümchen, Tulpen, Sonnenblumen und Rosen. Diese sind in Ordnern organisiert, die nach den Blumen benannt sind. Dies ist eine praktische Möglichkeit, ein Trainings-Dataset zu erstellen, das in AutoML eingespeist wird und ein Bildklassifizierungsmodell trainiert.

In diesem Trainings-Dataset gibt es für jeden Blumentyp 200 Bilder. Sie benötigen nur mindestens 10 Bilder pro Klasse, um ein Modell zu trainieren. Jedoch führen mehr Trainingsbilder im Allgemeinen zu besseren Modellen.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Modell trainieren

Trainings-Dataset hochladen

  1. Öffnen Sie in der Firebase Console das soeben erstellte Projekt.
  2. Wählen Sie ML Kit aus > AutoML:
  3. Möglicherweise werden einige Begrüßungsbildschirme angezeigt. Klicken Sie gegebenenfalls auf Jetzt starten.
  1. Wenn die Einrichtung abgeschlossen ist, wählen Sie Dataset hinzufügen aus und nennen es „Blumen“.
  2. Wählen Sie unter Modellziel die Option Klassifizierung mit einem einzigen Label aus, da die Trainingsdaten nur ein Label pro Bild enthalten.
  3. Wählen Sie Erstellen aus.
  4. Laden Sie die Datei flower_photos.zip hoch, die Sie im vorherigen Schritt heruntergeladen haben, um das Blumentraining-Dataset zu importieren.
  5. Warten Sie einige Minuten, bis der Importvorgang abgeschlossen ist.
  6. Jetzt können Sie prüfen, ob das Dataset korrekt importiert wurde.
  7. Da allen Bildern im Trainings-Dataset Labels zugewiesen wurden, können Sie mit dem Trainieren eines Modells fortfahren.

cdb18b61f890934f.png

Klassifizierungsmodell für Bilder trainieren

Da unser Modell auf einem Mobilgerät mit begrenzter Rechenleistung und begrenztem Speicher ausgeführt wird, müssen wir nicht nur auf die Genauigkeit des Modells, sondern auch auf seine Größe und Geschwindigkeit achten. Es gibt immer einen Kompromiss zwischen Modellgenauigkeit, Latenz (d. h. wie lange es dauert, ein Bild zu klassifizieren) und Modellgröße. Im Allgemeinen ist ein Modell mit höherer Genauigkeit auch größer und die Klassifizierung eines Bildes dauert länger.

AutoML bietet Ihnen mehrere Optionen: Sie können die Genauigkeit, die Latenz und die Modellgröße oder einen Ausgleich zwischen ihnen wählen. Sie können auch festlegen, wie lange das Modell trainiert werden soll. Größere Datasets müssen länger trainiert werden.

dd6b7eaa2dd5a9de.png

Führen Sie die folgenden Schritte aus, wenn Sie das Modell selbst trainieren möchten.

  1. Wählen Sie Train model (Modell trainieren) aus.
  2. Wählen Sie die Option Allgemein und 1 Rechenstunde für die Trainingszeit aus.
  3. Warten Sie einige Stunden (wahrscheinlich mehrere Stunden), bis die Trainingsaufgabe abgeschlossen ist.
  4. Nachdem die Trainingsaufgabe abgeschlossen ist, sehen Sie Bewertungsmesswerte zur Leistung des trainierten Modells.

73f98fbed5ae5ee5.png

5. Modell in mobilen Apps verwenden

Vorbereitung

  • Dieses Codelab enthält eine Beispiel-App für Android und iOS, in der gezeigt wird, wie das Bildklassifizierungsmodell verwendet wird, das wir zuvor in einer mobilen App trainiert haben. Die Funktionen der beiden Apps sind ähnlich. Sie können die Plattform auswählen, mit der Sie besser vertraut sind.
  • Bevor Sie fortfahren, vergewissern Sie sich, dass Sie die Beispiel-Apps heruntergeladen und in Schritt 2 konfiguriert haben.
  • Stellen Sie außerdem sicher, dass Ihre lokale Umgebung so eingerichtet ist, dass Sie Apps für die gewählte Plattform (Android/iOS) erstellen können.

Bildklassifizierungsmodell herunterladen

  • Wenn Sie im vorherigen Schritt ein Modell trainiert haben, wählen Sie Herunterladen aus, um das Modell abzurufen.
  • Wenn Sie kein Modell trainiert haben oder Ihre Trainingsaufgabe noch nicht abgeschlossen ist, können Sie das in den Beispiel-Apps enthaltene Modell verwenden.

Modell den Beispiel-Apps hinzufügen

Sie müssen das Modell nur den Beispiel-Apps hinzufügen, dann sind sie sofort einsatzbereit. Eine vollständige Anleitung zur Integration von ML Kit AutoML in Ihre App finden Sie in unserer Dokumentation ( Android, iOS). Code, der mit dem ML Kit SDK interagiert, befindet sich in der Datei ImageClassifier.kt bzw. ImageClassifier.swift. Sie können also von dort aus beginnen, um zu erfahren, wie die Apps funktionieren.

Es gibt zwei Möglichkeiten, das Modell bereitzustellen: lokal und remote.

  • Das lokale Modell wird hauptsächlich verwendet, um das Bildklassifizierungsmodell im Binärprogramm Ihrer App zu bündeln. Sie können aber auch ein Modell bereitstellen, das im lokalen Speicher gespeichert ist. Bei der Bündelung ist das Modell Ihren Nutzern sofort nach dem Herunterladen Ihrer App aus dem App Store oder Play Store verfügbar und funktioniert auch ohne Internetverbindung.
  • Bei einem Remotemodell wird das Modell in Firebase gehostet und nur dann auf das Gerät des Nutzers heruntergeladen, wenn es zum ersten Mal benötigt wird. Danach funktioniert das Modell auch offline.

2e71ed2c7cb8757c.png

Android-App

  1. Öffnen Sie Android Studio.
  2. Android-App unter android/mlkit-automl/ importieren
  3. (Optional) Extrahieren Sie das heruntergeladene Modell und kopieren Sie seinen Inhalt in das Modell, das in der Beispiel-App enthalten ist. 10cf6b1e0f34de29.png
  4. Klicken Sie nun in der Android Studio-Symbolleiste auf „Ausführen“ ( c8b8a080b7ead886.png) und prüfen Sie, ob verschiedene Blumenarten erkannt werden.

2e71ed2c7cb8757c.png

iOS-App

  1. Öffnen Sie das Terminal und wechseln Sie zum Ordner ios/mlkit-automl/
  2. Führen Sie pod install aus, um Abhängigkeiten über CocoaPods herunterzuladen
  3. Führen Sie open MLVisionExample.xcworkspace/ aus, um den Projektarbeitsbereich in Xcode zu öffnen.
  4. (Optional) Extrahieren Sie das heruntergeladene Modell und kopieren Sie seinen Inhalt in das Modell, das in der Beispiel-App unter ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png enthalten ist.
  5. Klicken Sie nun in der Xcode-Symbolleiste auf Run ( 16629f86bbeb4208.png) und überprüfen Sie, ob verschiedene Blumenarten erkannt werden.

65172c3f35336d4e.png

6. (Optional) Remote-Modell verwenden

Mit dem Remotemodell von ML Kit können Sie Tensorflow Lite-Modelle nicht in Ihr App-Binärprogramm aufnehmen, sondern bei Bedarf on demand von Firebase herunterladen. Remote-Modelle haben mehrere Vorteile gegenüber lokalen Modellen:

  • Kleineres App-Binärprogramm
  • Die Möglichkeit, Modelle ohne Aktualisierung der App zu aktualisieren
  • A/B-Tests mit mehreren Versionen eines Modells

In diesem Schritt veröffentlichen wir ein Remote-Modell und verwenden es in den Beispiel-Apps. Das Training Ihres Modells in Schritt 4 dieses Codelabs muss abgeschlossen sein.

Modell veröffentlichen

  1. Rufen Sie die Firebase Console auf.
  2. Wählen Sie das AutoML-Codelab für ML Kit aus. das Sie zuvor erstellt haben.
  3. Wählen Sie ML Kit aus > AutoML:
  4. Klicken Sie auf das Symbol "Blumen" Dataset, das Sie zuvor erstellt haben.
  5. Prüfen Sie, ob die Trainingsaufgabe abgeschlossen ist, und wählen Sie dann das Modell aus.
  6. Wählen Sie Veröffentlichen aus und nennen Sie den Eintrag „mlkit_flowers“. b63a58b83e814acd.png

Blumen mit dem Remote-Modell erkennen

Die Beispiel-Apps sind so konfiguriert, dass ein Remote-Modell verwendet wird, sofern verfügbar. Nachdem Sie das Remotemodell veröffentlicht haben, müssen Sie nur die Apps noch einmal ausführen, um den Modelldownload auszulösen. Unter „Quelle“ können Sie prüfen, ob die App das Remote-Modell verwendet. in der Fußzeile des App-Bildschirms. Weitere Informationen finden Sie im Abschnitt „Fehlerbehebung“. falls dies nicht funktioniert.

7c8292293fd858ad.png de359886ccecef2.png

Fehlerbehebung

Wenn die Beispiel-App noch das lokale Modell verwendet, überprüfen Sie, ob der Name des Remote-Modells im Code korrekt festgelegt ist.

Android-App

  1. Gehen Sie zu ImageClassifier.kt und suchen Sie diesen Block.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Überprüfen Sie, ob der im Code festgelegte Modellname mit dem Modellnamen übereinstimmt, den Sie zuvor über die Firebase Console veröffentlicht haben.
  2. Klicken Sie jetzt in der Android Studio-Symbolleiste auf „Ausführen“ (c8b8a080b7ead886.png), um die App noch einmal auszuführen.

iOS-App

  1. Gehen Sie zu ImageClassifier.swift und suchen Sie diesen Block:
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Überprüfen Sie, ob der im Code festgelegte Modellname mit dem Modellnamen übereinstimmt, den Sie zuvor über die Firebase Console veröffentlicht haben.
  2. Klicken Sie nun in der Xcode-Symbolleiste auf „Ausführen“ ( 16629f86bbeb4208.png), um die Anwendung noch einmal auszuführen.

7. Glückwunsch!

Sie haben einen umfassenden Prozess durchlaufen, in dem Sie mit Ihren eigenen Trainingsdaten mithilfe von AutoML ein Bildklassifizierungsmodell trainieren und das Modell dann in einer mobilen App mit ML Kit verwenden.

In unserer Dokumentation erfahren Sie, wie Sie AutoML Vision Edge in das ML Kit in Ihre eigene App einbinden.

Sie können auch unsere ML Kit-Beispiel-Apps ausprobieren, um andere Funktionen von Firebase ML Kit kennenzulernen.

Android-Beispiele

iOS-Beispiele