20 March, 2023
Lea Gutierrez Lange
Enya Hilpert
Elia Wüstner

Student Project: Gesichtstracking mit Android Kopf


Unsere Projektidee

Die Arbeit mit Androiden allgemein basiert stark auf der Idee, diese so menschlich wie möglich aussehen zu lassen, damit man sich einigermaßen wohl fühlt in deren Umgebung. Das umfasst sowohl die Bewegung als auch das Aussehen des Androiden. Das rein Optische (wie real der Androide Roboter wirkt) ist sicherlich ein ganz eigenes Forschungsfeld. Das war aber nicht Teil unserer Arbeit, da die Androiden von der Hochschule gestellt wurden. In unserem Projekt arbeiteten wir mit Roboter Köpfen und mussten uns somit nicht mit den restlichen Gliedmaßen auseinandersetzen.

Für uns war das Ziel, eine realistische Nachstellung der Bewegung “jemanden anschauen” mit dem Kopf umzusetzen. Sprich, wenn der Kopf ein Gesicht über eine Kamera erkennt, dann kann er dieses Gesicht auf eine sehr menschliche Art und Weise anschauen und mit dem Blick verfolgen.

Das hieß bei uns: Augenbewegung, Kopfbewegung und Animationen wie Blinzeln etc. einfügen. Da ein einzelner Kopf an sich nicht besonders menschlich wirkt, haben wir uns auf diesen Aspekt besonders konzentriert, um durch eine realistische Bewegung des Kopfes den Kopf an sich weniger gruselig wirken zu lassen.

Wie wir zu unserem Projekt kamen

Wir alle kamen auf unterschiedlichen Wegen zu diesem Projekt. Lea hat in den Projektvorschlägen im MI-Wiki etwas dazu gelesen, Elia hat beim IAAI Projekt-Kickoff davon gehört und Enya bekam in der ersten Vorlesung von “Intelligent Cognitive Systems” durch Prof. Becker-Asano davon mit. Allen war bewusst: Das ist eine Gelegenheit, die es nicht oft gibt und etwas, das man vermutlich nur in der Studienzeit tun kann. Von allein kommt man ja nicht unbedingt auf die Idee, sich solche Roboterköpfe zu kaufen oder daran zu arbeiten. Ganz zu schweigen von den finanziellen Mitteln, die man dazu braucht.

Hard- und Software

Um den Kopf überhaupt zum Laufen zu bekommen, benötigt man neben Strom auch Luftdruck, da sowohl die Roboterköpfe als auch Andrea (der Ganzkörper Androide) ihre Aktoren darüber steuern.

Des Weiteren nutzen wir eine Webcam und eine Halterung für diese, sodass die Position der Kamera immer gleich bleibt.

Für das Programmieren der Software haben wir Python und die Library “OpenCV” verwendet. Für die Gesichtserkennung nutzen wir einen vor trainierten Cascade Classifier. Die Bedienung erfolgt über ein GUI, über das man die Gesichtsverfolgung aktivieren und den Kamera-Stream anschauen kann.

Die Umsetzung

Wenn im GUI die Facetracker-Box aktiviert ist, wird ein separater Thread gestartet, der das Video der Kamera aufnimmt und vorverarbeitet. Die erkannten Gesichter werden zunächst in einer Frameanalyse Phase mit den vorherigen verglichen, um so ein stabil erkanntes Gesicht zu finden. Identisch erkannte Gesichter werden in Arrays zusammengebracht. Alle 5 Frames wird dann das längste Array genommen und das Gesicht darin als Target ausgewählt. Aus den px-Werten werden dann ein Ziel-Kopfwert und ein Ziel-Augenwert berechnet. Im GUI Thread wird dann alle 40ms der nächste Schritt berechnet, um zur Zielposition zu kommen und übergibt diesen Schritt als Kopfpositionsarray an den Kopf.

Fazit

Die Gesichtserkennung war vor allem zu Beginn ein Problem. Dafür den richtigen Ansatz und etwas Vortrainiertes zu finden, das sich schnell und gut einbauen lässt war eine Herausforderung. Später war das Einbauen in die GUI eine Herausforderung. Wir wollten es so gestalten, dass unser Programm mit anderen Programmen für die Roboterköpfe (wie Animationen) kompatibel ist. Dafür mussten wir einiges neu gestalten. Jetzt läuft das Programm mit viel weniger Verzögerung und flüssig.

Interessant war auch, sich damit zu beschäftigen, wie denn eine menschliche Bewegung dieser Art aussieht. Wir haben einiges ausprobiert bezüglich der Fragen: Bewegt sich erst der Kopf oder die Augen oder beides gleichzeitig? Mit welcher Geschwindigkeit kann und soll die Bewegung durchgeführt werden, damit diese natürlich wirkt?

Besonders die Genauigkeit und Treffsicherheit machten uns Probleme. Es war nicht immer ganz einfach, dass sich die Menschen vor dem Roboterkopf auch wirklich angeschaut fühlten. Das lag auch daran, dass die Webcam nicht immer exakt gleich auf der Halterung befestigt war und ein paar Millimeter bereits einen spürbaren Effekt darauf haben, wie präzise der Kopf einen anschaut.

Für uns ungewohnt war auch, dass an dem Projekt ein öffentliches Interesse bestand. Die meisten Software-Projekte an der HdM bleiben oft intern und eher unbekannt. Es gab Termine zu Vorstellungen und Interviews. Im Januar hat die Stuttgarter Zeitung das humanoid lab besucht, um ein Video für ihren Instagram-Kanal zu drehen.

Alles in allem hat es aber wirklich Spaß gemacht und es war eine echt einzigartige Erfahrung für uns alle, bei der wir viel gelernt haben.