MLKit

Machine Learning ganz einfach!

Von 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.  

Abbildung 1: ML Kit Anwendungen

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. 

Abbildung 2: Klassischer Machine learning Prozess

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. 

Abbildung 3: Machine learning Prozess mit ML Kit

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.

Abbildung 4: Object Detection Einfach Beispiel
Abbildung 5: Object Detection Einfach Beispiel

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()
Abbildung 6: Object Detection Erweitert
Abbildung 7: Object Detection Erweitert

Beitrag kommentieren

(*) Pflichtfeld