Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

VK a une tradition sympa - un hackathon interne, auquel seuls les gars de VKontakte peuvent participer. Je vais vous parler du hackathon au nom de l'équipe qui a remporté la première place cette année et est morte de fatigue dans son intégralité, mais a réussi à tester un détecteur de mouvement de danse pour la caméra narrative.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

Je m'appelle Paul, je dirige la meilleure équipe de recherche de VKontakte et j'ai une attitude chaleureuse envers les hackathons : en tant que participant (Junction ou un certain nombre de deephacks) et récemment en tant que conservateur (hackathon VK ou cas VKontakte à Junction - d'ailleurs, c'était la première fois J'y ai participé (entreprise russe). Nous organisons le VK Hackathon, ouvert à tous, pour la quatrième année (la dernière fois que nous sommes montés au Quartier Général de l'Ermitage), et une partie importante de notre équipe technique y a participé avant de rejoindre VK.

Un hackathon interne permet à l'équipe elle-même d'expérimenter beaucoup avec la plateforme, de tester différentes idées et généralement de s'amuser. Une différence importante est que les solutions peuvent être beaucoup plus intégrées dans VK, ce qui nous donne la possibilité de réaliser des prototypes intéressants.

Le hackathon se déroule toute la journée à la Singer House - en plein milieu de la semaine, le quartier général se transforme en un mouvement de minuit. C'est drôle de voir comment les femmes de ménage regardent autour d'elles avec surprise le matin - un bureau généralement vide à 6 heures du matin se révèle soudainement rempli de gens hirsutes qui bougent comme des zombies et crient : « Il reste cinq heures ! Ou quand on entre dans la cuisine à trois heures du matin et que ça sent les dortoirs universitaires pendant les séances : boissons énergisantes, pizza et panique. Bien sûr, cela se produit lors d’une journée ordinaire, mais c’est rare à une telle échelle.

Trois précédents hackathons internes ont eu lieu cet été. En 2019, nous avons décidé de ne pas perdre de temps en bagatelles et d'organiser également un hackathon d'hiver - deux hackathons valent bien mieux qu'un, car c'est une excellente occasion d'expérimenter et de mettre en œuvre une idée pour laquelle il n'y a pas assez de temps au rythme habituel. Les règles ont également changé : auparavant, une équipe pouvait compter au maximum trois personnes, mais cette année, elles sont quatre, mais l'une n'écrit pas de code, mais se spécialise dans autre chose. Il était possible d'inviter des designers, des chefs de produits, des testeurs, des spécialistes du marketing et d'autres personnes dans l'équipe. Au total, 38 équipes ont participé à ce hackathon.

Dreamtim (plus précisément, l'un des 38)

Nous sommes parvenus à un accord avec Danois et ensemble nous avons convaincu Égor и Tyoma rejoins l'équipe. Comme prévu, les modèles étaient en charge de nous, Egor était en charge d'iOS, Tyoma était en charge de la production et du design. Développement mobile + conception + un peu d'apprentissage automatique et backend sont la clé du succès du hackathon 2k19.

Même cette année, une division en pistes est apparue, qui n'existait pas auparavant : Médias (auquel nous avons participé), Communications, Infrastructure, Contenu et Divertissement. Nous avions des concurrents puissants. Par exemple, nous étions constamment motivés par le designer senior de VK Ilya, qui est venu dans notre chambre et a montré des prototypes de l’idée de son équipe.

Idée

— J'ai remporté des prix dans presque tous les hackathons auxquels j'ai participé, et j'attendais la même chose du hackathon interne de cet hiver. (Danya avait confiance en lui)

Notre idée (en particulier celle de Danina) était au départ la suivante : nous voulions explorer le sujet de la génération musicale + avoir tout sur l'appareil, sinon ce serait "trop ​​backend". Le hackathon a commencé par un brainstorming : nous avons réfléchi à ce que nous pourrions proposer. Générer de la musique est intéressant, mais je souhaite que cela soit dépendant de l'utilisateur. Des boutons ? Peut-être dessiner sur l'écran et générer de la musique à partir de celui-ci ? En même temps, nous avons appris auprès des gars de l'équipe Musique comment ajouter les morceaux dont nous avions besoin. Mais cela ne semblait toujours pas tout à fait correct. Les équipes voisines travaillaient joyeusement sur quelque chose sur leurs ordinateurs portables et provoquaient de la frustration.

— Et si vous reconnaissiez l'air guitar, comme si vous jouiez de la guitare, et en fonction de cela, jouiez le son de la guitare ? (Tema)

Bingo ! L'idée est militante, et nous avons le pouvoir de tout arranger en grand. Pour la reconnaissance de mouvement, il existe posenet, et elle va très bien (également adaptée aux mobiles). Faisons comme si!

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

décision

Les tâches principales sont de créer une grille sur l'appareil (elle doit être réelle) et d'apprendre à reconnaître les mouvements. Egor a commencé le portage, Tyoma a commencé à réfléchir aux mouvements qu'il serait intéressant d'incorporer (juste une guitare - ennuyeux), et Danya et moi avons commencé à les reconnaître. Mais cela nécessite des données. Quelle est la différence entre un PRO et un amateur ? PRO dispose d'un cluster avec un GPU - c'est une chose, deux - PRO collectera des données pour lui-même lorsqu'il en aura besoin. Danya a organisé un stand où les données brutes des coordonnées d'un personnage reconnu ont été enregistrées à partir d'une caméra, puis - dansé ! Cette nuit-là, nous avons appris à danser avec la soie dentaire, skibidi и dudtsa.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript
Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

Comme support pour enregistrer les mouvements, nous avons utilisé un ordinateur portable de travail, qui a d'abord enregistré le visage de Dani (il n'avait pas écrit une seule ligne en JS auparavant) lorsqu'il a vu une autre erreur JS incompréhensible.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

— Je ne comprends pas, j'ai une erreur de niveau : print a disparu en Python ! (Danya)

Danse nocturne (littéralement)

Nous avons filmé de nombreuses heures de mouvements continus devant la caméra la nuit. Ils l'ont enregistré eux-mêmes, et ont également attrapé les développeurs qui erraient sur le sol et les ont FORCÉS À DANSER. Nous avons eu sept combinaisons différentes - nous devions maintenant apprendre à les distinguer.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript
Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

"Je venais toutes les trois heures pour vérifier si les gars étaient en vie." Pacha a crié : « Nous avons un pivot ! - et Danya fléchit de toutes ses forces. Ensuite, tout le monde a dansé la flûte. Lorsque Daniil fut à court de forces, Pacha ouvrit la fenêtre et dit : « Les gars, nous devons nous rafraîchir. (Madina)

Les données de la figure ont été prétraitées : les jambes ont été projetées, la tête a été moyennée et convertie en coordonnées polaires par rapport au torse. Nous avons entraîné le détecteur de mouvement à l'aide de catboost, en utilisant un extrait de trois secondes du flux de données du modèle. Jusqu'à cette nuit, nous n'avions pas travaillé avec la bibliothèque - elle s'est avérée être une bibliothèque de combat, et vous pouvez la mettre dans iOS.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

Ils enseignaient la classification dans plusieurs classes, une classe étant aussi ennuyeuse que possible – il suffisait de traîner devant la caméra. Le plus difficile a été d'enregistrer le mouvement « rock » - nous avons secoué la tête avec un tel altruisme qu'au bout d'un moment, elle a commencé à tourner. Et ils ont tendu la main avec une "chèvre", même si cela n'avait aucun sens - posenet n'a qu'un seul point sur toute la main, il ne voit pas les doigts.

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

— Vers 3 heures du matin, Pacha a grimpé dans un sac de couchage et s'y est déplacé exclusivement pendant une heure, sautant comme un vrai kangourou. (Madina)

Vers 8 heures du matin, nous avons été frappés par une petite crise : tout était cassé et rien ne fonctionnait, mais tout à coup, tout a commencé à fonctionner tout seul. Visser les deux modèles dans l'application s'est avéré être le plus grand défi - Egor a terminé l'assemblage littéralement cinq minutes avant la date limite. Donnons-lui la parole :

— Après avoir trouvé l'idée, tout s'est très bien passé et de manière productive. Les gars ont entraîné la grille et dansé, et j'ai connecté PoseNet à la caméra narrative en JavaScript directement dans le navigateur. Les premiers tests ont bien fonctionné et ont été étonnamment rapides. Par conséquent, quand le matin, il s'est avéré que WebGL dans WebView plantait de manière inattendue lors du travail avec des textures pour des bêtises et qu'il n'y avait aucun moyen de trouver une solution, je suis presque tombé dans le désespoir. Mais il était trop tard pour abandonner : nous brûlions d’idée. Par conséquent, avec nos dernières forces et avec la dernière canette de Red Bull, nous avons glissé un modèle alternatif basé sur CoreML dans le client iOS en déplacement et avons commencé à suivre les poses de manière native - afin de les envoyer ensuite au modèle avec des danses. et obtenez un résultat à la sortie. En substance, nous avons répété le travail une fois de plus ! Un autre défi était le deuxième modèle, qui commençait soudainement à attendre plus d'un millier d'arguments en entrée ! Xcode a généré une interface qui serait tout simplement irréaliste à utiliser directement. Heureusement, ma connaissance d’Objective-C ne m’a pas laissé tomber et une solution élégante a été trouvée. (Egor)

Lancement

Vendredi, à 14 heures, il y avait une date limite pour mettre en ligne une vidéo sur le projet : plusieurs équipes ne sont pas arrivées à temps et ont été disqualifiées. Et à 14h40, nous avons eu un pitch avec les conservateurs des pistes concernant le produit. Nous avions des gars de l’équipe Vidéo et Musique, et ils semblaient tout apprécier du terrain. Nous avons pris la deuxième place de notre piste (nous voulions être premiers, car nous avons un projet tellement cool !) et avons fini en finale (deux équipes de notre piste se sont qualifiées).

— Cette année, j'ai été pour la première fois commissaire d'un hackathon interne. Je dirai avec retenue : il a été extrêmement difficile d'évaluer le travail. Le niveau de toutes les équipes sans exception était incroyable. Une fonctionnalité ne doit pas seulement être technologiquement avancée, pas seulement « proche de la production », pas seulement « potentiellement utile pour nos produits ». Le projet gagnant doit répondre à tous ces critères simultanément. Il semble que les gars ont réussi. (Andrew)

Nous avons eu notre dernier pitch à 17h40. A ce moment-là, il fallait préparer une autre démo, cette fois pour toute l'équipe, et le jury était différent - le directeur technique, le directeur produit et le directeur marketing.

À cinq heures du soir, tout était fini : nous sommes rentrés nous coucher, sans rien savoir des résultats.

Les résultats sont enfin

Les résultats n'ont été annoncés que lundi. D'abord, ils ont récompensé les gagnants des morceaux (pas notre cas - je vous le rappelle, nous étions deuxièmes), puis les leaders du public ont voté (pas nous), puis le troisième (et ce n'est pas non plus nous), le deuxièmement (encore une fois, pas nous) et, enfin, nous.

Voici les projets avec lesquels nous avons dû rivaliser :

2ème place - assistant vocal réactif ;
3ème place - chronologie des erreurs internes ;
Le People's Choice Award est un rappel des prochaines réunions de discussion.

— C'est le meilleur hackathon auquel j'ai jamais participé. Il y avait beaucoup plus de circulation qu'à Junction. (Danya)

— J'ai vraiment aimé travailler avec des collègues d'un département complètement différent - je n'avais jamais touché à l'apprentissage automatique auparavant, cela me semblait une sorte de magie, mais maintenant ce n'est plus le cas. (Egor)

— C'était vraiment cool de faire partie d'une équipe aussi cool avec un projet aussi cool. En un jour, j'ai réussi à devenir designer, vidéaste, ingénieur du son, monteur, musicien et rédacteur ! J'étais aussi le seul à réussir à dormir. (Tema)

La vie après le hackathon

La plupart des projets développés lors des hackathons ne parviennent pas à être vendus pour diverses raisons : un changement d'orientation, une complexité de mise en œuvre, un imprévu dans la mise en œuvre. Un hackathon interne ne fait pas exception.

Néanmoins, nous listons les projets qui ont vu le jour :

Comment nous avons gagné un hackathon interne en apprenant le skibidi, la soie dentaire et le javascript

Source: habr.com

Ajouter un commentaire