iX 3/2019
S. 136
Praxis
Mobile Computing
Aufmacherbild

Trainierte Modelle in mobilen Apps einsetzen

Gelehrig

Smartphones besitzen inzwischen eine ausreichend hohe Rechenleistung, um trainierte ML-Modelle direkt ausführen zu können. Mit CoreML und TensorFlow Lite existieren Frameworks, um Machine Learning auf mobile iOS- und Android-Geräte zu bringen.

Die Hauptgründe, ein Machine-Learning-Modell innerhalb einer mobilen Anwendung laufen zu lassen, heißen Privatsphäre, Geschwindigkeit und Verfügbarkeit. Fotos und Texte müssen nicht mehr das Gerät verlassen, um beispielsweise Personen oder Gegenstände auf einem Bild zu erkennen. Die Internetverbindung und deren Verfügbarkeit spielen keine Rolle, da die Anwendung keine Daten überträgt und somit nicht auf ein Ergebnis wartet. Das wirkt sich auf die Geschwindigkeit aus und ermöglicht Anwendungen, die große Datenmengen oder Videos mit Machine Learning verarbeiten. Zusätzlich erübrigt sich eine skalierbare Serverfarm, die für die Erkennung zuständig ist. Jedoch sollte man die Größe der Modelle und die benötigte Rechenleistung auf dem mobilen Endgerät beachten.

Ein mit leistungsstarker Hardware ausgestatteter Rechner trainiert das Modell anhand von Trainings- und Zieldaten. Das Ergebnis lässt sich testen und weiterverwenden. Das kann entweder auf einem Server erfolgen oder als konvertiertes Modell auf dem Smartphone. Sowohl Android als auch iOS bieten die Möglichkeit, bereits trainierte oder eigens erstellte Modelle in eine Anwendung einzubinden. CoreML ist nur für iOS verfügbar, während TensorFlow Mobile und TensorFlow Lite beide Welten unterstützen.

Kern und Apfel

Machine Learning aus dem Hause Apple: die Architektur von CoreML (Abb. 1)

Apple hat 2017 auf der Entwicklerkonferenz WWDC 2017 mit den CoreML-Tools eine Software zum Umwandeln trainierter Modelle für CoreML vorgestellt. Zudem existieren bereits trainierte Modelle zum Verwenden in eigenen Anwendungen. Neben iOS lässt sich die Bibliothek unter macOS, watchOS und tvOS nutzen.

Zwischen CoreML und der Hardware liegen das Accelerate Framework mit den Basic Neural Network Subroutines (BNNS) und die Metal Performance Shaders (siehe Abbildung 1). Letztere sind die Schnittstelle zur Grafikkarte (GPU), während das Accelerate Framework Vektorrechnungen auf der CPU ausführt. iOS entscheidet, welcher Layer eines Machine-Learning-Modells auf der CPU oder GPU läuft. Die Anwendung wiederum muss nicht direkt auf CoreML zugreifen, sondern kann verschiedene Frameworks nutzen: das Vision Framework zur Bildanalyse, Natural Language für die Verarbeitung natürlicher Sprache und das GameplayKit-Framework für die Auswertung von Entscheidungsbäumen.

Schlankes TensorFlow

Unterschiedliche Versionen für Android und iOS: die Architektur von TensorFlow Lite unter Android und iOS (Abb. 2)

Im Moment gibt es mit TensorFlow Mobile und TensorFlow Lite zwei für mobile und Embedded-Geräte zugeschnittene Versionen des Frameworks, die auf Android, iOS und auch auf einem Raspberry Pi laufen. TensorFlow Lite ist seit Dezember 2017 die Weiterentwicklung von TensorFlow Mobile und steht im Fokus dieses Artikels. Da es sich noch in der Entwicklung befindet, deckt es im Gegensatz zum Vorgänger noch nicht alle Anwendungsfälle ab und kennt nicht alle TensorFlow-Operatoren. Jedoch sind die Applikationen kleiner, haben weniger Abhängigkeiten und eine bessere Leistung. Zusätzlich unterstützt TensorFlow Lite ab Android 8.1 (API-Level 27) die Hardwarebeschleunigung mit der Android Neural Networks API.

Der TensorFlow Lite Optimizing Converter (TOCO) konvertiert ein trainiertes TensorFlow-Modell in ein TensorFlow-Lite-Modell (.tflite). Für Android existiert eine Java-Schnittstelle zum Einbinden der C++-API. Die C++-Bibliothek existiert sowohl für Android als auch für iOS. Sie lädt das TensorFlow-Lite-Modell und ruft den Interpreter auf, der das Modell und die TensorFlow-Operatoren ausführt. Auf bestimmten Android-Geräten nutzt der Interpreter die Hardwarebeschleunigung über die Android Neural Networks API.

Beispiel Objekterkennung

Für das erste Beispiel beschränkt sich der Artikel auf ein bereits trainiertes Modell zur Erkennung von Objekten in Bildern, konkret das Inception-V3-Modell. Es erkennt 1000 Objekte wie Bäume, Tiere, Menschen und Fahrzeuge. Mit etwas weniger als 100 MByte ist es relativ klein und hat eine geringe Fehlerrate. Das Modell listet das richtige Objekt mit einer Wahrscheinlichkeit von 96,54 Prozent innerhalb der Top-5-Vorschläge.