我们如何通过学习skibidi,牙线和javascript赢得内部黑客马拉松

VK具有很酷的传统-内部黑客马拉松,只有VKontakte的人才能参加。 我将代表团队向大家介绍骇客马拉松,该比赛今年获得了第一名,并因整体疲劳而丧生,但设法为故事摄像机尝试了舞蹈动作检测器。



我叫Pavel ,我领导VKontakte的顶级研究团队,热情地对待黑客马拉松:作为参与者(Junction或许多deephack-s),最近又成为策展人(VK hackathon或Junk上的VK案例)-顺便说一下,这是第一次,一家俄罗斯公司参加时)。 我们对所有VK Hackathon开放,我们度过了第四年(这是我们最后一次爬进冬宫总总部),并且在进入VK之前,我们的很大一部分技术团队都参加了它。

内部黑客马拉松使团队本身可以在平台上自由地进行实验,测试不同的想法并从总体上获得乐趣。 一个重要的区别是解决方案可以大大地集成到VK中,这使我们有机会实现有趣的原型。

黑客马拉松比赛在歌手馆进行了整天的活动-就在本周中旬,总部变成了午夜运动。 很高兴看到清洁工在早晨惊奇地环顾四周-通常早上六点钟的空办公室突然间到处都是毛茸茸的人,他们像僵尸一样大喊大叫:“还剩五个小时!” 或者,凌晨三点,您走进厨房,在上课时闻起来像是大学宿舍里的东西:精力充沛,披萨和恐慌。 当然,这是在典型的一天发生的,但是发生的次数非常多-很少。

夏季曾举办过三场国内黑客马拉松比赛。 在2019年,我们决定不放松并度过另一个冬天-两次黑客马拉松比一次马拉松要好得多,因为这是一个很好的机会,可以尝试和实施一个想法,而这个想法没有足够的时间以正常的节奏进行。 规则也发生了变化:以前,一个团队最多只能有3个人,而今年是4个人,但一个人不会编写代码,而是专门从事其他工作。 您可以召集一个由设计师,产品经理,测试人员,营销人员和其他人员组成的团队。 共有38个团队参加了这次黑客马拉松。

Drimtim(更准确地说,是38个中的一个)


我们与Danes合谋,并一起说服YegorTyoma加入该团队。 预计模型会落后于我们,Yegor负责iOS和Tyoma的生产和设计。 移动开发+设计+一点机器学习和后端是2k19黑客马拉松成功的关键。

即使在今年,也有一个以前从未有过的细分领域:媒体(我们参加过),通信,基础设施,内容和娱乐。 我们有强大的竞争对手。 例如,我们一直受到高级设计师VK Ilya的激励,VK Ilya来到我们的房间,展示了他的团队构想的原型。

主意


“我参加过的几乎所有黑客马拉松比赛都获奖,我希望今年冬天从内部也能获得同样的收获。” ( 达尼亚很有信心)

我们的想法(特别是Danina)最初是这样的:我想探讨音乐生成的主题+在设备上获取所有内容,否则会“太后端”。 黑客马拉松始于集思广益-他们想知道可以考虑些什么。 生成音乐很有趣,但是我想让它取决于用户。 有按钮吗? 也许可以在屏幕上绘制并生成音乐吗? 同时,音乐团队的成员学习了如何添加所需的曲目。 但这似乎还不完全是。 邻近的团队高兴地发现笔记本电脑后面有东西,并因此感到沮丧。
-而且,如果您识别出空中吉他,就好像您正在弹吉他,并以此为基础,弹吉他的声音怎么办? ( 黑暗

宾果! 这是一个好斗的主意,将一切都安排在我们的能力范围内很酷。 为了识别运动,有一个posenet ,它很好(除了移动友好型)。 菲加姆!



解决方案


主要任务是在设备上建立一个网格(它应该是真实的)并学习识别运动。 叶戈尔(Yegor)接手了这项运动,提玛(Tyoma)–发明了一些有趣的旋入运动(只有一把吉他很无聊),丹妮和我–意识到了。 但这需要数据。 PRO和Amateur之间有什么区别? PRO有一个带有GPU的集群-这是一次,两次是-PRO会在需要时为其自身收集数据。 达尼亚(Dania)安排了一个看台,从相机上将被识别人物的坐标原始数据写入其中,然后跳舞! 那天晚上,我们学会了用牙线, 斯基比迪舞和烟斗跳舞。




为了记录运动,我们使用了一台工作的笔记本电脑,当他看到另一个无法理解的js错误时,该笔记本首先记录了Dani的脸(在他未在js上写一行之前)。



-我不明白,我有一个级别错误:打印在Python中消失了! ( 达尼亚

夜舞(字面意思)


在夜间拍摄,在镜头前连续移动多个小时。 我们自己记录下来,还发现开发人员徘徊在地板上,被强迫跳舞。 原来有7种不同的组合-现在我们需要学习如何区分它们。




-我每三个小时来一次,检查一下这些家伙是否还活着。 帕夏大喊:“我们有关键!” -和最后一支部队的达妮亚·弗莱克西尔。 然后每个人都跳舞了。 当丹尼尔(Daniel)筋疲力尽时,帕夏(Pasha)打开窗户说道:“男孩,我们需要重新整理。” ( 麦地那

来自该图的数据经过了预处理:他们伸出双腿,取平均头,并转换为相对于躯干的极坐标。 使用catboost训练了运动检测器-来自模型的数据流的三秒钟摘要。 直到今天晚上,他们还没有使用该库-事实证明这是战斗,在iOS中,您可以轻松使用。



他们教了一个多类分类,而一个类则尽可能无聊-只是在镜头前摇晃。 最困难的事情是记录“摇滚”运动-我们如此无私地摇了摇头,以至于一段时间后她开始旋转。 他们用一只“山羊”伸出一只手,尽管那没有意义-姿势网在整个刷子上只有一个点,但看不到手指。



-凌晨3点,Pasha爬上一个睡袋,花了一个小时专门在其中移动,像一只真正的袋鼠一样跳了起来。 ( 麦地那

凌晨8点左右,一场小危机席卷了我们-一切都崩溃了,什么也没有起作用,但是后来一切突然起作用了。 将这两种模型都转换成应用程序是最大的挑战-Yegor在截止日期前五分钟就完成了组装。 我们请他发言:

-找到想法后,一切进行得非常顺利且富有成效。 他们训练了网格并跳舞,然后我直接在浏览器中将PoseNet故事相机固定为JavaScript。 初始测试运行良好,并且速度惊人。 因此,当早晨发现在处理纹理时,WebView中的WebGL意外崩溃时,由于没有任何意义,而且找不到解决方法,我几乎陷入了绝望。 但是为时已晚,我们已经放弃了这个主意。 因此,在最后的努力和最后的红牛储备中,我们在移动中将替代的CoreML模型拖到iOS客户端上,并开始原生地跟踪姿势-为了进一步将它们与舞蹈一起提供给模型并在退出时获得一些结果。 实际上,我们再次重复了工作! 另一个挑战是第二种模式,突然开始期望输入上千种参数! Xcode为其生成了一个接口,使用“正面”根本不现实。 Objective-C的好处丝毫不减,并且找到了一种优雅的解决方案。 ( Egor

投球


在星期五下午2点,有必要上传有关该项目的视频-一些团队没有时间,他们被取消了参赛资格。 在14:40,我们在与产品相关的赛道策展人面前开了个小节。 我们有视频和音乐团队的成员,看来他们喜欢球场上的一切。 在我们的赛道上,我们获得了第二名(我们想要第一名,因为我们有一个很酷的项目!)并最终进入了决赛(从我们的赛道经过了两支队伍)。

-今年,我是内部黑客马拉松的第一任策展人。 我会克制地说:评估工作非常困难。 所有团队的水平无一例外都是超验的。 该功能不应该只是技术上的,而不仅仅是“接近生产”,而不仅仅是“对我们的产品可能有用”。 获奖项目必须同时满足所有这些条件。 看来这些家伙做到了。 ( 安德烈

最终投球时间是17:40。 到这个时候,有必要为整个团队准备另一个演示,而评审团已经不同了-技术总监,产品总监和市场总监。

晚上五点就结束了-我们开车回家睡觉,对结果一无所知。

结果终于


结果仅在星期一公布。 首先,我们授予曲目的获胜者(不是我们的情况-让我提醒您,我们是第二位),然后是听众的领导者(不是我们),然后是第三位(同样不是我们),第二位(同样不是我们),最后是我们。

以下是我们必须与之竞争的一些项目:

第二名-反应灵敏的语音助手;
第三名-内部错误时间表;
观众奖是对即将举行的聊天会议的提醒。

“这是我参加过的最好的黑客马拉松。” 在Junction上的驱动器甚至更多。 ( 达尼亚

-我真的很喜欢和一个完全不同的部门的同事一起工作-我以前从未接触过机器学习,对我来说,这似乎是一种魔力,但现在不是。 ( Egor
-通过如此出色的项目成为如此出色的团队的一员,这真是太酷了。 白天,我设法成为一名设计师,摄像师,音响工程师,编辑,音乐家和文案作家! 而我是唯一能够入睡的人。 ( 黑暗

黑客马拉松后的生活


在黑客马拉松上开发的大多数项目由于各种原因而无法出售:重点改变,实现的复杂性,实现中无法预料的事情。 内部黑客马拉松也不例外。

不过,我们列出了那些日新月异的项目:


Source: https://habr.com/ru/post/zh-CN443902/


All Articles