Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

VK har en cool tradition - et internt hackathon, hvor kun fyre fra VKontakte kan deltage. Jeg vil fortælle dig om hackathonet på vegne af holdet, der tog førstepladsen i år og døde af træthed i sin helhed, men som nåede at prøve en dansebevægelsesdetektor til historiekameraet.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

Mit navn er Paul, Jeg leder det øverste VKontakte-forskerteam og har en varm holdning til hackathons: som deltager (Junction eller en række deephacks) og for nylig som kurator (VK hackathon eller VKontakte-sag ved Junction - det var i øvrigt første gang Jeg deltog der russisk selskab). Vi afholder VK Hackathon, der er åbent for alle, for fjerde år (sidste gang vi klatrede ind i Hermitage's hovedkvarter), og en betydelig del af vores tekniske team deltog i det, før de sluttede sig til VK.

Et internt hackathon giver holdet selv mulighed for at eksperimentere meget med platformen, teste forskellige ideer og generelt have det sjovt. En vigtig forskel er, at løsninger kan integreres meget mere i VK, hvilket giver os mulighed for at opnå interessante prototyper.

Hackathonet foregår i Singer House dagen lang - lige midt på ugen bliver hovedkvarteret til en midnatsbevægelse. Det er sjovt at se, hvordan rengøringsassistenterne kigger sig overrasket rundt om morgenen - et normalt tomt kontor klokken 6 viser sig pludselig at være fyldt med pjuskede mennesker, der bevæger sig som zombier og råber: "Fem timer tilbage!" Eller når du går ind i køkkenet klokken tre om morgenen, og det lugter af universitetskollegier under sessioner: energidrikke, pizza og panik. Dette sker selvfølgelig på en almindelig dag, men det er sjældent i så stor skala.

Tre tidligere interne hackathons fandt sted i sommeren. I 2019 besluttede vi ikke at spilde tid på småting og også afholde et vinterhackathon - to hackathon er meget bedre end et, for det er en fed mulighed for at eksperimentere og implementere en idé, som der ikke er tid nok til i den sædvanlige rytme. Reglerne er også ændret: Tidligere kunne et hold maksimalt have tre personer, men i år er der fire, men én skriver ikke kode, men er specialiseret i noget andet. Det var muligt at invitere designere, produktchefer, testere, marketingfolk og andre fyre til holdet. I alt 38 hold deltog i dette hackathon.

Dreamtim (mere præcist, en af ​​38)

Vi kom til enighed med Danei og sammen overbeviste vi Egor и Tyoma slutte sig til holdet. Som forventet stod modellerne for os, Egor stod for iOS, Tyoma stod for produktion og design. Mobiludvikling + design + lidt maskinlæring og backend er nøglen til succes ved 2k19 hackathon.

Selv i år dukkede en opdeling op i numre, som ikke fandtes før: Medier (hvor vi deltog), Kommunikation, Infrastruktur, Indhold og Underholdning. Vi havde stærke konkurrenter. For eksempel blev vi konstant motiveret af seniordesigneren af ​​VK Ilya, som kom ind på vores værelse og viste prototyper af sit holds idé.

Idea

— Jeg tog præmier i næsten alle de hackathons, jeg deltog i, og det samme forventede jeg af det interne hackathon i vinter. (Danya var sikker på sig selv)

Vores (specifikt Daninas) idé var oprindeligt denne: vi ville udforske emnet musikgenerering + have alt på enheden, ellers ville det være "for backend". Hackathonet begyndte med brainstorming – vi tænkte på, hvad vi kunne finde på. At generere musik er interessant, men jeg vil gøre det brugerafhængigt. Nogle knapper? Måske tegne på skærmen og generere musik ud fra det? Samtidig lærte vi af gutterne fra musikteamet, hvordan man tilføjer de numre, vi havde brug for. Men det virkede stadig ikke helt rigtigt. Nabohold arbejdede muntert på noget på deres bærbare computere og skabte frustration.

— Hvad hvis du genkender luftguitar, som om du spiller guitar, og afhængigt af dette spiller guitarens lyd? (Tema)

Bingo! Idéen er militant, og vi har magten til at arrangere alt på en fantastisk måde. For bevægelsesgenkendelse er der posenet, og hun er meget ok (også mobilvenlig). Lad os lade som om!

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

beslutning

Hovedopgaverne er at skabe et gitter på enheden (det skal være ægte) og lære at genkende bevægelser. Egor begyndte at portere, Tyoma begyndte at tænke på, hvilke bevægelser der ville være interessante at inkorporere (bare en guitar - kedeligt), og Danya og jeg begyndte at genkende dem. Men dette kræver data. Hvad er forskellen mellem en PRO og en amatør? PRO har en klynge med en GPU - det er én ting, to - PRO vil indsamle data til sig selv, når den har brug for det. Danya organiserede en stand, hvor rå koordinatdata for en genkendt figur blev optaget fra et kamera, og så - dans! Den aften lærte vi at danse tandtråd, skibidi и dudtsa.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript
Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

Som stativ til optagelse af bevægelser brugte vi en arbejdslaptop, som først optog Danis ansigt (han havde ikke skrevet en eneste linje i JS før), da han så endnu en uforståelig JS-fejl.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

— Jeg forstår det ikke, jeg har en niveaufejl: print er forsvundet i Python! (Danya)

Natdans (bogstaveligt talt)

Vi filmede mange timers kontinuerlig bevægelse foran kameraet om natten. De optog det selv, og fangede også udviklerne, der vandrede ud på gulvet og Tvang dem til at DANSE. Vi fik syv forskellige kombinationer – nu skulle vi lære at skelne mellem dem.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript
Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

"Jeg kom ind hver tredje time for at tjekke, om fyrene var i live." Pasha råbte: "Vi har et omdrejningspunkt!" - og Danya bøjede sig af al sin magt. Så dansede alle piben. Da Daniil løb tør for kræfter, åbnede Pasha vinduet og sagde: "Gunner, vi er nødt til at blive friske op." (Madina)

Dataene fra figuren blev forbehandlet: benene blev smidt ud, hovedet blev beregnet til gennemsnit og konverteret til polære koordinater i forhold til torsoen. Vi trænede bevægelsesdetektoren ved hjælp af catboost - ved hjælp af et tre-sekunders uddrag af datastrømmen fra modellen. Indtil denne aften havde vi ikke arbejdet med biblioteket - det viste sig at være en kamp, ​​og du kan lægge det i iOS.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

De underviste i klassifikation i flere klasser, hvor den ene klasse var så kedelig som muligt - bare hængende foran kameraet. Det sværeste var at optage "rock"-bevægelsen - vi rystede så uselvisk på hovedet, at det efter et stykke tid begyndte at snurre. Og de rakte en hånd ud med en "ged", selvom dette var meningsløst - posenet har kun et punkt på hele hånden, det ser ikke fingre.

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

— Ved 3-tiden om morgenen klatrede Pasha ned i en sovepose og bevægede sig udelukkende i den i en time og hoppede som en rigtig kænguru. (Madina)

Omkring klokken 8 blev vi ramt af en lille krise - alt var gået i stykker og intet virkede, men så begyndte alt pludselig at fungere af sig selv. At skrue begge modeller ind i applikationen viste sig at være den største udfordring - Egor afsluttede montagen bogstaveligt talt fem minutter før deadline. Lad os give ham ordet:

— Efter at vi fandt ideen, gik alt meget godt og produktivt. Fyrene trænede gitteret og dansede, og jeg vedhæftede PoseNet til historiekameraet i JavaScript direkte i browseren. De indledende testkørsler fungerede godt og var overraskende hurtige. Derfor, da det om morgenen viste sig, at WebGL i WebView uventet styrtede ned, når man arbejdede med teksturer for noget sludder, og der ikke var nogen måde at finde en løsning på, faldt jeg næsten i fortvivlelse. Men det var for sent at give op: vi brændte af tanken. Derfor trak vi med den sidste af vores styrke og med den sidste dåse red bull en alternativ model baseret på CoreML ind i iOS-klienten på farten og begyndte at spore poseringer native - for derefter at sende dem til modellen med danse og få noget resultat ved udgangen. I det væsentlige gentog vi arbejdet igen! En anden udfordring var den anden model, som pludselig begyndte at forvente mere end tusinde argumenter som input! Xcode genererede en grænseflade til det, som simpelthen ville være urealistisk at bruge direkte. Heldigvis svigtede mit kendskab til Objective-C mig ikke, og der blev fundet en elegant løsning. (Yegor)

Pitching

Fredag ​​klokken 14 var der en deadline for at uploade en video om projektet – flere hold nåede ikke i tide og blev diskvalificeret. Og kl. 14:40 havde vi en pitch til banekuratorerne relateret til produktet. Vi havde fyre fra video- og musikholdet, og de så ud til at kunne lide alt ved banen. Vi tog andenpladsen i vores bane (vi ville først, fordi vi har sådan et fedt projekt!) og endte i finalen (to hold fra vores bane kvalificerede sig).

— I år var jeg kurator for et internt hackathon for første gang. Jeg vil sige med tilbageholdenhed: det var ekstremt vanskeligt at evaluere arbejdet. Niveauet på alle holdene uden undtagelse var ufatteligt. En funktion skal ikke kun være teknologisk avanceret, ikke kun "tæt på produktion", ikke bare "potentielt nyttig for vores produkter." Det vindende projekt skal opfylde alle disse kriterier samtidigt. Det ser ud til, at fyrene lykkedes. (Andrew)

Vi havde vores sidste pitching klokken 17. På dette tidspunkt var det nødvendigt at forberede endnu en demo, denne gang for hele holdet, og juryen var anderledes - den tekniske direktør, produktdirektøren og marketingdirektøren.

Klokken fem om aftenen var det hele overstået – vi gik hjem i seng uden at vide noget om resultaterne.

Resultaterne er endelig

Resultaterne blev først offentliggjort mandag. Først tildelte de vinderne af numrene (ikke vores tilfælde - lad mig minde dig om, vi var nummer to), så stemmer publikumslederne (ikke os), og så den tredje (og det er heller ikke os), for det andet (igen, ikke os) og til sidst os.

Her er de projekter, vi skulle konkurrere med:

2. plads - lydhør stemmeassistent;
3. plads - tidslinje for interne fejl;
People's Choice Award er en påmindelse om kommende chatmøder.

- Dette er det bedste hackathon, jeg nogensinde har deltaget i. Der var meget mere drev end selv ved Junction. (Danya)

— Jeg nød virkelig at arbejde med kolleger fra en helt anden afdeling - jeg havde aldrig rørt ved maskinlæring før, det virkede som en slags magi for mig, men nu er det ikke sådan. (Yegor)

— Det var meget fedt at blive en del af et så sejt team med så fedt et projekt. På én dag nåede jeg at være designer, videograf, lydtekniker, redaktør, musiker og tekstforfatter! Jeg var også den eneste, der nåede at sove. (Tema)

Livet efter hackathon

De fleste projekter udviklet på hackathons når ikke ud til salg af forskellige årsager: et ændring af fokus, kompleksitet i implementeringen, noget uforudset i implementeringen. Et internt hackathon er ingen undtagelse.

Ikke desto mindre lister vi de projekter, der så dagens lys:

  • alles favorit Vinci;
  • kontrol af brugerkompatibilitet, som blev lanceret den 14. februar 2018;
  • красивые plakater for korte poster;
  • og en række interne funktioner, som vi ville være glade for at tale om, men vi kan ikke :)

Hvordan vi vandt et internt hackathon ved at lære skibidi, tandtråd og javascript

Kilde: www.habr.com

Tilføj en kommentar