Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

VK har en kul tradisjon - et internt hackathon, der bare gutter fra VKontakte kan delta. Jeg skal fortelle deg om hackathonet på vegne av laget som tok førsteplassen i år og døde av trøtthet i sin helhet, men som klarte å prøve ut en dansebevegelsesdetektor for historiekameraet.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

Mitt navn er Paul, Jeg leder det øverste VKontakte-forskerteamet og har en varm holdning til hackathons: som deltaker (Junction eller en rekke deephacks) og nylig som kurator (VK hackathon eller VKontakte-sak ved Junction - forresten, dette var første gang Jeg deltok der russisk selskap). Vi holder VK Hackathon, åpent for alle, for fjerde år (siste gang vi klatret inn i Hermitages hovedkvarter), og en betydelig del av vårt tekniske team deltok i det før vi begynte i VK.

Et internt hackathon lar teamet selv eksperimentere mye med plattformen, teste forskjellige ideer og generelt ha det gøy. En viktig forskjell er at løsninger kan integreres mye mer i VK, noe som gir oss muligheten til å oppnå interessante prototyper.

Hackathonet finner sted i Singer House hele dagen lang - midt i uken blir hovedkvarteret til en midnattsbevegelse. Det er morsomt å se hvordan renholderne ser seg overrasket rundt om morgenen - et vanligvis tomt kontor klokken 6 viser seg plutselig å være fylt med raggete mennesker som beveger seg som zombier og roper: "Fem timer igjen!" Eller når du går inn på kjøkkenet klokken tre om morgenen og det lukter universitetshybler under økter: energidrikker, pizza og panikk. Dette skjer selvfølgelig på en vanlig dag, men det er sjelden i så stor skala.

Tre tidligere interne hackathon fant sted i sommer. I 2019 bestemte vi oss for å ikke kaste bort tid på bagateller og også holde et vinterhackathon - to hackathon er mye bedre enn ett, fordi dette er en kul mulighet til å eksperimentere og implementere en idé som det ikke er nok tid til i den vanlige rytmen. Reglene er også endret: tidligere kunne et lag ha maksimalt tre personer, men i år er det fire, men en skriver ikke kode, men spesialiserer seg på noe annet. Det var mulig å invitere designere, produktsjefer, testere, markedsførere og andre gutter til teamet. Totalt deltok 38 lag i dette hackathonet.

Dreamtim (mer presist, en av 38)

Vi kom til enighet med Danei og sammen overbeviste vi Egor и Tyoma bli med på laget. Som forventet var det modellene som hadde ansvaret for oss, Egor hadde ansvaret for iOS, Tyoma hadde ansvaret for produksjon og design. Mobilutvikling + design + litt maskinlæring og backend er nøkkelen til suksess på 2k19 hackathon.

Selv i år dukket det opp en inndeling i spor, som ikke eksisterte før: Media (der vi deltok), Kommunikasjon, Infrastruktur, Innhold og Underholdning. Vi hadde sterke konkurrenter. For eksempel ble vi hele tiden motivert av seniordesigneren til VK Ilya, som kom inn på rommet vårt og viste prototyper av teamets idé.

Idé

— Jeg tok premier i nesten alle hackathonene jeg deltok på, og det samme forventet jeg av det interne hackathonet i vinter. (Danya var trygg på seg selv)

Vår (spesifikt Daninas) idé var opprinnelig denne: vi ønsket å utforske temaet musikkgenerering + ha alt på enheten, ellers ville det være "for backend". Hackathonet begynte med idédugnad – vi tenkte på hva vi kunne finne på. Å generere musikk er interessant, men jeg vil gjøre det brukeravhengig. Noen knapper? Kanskje tegne på skjermen og generere musikk basert på det? Samtidig lærte vi av gutta fra Music-teamet hvordan vi skulle legge til sporene vi trengte. Men det virket fortsatt ikke helt riktig. Naboteam jobbet muntert med noe på de bærbare datamaskinene sine og skapte frustrasjon.

— Hva om du kjenner igjen luftgitar, som om du spiller gitar, og avhengig av dette spiller gitarlyden? (Tema)

Bingo! Ideen er militant, og vi har makt til å ordne alt på en flott måte. For bevegelsesgjenkjenning er det posenet, og hun er veldig ok (også mobilvennlig). La oss late som!

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

beslutning

Hovedoppgavene er å lage et rutenett på enheten (det må være ekte) og lære å gjenkjenne bevegelser. Egor begynte å portere, Tyoma begynte å tenke på hvilke bevegelser som ville være interessante å inkorporere (bare en gitar - kjedelig), og Danya og jeg begynte å gjenkjenne dem. Men dette krever data. Hva er forskjellen mellom en PRO og en amatør? PRO har en klynge med en GPU - det er én ting, to - PRO vil samle inn data for seg selv når den trenger det. Danya organiserte et stand der rå koordinatdata til en gjenkjent figur ble tatt opp fra et kamera, og deretter - dans! Den kvelden lærte vi å danse tanntråd, skibidi и dudtsa.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript
Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

Som et stativ for å registrere bevegelser brukte vi en bærbar datamaskin som først registrerte Danis ansikt (han hadde ikke skrevet en eneste linje i JS før) da han så en annen uforståelig JS-feil.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

— Jeg forstår ikke, jeg har en nivåfeil: print har forsvunnet i Python! (Danya)

Nattdans (bokstavelig talt)

Vi filmet mange timer med kontinuerlig bevegelse foran kameraet om natten. De spilte det inn selv, og fanget også utviklerne som vandret ut på gulvet og TVUNGET dem til å DANSE. Vi fikk syv forskjellige kombinasjoner – nå måtte vi lære oss å skille mellom dem.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript
Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

"Jeg kom inn hver tredje time for å sjekke om gutta var i live." Pasha ropte: "Vi har en pivot!" - og Danya bøyde seg av all kraft. Så danset alle pipe. Da Daniil gikk tom for krefter, åpnet Pasha vinduet og sa: "Gutter, vi må friske opp." (Madina)

Dataene fra figuren ble forhåndsbehandlet: bena ble kastet ut, hodet ble beregnet som gjennomsnitt og konvertert til polare koordinater i forhold til overkroppen. Vi trente bevegelsesdetektoren ved hjelp av catboost - ved å bruke et tre sekunders utdrag av datastrømmen fra modellen. Inntil i natt hadde vi ikke jobbet med biblioteket - det viste seg å være en kamp, ​​og du kan legge det i iOS.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

De underviste i flerklasseklassifisering, hvor en klasse var så kjedelig som mulig – bare å henge rundt foran kamera. Det vanskeligste var å spille inn "rock" -bevegelsen - vi ristet så uselvisk på hodet at det etter en stund begynte å snurre. Og de stakk ut en hånd med en "geit", selv om dette var meningsløst - posenet har bare ett punkt på hele hånden, det ser ikke fingrene.

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

— Omtrent klokken 3 om morgenen klatret Pasha opp i en sovepose og beveget seg utelukkende i den i en time, og hoppet som en ekte kenguru. (Madina)

Rundt klokken 8 ble vi rammet av en liten krise - alt var ødelagt og ingenting virket, men så begynte alt plutselig å fungere av seg selv. Å skru begge modellene inn i applikasjonen viste seg å være den største utfordringen – Egor fullførte monteringen bokstavelig talt fem minutter før fristen. La oss gi ham ordet:

— Etter at vi fant ideen, gikk alt veldig bra og produktivt. Gutta trente rutenettet og danset, og jeg koblet PoseNet til story-kameraet i JavaScript direkte i nettleseren. De første testkjøringene fungerte bra og var overraskende raske. Derfor, da det om morgenen viste seg at WebGL i WebView uventet krasjet når jeg jobbet med teksturer for noe tull og det ikke var mulig å finne en løsning, ble jeg nesten fortvilet. Men det var for sent å gi opp: vi brenner av tanken. Derfor, med vår siste styrke og med den siste boksen med Red Bull, dro vi en alternativ modell basert på CoreML inn i iOS-klienten mens vi var på farten og begynte å spore positurer naturlig – for deretter å sende dem til modellen med danser og få et resultat av dem. I hovedsak gjentok vi arbeidet på nytt! En annen utfordring var den andre modellen, som plutselig begynte å forvente mer enn tusen argumenter som input! Xcode genererte et grensesnitt for det som rett og slett ville være urealistisk å bruke direkte. Heldigvis sviktet ikke min kunnskap om Objective-C meg, og en elegant løsning ble funnet. (Yegor)

Pitching

På fredag, klokken 14, var det en frist for å laste opp en video om prosjektet – flere lag kom ikke i tide og ble diskvalifisert. Og klokken 14:40 hadde vi en pitch til banekuratorene knyttet til produktet. Vi hadde gutter fra video- og musikkteamet, og de så ut til å like alt med banen. Vi tok andreplassen i sporet vårt (vi ønsket oss først, fordi vi har et så kult prosjekt!) og havnet i finalen (to lag fra banen vår kvalifiserte seg).

— I år var jeg kurator for et internt hackathon for første gang. Jeg vil si med tilbakeholdenhet: det var ekstremt vanskelig å evaluere arbeidet. Nivået til alle lagene uten unntak var ufattelig. En funksjon skal ikke bare være teknologisk avansert, ikke bare «nær produksjon», ikke bare «potensielt nyttig for produktene våre». Vinnerprosjektet må oppfylle alle disse kriteriene samtidig. Det ser ut til at gutta har lyktes. (Andrew)

Vi hadde vår siste pitching klokken 17:40. På dette tidspunktet var det nødvendig å forberede en ny demo, denne gangen for hele teamet, og juryen var annerledes - teknisk direktør, produktdirektør og markedsdirektør.

Klokken fem om kvelden var alt over – vi gikk hjem og la oss, uten å vite noe om resultatene.

Resultatene er endelig

Resultatene ble offentliggjort først mandag. Først tildelte de vinnerne av sporene (ikke vårt tilfelle - la meg minne deg om at vi ble nummer to), så stemmer lederne av publikum (ikke oss), og deretter den tredje (og dette er heller ikke oss), andre (igjen, ikke oss) og til slutt oss.

Her er prosjektene vi måtte konkurrere med:

2. plass - responsiv stemmeassistent;
3. plass - tidslinje for interne feil;
People's Choice Award er en påminnelse om kommende chat-møter.

— Dette er det beste hackathonet jeg noen gang har deltatt på. Det var mye mer driv enn selv ved Junction. (Danya)

— Jeg likte veldig godt å jobbe med kolleger fra en helt annen avdeling - jeg hadde aldri rørt maskinlæring før, det virket som en slags magi for meg, men nå er det ikke sånn. (Yegor)

— Det var veldig kult å bli en del av et så kult team med et så kult prosjekt. På en dag klarte jeg å være designer, videograf, lydtekniker, redaktør, musiker og tekstforfatter! Jeg var også den eneste som klarte å sove. (Tema)

Livet etter hackathon

De fleste prosjekter utviklet på hackathons kommer ikke til salg av ulike årsaker: et endret fokus, kompleksitet i implementeringen, noe uforutsett i implementeringen. Et internt hackathon er intet unntak.

Vi lister likevel opp prosjektene som så dagens lys:

  • alles favoritt Vinci;
  • brukerkompatibilitetssjekk, som ble lansert 14. februar 2018;
  • красивые plakater for korte oppføringer;
  • og en rekke interne funksjoner som vi gjerne snakker om, men vi kan ikke :)

Hvordan vi vant et internt hackathon ved å lære skibidi, bruk av tanntråd og javascript

Kilde: www.habr.com

Legg til en kommentar