Project Description

Projekt Beschreibung

Die Emotionen einer Person vorherzusagen und zu verstehen ist in verschiedensten Gebieten wichtig, sei dies in der Bildung, Spielen oder Filmen. Besonders bei der Bildung ist es entscheidend zu erkennen, wenn jemand in einer schlechten Stimmung ist, was die Lernfähigkeit negativ beeinflusst. Mit einer grossen Anwenderstudie haben wir die Emotionen sowie Videoaufzeichnungen von den Teilnehmern gesammelt, während diese Mathematik Aufgaben gelöst (aktiver Part) und Bilder angeschaut (passiver Part) haben. In dieser Thesis wollen wir dieses Dataset analysieren, um Vorhersagemodelle der Teilnehmer anhand der Videoaufzeichnungen zu lernen (Gesichtsausdrücke, Blick, Bewegungen) sowie zu prüfen, ob eine Generalisierung der Modelle möglich ist über verschiedene Domänen (Bilder und Mathematik Aufgaben).

Aufgaben

Die Hauptaufgabe der Arbeit ist die Entwicklung eines datengetriebenen Modells zur Vorhersage des emotionalen Zustands einer Person auf der Basis von Gesichtsausdruck, Blick, Kopfbewegung und Abstand zum Bildschirm. Darüber hinaus sollte untersucht werden, ob sich das erstellte Modell über Domänen verallgemeinert (von Bildern zu Mathematik und umgekehrt). Zu guter Letzt sollte eine Analyse der Modelle mit der besten Leistung Einblicke in die weitere Verbesserung der Vorhersage ermöglichen. Die vier Hauptaufgaben dieses Projekts sind

  • Validierung und statistische Analyse der Interaktionsprotokollen und Videodaten (z. B. Korrelation zwischen den gesammelten Angaben der Teilnehmer und den Emotionen, welche aus der Mimik der Videoaufzeichnungen.)
  • Synchronisation zwischen den Zeitstempeln der Videoaufzeichnungen und Interaktionsprotokollen, Vorverarbeitung und „Feature Extraction“ aus den Videodaten.
  • Erstellen von Vorhersagemodellen für die Emotionen basierend auf den extrahierten „Features“ der Videoaufzeichnungen für die Zeit, während der Teilnehmer mathematische Aufgaben löste und Bilder ansah. Untersuchen der Generalisierbarkeit, in dem das auf aktive Model (Mathematik Aufgaben) auf das passive Model (Bilder ansehen) und umgekehrt angewendet und ausgewertet wird.
  • Bearbeitung der Videoaufzeichnungen von der integrierten Tablet-Kamera, welche durch einen Spiegel in zwei verschiedene Sektionen aufgeteilt sind. Diese müssen korrekt zusammengefügt werden, damit diese Videoaufzeichnungen ebenfalls in das Model integriert werden können.

Resultat

Emotionsvorhersage

Die Teilnehmer wurden mit zwei verschiedenen Videokameras aufgezeichnet. Einerseits war dies die integrierte Kamera im Tablet und anderseits eine GoPro. Jeder Teilnehmer schaute sich 40 Bilder an und löste um die 60 Mathematik Aufgaben. Nach jedem Bild und jeder Aufgabe wurde die aktuell gefühlte Emotion anhand der Valence (Wertigkeit) und des Arousal (Erregtheit) bewertet, beide Werte auf einer Skala zwischen 1 (tief) und 9 (hoch). Zuerst haben wir die Protokolle analysiert und ausgewertet auf: die angegebenen Bewertungen, die Verzögerungen der Bewertungen, Änderungen der Bewertungen, und die Zuversichtlichkeit der extrahierten Daten. Danach haben wir eine gültige Synchronisation zwischen den Videoaufzeichnungen und den Protokollen definiert. Um optimale Resultate für die „Feature Extraction“ mit Frameworks von Drittanbietern (Affectiva, OpenFace) zu erhalten, haben wir die Videos noch bearbeitet, um das bestmögliche Bild zu erhalten (Anpassung der Helligkeit, …). Mit Hilfe diesen Frameworks haben wir danach folgende Features extrahiert:

  • Action Units
    • Statistiken von eigenständigen Action Units
    • Statistiken von kombinierten Action Units
  • „Eye Aspect Ratio“ (EAR) und Blinzeln
  • „Mouth Aspect Ratio“ (MAR)
  • Blick
  • Bewegungen
  • „Fidgeting Index“

Alle Features wurden mit den extrahierten Features eines Basisvideos normalisiert. Um die optimale Baseline aus dem 7-minütigen Video zu ermitteln, haben wir verschiedene Statistiken und Tests analysiert. Eine weitere Analyse der Korrelation zwischen den Features wurde gemacht, um das korrekte Verhalten der Machine-Learning Schätzer sicherzustellen.

Wir haben eine Lernpipeline geschrieben, in welcher nebst den zu extrahierenden Features auch angegeben werden konnte, welche Frames berücksichtigt werden müssen. Diese wurden mit einem Window relativ zu einem vordefinierten Zeitpunkt angegeben: für die Bilder wurde dieser als Start der Anzeige des Bildes gewählt und für die Mathematik Aufgaben der Schluss, während das Resultat abgegeben wurde. Zudem konnte angegeben werden, wie viele Frames berücksichtig werden sollen. Somit konnten wir zuerst das optimale Window ermitteln, also der relative Start (Shift) sowie die Anzahl Frames (Size). Die Suche haben wir zwischen -5 und 5 Sekunden für den Shift und zwischen 0.5 und 10 Sekunden für die Size eingeschränkt. Für die Labels haben wie die kombinierten Klassen „Low“ (1-3) und „High“ (7-9) verwendet, jeweils separat für die Valence und Arousal. Ohne weitere Hyperparameteroptimierung wurde ein Trend deutlich, dass die aussagekräftigsten Frames während der Bewertung sind, dies sowohl bei den Bildern als auch bei den Mathematik Aufgaben. Daraus schliessen wir, dass das Abgleichen eines Bildes mit persönlichen Erinnerungen und Erfahrungen einen grösseren Einfluss auf die Mimik hat, als nur auf das Bild zu schauen. Wir vermuten, dass die vielen Medien und alltägliche Konfrontationen mit verschiedensten Bildern einen Einfluss darauf haben, wie wir darauf reagieren. Erst wenn wir uns mehr damit befassen, zeigt sich dies auch äusserlich. Bei den Mathematik Aufgaben waren die aussagekräftigsten Frames wie erwartet während der Erfolgsmeldung, wenn die Richtigkeit der angegebenen Lösung ersichtlich wird.

Nachdem wir das optimale Fenster fixierten, haben wir die Hyperparameter-Optimierung mit Hilfe einer Random Search und den erfolgversprechendsten Schätzern durchgeführt. Am Ende erreichten wir eine Performance mit einer Genauigkeit von rund 0.8 für die Vorhersage der Valenz, während wir mit bereits vorhandenen Modellen (Affektiva) nur geringfügig über dem Zufallsniveau lagen. Für die Mathematik Aufgaben war die Performance ein bisschen höher. Wir vermuten, dass dies durch die aktivere Handlung zu erklären ist. Für die Vorhersage des Arousal erreichten wir bei den Bildern um die 0.75 und bei den Mathematik Aufgaben deutlich besser bei 0.9. Die hohe Leistung während den Mathematik Aufgaben ist wahrscheinlich darauf zurückzuführen, dass viele Teilnehmer während des gesamten Experiments nur in einer Klasse bewertet haben.

Bei der Analyse der falsch klassifizierten Bilder und Mathematik Aufgaben haben wir einige mögliche Problemquellen festgestellt:

  • Geringfügiger Gesichtsausdruck
  • Inkonsistente Bewertung
  • Fehlinterpretationen
  • Rauschen in extrahierten Features

Um die extrahierten Features und unsere Pipeline zu überprüfen, haben wir den gesamten Vorgang auf das RAVDESS-Datensatz angewendet. Für das RAVDESS wurden 24 professionelle Schauspieler aufgenommen und sie spielten die Emotion basierend auf dem angegebenen Label. Im Gegensatz dazu bezeichneten die Teilnehmer des ETH-Datensatzes eine Emotion, die durch externe Reize ausgelöst wurde. Ein weiterer Unterschied bestand darin, dass die Labels aus konkreten Emotionen und nicht aus der Valence und dem Arousal bestanden. Für die Pipeline mit dem RAVDESS-Datensatz haben wir alle acht angegebenen Labels verwendet und die Genauigkeit lag bei 0,95. Mit diesem Ergebnis waren wir sicher, dass die gesamte Pipeline funktioniert und wir nützliche Features extrahieren. Für den ETH-Datensatz führen die angegebenen Einschränkungen wahrscheinlich zu der geringeren Genauigkeit.

Gesichtsrestauration

Das Lösen von Übungen zu Hause auf einem Tablet schränkt die Software auf die eingebaute Kamera im Tablet ein, die wahrscheinlich die meiste Zeit die Decke filmt. Mit einem kleinen Spiegel auf dem Tablet und unserer Videorestaurations-Pipeline zur Rekonstruktion des Gesichts haben wir die Gesichtserkennung so verbessert, dass sie fast immer gültig ist. Ohne diese Einstellungen wären von der Frontkamera aus nur wenige Sequenzen sinnvoll gewesen.

Wir habe die folgenden Schritte für die Facial Restoration Pipeline mit Python und OpenCV eingeführt und implementiert:

  • Umgang mit dem Spiegel: Einteilung des Videos in die verschiedenen Regionen und Anpassung des Videos, um eine einheitliche Ausrichtung des Gesichts zu erzielen.
  • Gesichtserkennung: Da nach dem ersten Schritt einige Teile des Gesichts im Video verdeckt waren, hatten viele Gesichtserkennungsalgorithmen Probleme, das Gesicht überhaupt zu erkennen. In diesem Schritt wird das Gesicht mit der aktuellsten Gesichtsposition restauriert und anschließend die Gesichtserkennung ausgeführt. Infolgedessen wurden doppelt so viele Frames gültig, die für die Feature-Extraktion verwendet werden konnten.
  • Gesichtswiederherstellung: In diesem Schritt wird das Gesicht basierend auf den Informationen der vorherigen Gesichtserkennung wiederhergestellt.
    • Zur Wiederherstellung des Gesichts wurde ein generatives neuronales Netzwerk (Inpainting-Modell) verwendet.
    • Das Inpainting-Modell wurde am CelebA-HQ-Datensatz mit den erwarteten Verdeckungen trainiert.
    • Basierend auf der Gesichtserkennung wurde die richtige Eingabe für das Inpainting-Modell generiert und die Ausgabe konnte zur Wiederherstellung des Frames verwendet werden.

Mit dieser Wiederherstellungspipeline wurden alle Frontkamera-Videos für jeden Teilnehmer wiederhergestellt, und es wurde dieselbe Pipeline für maschinelles Lernen angewendet wie für die GoPro-Videos. Diese Modelle zeigten eine bemerkenswert ähnliche Leistung, was bedeutet, dass für weitere Experimente nur das Tablet ohne externe Videoquelle verwendet werden kann.

Meine erledigten Aufgaben (Zusammenfassung)

Emotionsvorhersage

  • Analysis von grossen Datenmengen:
    • Protokolle: 29.9 GB
    • Video Dateien: 1.44 TB
    • Extrahierte Features mit OpenFace: 46.0 GB
  • Feature Extraction:
    • Anwendung von bestehenden Frameworks (Affectiva und OpenFace).
    • Implementierung Feature Extraction Pipeline, um diese einfach auf mehrere Videos anzuwenden.
    • Vorhandene Studien/Papers auf mögliche Features untersuchen.
    •  Analyse der Aussagekraft.
  • Machine Learning:
    • Aufsetzten der Pipeline inklusive Berücksichtigung des Windows.
    • Cross-Validation
    • Hyperparameter Optimierung

Gesichtsrestauration

  • Restaurations Pipeline:
    • Aufsetzen einer Pipeline, um die Videos einfach zu bearbeiten. Pro Video können verschiedene Schritte und Parameter definiert werden.
    • Einbinden von OpenCV Funktionalität in den einzelnen Schritten.
  • Inpainting Model:
    • Trainieren einer vorhandenen Implementation eines Inpainting Modelles mit Keras/TensorFlow auf dem eigenen  Notebook mit der Nvidia GTX 1070. Verwendet wurde das Datenset CelebA-HQ (30 GB) mit den erwarteten Maskierungen von unserem Problem.
    • Einbinden des Modelles in die Pipeline, indem der korrekte Ausschnit mit dem Gesicht aus dem Video als Eingabe verwendet wird.