Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

VK ima cool tradiciju - interni hackathon, u kojem mogu sudjelovati samo dečki iz VKontaktea. Pričat ću vam o hackathonu u ime ekipe koja je ove godine zauzela prvo mjesto i umrla od umora u cijelosti, ali je uspjela isprobati detektor plesnog pokreta za story kameru.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

Moje ime Pavle, vodim vrhunski VKontakte istraživački tim i imam topao stav prema hackathonima: kao sudionik (Junction ili brojni deephackovi) i nedavno kao kustos (VK hackathon ili VKontakte slučaj na Junctionu - usput, ovo je bio prvi put Sudjelovao sam tamo Ruska tvrtka). VK Hackathon, otvoren za sve, održavamo već četvrtu godinu (zadnji put smo se popeli u Glavno sjedište Hermitagea), a značajan dio našeg tehničkog tima sudjelovao je u njemu prije nego što se pridružio VK.

Interni hackathon omogućuje samom timu da puno eksperimentira s platformom, testira različite ideje i općenito se zabavi. Važna razlika je u tome što se rješenja mogu mnogo više integrirati u VK, što nam daje priliku za postizanje zanimljivih prototipova.

Hackathon se održava u Singer Houseu cijeli dan - sredinom tjedna Stožer se pretvara u ponoćni pokret. Smiješno je gledati kako čistačice ujutro iznenađeno gledaju oko sebe - obično prazan ured u 6 ujutro odjednom se pokaže pun čupavih ljudi koji se kreću poput zombija i viču: "Još pet sati!" Ili kad uđete u kuhinju u tri ujutro, a za vrijeme sesija miriše na sveučilišne spavaonice: energetska pića, pizza i panika. To se, naravno, događa običnog dana, ali je rijetkost u tako velikim razmjerima.

U ljeto su održana tri prethodna interna hackathona. U 2019. godini odlučili smo ne gubiti vrijeme na sitnice i također održati zimski hackathon - dva hackathona su puno bolja od jednog, jer ovo je cool prilika za eksperimentiranje i realizaciju ideje za koju nema dovoljno vremena u uobičajenom ritmu. Promijenila su se i pravila: prije je tim mogao imati najviše troje ljudi, a ove godine četvero, no jedan ne piše kod, već je specijaliziran za nešto drugo. U tim je bilo moguće pozvati dizajnere, product managere, testere, marketingaše i druge momke. Na ovom hackathonu sudjelovalo je ukupno 38 timova.

Dreamtim (točnije jedan od 38)

Dogovorili smo se sa Danei i zajedno smo se uvjerili Egor и Tyoma pridruži se timu. Očekivano, modeli su bili zaduženi za nas, Egor je bio zadužen za iOS, Tyoma je bio zadužen za produkciju i dizajn. Mobilni razvoj + dizajn + malo strojnog učenja i backend ključ je uspjeha na 2k19 hackathonu.

Još se ove godine pojavila podjela na staze, koje prije nije bilo: Mediji (u kojima smo sudjelovali), Komunikacije, Infrastruktura, Sadržaj i Zabava. Imali smo jake konkurente. Na primjer, stalno nas je motivirao stariji dizajner VK Ilya, koji je ušao u našu sobu i pokazao prototipove ideje svog tima.

Ideja

— Osvojio sam nagrade na gotovo svim hackathonima na kojima sam sudjelovao, a isto sam očekivao i od internog hackathona ove zime. (Danya bio siguran u sebe)

Naša (konkretno Danina) ideja je u početku bila sljedeća: htjeli smo istražiti temu generacije glazbe + imati sve na uređaju, inače bi to bilo "previše backend". Hackathon je započeo brainstormingom – razmišljali smo što bismo mogli smisliti. Generiranje glazbe je zanimljivo, ali želim da bude ovisno o korisniku. Neki gumbi? Možda crtati po ekranu i na temelju toga generirati glazbu? Ujedno smo od momaka iz Music tima učili kako dodati pjesme koje su nam potrebne. Ali ipak se nije činilo sasvim u redu. Susjedne ekipe su veselo radile na nečemu na svojim laptopima i izazivale frustraciju.

— Što ako prepoznate zračnu gitaru, kao da svirate gitaru, i ovisno o tome odsvirate zvuk gitare? (Tema)

Bingo! Ideja je militantna, a mi imamo moć sve organizirati na sjajan način. Za prepoznavanje pokreta postoji posenet, i jako je ok (također prilagođena mobilnim uređajima). Pretvarajmo se!

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

odluka

Glavni zadaci su izraditi mrežu na uređaju (mora biti stvarna) i naučiti prepoznavati pokrete. Egor je počeo portirati, Tyoma je počeo razmišljati koje bi pokrete bilo zanimljivo uključiti (samo gitara - dosadno), a Danya i ja smo ih počeli prepoznavati. Ali za to su potrebni podaci. Koja je razlika između PRO i amatera? PRO ima klaster s GPU-om - to je jedna stvar, druga - PRO će prikupiti podatke za sebe kada mu zatrebaju. Danya je organizirao štand na kojem su snimljeni neobrađeni podaci o koordinatama prepoznatog lika iz kamere, a potom - ples! Te noći naučili smo plesati zubima, skibidi и dudtsa.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript
Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

Kao postolje za snimanje pokreta upotrijebili smo radni laptop, koji je prvo snimio Danijevo lice (prije toga nije napisao niti jedan red u JS-u) kada je vidio još jednu nerazumljivu JS grešku.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

— Ne razumijem, imam pogrešku razine: print je nestao u Pythonu! (Danya)

Noćni ples (doslovno)

Snimili smo mnogo sati neprekidnog kretanja ispred kamere noću. Sami su to snimili, a uhvatili su i programere koji su dolutali na pod i TJERALI ih na PLES. Dobili smo sedam različitih kombinacija - sada smo ih morali naučiti razlikovati.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript
Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

“Dolazio sam svaka tri sata da provjerim jesu li dečki živi.” Paša je viknuo: "Imamo stožer!" - a Danya se izvijao iz sve snage. Zatim su svi zaplesali sviralu. Kada je Danilu ponestalo snage, Pasha je otvorio prozor i rekao: "Momci, moramo se osvježiti." (Madina)

Podaci sa slike su prethodno obrađeni: noge su izbačene, glava je prosječna i pretvorena u polarne koordinate u odnosu na torzo. Istrenirali smo detektor pokreta koristeći catboost - koristeći isječak od tri sekunde toka podataka iz modela. Do ove noći nismo radili s knjižnicom - pokazalo se da je borbena i možete je staviti u iOS.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

Učili su višerazrednu klasifikaciju, pri čemu je jedan razred bio što dosadniji – samo se motao ispred kamere. Najteže je bilo snimiti kretanje “rocka” - toliko smo nesebično odmahivali glavom da se nakon nekog vremena počelo vrtjeti. I ispružili su ruku s "jarcem", iako je to bilo besmisleno - posenet ima samo jedan vrh na cijeloj ruci, ne vidi prste.

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

— Paša se oko 3 sata ujutro popeo u vreću za spavanje i sat vremena kretao isključivo u njoj, skačući kao pravi klokan. (Madina)

Oko 8 ujutro nas je pogodila mala kriza - sve je bilo pokvareno i ništa nije radilo, ali onda je odjednom sve krenulo samo od sebe. Ušrafiti oba modela u aplikaciju pokazalo se najvećim izazovom - Egor je montažu završio doslovno pet minuta prije roka. Dajmo mu riječ:

— Nakon što smo pronašli ideju, sve je išlo vrlo dobro i produktivno. Dečki su trenirali mrežu i plesali, a ja sam PoseNet priključio na kameru za priču u JavaScriptu izravno u pregledniku. Početni testovi radili su dobro i bili su iznenađujuće brzi. Stoga, kada se ujutro pokazalo da se WebGL u WebViewu neočekivano srušio pri radu s teksturama zbog neke gluposti i da nije bilo načina da se pronađe rješenje, gotovo sam pao u očaj. Ali bilo je kasno za odustajanje: gorjeli smo od te ideje. Stoga smo posljednjim snagama i posljednjom limenkom red bulla u pokretu dovukli alternativni model temeljen na CoreML-u u iOS klijent i počeli nativno pratiti poze - kako bismo ih zatim poslali modelu s plesovima i dobiti neki rezultat na izlazu. U biti, ponovili smo rad iznova! Još jedan izazov bio je drugi model, koji je odjednom počeo očekivati ​​više od tisuću argumenata kao ulaz! Xcode je za njega generirao sučelje koje bi jednostavno bilo nerealno izravno koristiti. Srećom, moje poznavanje Objective-C-a me nije iznevjerilo i pronađeno je elegantno rješenje. (Egor)

Bacanje

U petak, u 14 sati, bio je rok za učitavanje videa o projektu - nekoliko timova nije stiglo na vrijeme i bili su diskvalificirani. A u 14:40 imali smo prezentaciju kustosima staze u vezi s proizvodom. Imali smo dečke iz video i glazbenog tima, i činilo se da im se svidjelo sve u vezi terena. Osvojili smo drugo mjesto na našoj stazi (htjeli smo prvo, jer imamo tako cool projekt!) i završili u finalu (dva tima s naše staze su se kvalificirala).

— Ove sam godine prvi put bio kustos internog hackathona. Reći ću suzdržano: bilo je izuzetno teško ocijeniti rad. Razina svih ekipa bez iznimke bila je za nevjerovati. Značajka ne bi trebala biti samo tehnološki napredna, ne samo "blizu proizvodnje", ne samo "potencijalno korisna za naše proizvode". Pobjednički projekt mora zadovoljiti sve ove kriterije istovremeno. Čini se da su momci uspjeli. (Andrija)

Završno bacanje imali smo u 17:40. Do tog vremena trebalo je pripremiti još jedan demo, ovaj put za cijeli tim, a žiri je bio drugačiji - tehnički direktor, direktor proizvoda i direktor marketinga.

U pet navečer sve je bilo gotovo - otišli smo kući u krevet, ne znajući ništa o rezultatima.

Rezultati su konačno

Rezultati su objavljeni tek u ponedjeljak. Najprije su nagradili pobjednike skladbi (ne naš slučaj - da podsjetim, mi smo bili drugi), zatim lidere glasova publike (ne mi), a zatim treće (i to također nismo mi), drugo (opet, ne mi) i, konačno, mi.

Ovo su projekti s kojima smo se morali natjecati:

2. mjesto - responzivni glasovni asistent;
3. mjesto - vremenska linija internih grešaka;
Nagrada People's Choice Award podsjetnik je na nadolazeće chat sastanke.

— Ovo je najbolji hackathon na kojem sam ikad sudjelovao. Bilo je puno više vožnje nego čak i na Junctionu. (Danya)

— Jako sam uživao raditi s kolegama iz potpuno drugog odjela - nikada se prije nisam dotaknuo strojnog učenja, činilo mi se kao neka magija, ali sada nije tako. (Egor)

— Bilo je jako cool postati dio tako cool tima s tako cool projektom. U jednom sam danu uspio biti dizajner, videograf, ton majstor, montažer, glazbenik i copywriter! Bio sam i jedini koji je uspio spavati. (Tema)

Život nakon hackathona

Većina projekata razvijenih na hackathonima ne stigne do prodaje iz raznih razloga: promjena fokusa, složenost implementacije, nešto nepredviđeno u implementaciji. Interni hackathon nije iznimka.

Ipak, navodimo projekte koji su ugledali svjetlo dana:

Kako smo osvojili interni hackathon učeći skibidi, flossing i javascript

Izvor: www.habr.com

Dodajte komentar