Face The Music

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Idee

Unsere Idee war es, die verschiedenen Emotionen einer Person mit der Kamera zu erkennen und anschließend mit passenden Musikstücken zu hinterlegen. So sollte bei einem lachenden Gesicht ein fröhliches Lied und bei einem traurigen Gesicht ein langsames oder melancholisches Lied gespielt werden.

Überblick

Unsere erste Herausforderung war es, das Gesicht einer Person zu erkennen. Dazu haben wir in openFrameworks den ofxFaceTracker verwendet. Dieser erkennt mit Hilfe der Webcam das Gesicht einer Person. Als nächstes war es wichtig verschiedene Gesichtsausdrücke aufnehmen, anschließend speichern und den gespeicherten Gesichtsausdruck wieder erkennen zu können. Dazu gibt es die Erweiterung ExpressionClassifier, der bereits Gesichtsausdrücke wie „neutral“ oder „lächelnd“ eingespeichert hat und diese auch erkennt. Um die Gesichtsausdrücke mit Musik zu hinterlegen, haben wir den eingebauten ofSoundPlayer verwendet. Dieser Sound Player erlaubt uns, Musik Dateien zu laden und die Wiedergabe zu steuern.

Open Frameworks

Was ist openFrameworks? OpenFrameworks ist eine quelloffene Sammlung von Softwarewerkzeugen, die auf der Programmiersprache C++ basiert. Außerdem ist es auf einer Vielzahl von Betriebssystemen lauffähig, wie z.B. Linux, Microsoft Windows oder auch Mac OS X. Die Sammlung vereint verschiedene Bibliotheken aus den Bereichen Grafik, Video, Audio oder 3D-Modelling und soll als Framework zum Schreiben von neuen und kreativen Anwendungen dienen. Auf der Projektseite sind außerdem verschiedene Anregungen zu finden, wie openFrameworks angewendet werden kann.

Warum haben wir es verwendet? Wir haben uns für openFrameworks entschieden, da es ein quelloffenes Toolkit ist und uns somit ermöglicht kostenlos darauf zuzugreifen und damit zu arbeiten. Außerdem ist das Erstellen eines eigenen Projekts einfach und unkompliziert.

Komponenten

Das Addon "FaceOSC" für OpenFrameworks von Kyle McDonalds baut auf Jason Saragihs FaceTracker auf. Es greift auf die Webcam eines Computers zu, um in Echtzeit Gesichter zu erkennen, Informationen wie Position und Gesichtsausdrücke über sie zu erhalten und diese dann zu streamen. Um ein Gesicht in einem Video oder Foto zu erkennen, sucht der Algorithmus zunächst nach Haar-like features (nach Viola und Jones); Formen, die in jedem menschlichen Gesicht ungefähr gleich liegen. Hierzu werden Pixelintensitäten addiert, Helligkeitsunterschiede festgestellt, und das Ergebnis mit den bekannten Formen verglichen. Eine solche Form in einem Gesicht wären zum Beispiel die hellen Dreiecke, die menschliche Gesichter in den meisten Lichtsituationen unter den Augen haben.

Um weiter zu erkennen, wo Details wie Augenbrauen oder Kinn liegen, wird dann nach weiteren Änderungen und harten Kanten gesucht. Sind die Augenbrauen zum Beispiel zu hell, so kann das Programm sie nicht erkennen. Diese Methode der Analyse wurde anhand der Mulit-PIE Datenbank trainiert, die aus Bildern besteht, bei denen diese Informationen schon eingetragen sind. Über die erkannten Features wird dann ein 3D-Modell einer Maske gelegt, die sich verformt, wenn sich das erkannte Gesicht bewegt und deren Punkte dann vom Algorithmus übernommen und weiterverarbeitet werden.

Expression

Eine Möglichkeit der Weiterverarbeitung ist es, verschiedene Gesichtsausdrücke zu erkennen und mit Namen zu versehen. Nimmt man ein Gesicht auf, bei dem beispielsweise der Mund geöffnet ist – die Maske darunter also in der gleichen Art verformt ist – und speichert die zugehörigen Daten in einer Datei ab, kann man auf diese wieder zugreifen und mit den in Echtzeit gestreamten Daten vergleichen.

Music

Um die Idee der Steuerung von Musik über Gesichtsausdrücke umzusetzen, brauchte das Programm Zugriff auf Dateien, die es dann abspielen musste. Hierzu wurde der ofSoundPlayer verwendet, der ein Objekt für jeden Track erstellt, welcher dann nach Bedarf zum Beispiel gestartet, gestoppt, leiser oder lauter gestellt werden kann.

Diese zwei Komponenten wurden dann verbunden, indem Vorlagen für Gesichtsausdrücke abgespeichert wurden, die bei Übereinstimmung eine Methode auslösen, welche die passende Musik zum Gesichtsausdruck abspielt und andere, bereits laufende Musikstücke anhält.

Folgender Code, implementiert durch einen SWITCH CASE, lässt die Musik je nach Mimik auswählen.

FaceTheMusicCodeSnippet3.PNG FaceTheMusicCodesnippet2.png

Probleme

Bei der Umsetzung unseres Projekts stießen wir auf diverse Probleme. Die Nutzung von OpenFramworks stellte sich in unserem Fall, insbesondere unter Linux, als nicht trivial heraus. So kostete uns die Installation einiges an Zeit. Ein weiteres Problem trat bei der Nutzung von Visualstudio 2015 unter Windows auf, sodass wir beim kompilieren auf den Verknüpfungsfehler „LNK4042” stießen. Dies ließ sich durch ändern des C/C++ Output Object File Names auf „$(IntDir)/%(RelativeDir)/“ beheben. Des Weiteren behinderte die schlechte respektive nicht vorhandene Dokumentation des Addons „ofxFaceTracker“ unseren Fortschritt. Dies erschwerte uns den Einstieg in die Welt von Openframeworks, welches für sich genommen gut dokumentiert ist. Nach einigen Tests konnten wir die wichtigsten Methoden finden und deren Funktion zu unserem Zweck nutzen. Für ein zuverlässiges Erkennen der Emotionen ist eine gute Ausleuchtung des Gesichts erforderlich, auch Merkmale wie Bärte oder Brillen erschweren dies.

Lerneffekt

Das Projekt ermöglichte uns einen spannenden Einblick in die Welt der Interaktion, der Umgang mit OpenFrameworks und C++ erweiterte unser Wissen nicht nur in Hinblick auf die Mensch-Maschine-Schnittstelle via Kamera und Emotionen, sondern auch im Bereich des Software-Engineerings und Programmierung. Auch im Bereich Debugging und Teamwork konnten wir uns neue Fähigkeiten aneignen.

Verbesserungsmöglichkeiten

FacePlayer stellt eine Möglichkeit der Nutzung von Emotionserfassung über Kamera dar, selbstredend gibt es noch einige Erweiterungen, die diesem Konzept zugeführt werden können. So wäre es denkbar, die Lautstärke, Wiedergabegeschwindigkeit, Pause/Wiedergabe oder nächster/vorheriger Titel mit passender Überblendung in die Steuerung mit aufzunehmen. Wir entschieden uns bewusst gegen zu viele Funktionen, da die Emotionserkennung von ofxFaceTracker nicht zuverlässig genug zwischen vielen verschiedenen Mimiken unterscheiden kann. Spannend wäre es auch, mithilfe dieser Technologie eigene Musik zu komponieren oder die Stimmung eines laufenden Titels direkt über die eigenen Emotionen zu beeinflussen.

Video der Anwendung

Video auf youtube.com

Code der Anwendung

Code im my.ohm Content Service