Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

VK:lla on viileä perinne - sisäinen hackathon, johon vain VKontakten kaverit voivat osallistua. Kerron hackathonista tänä vuonna ykkössijan olleen ja kokonaisuudessaan väsymykseen kuolleen, mutta tarinakameran tanssiliikkeen tunnistimen onnistuneen joukkueen puolesta.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

Nimeni on Paavali, johdan VKontakten huippututkimustiimiä ja suhtaudun lämpimästi hackathoneihin: osallistujana (Junction tai useat deephackit) ja äskettäin kuraattorina (VK hackathon tai VKontakte case at Junction - tämä oli muuten ensimmäinen kerta Osallistuin sinne venäläiseen yritykseen). Järjestämme kaikille avoimen VK Hackathonin neljättä vuotta (viimeisen kerran kiipesimme Eremitaasin päämajaan), ja siihen osallistui merkittävä osa teknisestä tiimistämme ennen VK:lle liittymistä.

Sisäinen hackathon antaa tiimille mahdollisuuden kokeilla alustaa paljon, testata erilaisia ​​ideoita ja yleensä pitää hauskaa. Tärkeä ero on, että ratkaisuja voidaan integroida paljon enemmän VK:hen, mikä antaa meille mahdollisuuden saada aikaan mielenkiintoisia prototyyppejä.

Hackathon järjestetään Singer Housessa koko päivän – aivan keskellä viikkoa Päämaja muuttuu keskiyön liikkeeksi. On hauska seurata, kuinka siivoojat katselevat ympärilleen hämmästyneenä aamulla - tavallisesti tyhjä toimisto kello 6:lla osoittautuu yhtäkkiä täynnä takkuisia ihmisiä, jotka liikkuvat kuin zombeja ja huutavat: "Viisi tuntia jäljellä!" Tai kun astut keittiöön kello kolmelta aamulla ja sessioiden aikana tuoksuu yliopiston asuntolailta: energiajuomat, pizza ja paniikki. Tämä tietysti tapahtuu tavallisena päivänä, mutta se on harvinaista niin massiivisessa mittakaavassa.

Kolme edellistä sisäistä hackathonia järjestettiin kesällä. Vuonna 2019 päätimme olla tuhlaamatta aikaa pikkuasioihin ja järjestää myös talvihackathonin - kaksi hackathonia on paljon parempi kuin yksi, koska tämä on siisti tilaisuus kokeilla ja toteuttaa ideaa, jolle aika ei riitä normaalirytmiin. Säännöt ovat myös muuttuneet: aiemmin joukkueessa sai olla enintään kolme henkilöä, mutta tänä vuonna niitä on neljä, mutta yksi ei kirjoita koodia, vaan on erikoistunut johonkin muuhun. Tiimiin oli mahdollista kutsua suunnittelijoita, tuotepäälliköitä, testaajia, markkinoijia ja muita tyyppejä. Tähän hackathoniin osallistui yhteensä 38 joukkuetta.

Dreamtim (tarkemmin yksi 38:sta)

Pääsimme sopimukseen kanssa Danei ja yhdessä vakuutimme Egor и Tyoma liity joukkueeseen. Kuten odotettua, mallit vastasivat meistä, Egor vastasi iOS:stä, Tyoma vastasi tuotannosta ja suunnittelusta. Mobiilikehitys + suunnittelu + vähän koneoppimista ja taustaa on avain menestykseen 2k19 hackathonissa.

Jo tänä vuonna ilmestyi jako kappaleisiin, joita ei ennen ollut: Media (johon osallistuimme), Viestintä, Infrastruktuuri, Sisältö ja Viihde. Meillä oli vahvoja kilpailijoita. Esimerkiksi VK:n vanhempi suunnittelija motivoi meitä jatkuvasti Ilya, joka tuli huoneeseemme ja näytti prototyyppejä tiiminsä ideasta.

Ajatus

— Voitin palkintoja lähes kaikissa hackathoneissa, joihin osallistuin, ja odotin samaa myös tämän talven sisäiseltä hackathonilta. (Danya oli itsevarma)

Meidän (erityisesti Daninan) ideamme oli alun perin tämä: halusimme tutkia musiikin sukupolven aihetta + saada kaikki laitteeseen, muuten se olisi "liian backend". Hackathon alkoi aivoriihillä – mietimme mitä voisimme keksiä. Musiikin luominen on mielenkiintoista, mutta haluan tehdä siitä käyttäjäriippuvaisen. Joitakin painikkeita? Ehkä piirtää ruudulle ja luoda musiikkia sen perusteella? Samalla opimme Music-tiimin kavereilta lisäämään tarvittavat kappaleet. Mutta se ei silti tuntunut aivan oikealta. Naapuritiimit työskentelivät iloisesti kannettavissa tietokoneissaan ja aiheuttivat turhautumista.

— Entä jos tunnistat ilmakitaran ikään kuin soittaisit kitaraa ja tästä riippuen soitat kitaran ääntä? (Tema)

Bingo! Ajatus on militantti, ja meillä on valta järjestää kaikki hienolla tavalla. Liikkeentunnistusta varten on olemassa posenet, ja hän on erittäin hyvä (myös mobiiliystävällinen). Esitetään!

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

päätös

Päätehtävinä on luoda laitteeseen ruudukko (sen on oltava todellinen) ja oppia tunnistamaan liikkeitä. Egor aloitti portaamisen, Tyoma alkoi miettiä, mitä liikkeitä olisi mielenkiintoista sisällyttää (pelkkä kitara - tylsää), ja Danya ja minä aloimme tunnistaa niitä. Mutta tämä vaatii dataa. Mitä eroa on PRO:lla ja amatöörillä? PRO:lla on GPU-klusteri - se on yksi asia, kaksi - PRO kerää tietoja itselleen, kun se tarvitsee sitä. Danya järjesti osaston, jossa tunnistetun hahmon raakakoordinaatit tallennettiin kamerasta, ja sitten - tanssia! Sinä iltana opimme tanssimaan hammaslangan käyttöä, skibidi и dudtsa.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin
Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

Telineenä liikkeiden tallentamiseen käytimme työläppäriä, joka tallensi ensimmäisen kerran Danin kasvot (hän ​​ei ollut kirjoittanut yhtään riviäkään JS:ssä aiemmin), kun hän näki toisen käsittämättömän JS-virheen.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

— En ymmärrä, minulla on tasovirhe: tulostus on kadonnut Pythonista! (Danya)

Yötanssia (kirjaimellisesti)

Kuvasimme monta tuntia jatkuvaa liikettä kameran edessä yöllä. He nauhoittivat sen itse ja ottivat myös kiinni kehittäjät, jotka vaelsivat lattialle ja PAKOTtivat heidät Tanssimaan. Saimme seitsemän erilaista yhdistelmää - nyt meidän oli opittava erottamaan ne toisistaan.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin
Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

"Tulin kolmen tunnin välein tarkistamaan, olivatko kaverit elossa." Pasha huusi: "Meillä on pivot!" - ja Danya taipui kaikin voimin. Sitten kaikki tanssivat piippua. Kun Daniilin voimat loppuivat, Pasha avasi ikkunan ja sanoi: "Kaverit, meidän täytyy virkistäytyä." (Madina)

Kuvan tiedot esikäsiteltiin: jalat heitettiin ulos, pään keskiarvo laskettiin ja muutettiin napakoordinaateiksi suhteessa vartaloon. Koulutimme liiketunnistimen käyttämällä catboostia - käyttämällä kolmen sekunnin otteen mallin datavirrasta. Tähän iltaan asti emme olleet työskennelleet kirjaston kanssa - se osoittautui taisteluksi, ja voit laittaa sen iOS: ään.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

He opettivat moniluokkaista luokittelua, ja yksi luokka oli mahdollisimman tylsää - vain roikkui kameran edessä. Vaikein oli "rock"-liikkeen äänittäminen - pudistelimme päätämme niin epäitsekkäästi, että hetken kuluttua se alkoi pyöriä. Ja he ojensivat kätensä "vuohen" kanssa, vaikka tämä oli turhaa - posenetilla on vain yksi piste koko kädessä, se ei näe sormia.

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

- Noin kello 3 aamulla Pasha kiipesi makuupussiin ja liikkui siinä tunnin ajan, hyppien kuin oikea kenguru. (Madina)

Kello 8:n aikoihin meitä iski pieni kriisi - kaikki oli rikki ja mikään ei toiminut, mutta sitten kaikki alkoi yhtäkkiä toimia itsestään. Molempien mallien ruuvaaminen sovellukseen osoittautui suurimmaksi haasteeksi - Egor sai kokoonpanon valmiiksi kirjaimellisesti viisi minuuttia ennen määräaikaa. Annetaan hänelle puhe:

– Kun löysimme idean, kaikki sujui erittäin hyvin ja tuloksellisesti. Kaverit harjoittelivat ruudukkoa ja tanssivat, ja liitin PoseNetin tarinakameraan JavaScriptissä suoraan selaimessa. Alkukoeajot toimivat hyvin ja olivat yllättävän nopeita. Siksi, kun aamulla kävi ilmi, että WebView:n WebGL kaatui odottamatta työskennellessäsi tekstuurien kanssa joidenkin hölynpölyjen takia, eikä ratkaisua löytynyt, jouduin melkein epätoivoon. Mutta oli liian myöhäistä luovuttaa: olimme ajatuksesta palamassa. Siksi viimeisellä voimallamme ja viimeisellä red bull-tölkillä raahasimme CoreML-pohjaisen vaihtoehtoisen mallin iOS-asiakasohjelmaan liikkeellä ollessamme ja aloimme seurata asentoja natiivisti - lähettääksemme ne sitten mallille tansseilla. ja saat jonkinlaisen tuloksen lähdössä. Pohjimmiltaan toistimme työn uudelleen! Toinen haaste oli toinen malli, joka yhtäkkiä alkoi odottaa enemmän kuin tuhat argumenttia syötteeksi! Xcode loi sille käyttöliittymän, jota olisi yksinkertaisesti epärealistista käyttää suoraan. Onneksi tietoni Objective-C:stä ei pettänyt minua, ja tyylikäs ratkaisu löytyi. (Yegor)

Pikeys

Perjantaina klo 14 oli projektia koskevan videon lataamisen määräaika – useat tiimit eivät päässeet perille ajoissa ja heidät hylättiin. Ja klo 14:40 meillä oli pitch tuotteeseen liittyvän radan kuraattoreille. Meillä oli kavereita Video and Music -tiimistä, ja he näyttivät pitävän kaikesta kentällä. Saavuimme radallamme toiselle sijalle (haluimme ensin, koska meillä on niin siisti projekti!) ja päädyimme finaaliin (kaksi joukkuetta radaltamme karsiutui).

– Tänä vuonna olin ensimmäistä kertaa sisäisen hackathonin kuraattorina. Sanon maltillisesti: työtä oli erittäin vaikea arvioida. Kaikkien joukkueiden taso poikkeuksetta oli uskomaton. Ominaisuuden ei pitäisi olla vain teknisesti edistynyt, ei vain "lähellä tuotantoa", ei vain "mahdollisesti hyödyllinen tuotteillemme". Voittajan on täytettävä kaikki nämä kriteerit samanaikaisesti. Näyttää siltä, ​​että pojat onnistuivat. (Andrew)

Viimeinen esitys oli klo 17. Tähän mennessä oli tarpeen valmistella toinen demo, tällä kertaa koko Teamille, ja tuomaristo oli erilainen - tekninen johtaja, tuotejohtaja ja markkinointijohtaja.

Viideltä illalla kaikki oli ohi - menimme kotiin nukkumaan tietämättä mitään tuloksista.

Tulokset ovat vihdoin

Tulokset julkistettiin vasta maanantaina. Ensin he palkittiin kappaleiden voittajat (ei meidän tapaus - muistutan, olimme toisia), sitten yleisön johtajat äänestivät (emme me), ja sitten kolmas (ja tämä ei myöskään ole me), toinen (jälleen, emme me) ja lopuksi me.

Tässä ovat projektit, joiden kanssa jouduimme kilpailemaan:

2. sija - reagoiva ääniavustaja;
3. sija - sisäisten virheiden aikajana;
People's Choice Award on muistutus tulevista chat-tapaamisista.

– Tämä on paras hackathon, johon olen koskaan osallistunut. Ajoa oli paljon enemmän kuin edes Junctionissa. (Danya)

– Nautin todella työskentelystä täysin eri osaston kollegoiden kanssa - en ollut koskaan ennen koskenut koneoppimiseen, se tuntui minusta jonkinlaisesta taikuudesta, mutta nyt se ei ole sitä. (Yegor)

– Oli todella siistiä päästä osaksi näin siistiä tiimiä niin hienon projektin kanssa. Yhdessä päivässä onnistuin olemaan suunnittelija, videokuvaaja, äänisuunnittelija, editoija, muusikko ja copywriter! Olin myös ainoa, joka onnistui nukkumaan. (Tema)

Elämää hackathonin jälkeen

Suurin osa hackathoneilla kehitetyistä projekteista ei pääse myyntiin eri syistä: painopisteen muutoksesta, toteutuksen monimutkaisuudesta, toteutuksessa odottamattomasta. Sisäinen hackathon ei ole poikkeus.

Siitä huolimatta listaamme päivänvalon näkineet hankkeet:

Kuinka voitimme sisäisen hackathonin oppimalla skibidin, hammaslangan ja javascriptin

Lähde: will.com

Lisää kommentti