Machine Learning ganz einfach!
Von Michelle Markl am 21.06.2022
Mit dem MachineLearning Kit (ML Kit), entwickelt von Google, können schnell und einfach MachineLearning-Konzepte in eine mobile Applikation integriert werden. Die Dokumentation gibt eine Anleitung zur Entwicklung von ML Kit Applikation auf Android (Java/Kotlin) und iOS (Objective-C/Swift) Applikation. Abbildung 1 zeigt eine Auswahl von Apps, welche das MLKit bereits integriert haben.
Warum ML Kit?
Auf Abbildung 2 wird ein klassischer Machine learning Prozess dargestellt, welcher aus 7 Phasen besteht. Die einzelnen Schritte dieses Prozess können sehr viel Zeit in Anspruch nehmen um ein passendes Modell zu entwickeln. Der einzelne Schritt „Daten sammeln“ kann bereits einige Tage ein Anspruch nehmen.
Das MLKit bündelt bereits viele dieser Aufgaben, wie auf Abbildung 3 zu sehen ist. Zusammengefasst reduziert das MLKit den Prozess auf 2 Phasen. So lassen sich MachineLearning Konzepte mit wenig Code in mobile Applikationen integrieren.
Worin kann ML Kit unterstützen?
Insgesamt bietet das Framework 12 APIs, welche bei den einzelnen Phasen unterstützen. Jede API bietet eine Lösung für unterschiedliche Probleme.
Vision APIs
- Barcode Scanning
- Face Detection
- Image Labeling
- Object Detection and tracking
- Text Recognition
- Digital Ink Recognition
- Pose Detection
- Selfie Segmentation
Natural Language APIs
- Smart Replay
- Entity Extraction
- Language ID
- On-Device Translation
ML Kit on-device oder cloud-based?
Durch die cloud-based und/oder on-device APIs lassen sich ML-Techniken einfach anwenden. Mithilfe von cloud-based APIs, unterstützt durch Firebase, lassen sich bessere/genauere Resultate erzielen. Hingegen kann bei on-device unterstützen APIs eine bessere Performance erzielt werden. Dies ermöglicht die Entwicklung von Echtzeitanwendungen. Ein Beispiel für eine Echtzeit-Anwendung ist beispielsweise eine Gesichtserkennung auf Live-Fotos/Videos (z.B: Snapchat).
Wie wird ML Kit implementiert?
Die Implementierung folgt einem gewissen Schema, welches sich (mit kleinen Abweichungen) auf alle APIs übertragen lässt. Die aufgeführten Schritte können als Checkliste angesehen werden um eine ML Kit-Anwendung zu entwickeln. Im folgenden wird die Struktur anhand der Object Detection and Tracking API dargestellt.
# 1: Integrieren der Dependency in app/build.gridle
dependencies {
// ...
implementation 'com.google.mlkit:object-detection:17.0.0'
}
# 2: Optionen/Einstellungen des jeweiligen Modells festlegen
val options = ObjectDetectorOptions.Builder()
.setDetectorMode(ObjectDetectorOptions.SINGLE_IMAGE_MODE)
.enableMultipleObjects()
.enableClassification() // Optional
.build()
#3: Instanz des Models erzeugen
val objectDetector = ObjectDetection.getClient(options)
#4: Handelt es sich um eine Vision API muss das Bild vorbereitet werden
Bilder müssen zu einem InputImage konvertiert werden um weiterverarbeitet werden zu können.
#5: MachineLearning Modell anwenden
objectDetector.process(image)
.addOnSuccessListener { detectedObjects ->
// Task completed successfully
// ...
}
.addOnFailureListener { e ->
// Task failed with an exception
// ...
}
Beispiel: Which Plant is this?
Mit der oben aufgelisteten Checkliste ist das Basis Model für die Objekterkennung implementiert worden. Auf Abbildung 4 und 5 ist das Ergebnis der Implementierung der “Object Detection and Tracking”-API zu erkennen.
Die genutzte ML Kit API “Object Detection and Tracking” kann durch ein TensorFlow-Model erweitert werden. Für die Abbildungen 6 und 7 ist ein TensorFlow-Model integriert worden, welches Pflanzen kategorisiert. Das TensorFlow-Model ist mit folgendem Code in die Applikation eingefügt worden.
localModel = LocalModel.Builder()
.setAssetFilePath("lite-model_aiy_vision_classifier_plants_V1_3.tflite")
.build()
// Set TensorFlow model in the options
objOptions = CustomObjectDetectorOptions.Builder(localModel)
.setDetectorMode(CustomObjectDetectorOptions.SINGLE_IMAGE_MODE)
.enableMultipleObjects()
.enableClassification()
.setClassificationConfidenceThreshold(0f)
.setMaxPerObjectLabelCount(3)
.build()
The comments are closed.