Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
ws1920:projekt_-_bericht [2020/04/02 20:38] justanni [1. Einleitung] |
ws1920:projekt_-_bericht [2020/04/02 20:45] (aktuell) justanni |
||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
====== 2. Projektbestandteile ====== | ====== 2. Projektbestandteile ====== | ||
- | Unser Projekt besteht grob gesagt aus den folgenden Skripten: | + | Unser Projekt besteht aus den folgenden Python-Skripten bzw. Teilen: |
* Skript zum Aufsetzen + Trainieren des Neuronalen Netzwerks | * Skript zum Aufsetzen + Trainieren des Neuronalen Netzwerks | ||
Zeile 30: | Zeile 30: | ||
=== ⇒ Exkurs: Warum braucht APOLLON Machine Learning + CNN? === | === ⇒ Exkurs: Warum braucht APOLLON Machine Learning + CNN? === | ||
- | Unsere Problemstellung bei APOLLON ist relativ komplex, der Computer soll Emotionen von Menschen anhand ihres Gesichts erkennen. (Häufig fällt das ja schon manchen Menschen nicht so leicht, LOL) | + | Unsere Problemstellung bei APOLLON ist ja relativ komplex, schließlich soll ein Computer Emotionen von Menschen anhand ihres Gesichts erkennen. (Häufig fällt das ja schon manchen Menschen nicht so leicht, LOL) |
- | Wir haben uns entschieden, dies anhand Fotos, die Menschen von ihrem Gesicht machen (sogenannte Selfies) zu operationalisieren. Da Nutzer*innen eigene Selfies an APOLLON schicken, muss unser Programm in der Lage sein, Emotionen auf **neuen, dem Programm unbekannten** Bilder zu erkennen und zu klassifizieren. Einfaches "auswendig" lernen reicht also nicht! Eine Generalisierung ist erforderlich, welches Machine Learning Ansätze ermöglichen. Beim Maschine Learning füttert man einen Algorithmus mit einem Trainingsdatensatzes. Ohne dass wir weitere Anweisungen geben müssen, "erkennt" der Algorithmus im Rahmen des Trainings über die Zeit Muster in dem Datensatz und entwickelt und optimiert ein statistisches Modell. Anhand des Modells können (Das heißt auch, dass Machine Learning genau genommen auch "nur" Statistik ist!) | + | Wir haben uns entschieden, dies anhand Fotos, die Menschen von ihrem Gesicht machen (sogenannte Selfies) zu operationalisieren. Da Nutzer*innen eigene Selfies an APOLLON schicken, muss unser Programm in der Lage sein, Emotionen auf **neuen, dem Programm unbekannten** Bilder zu erkennen und zu klassifizieren. Einfaches "auswendig" lernen reicht also nicht! Eine Generalisierung ist erforderlich. |
+ | Dies kann man mit Machine Learning Ansätze ermöglichen. Beim Maschine Learning füttert man einen Algorithmus mit einem (gelabelten) Trainingsdatensatzes. Ohne dass wir weitere Anweisungen geben müssen, "erkennt" der Algorithmus beim Trainings über die Zeit Muster in dem Datensatz und entwickelt und optimiert ein statistisches Modell. Wenn wir mit dem Modell zufrieden sind, können wir es speichern und dann damit neue Bilder (mit einer gewissen Wahrscheinlichkeit) klassifizieren. (Das heißt auch, dass Machine Learning genau genommen auch "nur" Statistik ist!) | ||
- | Es gibt verschiedene Algorithmen, die für verschiedene Datenstrukturen besonders gut geeignet sind. Da wir Fotos benutzen, enthalten unsere Daten einiges an Information (48x48 Pixel, die alle einen (Grau-)Wert haben und dann auch nicht für sich betrachtet werden können, sondern in Clustern angeordnet sind etc.). Um solche Daten mit Machine Learning möglichst gut zu Klassifizieren, eigenen sich ** Convolutional Neural Networks**. So eins haben wir auch bei Apollon genutzt. Unser Netzwerk bekommt als Input eine zwei-dimensionale Matrix (das jeweilige Foto in Graustufen), und wird dann durch mehrere convolutional layers, pooling layers und zum Schluss fully-connected layers geschickt (genauer Netzwerk-Aufbau siehe weiter unten). Das besondere an den convolutional Layers ist, dass sie sozusagen kleine Filterkernel über den Input legen (ähnlich wie rezeptive Felder in der Biologie), und so Features extrahieren können. In den Pooling layers werden nicht benötigte Informationen verworfen. | + | Es gibt verschiedene Algorithmen, die für verschiedene Datenstrukturen besonders gut geeignet sind. Da wir Fotos benutzen, enthalten unsere Daten einiges an Information (48x48 Pixel, die alle einen (Grau-)Wert haben und dann auch nicht für sich betrachtet werden können, sondern in Clustern angeordnet sind etc.). |
+ | Um solche Daten mit Machine Learning möglichst gut zu Klassifizieren, eigenen sich ** Convolutional Neural Networks**. So eins haben wir auch bei Apollon genutzt, mit Keras ist die Umsetzung relativ einfach. | ||
+ | Unser Netzwerk bekommt als Input eine zwei-dimensionale Matrix (das jeweilige Foto in Graustufen). Dieses Bild wird dann durch mehrere convolutional layers, pooling layers und zum Schluss fully-connected layers geschickt (genauer Netzwerk-Aufbau siehe weiter unten). Das besondere an den convolutional Layers ist, dass sie sozusagen kleine Filterkernel über den Input legen (ähnlich wie rezeptive Felder in der Biologie), und so Features extrahieren können. In den Pooling layers werden nicht benötigte Informationen verworfen. Am Ende gibt uns unser Netz aus, mit welcher jeweiligen Wahrscheinlichkeit das neue Bild die Emotion zeigt. | ||