Unser erster Tanz

Wir haben geheiratet! Und dann geeked :)

Vor etwa einem Jahr haben wir uns verlobt und mit der Planung unserer Hochzeit begonnen. Als Teil des Planungsprozesses durchliefen wir die typische traditionelle Hochzeitsagenda und wählten aus, was wir tun wollten - einen Toast (yup); Straußwurf (nein); eine Hochzeitsfeier (yup). Wir waren uns zunächst nicht sicher, ob wir einen ersten Tanz machen wollten, aber dann hatten wir eine Idee:

Ein erster Tanz ist eine Gelegenheit, etwas zu feiern, das unsere Beziehung zum ersten Mal als verheiratetes Paar widerspiegelt.

Also entschieden wir uns statt eines Tanzes. Wir würden stattdessen ein erstes Tanzprojekt teilen. Wir wissen, dass es etwas knusprig wäre, aber dann ist es auch ein erster Tanz, wenn Sie nicht tanzen können.

Ok, lass uns technisch werden.

Diagramm eines neuronalen Netzwerks. Bild von Medium

Ein neuronales Netzwerk ist ein Algorithmus für künstliche Intelligenz, mit dem Sie Ihrem Computer anhand einiger Beispiele beibringen können, wie Dinge ausgeführt werden. Ein klassisches Beispiel, das oben gezeigt wird, ist das “Lehren” (oder, da es üblicherweise als “Training” bezeichnet wird) eines neuronalen Netzwerks, wie man ein Bild eines Hundes von einem Bild einer Katze unterscheidet. Dies geschieht, indem ein Haufen von Katzen- und Hundebildern in das Netzwerk eingespeist wird, wobei angegeben wird, welches das ist, und um zu erfahren, welche Merkmale eines Bildes welchem ​​Tier entsprechen. Es gibt viele großartige Beschreibungen, wie neuronale Netzwerke tatsächlich online verfügbar sind, abhängig von Ihrem mathematischen Hintergrund.

Anstatt einen ersten Tanz zu haben, wollten wir ein neuronales Netzwerk trainieren, um für uns zu tanzen!

Plan A: Choreografie

Unsere Hochzeit fand am 2. März 2019 statt. Um Weihnachten 2018 entschieden wir uns, dass wir wirklich an diesem Projekt arbeiten müssen, damit es rechtzeitig fertig wird. Also setzten wir uns in Starbucks und legten unseren ersten Versuch fest.

Basierend auf einer kürzlich erschienenen Arbeit wollten wir ein rekurrentes neuronales Netzwerk (RNN) verwenden, um zu lernen, einen Tanz für uns zwei zu choreografieren. Die Idee hier ist, dass das RNN viele Bilder eines choreografierten Tanzes erhält. Es wird trainiert durch Lernen, den nächsten Frame des Tanzes basierend auf dem vorherigen Frame vorherzusagen (daher der Name "wiederkehrend").

Ein Diagramm unseres ersten Versuchs. Wir extrahieren Strichmännchen von professionellen Tänzern und trainieren ein neuronales Netzwerk, um zu lernen, einen neuen Tanz zu „choreografieren“.

Wir haben einige Daten aus einem wundervollen "cha-cha" Trainingsvideo entnommen und Strichfiguren mit einem vorgebildeten neuronalen Netzwerk extrahiert. Wir haben es auf ~ 1000 Iterationen mit unseren Laptops trainiert (ca. 10 Minuten). Unten ist unser Lieblingsergebnis:

Erster Versuch, unseren ersten Tanz zu „choreografieren“…

Offensichtlich funktionierte diese Methode nicht nach Plan. Aber wir haben nicht aufgegeben!

Plan B: Code stehlen!

Zu diesem Zeitpunkt war es Februar und unsere Hochzeit stand kurz vor dem Abschluss. Also haben wir getan, was wir am besten wissen: anderen Leuten besseren Code zu stehlen.

Glücklicherweise hatte eine kürzlich erschienene Arbeit, die viel Aufmerksamkeit in den Medien erlangt hatte, ein sehr ähnliches Projekt durchgeführt, was wir wollten. „Everybody Dance Now“ verwendet ein spezielles neuronales Netzwerk, ein generatives Adversarial Network (GAN), das im Wesentlichen zwei neuronale Netzwerke gegeneinander stellt: eines, das gefälschte Bilder erzeugt, und eines, das lernt, echte simulierte Bilder zu erkennen.

Beispielvideo von Everybody Dance Now. Beachten Sie, dass die Frau auf der rechten Seite nicht wirklich tanzt! Ein neuronales Netzwerk hat gelernt, wie es aussieht, als würde es tanzen, genau wie das Quellvideo oben links.

Die Idee ist eigentlich ziemlich einfach. Wir (also die Leute, aus denen wir den Code gestohlen haben) bilden ein neuronales Netzwerksystem aus, um ein Bild von einer Person zu machen und daraus eine menschliche Figur zu extrahieren. Sie trainieren dann ein anderes neuronales Netzwerksystem, um das Gegenteil zu tun (eine menschliche Figur in ein reales Bild zu übersetzen). So können wir eine menschliche Figur aus einem Video eines professionellen Tänzers mit dem ersten neuronalen Netzwerk extrahieren, und wir lassen das andere neuronale Netzwerk diese Strichmännchen in Videos verwandeln, in denen wir gut tanzen!

Ihr Papier ist sehr schick und hat ein paar lustige Glocken, um ihre Tanzvideos so richtig glatt zu machen. Leider war ihr Code nicht öffentlich. Allerdings hat jemand eine vereinfachte Version (basierend auf dem Pytorch-Framework) für github veröffentlicht. Dieser Code wurde aus zwei wirklich großartigen OpenSource-Projekten erstellt: Echtzeit-Einschätzung für mehrere Personen (die die Extraktion der Zahlen übernimmt) und pix2pixHD (die Bilder in ein anderes übersetzt).

Wir waren also im Geschäft!

Naja fast. Es gab einen kleinen Hangup. Wir konnten unsere Laptops nicht mehr verwenden, um den Code zu trainieren, weil wir keine zugänglichen Grafikverarbeitungseinheiten (GPUs) auf ihnen hatten. Glücklicherweise hat Ashley Zugang zu Harvards Supercomputer namens Odyssey. Odyssey verfügt über mehr als 78.000 Kerne und 40 Petabyte (oder 40 Millionen GB) Speicherplatz - und viele GPUs, die noch übrig bleiben. Wir können uns ehrlich nicht daran erinnern, wie viele Rechenstunden wir bei Odyssey verwendet haben - aber wir schätzen etwas über 24 Stunden.

Der Odyssee-Cluster in Harvard. Sehr schick :)

Nachfolgend finden Sie das Ergebnis des Proof-of-Concept unter Verwendung des großartigen Napoleon Dynamite. Die obere linke Ecke ist das „Source Video“, d. H. Die Tanzbewegungen, die wir auf uns übertragen möchten. Die obere rechte Ecke ist die "Pose-Schätzung", die der Gliedmaßenextraktion ähnelt, die wir in unserem ersten Versuch durchgeführt haben. Die unterste Zeile enthält Videoausgabe von Alex (links) und Ashley (rechts). Man kann sehen, dass es nicht ganz so knackig ist wie das „Everybody Dance Now“, aber wir sind ziemlich glücklich, dass es tatsächlich gelaufen ist, dass wir nicht viel Zeit damit verbracht haben und es einfach so waren lernte die Verwendung von GPUs.

Konzeptioneller Beweiß! Oben links: Quellvideo; Oben rechts: herausgezogene Pose; Untere Reihe: Alex + Ashley

Also ohne weiteres, hier ist unser erster Tanz (zur Musik gesetzt):