VK má skvelú tradíciu - interný hackathon, na ktorom sa môžu zúčastniť iba chlapci z VKontakte. O hackathone vám poviem v mene tímu, ktorý sa tento rok umiestnil na prvom mieste a celý zomrel od únavy, no podarilo sa mu vyskúšať detektor tanečného pohybu pre príbehovú kameru.

Volám , vediem špičkový výskumný tím VKontakte a mám k hackathonom vrúcny vzťah: ako účastník (Junction alebo niekoľko deephackov) a nedávno ako kurátor (VK hackathon alebo prípad VKontakte na Junction - mimochodom, toto bolo prvýkrát Zúčastnil som sa tam ruskej spoločnosti). VK Hackathon otvorený pre každého robíme už štvrtý rok (naposledy sme vyliezli do Generálneho veliteľstva Ermitáže) a zúčastnila sa ho značná časť nášho technického tímu pred nástupom do VK.
Interný hackathon umožňuje samotnému tímu veľa experimentovať s platformou, testovať rôzne nápady a celkovo sa baviť. Dôležitým rozdielom je, že riešenia môžu byť oveľa viac integrované do VK, čo nám dáva možnosť dosiahnuť zaujímavé prototypy.
Hackaton prebieha v Singer House celý deň – priamo v strede týždňa sa Centrála mení na polnočné hnutie. Je smiešne sledovať, ako sa upratovačky ráno prekvapene rozhliadajú – obyčajne prázdna kancelária o 6:XNUMX je zrazu plná huňatých ľudí, ktorí sa pohybujú ako zombie a kričia: „Ešte päť hodín!“ Alebo keď o tretej ráno vojdete do kuchyne a počas sedení to vonia ako na univerzitných internátoch: energetické nápoje, pizza a panika. To sa, samozrejme, stáva v bežný deň, ale v takom veľkom rozsahu je to zriedkavé.
V lete sa uskutočnili tri predchádzajúce interné hackatóny. V roku 2019 sme sa rozhodli nestrácať čas maličkosťami a usporiadať aj zimný hackathon – dva hackathony sú oveľa lepšie ako jeden, pretože je to skvelá príležitosť na experimentovanie a realizáciu nápadu, na ktorý nie je dostatok času v obvyklom rytme. Zmenili sa aj pravidlá: predtým mohol mať tím maximálne troch ľudí, no tento rok sú štyria, no jeden nepíše kód, ale špecializuje sa na niečo iné. Do tímu bolo možné prizvať dizajnérov, produktových manažérov, testerov, marketérov a ďalších chalanov. Celkovo sa tohto hackathonu zúčastnilo 38 tímov.
Dreamtim (presnejšie jeden z 38)
Dohodli sme sa s a spolu sme presvedčili и pripojiť sa k tímu. Ako sa dalo očakávať, modely sme mali na starosti my, Egor mal na starosti iOS, Tyoma produkciu a dizajn. Mobilný vývoj + dizajn + trochu strojového učenia a backendu je kľúčom k úspechu na hackathone 2k19.
Aj tento rok sa objavilo delenie na stopy, ktoré predtým neexistovalo: Médiá (na ktorých sme participovali), Komunikácia, Infraštruktúra, Obsah a Zábava. Mali sme silných konkurentov. Napríklad nás neustále motivoval senior dizajnér VK , ktorý prišiel do našej izby a ukázal prototypy nápadu svojho tímu.
Nápad
— Získal som ceny takmer vo všetkých hackathonoch, ktorých som sa zúčastnil, a to isté som očakával od interného hackathonu túto zimu. ( bol si istý)
Naša (konkrétne Daninina) myšlienka bola spočiatku takáto: chceli sme preskúmať tému hudobnej generácie + mať všetko na zariadení, inak by to bol „príliš backend“. Hackaton začal brainstormingom – rozmýšľali sme, čo by sme mohli vymyslieť. Vytváranie hudby je zaujímavé, ale chcem, aby to záviselo od používateľa. Nejaké gombíky? Možno kresliť na obrazovku a vytvárať hudbu na jej základe? Zároveň sme sa od chalanov z Music teamu naučili, ako pridať skladby, ktoré sme potrebovali. Ale stále sa to nezdalo celkom správne. Susedné tímy veselo pracovali na niečom na svojich notebookoch a vyvolávali frustráciu.
— Čo ak spoznáte vzduchovú gitaru, ako keby ste hrali na gitare, a podľa toho zahráte zvuk gitary? ()
Bingo! Myšlienka je militantná a my máme silu zariadiť všetko skvelým spôsobom. Pre rozpoznávanie pohybu existuje a je veľmi v poriadku (aj mobilná). Poďme predstierať!

rozhodnutie
Hlavnými úlohami je vytvorenie mriežky na zariadení (musí byť skutočná) a naučiť sa rozpoznávať pohyby. Egor začal portovať, Tyoma začal premýšľať o tom, aké pohyby by bolo zaujímavé zakomponovať (len gitara - nuda) a ja a Danya sme ich začali rozoznávať. To si však vyžaduje dáta. Aký je rozdiel medzi PRO a amatérom? PRO má klaster s GPU - to je jedna vec, dve - PRO bude zbierať dáta pre seba, keď ich potrebuje. Danya zorganizovala stánok, kde boli z kamery zaznamenané surové údaje o súradniciach rozpoznanej postavy a potom - tanec! V tú noc sme sa naučili tancovať s niťou, и .


Ako stojan na zaznamenávanie pohybov sme použili pracovný notebook, ktorý najskôr zaznamenal Daniho tvár (predtým nenapísal v JS ani riadok), keď videl ďalšiu nepochopiteľnú chybu JS.

— Nerozumiem, mám chybu na úrovni: tlač zmizla v Pythone! ()
Nočný tanec (doslova)
Natáčali sme v noci pred kamerou mnoho hodín nepretržitého pohybu. Sami si to nahrali a zachytili aj vývojárov, ktorí sa zatúlali na parket a NÚTILI ich K TANCU. Dostali sme sedem rôznych kombinácií – teraz sme sa museli naučiť medzi nimi rozlišovať.


"Prichádzal som každé tri hodiny, aby som skontroloval, či sú chlapci nažive." Paša zakričal: "Máme pivota!" - a Danya sa zo všetkých síl naklonila. Potom všetci tancovali fajku. Keď Daniilovi došli sily, Pasha otvoril okno a povedal: "Chlapci, musíme sa osviežiť." ()
Údaje z obrázku boli vopred spracované: nohy boli vyhodené, hlava bola spriemerovaná a premenená na polárne súradnice vzhľadom na trup. Pohybový detektor sme trénovali pomocou catboostu – pomocou trojsekundového úryvku dátového toku z modelu. Až do tejto noci sme s knižnicou nepracovali – ukázalo sa, že je to bojová a môžete ju vložiť do iOS.

Učili klasifikáciu vo viacerých triedach, pričom jedna trieda bola čo najnudnejšia – len sa motať pred kamerou. Najťažšie bolo zaznamenať „rockový“ pohyb - krútili sme hlavami tak nezištne, že sa to po chvíli začalo točiť. A natiahli ruku s „kozou“, hoci to bolo zbytočné - posenet má na celej ruke iba jeden bod, nevidí prsty.

— Okolo tretej ráno Paša vliezol do spacáku a hodinu sa v ňom pohyboval výlučne a skákal ako pravý klokan. ()
Okolo 8. hodiny ráno nás zastihla malá kríza – všetko bolo pokazené a nič nefungovalo, no potom zrazu všetko začalo fungovať samo. Ako najväčšia výzva sa ukázalo zaskrutkovanie oboch modelov do aplikácie – Egor dokončil montáž doslova päť minút pred termínom. Dajme mu slovo:
— Keď sme našli nápad, všetko išlo veľmi dobre a produktívne. Chalani trénovali mriežku a tancovali a PoseNet som pripojil k príbehovej kamere v JavaScripte priamo v prehliadači. Počiatočné testovacie jazdy fungovali dobre a boli prekvapivo rýchle. Preto, keď sa ráno ukázalo, že WebGL vo WebView nečakane spadlo pri práci s textúrami pre nejaký nezmysel a nebolo ako nájsť riešenie, skoro som prepadol zúfalstvu. Ale už bolo neskoro vzdať sa: horeli sme tou myšlienkou. Preto sme z posledných síl a s poslednou plechovkou redbullu pretiahli do iOS klienta na cestách alternatívny model založený na CoreML a začali sme natívne sledovať pózy – aby sme ich potom poslali do modelu s tancami a získať nejaký výsledok na výstupe. V podstate sme prácu zopakovali odznova! Ďalšou výzvou bol druhý model, ktorý zrazu začal ako vstup očakávať viac ako tisíc argumentov! Xcode preň vygeneroval rozhranie, ktoré by bolo jednoducho nereálne použiť priamo. Našťastie ma znalosť Objective-C nesklamala a našlo sa elegantné riešenie. ()
Pitching
V piatok o 14:14 bol konečný termín na nahranie videa o projekte – niekoľko tímov to nestihlo včas a boli diskvalifikované. A o 40:XNUMX sme mali predstavenie pre kurátorov trate súvisiace s produktom. Mali sme chalanov z tímu Video and Music a zdalo sa, že sa im na ihrisku páčilo všetko. Na našej trati sme obsadili druhé miesto (chceli sme prvé, pretože máme taký skvelý projekt!) a skončili sme vo finále (kvalifikovali sa dva tímy z našej dráhy).
— Tento rok som bol prvýkrát kurátorom interného hackathonu. Zdržanlivo poviem: hodnotiť prácu bolo mimoriadne ťažké. Úroveň všetkých tímov bez výnimky bola neskutočná. Funkcia by nemala byť len technologicky vyspelá, nemala by byť len „blízka výrobe“, nielen „potenciálne užitočná pre naše produkty“. Víťazný projekt musí spĺňať všetky tieto kritériá súčasne. Zdá sa, že chlapcom sa to podarilo. ()
Posledný nadhoz sme mali o 17:40. Do tejto doby bolo potrebné pripraviť ďalšie demo, tentokrát pre celý Team a porota bola iná - technický riaditeľ, produktový riaditeľ a marketingový riaditeľ.
O piatej večer bolo po všetkom – šli sme domov spať, nič nevediac o výsledkoch.
Výsledky sú konečne
Výsledky zverejnili až v pondelok. Najprv ocenili víťazov skladieb (nie je to náš prípad – pripomínam, boli sme druhí), potom hlasovali lídri publika (nie my) a potom tretieho (a toto tiež nie sme my), druhý (opäť nie my) a napokon my.
Tu sú projekty, s ktorými sme museli súťažiť:
2. miesto - citlivý hlasový asistent;
3. miesto - časová os interných chýb;
Cena People's Choice Award je pripomienkou nadchádzajúcich chatovacích stretnutí.
— Toto je najlepší hackathon, na ktorom som sa kedy zúčastnil. Bolo tam oveľa viac jazdy ako na križovatke. ()
— Veľmi ma bavilo pracovať s kolegami z úplne iného oddelenia – strojového učenia som sa nikdy predtým nedotkol, zdalo sa mi to ako nejaké kúzlo, ale teraz to tak nie je. ()
— Bolo skvelé stať sa súčasťou takého skvelého tímu s takým skvelým projektom. Za jeden deň som stihol byť dizajnérom, kameramanom, zvukárom, redaktorom, hudobníkom a textárom! Tiež som bol jediný, komu sa podarilo zaspať. ()
Život po hackathone
Väčšina projektov vyvinutých na hackathonoch sa nedostáva do predaja z rôznych dôvodov: zmena zamerania, náročnosť implementácie, niečo nepredvídané pri implementácii. Interný hackathon nie je výnimkou.
Napriek tomu uvádzame projekty, ktoré uzreli svetlo sveta:
- každého obľúbená ;
- , ktorá začala 14. februára 2018;
- красивые pre krátke vstupy;
- a množstvo interných funkcií, o ktorých by sme sa radi porozprávali, ale nemôžeme :)

Zdroj: hab.com
