VK tiene una tradición genial: un hackathon interno, en el que solo pueden participar chicos de VKontakte. Te contaré sobre el hackathon en nombre del equipo, que este año ganó el primer lugar y murió de fatiga en su totalidad, pero logró probar un detector de movimiento de baile para la cámara de la historia.

Mi nombre es
Pavel , lidero el mejor equipo de investigación en VKontakte y trato con gusto los hackatones: como participante (Junction o varios deephack-s) y recientemente como curador (VK hackathon o caso VK en Junction), por cierto, esta fue la primera vez, cuando participó una empresa rusa). Abierto a todos los VK Hackathon, pasamos el cuarto año (la última vez que subimos a la Sede General del Hermitage), y una parte importante de nuestro equipo técnico participó en él antes de instalarnos en VK.
El hackathon interno permite al equipo experimentar libremente en la plataforma, probar diferentes ideas y, en general, divertirse. Una diferencia importante es que las soluciones pueden integrarse significativamente más en VK, lo que nos brinda la oportunidad de lograr prototipos interesantes.
El hackathon tiene lugar en Singer House durante todo un día, justo a mediados de la semana, la sede se convierte en un movimiento de medianoche. Es divertido ver cómo los limpiadores miran con sorpresa por la mañana: por lo general, una oficina vacía a las 6 de la mañana de repente se llena de personas peludas que se mueven como zombies y gritan: "¡Quedan cinco horas!" O cuando a las tres de la mañana vas a la cocina y huele a dormitorios universitarios durante las sesiones: energía, pizza y pánico. Esto, por supuesto, ocurre en un día típico, pero de manera masiva, rara vez.
Tres hackatones domésticos anteriores tuvieron lugar en el verano. En 2019, decidimos no jugar y pasar otro invierno: dos hackatones son mucho mejores que uno, porque esta es una gran oportunidad para experimentar e implementar una idea que no tiene suficiente tiempo en un ritmo normal. Las reglas también han cambiado: antes, un equipo podía tener un máximo de tres personas, y este año, cuatro, pero uno no escribe código, sino que se especializa en otra cosa. Podrías llamar a un equipo de diseñadores, gerentes de producto, probadores, especialistas en marketing y otros tipos. En total, 38 equipos participaron en este hackathon.
Drimtim (más precisamente, uno de 38)
Conspiramos con los
daneses y juntos convencimos a
Yegor y
Tyoma de unirse al equipo. Se esperaba que los modelos estuvieran detrás de nosotros, Yegor era responsable de iOS, Tyoma, de producción y diseño. El desarrollo móvil + diseño + un poco de aprendizaje automático y un backend son la clave del éxito en el hackathon 2k19.
Incluso este año, hubo una división en pistas que no habían existido antes: Medios (en los que participamos), Comunicaciones, Infraestructura, Contenido y Entretenimiento. Teníamos poderosos competidores. Por ejemplo, estábamos constantemente motivados por el diseñador senior VK
Ilya , quien vino a nuestra habitación y mostró prototipos de las ideas de su equipo.
Idea
"Obtuve premios en casi todos los hackathons en los que participé, y esperaba lo mismo desde adentro este invierno". ( Dania estaba segura)
Nuestra idea (específicamente, Danina) era originalmente así: quería explorar el tema de la generación de música + tener todo en el dispositivo, de lo contrario, "demasiado backend". El hackathon comenzó con una lluvia de ideas: se preguntaron qué se podría pensar. Generar música es interesante, pero quiero hacerlo dependiente del usuario. Cualquier botones? ¿Quizás dibujar en la pantalla y generar música dependiendo de esto? Paralelamente, los chicos del equipo de Música aprendieron cómo agregar las pistas que necesitamos. Pero aún así no parecía exactamente eso. Los equipos vecinos alegremente descubrieron algo detrás de sus computadoras portátiles y causaron frustración.
- ¿Y si reconoces una guitarra de aire, como si estuvieras tocando una guitarra y, dependiendo de esto, tocas el sonido de la guitarra? ( Oscuro )
Bingo! Es una idea de lucha, y es genial organizar todo lo que esté a nuestro alcance. Para el reconocimiento de movimientos hay una
posenet , y está muy bien (además de
compatible con dispositivos móviles). Figachim!


Solución
Las tareas principales son obtener una cuadrícula en el dispositivo (debe ser real) y aprender a reconocer los movimientos. Egor comenzó a portar, Tyoma, inventando qué tipo de movimientos sería interesante atornillar (solo una guitarra aburrida), y Dani y yo, reconociéndolos. Pero esto requiere datos. ¿Cuál es la diferencia entre PRO y amateur? PRO tiene un clúster con una GPU, esto es una vez, y dos: PRO recopilará datos para sí mismo cuando lo necesite. Dania organizó un stand donde los datos en bruto sobre las coordenadas de la figura reconocida fueron escritos desde la cámara, ¡y luego baila! Esa noche aprendimos a bailar hilo dental,
skibidi y
pipa .


Como soporte para grabar movimientos, utilizamos una computadora portátil que funciona, que primero grabó la cara de Dani (antes de eso no escribió una sola línea en js) cuando vio otro error js incomprensible.

- No entiendo, tengo un error de nivel: ¡la impresión desapareció en Python! ( Dania )
Baile nocturno (literalmente)
Filmado por la noche durante muchas horas de movimiento continuo frente a la cámara. Lo grabamos nosotros mismos, y también vimos a los desarrolladores vagar por el suelo y FORZARSE A BAILAR. Resultó siete combinaciones diferentes: ahora necesitábamos aprender a distinguirlas.




- Vine cada tres horas para verificar si los muchachos están vivos. Pasha gritó: "¡Tenemos un pivote!" - y Dania fleksil de las últimas fuerzas. Entonces todos bailaron la pipa. Cuando Daniel se quedó sin energía, Pasha abrió la ventana y dijo: "Muchachos, necesitamos refrescarnos". ( Madina )
Los datos de la figura fueron preprocesados: arrojaron sus piernas, promediaron sus cabezas y se transfirieron a coordenadas polares en relación con el torso. Entrenó un detector de movimiento usando catboost, un fragmento de tres segundos del flujo de datos del modelo. Hasta esta noche, no trabajaban con la biblioteca, resultó ser un combate, y en iOS puedes empujarlo.

Enseñaron una clasificación multiclase, mientras que una clase era lo más aburrida posible, simplemente tambaleándose frente a la cámara. Lo más difícil fue grabar el movimiento "rock": sacudimos nuestras cabezas tan desinteresadamente que después de un tiempo comenzó a girar. Y extendieron una mano con una "cabra", aunque no tenía sentido: posenet tiene solo un punto en todo el pincel, no ve sus dedos.


- En algún lugar a las 3 de la mañana, Pasha se metió en un saco de dormir y pasó una hora moviéndose exclusivamente en él, saltando como un verdadero canguro. ( Madina )
Alrededor de las 8 a.m., una pequeña crisis nos alcanzó: todo se vino abajo y nada funcionó, pero de repente todo funcionó. Convertir los dos modelos en la aplicación resultó ser el mayor desafío: Yegor terminó de ensamblar solo cinco minutos antes de la fecha límite. Le damos la palabra:
- Después de encontrar la idea, todo salió muy bien y productivamente. Los muchachos entrenaron la grilla y bailaron, y atornillé la cámara de historias de PoseNet a JavaScript directamente en el navegador. Las pruebas iniciales funcionaron bien y fueron sorprendentemente rápidas. Por lo tanto, cuando por la mañana resultó que WebGL en WebView se bloquea inesperadamente al trabajar con texturas por alguna tontería y no hay forma de encontrar una solución, casi me desespero. Pero era demasiado tarde para rendirnos: estábamos ardiendo con la idea. Por lo tanto, desde el último esfuerzo y en el último banco de redbull, en movimiento, arrastramos un modelo CoreML alternativo al cliente iOS y comenzamos a rastrear las poses ya de forma nativa, para darles al modelo con bailes y obtener algún resultado a la salida de ellos. De hecho, ¡repetimos el trabajo nuevamente! ¡Otro desafío fue el segundo modelo, que de repente comenzó a esperar que entraran más de mil argumentos! Xcode generó una interfaz para él que simplemente no sería realista usar "de frente". El beneficio de Objective-C no fue decepcionado, y se encontró una solución elegante. ( Egor )
Pitching
El viernes a las 14 en punto fue necesario subir un video sobre el proyecto: varios equipos no tuvieron tiempo y fueron descalificados. Y a las 14:40 tuvimos una presentación ante los curadores de la pista relacionada con el producto. Tuvimos muchachos del equipo de Video y Música, y parece que les gustó todo en el campo. En nuestra pista, tomamos el segundo lugar (¡queríamos el primero, porque tenemos un proyecto genial!) Y terminamos en la final (dos equipos pasaron de nuestra pista).
- Este año fui el primer curador del hackathon interno. Diré con moderación: evaluar el trabajo fue extremadamente difícil. El nivel de todos los equipos sin excepción fue de alguna manera trascendental. La característica no debe ser solo tecnológica, no solo "cercana a la producción", no solo "potencialmente útil para nuestros productos". El proyecto ganador debe cumplir con todos estos criterios al mismo tiempo. Parece que los chicos lo hicieron. ( Andrey )
El pitcheo final fue a las 17:40. En este momento, era necesario preparar otra demostración, ya para todo el equipo, y el jurado era diferente: director técnico, director de producto y director de marketing.
A las cinco de la tarde todo había terminado: condujimos a casa para dormir, sin saber nada sobre los resultados.
Resultados finalmente
Los resultados se anunciaron solo el lunes. Primero, premiamos a los ganadores de las pistas (no es nuestro caso; permítanme recordarles que fuimos el segundo), luego los líderes de la audiencia (no nosotros), y luego el tercero (y este no somos nosotros), el segundo (nuevamente no nosotros) y, finalmente, nosotros.
Aquí hay algunos proyectos con los que tuvimos que competir:
2do lugar: un asistente de voz receptivo;
3er lugar - cronología de errores internos;
El Premio del Público es un recordatorio de las próximas reuniones de chat.
"Este es el mejor hackathon al que he asistido". Había mucho más impulso que incluso en Junction. ( Dania )
- Realmente disfruté trabajar con colegas de un departamento completamente diferente. Nunca antes había tocado el aprendizaje automático, me pareció una especie de magia, pero ahora no lo es. ( Egor )
- Fue genial formar parte de un equipo tan genial con un proyecto tan genial. ¡Durante el día logré ser diseñador, camarógrafo, ingeniero de sonido, editor, músico y redactor! Y yo era el único capaz de dormir. ( Oscuro )
La vida después del hackatón.
La mayoría de los proyectos desarrollados en hackathons no llegan a la venta por varias razones: un cambio de enfoque, complejidad de implementación, algo imprevisto en la implementación. El hackathon interno no es una excepción.
Sin embargo, enumeramos los proyectos que vieron la luz del día:
