Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

VK heeft een coole traditie: een interne hackathon, waaraan alleen jongens van VKontakte kunnen deelnemen. Ik vertel jullie over de hackathon namens het team dat dit jaar de eerste plaats behaalde en in zijn geheel aan vermoeidheid overleed, maar toch een dansbewegingsdetector voor de storycamera wist uit te proberen.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

mijn naam Paul, ik geef leiding aan het toponderzoeksteam van VKontakte en heb een warme houding ten opzichte van hackathons: als deelnemer (Junction of een aantal deephacks) en recentelijk als curator (VK hackathon of VKontakte case bij Junction - dit was overigens de eerste keer Ik heb daar deelgenomen aan het Russische bedrijf). We houden voor het vierde jaar de VK Hackathon, die voor iedereen toegankelijk is (de laatste keer dat we het Algemeen Hoofdkwartier van de Hermitage beklommen), en een aanzienlijk deel van ons technische team heeft eraan deelgenomen voordat ze bij VK kwamen werken.

Via een interne hackathon kan het team zelf veel met het platform experimenteren, verschillende ideeën testen en over het algemeen plezier hebben. Een belangrijk verschil is dat oplossingen veel meer geïntegreerd kunnen worden in VK, wat ons de mogelijkheid geeft om interessante prototypes te realiseren.

De hackathon vindt de hele dag plaats in het Singer House - midden in de week verandert het hoofdkantoor in een middernachtbeweging. Het is grappig om te zien hoe de schoonmakers 's ochtends verbaasd om zich heen kijken - een doorgaans leeg kantoor om 6 uur 's ochtends blijkt ineens gevuld met ruige mensen die zich als zombies bewegen en schreeuwen: "Nog vijf uur!" Of als je om drie uur ’s ochtends de keuken binnenloopt en het tijdens sessies naar studentenkamers ruikt: energiedrankjes, pizza en paniek. Dit gebeurt natuurlijk op een gewone dag, maar op zo’n grote schaal komt het zelden voor.

In de zomer vonden drie eerdere interne hackathons plaats. In 2019 hebben we besloten geen tijd te verspillen aan kleinigheden en ook een winterhackathon te houden - twee hackathons zijn veel beter dan één, omdat dit een leuke kans is om te experimenteren en een idee te implementeren waarvoor er niet genoeg tijd is in het gebruikelijke ritme. Ook de regels zijn veranderd: voorheen mocht een team maximaal uit drie personen bestaan, dit jaar zijn dat er vier, maar één schrijft geen code, maar specialiseert zich in iets anders. Het was mogelijk om ontwerpers, productmanagers, testers, marketeers en andere jongens uit te nodigen voor het team. In totaal namen 38 teams deel aan deze hackathon.

Dreamtim (meer precies, een van de 38)

Wij zijn tot een overeenkomst gekomen met Danei en samen hebben we overtuigd Egor и Tyoma kom bij het team. Zoals verwacht hadden de modellen de leiding over ons, Egor had de leiding over iOS, Tyoma had de leiding over de productie en het ontwerp. Mobiele ontwikkeling + ontwerp + een beetje machine learning en backend is de sleutel tot succes tijdens de 2k19 hackathon.

Zelfs dit jaar verscheen er een indeling in tracks, die voorheen niet bestond: Media (waaraan wij deelnamen), Communicatie, Infrastructuur, Content en Entertainment. We hadden krachtige concurrenten. Zo werden we voortdurend gemotiveerd door de senior designer van VK Ilya, die onze kamer binnenkwam en prototypes liet zien van het idee van zijn team.

Idee

— Ik heb prijzen gewonnen in bijna alle hackathons waaraan ik heb deelgenomen, en ik verwachtte hetzelfde van de interne hackathon deze winter. (Danya had vertrouwen in zichzelf)

Ons (specifiek Danina's) idee was aanvankelijk dit: we wilden het onderwerp muziekgeneratie verkennen + alles op het apparaat hebben, anders zou het "te backend" zijn. De hackathon begon met brainstormen: we dachten na over wat we konden bedenken. Muziek genereren is interessant, maar ik wil het gebruikersafhankelijk maken. Sommige knoppen? Misschien op het scherm tekenen en op basis daarvan muziek genereren? Tegelijkertijd leerden we van de jongens van het muziekteam hoe we de nummers konden toevoegen die we nodig hadden. Maar het leek nog steeds niet helemaal goed. Buurteams waren vrolijk met iets bezig op hun laptops en zorgden voor frustratie.

— Wat als je luchtgitaar herkent, alsof je een gitaar speelt, en afhankelijk daarvan de klank van de gitaar speelt? (tema)

Bingo! Het idee is militant en wij hebben de macht om alles op een geweldige manier te regelen. Voor bewegingsherkenning is er wel posenet, en ze is erg in orde (ook mobielvriendelijk). Laten we doen alsof!

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

beslissing

De belangrijkste taken zijn het maken van een raster op het apparaat (het moet echt zijn) en het leren herkennen van bewegingen. Egor begon te porten, Tyoma begon na te denken over welke bewegingen interessant zouden zijn om op te nemen (alleen een gitaar - saai), en Danya en ik begonnen ze te herkennen. Maar hiervoor zijn gegevens nodig. Wat is het verschil tussen een PRO en een amateur? PRO heeft een cluster met een GPU - dat is één ding, twee: PRO verzamelt gegevens voor zichzelf wanneer hij die nodig heeft. Danya organiseerde een stand waar ruwe coördinaatgegevens van een herkende figuur werden opgenomen door een camera, en toen - dansen! Die avond leerden we flossen dansen, skibidi и dudtsa.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren
Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

Als standaard voor het vastleggen van bewegingen gebruikten we een werklaptop, die eerst Dani's gezicht opnam (hij had nog geen enkele regel in JS geschreven) toen hij weer een onbegrijpelijke JS-fout zag.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

— Ik begrijp het niet, ik heb een niveaufout: print is verdwenen in Python! (Danya)

Nachtdansen (letterlijk)

We filmden 's nachts vele uren van continue beweging voor de camera. Ze namen het zelf op en betrapten ook de ontwikkelaars die op de vloer ronddwaalden en hen tot DANSEN GEDWONGEN. We kregen zeven verschillende combinaties - nu moesten we leren ze van elkaar te onderscheiden.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren
Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

‘Ik kwam elke drie uur langs om te kijken of de jongens nog leefden.’ Pasha riep: "We hebben een spil!" - en Danya boog zich uit alle macht. Daarna danste iedereen op de pijp. Toen Daniil geen kracht meer had, opende Pasha het raam en zei: "Jongens, we moeten ons opfrissen." (Madina)

De gegevens uit de figuur werden voorbewerkt: de benen werden eruit gegooid, het hoofd werd gemiddeld en omgezet in poolcoördinaten ten opzichte van de romp. We hebben de bewegingsdetector getraind met behulp van catboost - met behulp van een fragment van drie seconden uit de datastroom uit het model. Tot vanavond hadden we niet met de bibliotheek gewerkt - het bleek een gevechtsbibliotheek te zijn, en je kunt hem in iOS zetten.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

Ze leerden classificatie in meerdere klassen, waarbij één klas zo saai mogelijk was: gewoon rondhangen voor de camera. Het moeilijkste was om de "rots" -beweging vast te leggen - we schudden zo onbaatzuchtig ons hoofd dat het na een tijdje begon te draaien. En ze staken een hand uit met een "geit", hoewel dit zinloos was - posenet heeft maar één punt op de hele hand, hij ziet geen vingers.

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

— Rond 3 uur 's ochtends klom Pasha in een slaapzak en bewoog zich er een uur lang uitsluitend in rond, springend als een echte kangoeroe. (Madina)

Rond 8 uur werden we getroffen door een kleine crisis: alles was kapot en niets werkte, maar toen begon alles plotseling vanzelf te werken. Het inschroeven van beide modellen in de applicatie bleek de grootste uitdaging: Egor voltooide de montage letterlijk vijf minuten voor de deadline. Laten we hem het woord geven:

— Nadat we het idee hadden gevonden, verliep alles heel goed en productief. De jongens trainden het raster en dansten, en ik koppelde PoseNet rechtstreeks aan de verhaalcamera in JavaScript in de browser. De eerste testritten werkten goed en waren verrassend snel. Daarom, toen 's morgens bleek dat WebGL in WebView onverwachts crashte bij het werken met texturen voor wat onzin en er geen manier was om een ​​oplossing te vinden, raakte ik bijna in wanhoop. Maar het was te laat om op te geven: we brandden van het idee. Daarom hebben we met onze laatste kracht en met het laatste blikje Red Bull onderweg een alternatief model op basis van CoreML naar de iOS-client gesleept en zijn we begonnen met het native volgen van poses - om ze vervolgens met dansen naar het model te sturen en krijg een resultaat aan de uitgang. In wezen hebben we het werk helemaal opnieuw herhaald! Een andere uitdaging was het tweede model, dat plotseling meer dan duizend argumenten als input begon te verwachten! Xcode genereerde er een interface voor die eenvoudigweg onrealistisch zou zijn om rechtstreeks te gebruiken. Gelukkig liet mijn kennis van Objective-C me niet in de steek en werd er een elegante oplossing gevonden. (Yegor)

Pitchen

Op vrijdag om 14 uur was er een deadline voor het uploaden van een video over het project: verschillende teams haalden het niet op tijd en werden gediskwalificeerd. En om 14:40 uur hadden we een pitch voor de trackcuratoren gerelateerd aan het product. We hadden jongens van het video- en muziekteam en ze leken alles aan het veld leuk te vinden. We behaalden de tweede plaats op onze baan (we wilden eerst, omdat we zo’n gaaf project hebben!) en eindigden in de finale (twee teams van onze baan kwalificeerden zich).

— Dit jaar was ik voor het eerst curator van een interne hackathon. Ik zal met terughoudendheid zeggen: het was buitengewoon moeilijk om het werk te beoordelen. Het niveau van alle teams, zonder uitzondering, was ongelooflijk. Een functie mag niet alleen technologisch geavanceerd zijn, niet alleen ‘dichtbij de productie’, en niet alleen ‘potentieel nuttig voor onze producten’. Het winnende project moet tegelijkertijd aan al deze criteria voldoen. Het lijkt erop dat de jongens daarin zijn geslaagd. (Andrew)

Om 17 uur hadden we onze laatste pitching. Tegen die tijd was het nodig om nog een demo voor te bereiden, dit keer voor het hele team, en de jury was anders: de technisch directeur, de productdirecteur en de marketingdirecteur.

Om vijf uur 's avonds was het allemaal voorbij - we gingen naar huis en naar bed, zonder iets te weten over de resultaten.

De resultaten zijn eindelijk

De uitslag werd pas maandag bekendgemaakt. Eerst werden de winnaars van de nummers beloond (niet ons geval - laat me je eraan herinneren dat we tweede waren), daarna stemden de leiders van het publiek (niet wij), en dan de derde (en dit zijn wij ook niet), de ten tweede (nogmaals, niet wij) en ten slotte wij.

Dit zijn de projecten waarmee we moesten concurreren:

2e plaats - responsieve stemassistent;
3e plaats - tijdlijn van interne fouten;
De People's Choice Award is een herinnering aan komende chatbijeenkomsten.

— Dit is de beste hackathon waaraan ik ooit heb deelgenomen. Er was veel meer aandrijving dan zelfs bij Junction. (Danya)

— Ik vond het erg leuk om samen te werken met collega's van een heel andere afdeling. Ik had nog nooit met machine learning te maken gehad, het leek mij een soort magie, maar nu is dat niet zo. (Yegor)

— Het was heel gaaf om deel uit te maken van zo’n gaaf team met zo’n gaaf project. In één dag ben ik erin geslaagd om ontwerper, videograaf, geluidstechnicus, editor, muzikant en copywriter te worden! Ik was ook de enige die erin slaagde te slapen. (tema)

Het leven na de hackathon

De meeste projecten die tijdens hackathons worden ontwikkeld, halen de verkoop niet om verschillende redenen: een verandering van focus, complexiteit van de implementatie, iets onvoorziens in de implementatie. Een interne hackathon is daarop geen uitzondering.

Toch zetten we de projecten op een rij die het levenslicht zagen:

Hoe we een interne hackathon wonnen door skibidi, flossen en javascript te leren

Bron: www.habr.com

Voeg een reactie