© Andrey Suslov/Shutterstock.com
Entwickler Magazin
Trainieren eines eigenen Bildklassifikationsmodells mit Keras und TensorFlow

Machine Learning mit Python

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.

Shirin Glander


Quellcode zum Download

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 [1]. 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 LEGO-System 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.

Convolutional Neural Networks zur Bilderkennung

Bildklassifikationsmodelle werden heutzutage meist mit Convolutional Neural Networks (CNNs) trainiert, einem speziellen Typ von neuronalen Netzen. CNNs...

Entwickler Magazin
Trainieren eines eigenen Bildklassifikationsmodells mit Keras und TensorFlow

Machine Learning mit Python

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.

Shirin Glander


Quellcode zum Download

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 [1]. 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 LEGO-System 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.

Convolutional Neural Networks zur Bilderkennung

Bildklassifikationsmodelle werden heutzutage meist mit Convolutional Neural Networks (CNNs) trainiert, einem speziellen Typ von neuronalen Netzen. CNNs...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang