Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1920:projekt_-_bericht

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1920:projekt_-_bericht [2020/04/02 18:05]
justanni
ws1920:projekt_-_bericht [2020/04/02 20:45] (aktuell)
justanni
Zeile 1: Zeile 1:
 ====== 1. Einleitung ====== ====== 1. Einleitung ======
  
-{{ :​ws1920:​apollon_overview.png?​200|}}+{{:​ws1920:​apollon_overview.png?​300 |}}
  
 Der Name unseres Projektes, **Apollon** steht für affective, personal, online, located, laudable, overdue und network. Diese Wörter haben wir zusammen ausgewählt,​ weil sie unser Projekt sehr gut beschreiben. Die Anfangsbuchstaben der Wörter bilden unseren Projekt Namen **Apollon**. Dieser ist in der griechischen und römischen Mythologie der Gott des Lichts, der Heilung und der **Musik**. Die Musik spielt in unserem Projekt eine bedeutsame Rolle, weshalb wir den Namen so wählten. Der Name unseres Projektes, **Apollon** steht für affective, personal, online, located, laudable, overdue und network. Diese Wörter haben wir zusammen ausgewählt,​ weil sie unser Projekt sehr gut beschreiben. Die Anfangsbuchstaben der Wörter bilden unseren Projekt Namen **Apollon**. Dieser ist in der griechischen und römischen Mythologie der Gott des Lichts, der Heilung und der **Musik**. Die Musik spielt in unserem Projekt eine bedeutsame Rolle, weshalb wir den Namen so wählten.
Zeile 13: Zeile 13:
 ====== 2. Projektbestandteile ====== ====== 2. Projektbestandteile ======
  
-Unser Projekt besteht ​grob gesagt ​aus zwei verschieden ​Skripten:+Unser Projekt besteht aus den folgenden Python-Skripten ​bzw. Teilen:
  
-* **Apollon-Programm** (hier sind die einzelnen Bestandteile des Projekts gelistet)+* Skript zum Aufsetzen + Trainieren des Neuronalen Netzwerks 
 + 
 +* **Apollon-Programm** (hier sind die einzelnen Bestandteile des Projekts gelistet, als Funktionen)
  
 * **Apollon-Bot** (quasi die Oberfläche,​ welcher das Apollon-Programm dann aufruft und ausführt) * **Apollon-Bot** (quasi die Oberfläche,​ welcher das Apollon-Programm dann aufruft und ausführt)
Zeile 23: Zeile 25:
 ===== 2.1 Neuronales Netzwerk zur Emotionserkennung ===== ===== 2.1 Neuronales Netzwerk zur Emotionserkennung =====
  
-Bevor wir euch erklären, **wie** wir konkret bei APOLLON eingesetzt haben, gibt es erstmal eine kurze Erklären ​Alle, die sich mit Machine Learning schon auskennen, können gerne den nächsten Absatz überspringen.+Bevor wir euch erklären, **wie** wir Machine Learning ​konkret bei APOLLON eingesetzt haben, gibt es erstmal eine kurze Erklärung, **warum** wir Machine Learning genutzt haben. ​Alle, die sich mit Machine Learning schon auskennen, können gerne den nächsten Absatz überspringen.
  
  
 === ⇒ Exkurs: Warum braucht APOLLON Machine Learning + CNN? === === ⇒ Exkurs: Warum braucht APOLLON Machine Learning + CNN? ===
  
-Da Nutzer*innen Selfies an APOLLON schicken, muss unser Programm in der Lage sein, **neue** Bilder zu erkennen und zu klassifizieren.+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. 
 +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, 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. 
  
 === Umsetzung in APOLLON === === Umsetzung in APOLLON ===
Zeile 296: Zeile 305:
 Ansonsten ist unser Bot so programmiert,​ dass dieser auf jede mögliche Nachricht mit der Aufforderung:"​Um eine Musikempfehlung zu erhalten, schicke mir bitte ein Selfie!"​ antwortet, außer die Person schickt ein Foto. Ansonsten ist unser Bot so programmiert,​ dass dieser auf jede mögliche Nachricht mit der Aufforderung:"​Um eine Musikempfehlung zu erhalten, schicke mir bitte ein Selfie!"​ antwortet, außer die Person schickt ein Foto.
  
-Für Nutzer*innen sieht das dann so aus: +Alles, was Nutzer*innen ​von unserem Bot mitbekommen,​ ist die Oberfläche auf telegram. Dort sieht das dann so aus:
- +
-{{ :​ws1920:​apollon_screenshot.png?​300 |}}+
  
 +{{:​ws1920:​apollon_screenshot.png |}}
  
 **Unter dem folgenden Link können Telegram-Nutzer*innen unseren Bot finden:** **Unter dem folgenden Link können Telegram-Nutzer*innen unseren Bot finden:**
ws1920/projekt_-_bericht.1585843553.txt.gz · Zuletzt geändert: 2020/04/02 18:05 von justanni