Core ML verstehen
Videovortrag: Machine Learning für iOS-Applikationen
Welche beeindruckenden Ergebnisse Apples neue Core ML-Technologie abliefern kann, zeigen zahlreiche Entwickler-Videos, die den Einsatz kleiner Testapplikationen demonstrieren, die mit Hilfe der von Apple bereitgestellten Beispiel-Modelle kompiliert wurden.
So bietet Cupertino auf seinem Entwickler-Portal mehrere ML-Pakete an, die Objekte vor dem Sucher der iPhone-Kamera erkennen und identifizieren können. Das nur 5MB kleine Core ML-Model „SqueezeNet“ ist etwa in der Lage Live-Bilder einer von rund 1000 unterschiedlichen Kategorien wie Bäumen, Tiere, Lebensmittel, Menschen und Co. zuzuordnen.
Doch wie lassen sich die Dateien sinnvoll in eigenen iOS-Applikationen einsetzen? Eine Frage, die Meghan Kane jetzt in dem kostenlos verfügbaren Videovortrag „Bringing Machine Learning to your iOS Apps“ beantwortet.
Die ehemalige SoundCloud-Entwicklerin erklärt wann der Einsatz von Machine Learning-Technologien Sinn macht, schaut sich Apples WWDC-Beispiel an und empfiehlt Werkzeuge, die die Arbeit mit der neuen iOS-Technologie vereinfachen können. Eine Videoempfehlung, für die ihr 40 Minuten Freizeit einplanen müsst.
Was hinter Machine Learning, ANN, KDD, Data Mining, etc steckt weiß ich. Aber wie funktioniert die ML Funktionen hier? Ist das ein Service des Systems (App schickt Bild an API, API antwortet mit erkannten Objekten) oder bietet das System Klassen und Bibliotheken rund um ML mit denen die Apps selber lernen können? Gibt es also z.B. Klassen für die Erstellung eines ANN mit denen die App dann selber Bilder verarbeiten kann, oder findet die Verarbeitung „nur“ auf der Seite des Systems statt?
Core ML kann sogar mit bestehenden Modellen umgehen, bzw. kommt Xcode mit Tools um z.B. mit scikit oder Caffe erstellte Modelle zu konvertieren und direkt weiter nutzen zu können, falls du auf bestehende ANN zurückgreifen willst.
Unabhängig davon gibt es im Vision Framework aber auch dedizierte APIs zu Gesicht-/Objekt-/Lageerkennung etc. als API, sowie Foundation für z.B. Spracherkennung.
Core ML liegt in der Architektur eine Ebene unter den von dir erwähnten Services.
Unterhalb CoreML kannst Du weiterhin direkt auf low level-Routinen für BNNS zugreifen oder auch Berechnungen auf die Metal Shaders auslagern.
CoreML bietet lediglich eine Schnittstelle, die eigene oder von Apple zur Verfügung gestellte Modelle mit Daten füttert und die entsprechenden Vorhersagen dazu ausspuckt. Dafür muss das Modell aber immer noch unabhängig von CoreML trainiert und in das passende Format umgerechnet werden. Unterstützt werden bisher unter anderem neuronale Netze aus Cafe und Keras oder Bäume aus XGBoost. Insofern man einen eigenen Konvertierer schreibt, kann man auch Modelle einbinden, die bisher noch nicht unterstützt werden.
In der Praxis sieht das also so aus, dass ich auf einem leistungsfähigen Rechner, beispielsweise, mein neuronales Netz mit Keras trainiere, speichere und schließlich in ein CoreML-Modell konvertiere. Das kann ich dann in meine App einbinden, die dann die Eingabe des Netzes durch CoreML an das Modell weiterreicht und die Ausgabe von CoreML erhält.
5 der 6 ML-Pakete haben die gleiche Beschreibung. „Erkennt dominantes Objekt aus Kategorien“. Hab schon keine Lust weiter zu lesen.
dann lass es..
Wieso?
Die Einbindung ist allerdings komplizierter als man denken mag und definitiv nichts für Anfänger.