VK 有一个很酷的传统——内部黑客马拉松,只有来自 VKontakte 的人才能参加。 我将代表今年获得第一名并完全疲劳而死的团队向您介绍黑客马拉松,但他们成功地尝试了故事摄像机的舞蹈动作探测器。
我的名字是
内部黑客马拉松允许团队本身对平台进行大量实验,测试不同的想法,并且总体上会很有趣。 一个重要的区别是解决方案可以更多地集成到 VK 中,这使我们有机会实现有趣的原型。
黑客马拉松全天在 Singer House 举行 - 就在一周的中间,总部变成了午夜运动。 早上 6 点,清洁工们惊讶地环顾四周,这很有趣 - 早上 XNUMX 点通常空荡荡的办公室突然挤满了头发蓬乱的人,他们像僵尸一样移动并大喊:“还剩五个小时!” 或者,当你凌晨三点走进厨房时,里面闻起来就像上课期间的大学宿舍:能量饮料、披萨和恐慌。 当然,这种情况发生在平常的日子里,但规模如此之大却很少见。
之前的三场内部黑客马拉松都在夏天举行。 2019 年,我们决定不把时间浪费在琐事上,还举办了一场冬季黑客马拉松 - 两次黑客马拉松比一次好得多,因为这是一个很酷的机会来实验和实施一个想法,而在通常的节奏中没有足够的时间。 规则也发生了变化:以前一个团队最多可以有三个人,但今年是四个人,但其中一个不写代码,而是专攻其他事情。 可以邀请设计师、产品经理、测试人员、营销人员和其他人员加入团队。 共有38支队伍参加了本次黑客松。
Dreamtim(更准确地说,是 38 个之一)
我们达成协议
即使在今年,也出现了以前不存在的细分:媒体(我们参与其中)、通信、基础设施、内容和娱乐。 我们有强大的竞争对手。 比如,VK的资深设计师不断激励着我们
想法
— 我参加的几乎所有黑客马拉松都获得了奖项,我预计今年冬天的内部黑客马拉松也能获得同样的奖项。 (
丹崖 对自己有信心)
我们(特别是 Danina)的想法最初是这样的:我们想要探索音乐生成的主题 + 将所有内容都放在设备上,否则就会“太后端”。 黑客马拉松以头脑风暴开始——我们思考我们能想出什么。 生成音乐很有趣,但我想让它依赖于用户。 一些按钮? 也许在屏幕上画画并根据它生成音乐? 同时,我们向音乐团队的人学习了如何添加我们需要的曲目。 但看起来还是不太对劲。 邻近的团队正在他们的笔记本电脑上兴高采烈地工作,这引起了人们的沮丧。
— 如果您识别出空气吉他,就像您正在弹吉他一样,并据此演奏吉他的声音,该怎么办? (
特马 )
答对了! 这个想法是激进的,我们有能力以一种很好的方式安排一切。 对于动作识别有
解
主要任务是在设备上创建网格(必须是真实的)并学习识别运动。 Egor 开始移植,Tyoma 开始思考融入哪些动作会很有趣(只是一把吉他——无聊),而 Danya 和我开始认识它们。 但这需要数据。 专业人士和业余爱好者有什么区别? PRO 有一个带有 GPU 的集群 - 这是一件事,也是两件事 - PRO 将在需要时为自己收集数据。 Danya 组织了一个展台,用相机记录已识别人物的原始坐标数据,然后 - 跳舞! 那天晚上我们学会了用牙线跳舞,
作为记录动作的支架,我们使用了一台工作笔记本电脑,当 Dani 看到另一个难以理解的 JS 错误时,它首先记录了 Dani 的脸(他以前没有写过一行 JS)。
——我不明白,我有一个级别错误:print 在 Python 中消失了! (
丹崖 )
夜舞(字面意思)
我们在夜间在镜头前拍摄了多个小时的连续运动。 他们自己录下来,还抓住了在地板上徘徊的开发人员并强迫他们跳舞。 我们得到了七种不同的组合 - 现在我们必须学会区分它们。
“我每三个小时就来一次,检查一下这些人是否还活着。” 帕夏喊道:“我们有一个支点!” ——丹尼娅用尽全力弯曲。 然后大家就开始吹笛子了。 当丹尼尔耗尽体力时,帕夏打开窗户说:“伙计们,我们需要梳洗一下。” (
麦地那 )
图中的数据经过预处理:腿被抛出,头部被平均,并转换为相对于躯干的极坐标。 我们使用 catboost 训练运动检测器 - 使用模型数据流的三秒摘录。 直到今晚我们还没有使用过这个库——结果它是一个战斗库,你可以把它放在 iOS 中。
他们教授多类别分类,其中一堂课尽可能无聊——只是在镜头前闲逛。 最困难的是记录“岩石”的运动——我们无私地摇头,过了一会儿它开始旋转。 他们伸出了一只带有“山羊”的手,尽管这是毫无意义的——posenet在整只手上只有一个点,它看不到手指。
— 凌晨 3 点左右,帕夏爬进睡袋,在里面独自活动了一个小时,像真正的袋鼠一样跳跃。 (
麦地那 )
早上 8 点左右,我们遭遇了一场小危机——一切都坏了,一切都不起作用,但随后一切突然开始自行运转。 事实证明,将这两个模型安装到应用程序中是最大的挑战 - Egor 在截止日期前五分钟完成了组装。 让我们请他发言:
— 当我们找到这个想法后,一切都进展顺利且富有成效。 这些人训练网格并跳舞,我直接在浏览器中用 JavaScript 将 PoseNet 连接到故事相机。 最初的测试运行效果很好,而且速度快得惊人。 因此,当早上发现WebView中的WebGL在处理一些废话的纹理时意外崩溃并且没有办法找到解决方案时,我几乎陷入了绝望。 但放弃已经太晚了:我们对这个想法很着迷。 因此,我们用尽最后的力气和最后一罐红牛,将一个基于 CoreML 的替代模型拖入移动的 iOS 客户端,并开始本地跟踪姿势 - 以便随后将它们发送给带有舞蹈的模型并在输出处得到一些结果。 本质上,我们再次重复了这项工作! 另一个挑战是第二个模型,它突然开始需要一千多个参数作为输入! Xcode 为其生成了一个接口,直接使用是不现实的。 幸运的是,我对 Objective-C 的了解并没有让我失望,并且找到了一个优雅的解决方案。 (
叶戈尔 )
投球
周五下午 14 点,上传有关该项目的视频的截止日期——一些团队没有及时上传,被取消了资格。 14:40,我们向与产品相关的赛道策展人进行了推介。 我们有来自视频和音乐团队的人,他们似乎喜欢球场上的一切。 我们在赛道上获得了第二名(我们想要第一,因为我们有一个很酷的项目!)并最终进入了决赛(我们赛道上的两支队伍获得了资格)。
— 今年我第一次担任内部黑客马拉松的策展人。 我要克制地说:评估这项工作是极其困难的。 所有队伍的水平无一例外都令人难以置信。 一个功能不应该仅仅在技术上先进,不仅仅是“接近生产”,不仅仅是“对我们的产品可能有用”。 获奖项目必须同时满足所有这些标准。 看来小伙子成功了。 (
安德鲁 )
我们在下午 17:40 进行了最后一次推介。 这时候,需要再准备一个demo,这次是针对整个团队的,而且评审团也不同了——技术总监、产品总监和营销总监。
晚上五点,一切都结束了——我们回家睡觉,对结果一无所知。
结果终于出来了
结果周一才公布。 首先,他们颁发了曲目的获胜者(不是我们的情况 - 让我提醒你,我们是第二名),然后是观众领袖投票(不是我们),然后是第三名(这也不是我们),第二(同样,不是我们),最后是我们。
以下是我们必须竞争的项目:
第二名——响应式语音助手;
第三名——内部错误的时间线;
人民选择奖是对即将举行的聊天会议的提醒。
— 这是我参加过的最好的黑客马拉松。 甚至比交汇处的动力也多得多。 (
丹崖 )
— 我真的很喜欢与来自完全不同部门的同事一起工作 — 我以前从未接触过机器学习,这对我来说似乎有某种魔力,但现在不是那样了。 (
叶戈尔 )
— 成为如此酷的团队的一员,参与如此酷的项目,真是太酷了。 有一天,我成为了一名设计师、摄像师、音响工程师、编辑、音乐家和文案撰稿人! 我也是唯一一个能睡着的人。 (
特马 )
黑客马拉松之后的生活
大多数在黑客马拉松上开发的项目都因各种原因而未能成功销售:焦点的改变、实施的复杂性、实施过程中不可预见的情况。 内部黑客马拉松也不例外。
尽管如此,我们还是列出了一些已经问世的项目:
来源: habr.com