Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

VK tem uma tradição legal - um hackathon interno, do qual apenas caras do VKontakte podem participar. Vou contar para vocês sobre o hackathon em nome da equipe que conquistou o primeiro lugar este ano e morreu de cansaço por completo, mas conseguiu testar um detector de movimentos de dança para a câmera da história.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

O meu nome é Paul, Lidero a principal equipe de pesquisa do VKontakte e tenho uma atitude calorosa em relação aos hackathons: como participante (Junction ou vários deephacks) e recentemente como curador (VK hackathon ou caso VKontakte no Junction - a propósito, esta foi a primeira vez Participei lá de uma empresa russa). Estamos realizando o VK Hackathon, aberto a todos, pelo quarto ano (a última vez que subimos à Sede Geral do Hermitage), e uma parte significativa da nossa equipe técnica participou dele antes de ingressar no VK.

Um hackathon interno permite que a própria equipe experimente bastante a plataforma, teste ideias diferentes e se divirta de maneira geral. Uma diferença importante é que as soluções podem ser muito mais integradas ao VK, o que nos dá a oportunidade de conseguir protótipos interessantes.

O hackathon acontece na Singer House o dia todo – bem no meio da semana, a Sede vira movimento da meia-noite. É engraçado ver como os faxineiros olham surpresos pela manhã - um escritório geralmente vazio às 6 da manhã de repente fica cheio de pessoas peludas que se movem como zumbis e gritam: “Faltam cinco horas!” Ou quando você entra na cozinha às três da manhã e sente cheiro de dormitório universitário durante as sessões: energéticos, pizza e pânico. É claro que isso acontece em um dia comum, mas é raro em uma escala tão grande.

Três hackathons internos anteriores ocorreram no verão. Em 2019, decidimos não perder tempo com ninharias e também realizar um hackathon de inverno - dois hackathons são muito melhores que um, porque esta é uma ótima oportunidade para experimentar e implementar uma ideia para a qual não há tempo suficiente no ritmo habitual. As regras também mudaram: antes uma equipe podia ter no máximo três pessoas, mas este ano são quatro, mas uma não escreve código, mas se especializa em outra coisa. Foi possível convidar designers, gerentes de produto, testadores, profissionais de marketing e outros para a equipe. Um total de 38 equipes participaram deste hackathon.

Dreamtim (mais precisamente, um dos 38)

Chegamos a um acordo com Danei e juntos convencemos Egor и Tyoma junte-se à equipe. Como era de se esperar, os modelos ficaram a cargo de nós, Egor ficou a cargo do iOS, Tyoma ficou a cargo da produção e design. Desenvolvimento móvel + design + um pouco de aprendizado de máquina e back-end são a chave para o sucesso no hackathon 2k19.

Ainda neste ano surgiu uma divisão em faixas, que antes não existia: Mídia (da qual participamos), Comunicação, Infraestrutura, Conteúdo e Entretenimento. Tínhamos concorrentes poderosos. Por exemplo, éramos constantemente motivados pelo designer sênior da VK Ilya, que entrou em nossa sala e mostrou protótipos da ideia de sua equipe.

Idéia

— Ganhei prêmios em quase todos os hackathons dos quais participei e esperava o mesmo do hackathon interno deste inverno. (Danya estava confiante em si mesmo)

A nossa ideia (especificamente da Danina) era inicialmente esta: queríamos explorar o tema da geração musical + ter tudo no dispositivo, caso contrário seria “muito backend”. O hackathon começou com um brainstorming - pensamos no que poderíamos criar. Gerar música é interessante, mas quero torná-la dependente do usuário. Alguns botões? Talvez desenhar na tela e gerar música com base nela? Ao mesmo tempo, aprendemos com o pessoal da equipe de Música como adicionar as faixas que precisávamos. Mas ainda não parecia certo. As equipes vizinhas trabalhavam alegremente em algo em seus laptops e causavam frustração.

— E se você reconhecer o air guitar, como se estivesse tocando um violão, e dependendo disso, tocar o som do violão? (Tema)

Bingo! A ideia é militante e temos o poder de organizar tudo da melhor forma. Para reconhecimento de movimento existe posenet, e ela está muito bem (também compatível com dispositivos móveis). Vamos fingir!

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

Solução

As principais tarefas são criar uma grade no aparelho (deve ser real) e aprender a reconhecer movimentos. Egor começou a portar, Tyoma começou a pensar em quais movimentos seriam interessantes de incorporar (só uma guitarra - chato), e Danya e eu começamos a reconhecê-los. Mas isso requer dados. Qual é a diferença entre um PRO e um amador? O PRO tem um cluster com GPU - isso é uma coisa, duas - o PRO coletará dados para si mesmo quando precisar. Danya organizou um estande onde dados brutos de coordenadas de uma figura reconhecida foram gravados em uma câmera e depois - dançando! Naquela noite aprendemos a dançar usando fio dental, skibid и dudtsa.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript
Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

Como suporte para registrar movimentos, usamos um laptop de trabalho, que primeiro gravou o rosto de Dani (ele não havia escrito uma única linha em JS antes) quando ele viu outro erro incompreensível de JS.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

— Não entendo, estou com um erro de nível: print desapareceu em Python! (Danya)

Dança noturna (literalmente)

Filmamos muitas horas de movimento contínuo na frente da câmera à noite. Eles mesmos gravaram e também pegaram os desenvolvedores que vagaram pela pista e os FORÇARAM a DANÇAR. Conseguimos sete combinações diferentes - agora tínhamos que aprender a distingui-las.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript
Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

“Eu vinha a cada três horas para verificar se os caras estavam vivos.” Pasha gritou: “Temos um pivô!” - e Danya flexionou com todas as suas forças. Então todos dançaram a flauta. Quando Daniil ficou sem forças, Pasha abriu a janela e disse: “Gente, precisamos nos refrescar”. (Madina)

Os dados da figura foram pré-processados: as pernas foram jogadas para fora, a média da cabeça foi calculada e convertida em coordenadas polares em relação ao tronco. Treinamos o detector de movimento usando catboost – usando um trecho de três segundos do fluxo de dados do modelo. Até esta noite não havíamos trabalhado com a biblioteca - acabou sendo de combate e você pode colocá-la no iOS.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

Eles ensinavam classificação em várias aulas, sendo uma aula o mais chata possível - apenas ficar na frente da câmera. O mais difícil foi registrar o movimento do “rock” - balançamos a cabeça com tanta abnegação que depois de um tempo ela começou a girar. E estenderam a mão com uma “cabra”, embora isso fosse inútil - o posenet tem apenas uma ponta na mão inteira, não vê os dedos.

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

— Por volta das 3 da manhã, Pasha subiu em um saco de dormir e se locomoveu exclusivamente nele por uma hora, pulando como um canguru de verdade. (Madina)

Por volta das 8h, fomos atingidos por uma pequena crise - tudo estava quebrado e nada funcionava, mas de repente tudo começou a funcionar sozinho. Aparafusar os dois modelos na aplicação acabou sendo o maior desafio - Egor terminou a montagem literalmente cinco minutos antes do prazo. Vamos dar a palavra a ele:

— Depois que encontramos a ideia, tudo correu muito bem e de forma produtiva. Os caras treinaram a grade e dançaram, e eu anexei o PoseNet à câmera da história em JavaScript diretamente no navegador. Os testes iniciais funcionaram bem e foram surpreendentemente rápidos. Portanto, quando pela manhã descobri que o WebGL no WebView travou inesperadamente ao trabalhar com texturas por alguma bobagem e não havia como encontrar uma solução, quase entrei em desespero. Mas já era tarde para desistir: estávamos entusiasmados com a ideia. Portanto, com o que resta de nossas forças e com a última lata de red bull, arrastamos um modelo alternativo baseado em CoreML para o cliente iOS em movimento e começamos a rastrear poses nativamente - para depois enviá-las para o modelo com danças e obter algum resultado na saída. Em essência, repetimos o trabalho novamente! Outro desafio foi o segundo modelo, que de repente passou a esperar mais de mil argumentos como entrada! O Xcode gerou uma interface que seria simplesmente irrealista de usar diretamente. Felizmente, meu conhecimento de Objective-C não me decepcionou e uma solução elegante foi encontrada. (Yegor)

Arremesso

Na sexta-feira, às 14h, havia prazo para envio de um vídeo sobre o projeto – diversas equipes não chegaram a tempo e foram desclassificadas. E às 14h40 fizemos um pitch para os curadores da trilha relacionado ao produto. Tínhamos caras da equipe de Vídeo e Música e eles pareciam gostar de tudo no campo. Ficamos em segundo lugar na nossa pista (queríamos primeiro, porque temos um projeto muito bacana!) e chegamos à final (duas equipes da nossa pista se classificaram).

— Este ano fui curador de um hackathon interno pela primeira vez. Direi com moderação: foi extremamente difícil avaliar o trabalho. O nível de todas as equipes, sem exceção, era inacreditável. Um recurso não deve ser apenas tecnologicamente avançado, nem apenas “próximo da produção”, nem apenas “potencialmente útil para nossos produtos”. O projeto vencedor deverá atender a todos esses critérios simultaneamente. Parece que os caras conseguiram. (Andrew)

Tivemos nosso lançamento final às 17h40. Nesta altura foi necessário preparar outra demo, desta vez para toda a Equipa, e o júri foi diferente – o diretor técnico, o diretor de produto e o diretor de marketing.

Às cinco da tarde tudo acabou - fomos para casa dormir, sem saber nada sobre os resultados.

Os resultados são finalmente

Os resultados foram anunciados apenas na segunda-feira. Primeiro, eles premiaram os vencedores das faixas (não é o nosso caso - deixe-me lembrar, ficamos em segundo lugar), depois os líderes do público votam (não nós), e depois o terceiro (e este também não somos nós), o segundo (novamente, não nós) e, finalmente, nós.

Aqui estão os projetos com os quais tivemos que competir:

2º lugar - assistente de voz responsivo;
3º lugar – cronograma de erros internos;
O People's Choice Award é um lembrete das próximas reuniões de bate-papo.

— Este é o melhor hackathon do qual já participei. Havia muito mais movimentação do que em Junction. (Danya)

— Gostei muito de trabalhar com colegas de um departamento completamente diferente - nunca tinha tocado em aprendizado de máquina antes, parecia uma espécie de mágica para mim, mas agora não é mais assim. (Yegor)

— Foi muito legal fazer parte de uma equipe tão bacana e com um projeto tão bacana. Em um dia consegui ser designer, cinegrafista, engenheiro de som, editor, músico e redator! Eu também fui o único que conseguiu dormir. (Tema)

A vida depois do hackathon

A maioria dos projetos desenvolvidos em hackathons não chegam às vendas por vários motivos: mudança de foco, complexidade de implementação, algum imprevisto na implementação. Um hackathon interno não é exceção.

Mesmo assim, listamos os projetos que viram a luz do dia:

Como ganhamos um hackathon interno aprendendo skibidi, fio dental e javascript

Fonte: habr.com

Adicionar um comentário