Wie wir den internen Hackathon gewonnen haben, indem wir Skibidi, Zahnseide und Javascript gelernt haben

VK hat eine coole Tradition - einen internen Hackathon, an dem nur Jungs von VKontakte teilnehmen können. Ich erzähle Ihnen von dem Hackathon im Namen des Teams, der in diesem Jahr den ersten Platz gewann und in seiner Gesamtheit an Müdigkeit starb, aber es geschafft hat, einen Tanzbewegungsdetektor für die Story-Kamera anzuprobieren.



Mein Name ist Pavel , ich leite das Top-Forschungsteam auf VKontakte und behandle die Hackathons herzlich: als Teilnehmer (Junction oder eine Reihe von Deephacks) und kürzlich als Kurator (VK-Hackathon oder VK-Fall auf Junction - übrigens war dies das erste Mal, als eine russische Firma teilnahm). Wir sind offen für alle VK-Hackathons und verbringen das vierte Jahr (das letzte Mal, als wir in das Hauptquartier der Eremitage geklettert sind). Ein bedeutender Teil unseres technischen Teams nahm daran teil, bevor wir uns in VK niederließen.

Der interne Hackathon ermöglicht es dem Team selbst, frei auf der Plattform zu experimentieren, verschiedene Ideen zu testen und generell Spaß zu haben. Ein wichtiger Unterschied besteht darin, dass Lösungen wesentlich stärker in VK integriert werden können, wodurch wir die Möglichkeit haben, interessante Prototypen zu erhalten.

Der Hackathon findet einen ganzen Tag im Singer House statt - mitten in der Woche verwandelt sich das Hauptquartier in eine Mitternachtsbewegung. Es ist lustig zu sehen, wie sich Reinigungskräfte morgens überrascht umschauen - normalerweise ist ein leeres Büro um 6 Uhr morgens plötzlich voller zotteliger Menschen, die sich wie Zombies bewegen und rufen: „Noch fünf Stunden!“ Oder wenn Sie um drei Uhr morgens in die Küche gehen und es während der Sitzungen wie in Studentenwohnheimen riecht: Energie, Pizza und Panik. Dies geschieht natürlich an einem typischen Tag, aber so massiv - selten.

Im Sommer fanden drei frühere heimische Hackathons statt. Im Jahr 2019 haben wir beschlossen, keinen weiteren Winter zu verbringen - zwei Hackathons sind viel besser als einer, da dies eine großartige Gelegenheit ist, eine Idee zu experimentieren und umzusetzen, die in einem normalen Rhythmus nicht genügend Zeit hat. Die Regeln haben sich ebenfalls geändert: Früher konnte ein Team maximal drei Personen haben, und in diesem Jahr vier, aber eine schreibt keinen Code, sondern ist auf etwas anderes spezialisiert. Sie können ein Team von Designern, Produktmanagern, Testern, Vermarktern und anderen Leuten anrufen. Insgesamt nahmen 38 Teams an diesem Hackathon teil.

Drimtim (genauer gesagt einer von 38)


Wir haben uns mit Dänen verschworen und gemeinsam Yegor und Tyoma davon überzeugt, dem Team beizutreten. Die Modelle sollten hinter uns liegen, Yegor war verantwortlich für iOS, Tyoma - für Produktion und Design. Mobile Entwicklung + Design + ein bisschen maschinelles Lernen und ein Backend sind der Schlüssel zum Erfolg beim 2k19-Hackathon.

Sogar in diesem Jahr gab es eine Unterteilung in Tracks, die es zuvor noch nicht gab: Medien (an denen wir teilgenommen haben), Kommunikation, Infrastruktur, Inhalt und Unterhaltung. Wir hatten starke Konkurrenten. Zum Beispiel wurden wir ständig von Senior Designer VK Ilya motiviert, der in unser Zimmer kam und Prototypen der Ideen seines Teams zeigte.

Idee


"Ich habe bei fast allen Hackathons, an denen ich teilgenommen habe, Preise gewonnen, und ich habe das auch diesen Winter von innen erwartet." ( Dania war zuversichtlich)

Unsere Idee (speziell Danina) war ursprünglich so: Ich wollte das Thema Musikgenerierung erforschen + alles auf das Gerät bringen, sonst "zu Backend". Der Hackathon begann mit einem Brainstorming - sie fragten sich, was man sich vorstellen könnte. Das Generieren von Musik ist interessant, aber ich möchte sie vom Benutzer abhängig machen. Irgendwelche Knöpfe? Vielleicht auf dem Bildschirm zeichnen und abhängig davon Musik erzeugen? Parallel dazu haben die Jungs vom Musikteam gelernt, wie man die Tracks hinzufügt, die wir brauchen. Aber es schien immer noch nicht ganz so. Die benachbarten Teams fanden fröhlich etwas hinter ihren Laptops heraus und sorgten für Frustration.
- Und was ist, wenn Sie eine Luftgitarre erkennen, als würden Sie eine Gitarre spielen, und abhängig davon den Klang der Gitarre spielen? ( Dunkel )

Bingo! Es ist eine Kampfidee und es ist cool, alles in unserer Macht stehende zu arrangieren. Zur Erkennung von Bewegungen gibt es ein Posenet , und es ist sehr ok (außer mobilfreundlich ). Figachim!



Lösung


Die Hauptaufgaben bestehen darin, ein Raster auf dem Gerät zu erstellen (es sollte real sein) und zu lernen, Bewegungen zu erkennen. Egor begann zu portieren, Tyoma erfand, welche Art von Bewegungen interessant sein könnten (nur eine Gitarre - langweilig), und Dani und ich erkannten sie. Dies erfordert jedoch Daten. Was ist der Unterschied zwischen PRO und Amateur? PRO hat einen Cluster mit einer GPU - dies ist einmalig und zwei - PRO sammelt Daten für sich selbst, wenn es benötigt wird. Dania organisierte einen Stand, an dem Rohdaten zu den Koordinaten der erkannten Figur von der Kamera geschrieben wurden und dann getanzt wurden! In dieser Nacht lernten wir Zahnseide, Skibidi und Pfeife zu tanzen.




Als Ständer für die Aufzeichnung von Bewegungen verwendeten wir einen funktionierenden Laptop, der zuerst Danis Gesicht aufzeichnete (bevor er keine einzige Zeile auf js schrieb), als er einen weiteren unverständlichen js-Fehler sah.



- Ich verstehe nicht, ich habe einen Levelfehler: Druck in Python verschwunden! ( Dania )

Nachttanz (buchstäblich)


Nachts für viele Stunden ununterbrochener Bewegung vor der Kamera gefilmt. Wir haben es selbst aufgenommen und auch die Entwickler erwischt, die auf den Boden gewandert sind und zum Tanzen gezwungen wurden. Es stellte sich heraus, dass es sieben verschiedene Kombinationen gab - jetzt mussten wir lernen, zwischen ihnen zu unterscheiden.




- Ich bin alle drei Stunden gekommen, um zu überprüfen, ob die Jungs am Leben sind. Pascha rief: "Wir haben einen Drehpunkt!" - und Dania fleksil der letzten Kräfte. Dann tanzten alle die Pfeife. Als Daniel keine Energie mehr hatte, öffnete Pascha das Fenster und sagte: "Jungs, wir müssen uns erfrischen." ( Madina )

Die Daten aus der Figur wurden vorverarbeitet: Sie warfen ihre Beine aus, mittelten ihre Köpfe und übertrugen sie auf Polarkoordinaten relativ zum Oberkörper. Trainierte einen Bewegungsmelder mit Catboost - einem drei Sekunden langen Ausschnitt des Datenflusses aus dem Modell. Bis zu dieser Nacht haben sie nicht mit der Bibliothek gearbeitet - es stellte sich heraus, dass es sich um einen Kampf handelte, und in iOS können Sie ihn verschieben.



Sie unterrichteten eine Klassifizierung in mehreren Klassen, während eine Klasse so langweilig wie möglich war - nur taumelnd vor der Kamera. Am schwierigsten war es, die „Rock“ -Bewegung aufzunehmen - wir schüttelten so selbstlos den Kopf, dass sie nach einer Weile anfing, sich zu drehen. Und sie streckten eine Hand mit einer "Ziege" aus, obwohl es sinnlos war - Posenet hat nur einen Punkt auf dem ganzen Pinsel, es sieht seine Finger nicht.



- Irgendwann um 3 Uhr morgens stieg Pascha in einen Schlafsack und verbrachte eine Stunde damit, sich ausschließlich darin zu bewegen und wie ein echtes Känguru zu springen. ( Madina )

Gegen 8 Uhr morgens überkam uns eine kleine Krise - alles brach zusammen und nichts funktionierte, aber dann funktionierte plötzlich alles. Es stellte sich als größte Herausforderung heraus, beide Modelle in die Anwendung zu verwandeln - Yegor beendete die Montage nur fünf Minuten vor Ablauf der Frist. Wir geben ihm das Wort:

- Nachdem wir die Idee gefunden hatten, lief alles sehr gut und produktiv. Die Jungs trainierten das Raster und tanzten, und ich schraubte die PoseNet-Story-Kamera direkt im Browser auf JavaScript. Die ersten Testläufe funktionierten gut und waren überraschend schnell. Als sich am Morgen herausstellte, dass WebGL in WebView unerwartet abstürzt, wenn mit Texturen für irgendeinen Unsinn gearbeitet wird und es keine Möglichkeit gibt, eine Lösung zu finden, geriet ich fast in Verzweiflung. Aber es war zu spät, um aufzugeben: Wir brannten mit der Idee. Daher haben wir von der letzten Anstrengung und von der letzten Redbull-Bank in Bewegung ein alternatives CoreML-Modell auf den iOS-Client gezogen und begonnen, die Posen bereits nativ zu verfolgen - um sie dem Modell mit Tänzen weiter zu geben und am Ausgang ein Ergebnis zu erzielen. Tatsächlich haben wir die Arbeit noch einmal wiederholt! Eine weitere Herausforderung war das zweite Modell, bei dem plötzlich mehr als tausend Argumente zu erwarten waren! Xcode hat dafür eine Schnittstelle generiert, deren Verwendung „frontal“ einfach unrealistisch wäre. Der Nutzen von Objective-C wurde nicht enttäuscht, und es wurde eine elegante Lösung gefunden. ( Egor )

Pitching


Am Freitag um 14 Uhr musste ein Video über das Projekt hochgeladen werden - mehrere Teams hatten keine Zeit und wurden disqualifiziert. Und um 14:40 Uhr hatten wir einen Pitch vor den Kuratoren des Tracks, der sich auf das Produkt bezog. Wir hatten Leute vom Video- und Musikteam, und es scheint, dass ihnen alles auf dem Platz gefallen hat. Auf unserer Strecke belegten wir den zweiten Platz (wir wollten den ersten, weil wir so ein cooles Projekt haben!) Und landeten im Finale (zwei Teams gingen von unserer Strecke ab).

- Dieses Jahr war ich der erste Kurator des internen Hackathons. Ich werde zurückhaltend sagen: Die Bewertung der Arbeit war äußerst schwierig. Das Niveau aller Teams war ausnahmslos irgendwie transzendent. Das Feature sollte nicht nur technologisch sein, nicht nur „produktionsnah“, sondern nicht nur „potenziell nützlich für unsere Produkte“. Das Gewinnerprojekt muss alle diese Kriterien gleichzeitig erfüllen. Es scheint, dass die Jungs es getan haben. ( Andrey )

Das letzte Pitching war um 17:40 Uhr. Zu diesem Zeitpunkt war es notwendig, bereits für das gesamte Team eine weitere Demo vorzubereiten, und die Jury war anders - technischer Direktor, Produktdirektor und Marketingdirektor.

Um fünf Uhr abends war alles vorbei - wir fuhren nach Hause, um zu schlafen, ohne etwas über die Ergebnisse zu wissen.

Ergebnisse endlich


Die Ergebnisse wurden erst am Montag bekannt gegeben. Zuerst haben wir die Gewinner der Tracks ausgezeichnet (nicht unser Fall - ich möchte Sie daran erinnern, wir waren die zweiten), dann die Leiter des Publikums (nicht wir) und dann die dritten (und das sind auch nicht wir), die zweiten (wieder nicht wir) und schließlich uns.

Hier sind einige Projekte, mit denen wir konkurrieren mussten:

2. Platz - ein reaktionsschneller Sprachassistent;
3. Platz - Zeitleiste der internen Fehler;
Der Publikumspreis erinnert an bevorstehende Chat-Meetings.

"Dies ist der beste Hackathon, an dem ich teilgenommen habe." Es gab viel mehr Fahrt als sogar auf Junction. ( Dania )

- Ich habe es wirklich genossen, mit Kollegen aus einer ganz anderen Abteilung zusammenzuarbeiten. - Ich hatte noch nie zuvor maschinelles Lernen berührt, es schien mir eine Art Magie zu sein, aber jetzt ist es nicht mehr so. ( Egor )
- Es war sehr cool, Teil eines so coolen Teams mit einem so coolen Projekt zu werden. Tagsüber habe ich es geschafft, Designer, Videograf, Toningenieur, Redakteur, Musiker und Texter zu werden! Und ich war der einzige, der schlafen konnte. ( Dunkel )

Leben nach dem Hackathon


Die meisten Projekte, die auf Hackathons entwickelt wurden, werden aus verschiedenen Gründen nicht zum Verkauf angeboten: Änderung des Fokus, Komplexität der Implementierung, etwas Unvorhergesehenes in der Implementierung. Der innere Hackathon ist keine Ausnahme.

Trotzdem listen wir die Projekte auf, die das Licht der Welt erblickten:

  • von allen Vinci geliebt;
  • Benutzerkompatibilitätsprüfung , die am 14. Februar 2018 gestartet wurde;
  • schöne Plakate für kurze Notizen;
  • und eine Reihe von internen Funktionen, über die wir gerne sprechen würden, die wir aber nicht können :)

Source: https://habr.com/ru/post/de443902/


All Articles