Entwickler Magazin

04/19

Machine Learning mit Python

Autor:
Shirin Elsinghorst

Trainieren eines eigenen Bildklassifikationsmodells mit Keras und TensorFlow
Bildklassifikationsmodelle sind dafür gedacht, Bilder in Klassen einzuteilen. Dabei wollen wir sie meist in Gruppen einteilen, die widerspiegeln, welches Objekt sich auf einem Bild befindet. Zum Beispiel können wir ein Bildklassifikationsmodell trainieren, das „Hund“ von „Katze“ unterscheiden kann, aber natürlich können auch viel komplexere Einteilungen in deutlich mehr Klassen vorgenommen werden.

Im Prinzip kann jede beliebige Gruppeneinteilung vorgenommen werden: Vielleicht wolltet ihr schon immer mal automatisiert Brillenträger von Nicht-Brillenträgern unterscheiden können oder Strandfotos von Bergfotos; eurer Fantasie sind im Prinzip keine Grenzen gesetzt – vorausgesetzt, ihr habt Bilder (in dem Fall eure Daten) zur Hand, mit denen ihr eure Aufgabe mit einem mathematischen Modell trainieren könnt.

Keras und TensorFlow
Das eigentliche Trainieren des Modells ist sehr einfach, denn heute existieren viele Open-Source-Bibliotheken, die leicht zu bedienen sind und mit denen auch Einsteiger schnell Erfolge erzielen können. Eine dieser Bibliotheken, anhand derer ich hier ein Beispiel zeige, ist Keras mit TensorFlow Backend. Keras ist ein Open-Source-Deep-Learning-API, mit dem einfach, schnell und flexibel neuronale Netze trainiert werden können. Das API ist modular aufgebaut und funktioniert ähnlich wie ein LEGOSystem für Machine Learning: Neuronale Netze setzen sich aus aufeinander aufbauenden Schichten verschiedener Typen zusammen und können so beliebig komplex entworfen werden. Die eigentlichen Berechnungen werden nicht von Keras selbst durchgeführt, sondern von einem darunterliegenden Backend. TensorFlow ist hierfür inzwischen der Standard und Keras ist Teil der TensorFlow Core Library. Die Bibliotheken sind also optimal darauf ausgelegt, miteinander verwendet zu werden, denn das Prototypisieren von neuronalen Netzen ist mit Keras wesentlich einfacher als mit TensorFlow direkt.

Künstliche neuronale Netze
Künstliche neuronale Netze bestehen aus Knoten, die wir als Analogie zu menschlichen Nervenzellen sehen können. Diese Knoten sind in Schichten angeordnet. Ein neuronales Netz beginnt immer mit einer Eingangsschicht, in die die vorhandenen Daten einfließen – der sogenannte Input. Am Ende haben wir eine Ausgangsschicht, die das Ergebnis darstellt – der sogenannte Output. Dazwischen können sich beliebig viele weitere Schichten befinden, die wir verborgene Schichten (Hidden Layers) nennen. Deep Learning beschreibt maschinelles Lernen mit großen neuronalen Netzen. Wenn es gilt, sehr komplexe Probleme mit vielen Abstraktionsebenen zu lösen, ist Deep Learning besonders erfolgreich, wie zum Beispiel in der Bilderkennung.

Vollständiger Artikel

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen

Hinweis: In Ihrem Browser ist JavaScript deaktiviert. Für eine bessere und fehlerfreie Nutzung dieser Webseite, aktivieren Sie bitte JavaScript in Ihrem Browser.