Skateboarder können Tricks anderer Skateboarder leicht erkennen. Unser Ziel in diesem Projekt ist es, dem Computer beizubringen, Skateboard-Tricks zu erkennen. Kann der Computer anhand eines Videos eines Skateboard-Tricks den Trick mit hoher Wahrscheinlichkeit klassifizieren? Wir haben einen Datensatz und ein Modell für maschinelles Lernen entwickelt, das zwischen zwei der häufigsten Skateboard-Tricks, Ollies und Kickflips, unterscheiden kann.
Wir begannen damit, über 200 kurze (1 bis 2 Sekunden) Videos von Kickflips und Ollies zu sammeln. Wir haben den in Hands on Computer Vision mit Tensorflow beschriebenen Ansatz an unseren neuen Datensatz angepasst. Die Daten beginnen als Video, durchlaufen dann ein Convolutional Neural Network (CNN), dann ein Long Short Term Memory (LSTM)-Modell und schließlich eine Ausgabe von Wahrscheinlichkeiten, dass das Video jede Klasse von Tricks darstellt.
Hier führt Stephen beispielsweise einen Kickflip aus:
Das Modell sagt voraus, dass es sich um einen Kickflip mit einer Wahrscheinlichkeit von 0,9 handelt, also funktioniert es gut. Wir haben festgestellt, dass klare Videos, bei denen der ganze Körper des Skateboarders im Blick ist, besser abschneiden als Videos, bei denen nur die Beine des Skateboarders zu sehen sind. Wir fanden außerdem heraus, dass das Modell einen Kickflip über eine Treppe korrekt vorhersagen konnte, obwohl alle Trainingsdaten Tricks auf flachem Boden betrafen. Dies zeigt, dass das Modell auf eine neue und andere Situation verallgemeinern konnte.
Um diese Arbeit weiter voranzutreiben, können wir über Kickflips und Ollies hinaus weitere Tricks sowie Trickkombinationen hinzufügen, zum Beispiel einen Backside 180 Kickflip. Mit mehr Trainingsdaten und mehr Modelloptimierungen könnte dieses Modell gut genug werden, um mit einem menschlichen Skateboarder mithalten zu können.
Vielen Dank an Justin Wang und Vessela Ensberg für ihre Hilfe bei diesem Projekt.
Die gekennzeichneten Videodaten befinden sich im Tricks
-Verzeichnis dieses Repositorys. Es gibt zwei Unterverzeichnisse: Ollie
, das 108 Videos von Skateboardern enthält, die einen Ollie ausführen, und Kickflip
, das 114 Videos von Skateboardern, die einen Kickflip ausführen, enthält. Jede der Dateien in diesen Verzeichnissen ist ein kurzer Clip von etwa 2 Sekunden Länge im .mov
-Format (QuickTime). Um diese Daten für überwachtes maschinelles Lernen zu verwenden, trainieren Sie das Modell anhand der Daten im Tricks
-Verzeichnis und verwenden Sie dabei die Unterverzeichnisse als Bezeichnungen.
Es steht Ihnen frei, diese Daten für wissenschaftliche Zwecke zu nutzen, sofern Sie diese Arbeit zitieren.
Skateboard-Tricks klassifizieren
Dieses Projekt klassifiziert Skateboard-Tricks in einfachsten Worten. Wir versuchen, mithilfe maschinellen Lernens jeden Skateboard-Trick zu klassifizieren. Es gibt viele Skateboard-Tricks, von denen wir zwei ausgewählt haben, um sie dazwischen einzuordnen. Wir haben uns zwischen Ollie und Kickflip entschieden.
Dieser Algorithmus würde also eine Eingabe wie oben nehmen und eine Wahrscheinlichkeit ausspucken, wie sicher es ist, dass es sich um einen Ollie oder einen Kickflip handelt.
16. Juni TODO:
23. JUNI TODO:
30. JUNI TODO:
7. Juli:
15. Juli:
21. Juli:
28. Juli:
4. August:
Unser Ziel ist es, eine sinnvolle Klassifizierung von Tricks für 1–2 Sekunden lange Videoclips zu entwickeln. Wir planen, die bequemsten und leistungsfähigsten Ansätze zu nutzen, um dies zum Erfolg zu führen.
Unser Plan für die Vorverarbeitung der Daten besteht darin, die Videos auf eine konsistente Anzahl von Bildern und Auflösung herunterzusampeln. Beispielsweise kann jedes Video aus 30 Bildern bestehen, von denen jedes ein 480 x 360 (360p) großes Bild ist, sodass jedes Video zu einem 3D-Array (oder Tensor) mit der Dimension 480 x 360 x 30 wird. Dies sind die Eingaben für Modell. Farbe ist für die Trickklassifizierung nicht wichtig, daher können wir auch in Schwarzweiß umwandeln.
Die allgemeine Idee besteht darin, ein Faltungs-Neuronales Netzwerk (CNN) aufzubauen, das in etwa dem Ansatz der Bildklassifizierung folgt.
Ein CNN für Bilder kombiniert räumlich lokale Informationen von benachbarten Pixeln mithilfe von Faltungsfiltern. Sollten wir dasselbe mit Pixeln tun, die zeitlich nahe beieinander liegen? Das Tutorial von Google verwendet eine 2D-Faltung. Gibt es einen Grund, warum wir keine 3D-Faltung verwenden können? Sicher, Tensorflow hat einen. Und es gibt viele populäre wissenschaftliche Arbeiten, die genau dies tun. Hoffentlich können wir auf diesen Ideen aufbauen.