O VK tem uma tradição legal - um hackathon interno, no qual apenas os caras do VKontakte podem participar. Vou falar sobre o hackathon em nome da equipe, que este ano conquistou o primeiro lugar e morreu de fadiga por inteiro, mas conseguiu experimentar um detector de movimento de dança para a câmera da história.

Meu nome é
Pavel , lidero a principal equipe de pesquisa do VKontakte e trato calorosamente os hackathons: como participante (junção ou um número de deephack-s) e, recentemente, como curador (VK hackathon ou caso VK em Junction - a propósito, essa foi a primeira vez, quando uma empresa russa participou). Aberto a todos os Hackers da VK, passamos o quarto ano (a última vez que subimos na sede geral do Hermitage), e uma parte significativa de nossa equipe técnica participou dela antes de nos instalarmos na VK.
O hackathon interno permite que a própria equipe experimente livremente na plataforma, teste idéias diferentes e geralmente se divirta. Uma diferença importante é que as soluções podem ser significativamente mais integradas ao VK, o que nos dá a oportunidade de obter protótipos interessantes.
O hackathon acontece na Singer House por um dia inteiro - bem no meio da semana, a sede se transforma em um movimento da meia-noite. É engraçado ver como os faxineiros olham surpresos de manhã - geralmente um escritório vazio às 6 da manhã acaba repentinamente cheio de pessoas desgrenhadas que se movem como zumbis e gritam: "Faltam cinco horas!" Ou quando, às três da manhã, você entra na cozinha e cheira a dormitórios da universidade durante as sessões: energia, pizza e pânico. Isso, é claro, acontece em um dia típico, mas de forma maciça - raramente.
Três hackathons domésticos anteriores ocorreram no verão. Em 2019, decidimos não brincar e passar mais um inverno - dois hackathons são muito melhores que um, porque esta é uma ótima oportunidade para experimentar e implementar uma ideia que não tem tempo suficiente em um ritmo normal. As regras também mudaram: antes, uma equipe podia ter no máximo três pessoas e, neste ano - quatro, mas uma não escreve código, mas se especializa em outra coisa. Você pode ligar para uma equipe de designers, gerentes de produto, testadores, profissionais de marketing e outras pessoas. No total, 38 equipes participaram deste hackathon.
Drimtim (mais precisamente, um dos 38)
Conspiramos com os
dinamarqueses e juntos convencemos
Yegor e
Tyoma a se juntarem à equipe. Os modelos deveriam estar atrás de nós, Yegor era responsável pelo iOS, Tyoma - pela produção e design. Desenvolvimento móvel + design + um pouco de aprendizado de máquina e um back-end são a chave para o sucesso no hackathon 2k19.
Ainda neste ano, havia uma divisão em faixas que não haviam sido anteriormente: Mídia (da qual participamos), Comunicação, Infraestrutura, Conteúdo e Entretenimento. Tínhamos concorrentes poderosos. Por exemplo, fomos constantemente motivados pelo designer sênior VK
Ilya , que veio ao nosso quarto e mostrou protótipos das idéias de sua equipe.
Idéia
"Recebi prêmios em quase todos os hackathons em que participei e esperava o mesmo por dentro neste inverno." ( Dania estava confiante)
Nossa ideia (especificamente, Danina) era originalmente assim: eu queria explorar o tópico da geração de músicas + colocar tudo no dispositivo, caso contrário, “back-end demais”. O hackathon começou com o brainstorming - eles se perguntavam o que poderia ser pensado. Gerar música é interessante, mas quero torná-lo dependente do usuário. Algum botão? Talvez desenhe na tela e gere música dependendo disso? Paralelamente, os caras da equipe Music aprenderam como adicionar as faixas que precisamos. Mas ainda não parecia exatamente isso. As equipes vizinhas descobriram alegremente algo por trás de seus laptops e causaram frustração.
- E se você reconhecer um violão, como se estivesse tocando um violão e, dependendo disso, tocar o som do violão? ( Escuro )
Bingo! É uma ideia de luta, e é legal organizar tudo ao nosso alcance. Para reconhecimento de movimentos, existe um
posenet , e é muito bom (além de otimizado para dispositivos móveis). Figachim!


Solução
As principais tarefas são obter uma grade no dispositivo (deve ser real) e aprender a reconhecer movimentos. Egor começou a trabalhar, Tyoma - inventando que tipo de movimento seria interessante para estragar (apenas um chato de guitarra), e Dani e eu - reconhecendo-os. Mas isso requer dados. Qual é a diferença entre PRO e amateur? O PRO possui um cluster com uma GPU - essa é uma vez e duas - o PRO coletará dados quando necessário. Dania organizou um estande onde os dados brutos nas coordenadas da figura reconhecida foram gravados a partir da câmera e depois dançaram! Naquela noite, aprendemos a dançar fio dental,
skibidi e
cachimbo .


Como suporte para gravar movimentos, usamos um laptop em funcionamento, que primeiro gravou o rosto de Dani (antes ele não escrevia uma única linha em js) quando viu outro erro de js incompreensível.

- Não entendi, tenho um erro de nível: a impressão desapareceu no Python! ( Dania )
Dança noturna (literalmente)
Filmado à noite por muitas horas de movimento contínuo na frente da câmera. Nós gravamos nós mesmos e também pegamos os desenvolvedores no chão e FORÇADOS A DANÇAR. Foram sete combinações diferentes - agora é preciso aprender a distinguir entre elas.




- Eu vim a cada três horas para verificar se os caras estão vivos. Pasha gritou: "Temos um pivô!" - e Dania fleksil das últimas forças. Então todos dançaram o cachimbo. Quando Daniel ficou sem energia, Pasha abriu a janela e disse: "Meninos, precisamos nos refrescar". ( Madina )
Os dados da figura foram pré-processados: eles jogaram as pernas para fora, calcularam a média da cabeça e foram transferidos para coordenadas polares relativas ao tronco. Treinou um detector de movimento usando catboost - um trecho de três segundos de fluxo de dados do modelo. Até esta noite, eles não funcionavam com a biblioteca - era um combate, e no iOS você pode empurrá-lo.

Eles ensinaram uma classificação multiclasse, enquanto uma classe era o mais chata possível - apenas cambaleando na frente da câmera. O mais difícil foi gravar o movimento “rock” - balançamos a cabeça tão desinteressadamente que, depois de um tempo, ela começou a girar. E eles estenderam a mão com uma "cabra", embora fosse inútil - o posenet tem apenas um ponto em todo o pincel, não vê os dedos.


- Em algum lugar às três da manhã, Pasha subiu em um saco de dormir e passou uma hora se movendo exclusivamente nele, pulando como um canguru de verdade. ( Madina )
Por volta das 8 horas da manhã, uma pequena crise nos atingiu - tudo quebrou e nada funcionou, mas tudo subitamente funcionou. Transformar os dois modelos no aplicativo acabou sendo o maior desafio - a Yegor terminou a montagem apenas cinco minutos antes do prazo. Damos a ele a palavra:
- Depois que encontramos a ideia, tudo correu muito bem e produtivamente. Os caras treinaram a grade e dançaram, e eu parafusei a câmera de histórias PoseNet no JavaScript diretamente no navegador. Os testes iniciais funcionaram bem e foram surpreendentemente rápidos. Portanto, quando pela manhã ocorreu que o WebGL no WebView travou inesperadamente ao trabalhar com texturas por alguma bobagem e não há como encontrar uma solução, eu quase caí em desespero. Mas era tarde demais para desistir: estávamos queimando com a idéia. Portanto, desde o último esforço e no último banco redbull, em movimento, arrastamos um modelo CoreML alternativo para o cliente iOS e começamos a rastrear as poses já de forma nativa - a fim de fornecê-las ao modelo com danças e obter algum resultado na saída delas. De fato, repetimos o trabalho novamente! Outro desafio foi o segundo modelo, que de repente começou a esperar mais de mil argumentos para entrar! O Xcode gerou uma interface que seria simplesmente irreal para usar "de frente". O benefício do Objective-C não foi decepcionado, e uma solução elegante foi encontrada. ( Egor )
Pitching
Na sexta-feira, às 14 horas, era necessário fazer o upload de um vídeo sobre o projeto - várias equipes não tinham tempo e foram desqualificadas. E às 14:40 tivemos um discurso diante dos curadores da pista relacionados ao produto. Tínhamos caras da equipe de vídeo e música e parece que eles gostaram de tudo em campo. Em nossa pista, ficamos em segundo lugar (queríamos o primeiro, porque temos um projeto muito legal!) E terminamos na final (duas equipes passaram da nossa pista).
- Este ano eu fui o primeiro curador do hackathon interno. Eu direi de forma contida: avaliar o trabalho foi extremamente difícil. O nível de todas as equipes, sem exceção, foi de alguma forma transcendental. O recurso não deve ser apenas tecnológico, não apenas "próximo à produção", não apenas "potencialmente útil para nossos produtos". O projeto vencedor deve atender a todos esses critérios ao mesmo tempo. Parece que os caras fizeram isso. ( Andrey )
O lançamento final foi às 17:40. Nessa época, era necessário preparar outra demonstração, já para toda a equipe, e o júri era diferente - diretor técnico, diretor de produto e diretor de marketing.
Às cinco da tarde estava tudo acabado - fomos para casa dormir, sem saber nada sobre os resultados.
Resultados finalmente
Os resultados foram anunciados apenas na segunda-feira. Primeiro, premiamos os vencedores das faixas (não é o nosso caso - deixe-me lembrá-lo, nós éramos o segundo), depois os líderes da platéia (não nós) e depois o terceiro (e também não somos nós), o segundo (novamente não nós) e, finalmente, nós.
Aqui estão alguns projetos com os quais tivemos que competir:
2º lugar - um assistente de voz responsivo;
3º lugar - linha do tempo dos erros internos;
O Prêmio do público é um lembrete das próximas reuniões de bate-papo.
"Este é o melhor hackathon que participei." Havia muito mais movimentação do que até na junção. ( Dania )
- Gostei muito de trabalhar com colegas de um departamento completamente diferente - nunca havia tocado em aprendizado de máquina, parecia-me algum tipo de mágica, mas agora não é. ( Egor )
- Foi muito legal fazer parte de uma equipe tão legal com um projeto tão legal. Durante o dia consegui ser designer, videógrafo, engenheiro de som, editor, músico e redator! E eu era o único capaz de dormir. ( Escuro )
Vida após o hackathon
A maioria dos projetos desenvolvidos em hackathons não chega à venda por vários motivos: mudança de foco, complexidade de implementação, algo imprevisto na implementação. O hackathon interno não é exceção.
No entanto, listamos os projetos que viram a luz do dia:
