Benutzerdefinierte Modelle mit ML Kit

Standardmäßig werden in den APIs von ML Kit von Google trainierte Machine-Learning-Modelle verwendet. Diese Modelle sind für eine Vielzahl von Anwendungen konzipiert. Einige Anwendungsfälle erfordern jedoch gezieltere Modelle. Aus diesem Grund können Sie bei einigen ML Kit-APIs die Standardmodelle durch benutzerdefinierte LiteRT-Modelle ersetzen.

Sowohl die Image Labeling API als auch die Object Detection & Tracking API unterstützen benutzerdefinierte Modelle für die Bildklassifizierung. Sie sind mit einer Auswahl hochwertiger vortrainierter Modelle auf TensorFlow Hub oder mit Ihrem eigenen benutzerdefinierten Modell kompatibel, das mit TensorFlow oder AutoML trainiert wurde.

Wenn Sie eine benutzerdefinierte Lösung für andere Domains oder Anwendungsfälle benötigen, finden Sie auf der Seite zu On-Device Machine Learning Informationen zu allen Lösungen und Tools von Google für On-Device Machine Learning.

Vorteile der Verwendung von ML Kit mit benutzerdefinierten Modellen

Die Vorteile der Verwendung eines benutzerdefinierten Bildklassifizierungsmodells mit ML Kit sind:

  • Einfach zu verwendende APIs auf hoher Ebene: Sie müssen sich nicht mit der Ein-/Ausgabe von Modellen auf niedriger Ebene, der Vor-/Nachbearbeitung von Bildern oder dem Erstellen einer Verarbeitungspipeline befassen.
  • Sie müssen sich nicht selbst um die Labelzuordnung kümmern: ML Kit extrahiert die Labels aus den LiteRT-Modellmetadaten und führt die Zuordnung für Sie durch.
  • Unterstützung für benutzerdefinierte Modelle aus einer Vielzahl von Quellen, von vortrainierten Modellen, die in TensorFlow Hub veröffentlicht wurden, bis hin zu neuen Modellen, die mit TensorFlow oder AutoML trainiert wurden.
  • Optimiert für die Integration in die Camera APIs von Android.

Speziell für Objekterkennung und -tracking gilt Folgendes:

  • Klassifizierungsgenauigkeit verbessern: Suchen Sie zuerst die Objekte und führen Sie den Classifier nur für den entsprechenden Bildbereich aus.
  • Interaktive Echtzeitfunktionen: Geben Sie Ihren Nutzern sofortiges Feedback zu Objekten, die erkannt und klassifiziert werden.

Vortrainiertes Bildklassifizierungsmodell verwenden

Sie können vortrainierte LiteRT-Modelle verwenden, sofern sie bestimmte Kriterien erfüllen. Über TensorFlow Hub bieten wir eine Reihe geprüfter Modelle von Google oder anderen Modellentwicklern an, die diese Kriterien erfüllen.

Ein auf TensorFlow Hub veröffentlichtes Modell verwenden

TensorFlow Hub bietet eine Vielzahl von vortrainierten Bildklassifizierungsmodellen von verschiedenen Modellerstellern, die mit den APIs für Bildkennzeichnung, Objekterkennung und ‑tracking verwendet werden können. Gehen Sie dabei so vor:

  1. Wählen Sie ein Modell aus der Sammlung von mit ML Kit kompatiblen Modellen aus.
  2. Laden Sie die .tflite-Modelldatei von der Seite mit den Modelldetails herunter. Wählen Sie nach Möglichkeit ein Modellformat mit Metadaten aus.
  3. In unseren Anleitungen für die Image Labeling API oder die Object Detection and Tracking API erfahren Sie, wie Sie eine Modelldatei mit Ihrem Projekt bündeln und in Ihrer Android- oder iOS-Anwendung verwenden.

Eigenes Modell zur Bildklassifizierung trainieren

Wenn kein vortrainiertes Bildklassifizierungsmodell Ihren Anforderungen entspricht, gibt es verschiedene Möglichkeiten, ein eigenes LiteRT-Modell zu trainieren. Einige davon werden im folgenden Abschnitt beschrieben und näher erläutert.

Optionen zum Trainieren eines eigenen Bildklassifizierungsmodells
AutoML
  • Angeboten über Google Cloud AI
  • Hochmoderne Modelle zur Bildklassifizierung erstellen
  • Leistung und Größe abwägen
TensorFlow-Modell in LiteRT konvertieren
  • Modell mit TensorFlow trainieren und dann in LiteRT konvertieren

AutoML

Bildklassifizierungsmodelle, die mit AutoML trainiert wurden, werden von den benutzerdefinierten Modellen in den APIs Image Labeling und Object Detection and Tracking API unterstützt. Diese APIs unterstützen auch das Herunterladen von Modellen, die in Cloud Storage gehostet werden.

Weitere Informationen zur Verwendung eines mit AutoML trainierten Modells in Ihren Android- und iOS-Apps finden Sie in den Anleitungen für benutzerdefinierte Modelle für die einzelnen APIs, je nach Anwendungsfall.

Mit dem LiteRT-Konverter erstellte Modelle

Wenn Sie ein vorhandenes TensorFlow-Modell zur Bildklassifizierung haben, können Sie es mit dem LiteRT-Konverter konvertieren. Das erstellte Modell muss die folgenden Kompatibilitätsanforderungen erfüllen.

Weitere Informationen zur Verwendung eines LiteRT-Modells in Ihren Android- und iOS-Apps finden Sie in unseren Anleitungen zur Image Labeling API oder zur Object Detection and Tracking API, je nach Anwendungsfall.

Kompatibilität von LiteRT-Modellen

Sie können jedes vortrainierte LiteRT-Modell zur Bildklassifizierung verwenden, sofern es die folgenden Anforderungen erfüllt:

Tensoren

  • Das Modell darf nur einen Eingabetensor mit den folgenden Einschränkungen haben:
    • Die Daten sind im RGB-Pixelformat.
    • Die Daten haben den Typ „UINT8“ oder „FLOAT32“. Wenn der Eingabetensortyp FLOAT32 ist, müssen die NormalizationOptions durch Anhängen von Metadata angegeben werden.
    • Der Tensor hat vier Dimensionen : BxHxWxC. Dabei gilt:
      • B ist die Batchgröße. Er muss 1 sein (Inferenz für größere Batches wird nicht unterstützt).
      • W und H sind die Eingabebreite und -höhe.
      • C ist die Anzahl der erwarteten Channels. Er muss 3 sein.
  • Das Modell muss mindestens einen Ausgabetensor mit N Klassen und entweder 2 oder 4 Dimensionen haben:
    • (1xN)
    • (1x1x1xN)
  • Nur Modelle mit einem Kopf werden vollständig unterstützt. Multi-Head-Modelle können unerwartete Ergebnisse liefern.

Metadaten

Sie können der LiteRT-Datei Metadaten hinzufügen, wie unter Metadaten zu LiteRT-Modellen hinzufügen beschrieben.

Wenn Sie ein Modell mit einem FLOAT32-Eingabetensor verwenden möchten, müssen Sie die NormalizationOptions in den Metadaten angeben.

Wir empfehlen außerdem, diese Metadaten an den Ausgabetensor TensorMetadata anzuhängen:

  • Eine Labelzuordnung, die den Namen jeder Ausgabeklasse als AssociatedFile mit dem Typ TENSOR_AXIS_LABELS angibt (andernfalls können nur die numerischen Ausgabeklassenindexe zurückgegeben werden)
  • Ein Standard-Punktzahl-Grenzwert, unter dem Ergebnisse als zu wenig vertrauenswürdig gelten, um als ProcessUnit mit ScoreThresholdingOptions zurückgegeben zu werden.