Bei der Bildsegmentierung wird ein digitales Bild in mehrere Segmente (Pixelsätze, auch als Bildobjekte bezeichnet) unterteilt. Ziel der Segmentierung ist es, die Darstellung eines Bildes zu vereinfachen und / oder in etwas zu ändern, das aussagekräftiger und leichter zu analysieren ist.
Das folgende Bild zeigt die Ausgabe des Bildsegmentierungsmodells unter Android. Das Modell erstellt mit hoher Genauigkeit eine Maske über den Zielobjekten.
Loslegen
Wenn Sie TensorFlow Lite noch nicht kennen und mit Android oder iOS arbeiten, wird empfohlen, die folgenden Beispielanwendungen zu untersuchen, die Ihnen den Einstieg erleichtern können.
Sie können die Out-of-Box-API aus der TensorFlow Lite Task Library nutzen, um Bildsegmentierungsmodelle in nur wenigen Codezeilen zu integrieren. Sie können das Modell auch mithilfe der TensorFlow Lite Interpreter Java-API integrieren .
Das folgende Android-Beispiel zeigt die Implementierung für beide Methoden als lib_task_api bzw. lib_interpreter .
Wenn Sie eine andere Plattform als Android oder iOS verwenden oder bereits mit den TensorFlow Lite-APIs vertraut sind, können Sie unser Starter-Image-Segmentierungsmodell herunterladen.
Modellbeschreibung
DeepLab ist ein hochmodernes Deep-Learning-Modell für die semantische Bildsegmentierung, bei dem das Ziel darin besteht, jedem Pixel im Eingabebild semantische Bezeichnungen (z. B. Person, Hund, Katze) zuzuweisen.
Wie es funktioniert
Die semantische Bildsegmentierung sagt voraus, ob jedes Pixel eines Bildes einer bestimmten Klasse zugeordnet ist. Dies steht im Gegensatz zur Objekterkennung , bei der Objekte in rechteckigen Bereichen erkannt werden, und der Bildklassifizierung , bei der das Gesamtbild klassifiziert wird.
Die aktuelle Implementierung umfasst die folgenden Funktionen:
- DeepLabv1: Wir verwenden die Atrous-Faltung, um die Auflösung, mit der Feature-Antworten in Deep Convolutional Neural Networks berechnet werden, explizit zu steuern.
- DeepLabv2: Wir verwenden atrous Spatial Pyramid Pooling (ASPP), um Objekte auf mehreren Skalen mit Filtern mit mehreren Abtastraten und effektiven Sichtfeldern robust zu segmentieren.
- DeepLabv3: Wir erweitern das ASPP-Modul um die Funktion auf Bildebene [5, 6], um Informationen mit größerer Reichweite zu erfassen. Wir enthalten auch Parameter für die Chargennormalisierung [7], um das Training zu erleichtern. Insbesondere wenden wir eine atrous Faltung an, um Ausgabemerkmale bei verschiedenen Ausgabeschritten während des Trainings und der Auswertung zu extrahieren, was ein effizientes Training des BN bei einem Ausgabeschritt = 16 ermöglicht und eine hohe Leistung bei einem Ausgabeschritt = 8 während der Bewertung erreicht.
- DeepLabv3 +: Wir erweitern DeepLabv3 um ein einfaches, aber effektives Decodermodul, um die Segmentierungsergebnisse insbesondere entlang der Objektgrenzen zu verfeinern. Darüber hinaus kann man in dieser Codierer-Decodierer-Struktur die Auflösung extrahierter Codierermerkmale willkürlich durch heftige Faltung steuern, um Präzision und Laufzeit abzuwägen.
Leistungsbenchmarks
Leistungsbenchmarkzahlen werden mit dem hier beschriebenen Tool generiert.
Modellname | Modellgröße | Gerät | GPU | Zentralprozessor |
---|---|---|---|---|
Deeplab v3 | 2,7 Mb | Pixel 3 (Android 10) | 16ms | 37ms * |
Pixel 4 (Android 10) | 20ms | 23ms * | ||
iPhone XS (iOS 12.4.1) | 16ms | 25ms ** |
* 4 Threads verwendet.
** 2 Threads, die auf dem iPhone verwendet werden, um das beste Leistungsergebnis zu erzielen.