Interview mit Shirin Glander zum ML Summit 2018

Machine Learning: „Für maschinelle Bilderkennung braucht man kein Mathestudium“

Ann-Cathrin Klose

© Shutterstock.com / Julia Tim

Bilderkennung mit neuronalen Netzen ist heute ein großer Trend. Wie funktioniert das und wie gut muss man sich dafür mit Machine Learning auskennen? Wir haben Shirin Glander, Data Scientist bei codecentric, nach Technologien, Trends und Tipps für die maschinelle Bilderkennung mit neuronalen Netzen gefragt.

Entwickler: Neuronale Netze haben die maschinelle Bilderkennung ja deutlich voran gebracht. Wie leistungsfähig ist die maschinelle Bilderkennung heute denn wirklich, wo liegen aktuell noch Grenzen?

JAXenter: Bilderkennung mit neuronalen Netzen hat in den letzten Jahren enorme Fortschritte gemacht! Das liegt, wie vieles im Bereich der Künstlichen Intelligenz, zum Großteil an der großen Menge an Trainingsdaten, die wir (oder in den meisten Fällen Google und Facebook) inzwischen haben und an der gestiegenen Rechenleistung (GPUs und TPUs). Erst mit dieser Kombination konnten komplexe Zusammenhänge erst wirklich von Maschinen gelernt werden.

Es gibt viele vortrainierte Netze, wie GoogLeNet oder VGG ImageNet und extrem viele Anwendungsgebiete für Bilderkennung: Objekte erkennen, Bilder klassifizieren, Gesichter und Handlungen erkennen und vieles mehr. Die Performance von diesen neuronalen Netzen liegt dabei zumindest für „Standard“-Aufgaben auf einem ähnlichen Niveau, wie wir Menschen es können. Mit Standard meine ich dabei Objekte oder Kategorien, für die es viele Trainingsbilder gibt. Das sind in der Regel Alltagsobjekte.

Bilderkennung mit neuronalen Netzen hat in den letzten Jahren enorme Fortschritte gemacht!

Schwieriger wird es aber schon, wenn diese Alltagsobjekte klein oder in einer ungewöhnlichen Art und Weise auftreten oder wenn es sehr viel Variationen innerhalb einer Kategorie gibt. Und spätestens, wenn wir ein sehr spezifisches Objekt erkennen wollen, zum Beispiel ein Teil einer industriellen Anlage, das sonst kaum vorkommt, kommen die vortrainierten Netze nicht weit.

Aber auch hier ist die Entwicklung soweit, dass man mit eigenen Trainingsbildern in ausreichender Menge und Qualität sehr gute Ergebnisse erzielen kann, indem man ein eigenes Modell von Grund auf selber trainiert oder ein vortrainiertes Netz anpasst.

Problematisch sind heute auch (noch?) die sogenannten Adversarial Images bzw. Attacks. Dabei handelt es sich um Bilder, die für uns ganz unauffällig aussehen und zum Beispiel eine ganz normale Katze zeigen. Einige minimale Änderungen in den Pixeln, die wir nicht wahrnehmen können, führen aber dazu, dass ein Neuronales Netz zum Beispiel statt der Katze einen Hund sieht. So eine Verwechslung kann aus Versehen passieren oder absichtlich herbeigeführt werden.

JAXenter: Wie funktioniert die Klassifikation von Bildern durch neuronale Netze?

Shirin Glander: Die allermeisten Lernmethoden für die Bilderkennung sind heute aus dem überwachten (supervised) Lernen. Dafür brauchen wir zunächst eine große Menge an Trainingsbildern, von denen wir das Ergebnis (also was sie darstellen, zum Beispiel einen Hund oder eine Katze) kennen. Dieses Ergebnis fließt dann als Label oder Klasse in das Modell, zum Beispiel ein neuronales Netz ein. Das neuronale Netz kann dann Bilder auch nur in diese vorher definierten Klassen einteilen.

Künstliche neuronale Netze sind aus Knoten und Schichten aufgebaut. Die Information, die im Falle von Bilderkennung in das Netz einfließt sind die Pixelwerte der Bilder; bei schwarz-weiß Bildern gibt es einen Kanal mit Pixelwerten von 0 (schwarz) bis 255 (weiß), bei bunten Bildern gibt es dieselben Pixelwerte aber in der Regel in drei Kanälen (RGB). In diesem Netz fließt die Information dann von Knoten aus einer Schicht zu Knoten in einer anderen Schicht und wird in jedem Schritt verarbeitet. Diese Verarbeitung passiert mit Gewichten und Aktivierungsfunktionen, bis wir schließlich in der letzten Schicht bei einem Knoten landen, der der erkannten Klasse (zum Beispiel „Hund“) entspricht.

Wie in jedem neuronalen Netz werden die Gewichte über den Lernprozess optimiert, um die bestmögliche mathematische Abbildung der Klassen zu finden. Wir können uns die Schichten dabei als Abstraktionsebenen vorstellen: In der ersten Schicht werden zunächst grobe Muster (meist Kanten) in den Bildern erkannt und weitere Schichten erkennen dann immer komplexere Muster oder Abstraktionen der Bilder.

JAXenter: Gibt es verschiedene Arten von neuronalen Netzen, die dafür zum Einsatz kommen?

Shirin Glander: Für die Bilderkennung werden in dem meisten Fällen Convolutional Neural Networks (CNNs oder ConvNets) verwendet. CNNs sind sehr gut darin, komplexe Aufgaben wie die Bildklassifikation oder Objekterkennung zu lösen und sind dabei auch verhältnismäßig schnell. Die verschiedenen neuronalen Netze unterscheiden sich eher in ihrem Aufbau, also der Anzahl und Größe der Schichten und der verwendeten Aktivierungs- und Optimierungsfunktionen.

Tendenziell sind die größeren und komplexeren CNNs besser, aber diese Daumenregel gilt nicht in allen Fällen. Auch sind CNNs in der Lage die Feature-Extraktion mitzulernen. Wir müssen also nicht manuell nach Kanten, Kontraste, etc. suchen und unsere Bilder vorverarbeiten.

ür die Bilderkennung werden in dem meisten Fällen Convolutional Neural Networks verwendet.

CNNs bestehen aus verschiedenen Arten von Schichten: sogenannte Convolutional Layer, die die mathematische Faltung vornehmen und Pooling Layer, die die Informationen verdichten. Außerdem folgen vor dem Output Layer in der Regel Dense oder Fully Connected Layer. In den Convolutional Layern sind immer nur kleine Bildabschnitte miteinander verbunden, während in Dense Layern alle Knoten miteinander verbunden sind. Außerdem wird die Faltung für diese kleinen Bildabschnitte mit einem überlappenden Sliding Window – den sogenannten Filtern oder Filter-Kernels – für alle Bereiche des Bildes vorgenommen, zum Beispiel 5×5 oder 3×3 große Filter.

Einige der bekanntesten und zu ihrer Zeit besten Modelle zur Bilderkennung sind LeNet-5 (1998), AlexNet (2012), ZFNet (2013), VGG16/VGG19 (2014), GoogLeNet/Inception (2014), ResNet (2015) und Xception (2016). Diese neuronalen Netze sind über die Jahre komplexer und größer geworden; so hat VGG16/VGG19 16 bzw. 19 Layer, Inception hat 22 und Xception schon 36 Convoutional Layer. ResNet-152 hat sogar noch mehr Layer, nämlich 152. Neben der reinen Anzahl an Layern haben diese Netze aber noch zusätzliche mathematische Tricks implementiert, um bekannte Probleme zu adressieren, zum Beispiel das Vanishing Gradient-Problem. Denn, wie bereits erwähnt, führt die reine Erhöhung der Layer-Anzahl nicht automatisch zu einer besseren Klassifikation von Testbildern.

JAXenter: Wohin bewegt sich die Technologie derzeit, gab es hier in der letzten Zeit größere Durchbrüche oder gibt es eine besonders spannende Entwicklung auf dem Gebiet, die du für vielversprechend hältst?

Shirin Glander: Traditionell brauchte man für gute Bildklassifkation eine extrem große Zahl an Trainingsbildern, die alle händisch mit Labeln versehen werden mussten. Das war natürlich ein Bottleneck und war ein Problem für Anwendbarkeit bei vielen Problemen. Seit es aber so gute und umfangreiche vortrainierte Modelle gibt, ist es viel einfacher geworden, auch mit wenig Trainingsdaten effektive Modelle zu bekommen. Das wird dann Transfer Learning genannt.

Darüber hinaus gibt es inzwischen auch sehr viele Anbieter von Modellen für verschiedenste Zwecke, von Bildklassifikation und Objekterkennung bis Gesichtserkennung und vielem mehr. Diese Modelle können ganz einfach über ein API oder aus einem Docker-Container heraus auf die eigenen Bilder oder Videos angewendet werden. Ein paar davon, wie Facebooks Detectron, stellen wir in unserem codecentric.AI YouTube Kanal vor.

Besonders interessant finde ich auch die Entwicklung, Modelle kleiner und effizienter zu machen, sodass sie zum Beispiel einfacher auch auf mobilen Endgeräten laufen können. Bisher ist es ja so, dass man Modelle zur Bildklassifikation eigentlich nur mit leistungsfähigen GPUs trainieren kann, weil sie so viel Computerpower brauchen. Und selbst das Abfragen von neuen Daten mit einem trainierten Modell (zum Beispiel für Bilderkennung in Apps) braucht noch relativ viel Memory. In diesem Gebiet tut sich gerade recht viel um sogenannte MobileNets, die etwas abgewandelte Netzwerk-Architekturen haben, die sie Memory-effizienter machen.

Und natürlich spielt Bilderkennung auch in zukunftsträchtigen Projekten, wie Driverless Cars, Smart Cities oder bei der Entwicklung von Amazons Auslieferungs-Dronen eine zentrale Rolle. In diesen Gebieten wird also ebenfalls viel geforscht und ständig Neues entwickelt.

JAXenter: Welche Tools würdest du empfehlen, um selbst in die Bildklassifikation einzusteigen?

Shirin Glander: Zwei der zurzeit populärsten Frameworks für das Trainieren von neuronalen Netzen sind Keras (mit TensorFlow) und PyTorch.

Wenn man nur bestehende Modelle nutzen möchte, braucht man keine Kenntnisse im Machine Learning.

Keras ist eine high-level Schnittstelle für verschiedene Deep Learning-Frameworks, der Standard ist aber TensorFlow. Mit Keras ist es sehr leicht neuronale Netze zu prototypisieren und schnell Ergebnisse zu sehen. PyTorch ist ebenfalls ein Deep Learning-Framework, dass ähnlich wie Keras für das Trainieren von großen Netzen mit GPU-Unterstützung optimiert ist.

Beide eignen sich gut für den Einstieg in die Bildklassifikation, da es für sie eine gute Dokumentation und Anleitungen mit Beispieldaten und -workflows gibt. Eine sehr gute Ressource, um praktisch in die Bildklassifiaktion einzusteigen, ist dabei der fast.ai-Kurs. Dieser Kurs ist kostenlos im Internet zu finden und besteht aus 36 Stunden Videomaterial, sowie hands-on Beispielen und Übungen.

JAXenter: Muss man Experte für Machine Learning sein, um Bilder zu klassifizieren?

Shirin Glander: Wenn man nur bestehende Modelle nutzen möchte, braucht man keine Kenntnisse im Machine Learning. Sobald man aber selber ein Modell trainieren möchte, kommt man um gewisse Grundkenntnisse der Programmierung und des Aufbaus von neuronalen Netzen nicht herum. Auch ist es sinnvoll, wenn man ein Grundverständnis davon hat, wie neuronale Netze lernen, um Hyperparameter sinnvoll anpassen und optimieren zu können. Für die praktische Anwendung muss man auf jeden Fall kein Mathestudium hinter sich haben, bei vielem kommt man schon durch Ausprobieren und „educated guessing“ recht weit. Und durch die vielen frei zugänglichen Kurse und Tutorials in dem Gebiet ist es heute leichter als nie zuvor, sich das nötige Wissen relativ schnell anzueignen.

Vielen Dank für das Interview!

Shirin Glander arbeitet als Data Scientist bei codecentric. Sie hat in der Bioinformatik promoviert und nutzt von Statistik bis Machine Learning verschiedenste Methoden, um aus Daten spannende und neue Erkenntnisse zu gewinnen. Regelmäßig bloggt sie über Data Science Themen und gibt Schulungen zu Deep Learning mit Keras.
Geschrieben von
Ann-Cathrin Klose
Ann-Cathrin Klose
Ann-Cathrin Klose hat allgemeine Sprachwissenschaft, Geschichte und Philosophie an der Johannes Gutenberg-Universität Mainz studiert. Bereits seit Februar 2015 arbeitete sie als redaktionelle Assistentin bei Software & Support Media und ist seit Oktober 2017 Redakteurin. Zuvor war sie als freie Autorin tätig, ihre ersten redaktionellen Erfahrungen hat sie bei einer Tageszeitung gesammelt.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: