Code.Code.Code.Code.Code.FUN.Code.Code.Code.Code.FUN

Почему мы проводим хакатоны? Откровенно говоря, я считаю, что нет одного «правильного» ответа. Это может быть по серьезным причинам, создание POC, которые решают глобальные проблемы, или по глупым причинам - например, создание генераторов мемов, нацеленных на развлечения масс.

Но дело не только в результатах. Не менее важны путь к достижению наших целей в короткие сроки, построение духа товарищества с товарищами по команде и получение новых знаний.

Вики ранее организовывала хакатон в честь этой культуры. На этот раз Вики восприняла эту традицию для нового поколения викианцев, стилизовав внутренний хакатон под Викатон. Любой сотрудник мог принять участие в этом двухдневном мероприятии, максимум до трех человек от каждой команды.

Тема Викатона, расположенная недалеко от дома, была сосредоточена на улучшении или обновлении наших текущих услуг. Для таких разработчиков, как я, это была возможность предложить направление или область интересов, в которой компании следует двигаться дальше. В конце двух дней команды будут оцениваться по трем различным параметрам - влияние, техническая глубина и креативность.

Я Вэйюань, и это моя история для Викатона 😝

День 0: День перед Викатоном

Наши рабочие места раздаются приглушенными тонами возбуждения. Разные команды собирались на своих площадках, обсуждая, как реализовать свои замыслы в следующие пару дней.

Для меня это был очередной обычный день. Я не записался на мероприятие просто потому, что у меня не было интересных идей для работы.

«Шоколадный пресс? Это новый вид конфет? "

- Какой-то парень. Я не могу подтвердить или опровергнуть, являюсь ли я этим человеком.

В тот же день ко мне подошла Кристи, моя подруга и коллега + специалист по опыту сообщества. Кристи - человек многих «интересных» идей, но то, что она предложила, полностью изменило определение этого слова.

«Вэйюань, мне нужно, чтобы ты построил что-то, что сможет распознать шоколадный пресс моей Оппы!»

"Чего ждать?!!"

После дальнейшего обсуждения я наконец понял идеалы Кристи. Она хотела изучить различные K-драмы и «собрать» сцены, в которых мужское тело * кхм * «прославлено». Эти сцены будут сохранены в коллекциях знаменитостей, чтобы их поклонники могли просматривать их на досуге.

Поскольку наличие полной команды было полезно для выполнения большего количества задач во время хакатона, мы решили исследовать Юлиуса в качестве нашего последнего члена, который был мобильным инженером в Viki.

Так и сформировалась команда… 😄

Позже той же ночью мы исследовали глубже и осознали потенциал, лежащий в основе идей Кристи. Abs, распознаваемый на видео с помощью распознавания объектов, придает достоверность неиспользованным возможностям VOD-сервиса, таким как автоматически генерируемые моменты, связанные с интересами пользователей. Это также может помочь нашей сестринской службе, Rakuten Sports, в автоматическом обнаружении основных моментов для значимых событий, таких как забивание голов.

Другой аспект заключался в том, что распознавание лиц знаменитостей может способствовать новому измерению их вовлеченности, дополняя наши текущие системы рейтинговых оценок и жанровых категорий. Например, мы можем порекомендовать поклонникам определенной знаменитости другие драмы, которые будут отсортированы по времени просмотра или участию той же знаменитости.

Проблема заключалась в том, что ни у кого из нас не было опыта в области машинного обучения или распознавания лиц и объектов. Но эй, вот о чем хакатон!

Викатон - День 1, начало хакатона

Формально хакатон стартовал после объединения всех рук компании. Участники Викатона собрались в зале для мероприятий, чтобы поработать над своими идеями.

В моей команде мы разделили работу в соответствии с нашими сильными сторонами. Юлиус будет работать над мобильным прототипом, который продемонстрирует присутствие знаменитости и основные моменты «пресса» в видеопотоке. Я буду работать над пониманием того, как использовать распознавание объектов и лиц на видеовходе, а затем выводить различные основные моменты в формате JSON для взаимодействия с запланированной реализацией Юлиуса. Кристи будет работать над автоматизацией, чтобы собирать изображения для обучения наших моделей (и классификатора лиц) - и в качестве нашего лидера, постоянно удерживая нас на одной странице.

Поскольку у меня не было опыта распознавания объектов, я начал с серии видео-руководств (Примечание: я смотрел их до части 5), чтобы лучше понять, как я могу использовать библиотеки и примеры Tensorflow с открытым исходным кодом. для распознавания объектов.

Учебники были обнадеживающими и, как видно выше, дали очень точные результаты. Из учебника, написанного на python, я изменил логику для итеративного запуска с кадрами из видеопотока вместо одного изображения. Затем произошло следующее:

Поскольку мы намеревались создать POC для распознавания «пресса», мы могли отказаться от неточной модели, использованной выше, и переориентировать наши усилия на обучение для предполагаемой модели.

Ожидая, пока соберутся изображения для тренировки нашей модели «пресса», я начал работать над пониманием распознавания лиц. Распознавание объектов и распознавание лиц основаны на одних и тех же концепциях машинного обучения. Однако мы не могли использовать тот же код, что и выше, поскольку распознавание лиц в некоторых отношениях отличается от распознавания объектов. Один из способов описать разницу заключается в том, что лицо может быть объектом, но отличительные черты лица (расстояние между чертами, форма, цвет и выражения) определяют фактическую идентичность того же лица.

К счастью, существовали библиотеки распознавания лиц, которые уже решили проблему распознавания лиц. Следуя тому же процессу с изучением того, как выполнять распознавание лиц, как указано в репозитории выше, я экспериментировал и пытался обучить наш собственный классификатор на основе базовой модели, чтобы лучше распознавать Оппас и Нунас наших фанатов.

В этот момент солнце садилось, и время первого дня было на исходе. Наша команда отслеживала каждый наш индивидуальный прогресс - Юлиус показал нам прототип, дополненный текущим Android-приложением Viki с кликабельными изображениями целевой знаменитости.

Кристи также удалось автоматизировать процесс загрузки наших обучающих изображений из Google. Хотя результаты были прекрасными, в течение следующих двух дней моя папка «Загрузки» в основном стала следующей:

С собранными изображениями мы начали тренировочный процесс, который продолжался всю ночь.

Викатон - День 2, завершение и презентации

День 2 начался с некоторых неудач - модель пресса не была достаточно обучена, чтобы обеспечить достаточно высокую точность распознавания пресса. Я решил потратить больше времени на обучение модели для большего количества итераций. Все изменилось, и к полудню нам удалось получить более точный контент.

(На стороне) Мы начали возиться с обученной моделью, что дало забавные результаты:

Ожидая завершения обучения модели распознавания абс на моей машине, я работал над получением вывода JSON от обученного классификатора распознавания лиц. Основываясь на результатах распознавания лиц, я добавил веса допуска к каждому кадру. Это гарантировало, что знаменитостям нужно было появиться только для части кадров в назначенной секунде, чтобы сработали критерии присутствия. Выполняются дальнейшие вычисления для преобразования присутствия каждой секунды во временные диапазоны (представляющие клип с наиболее яркими моментами).

Чтобы еще больше повысить точность собранных бликов, я добавил логику сшивания, чтобы обеспечить объединение бликов, которые считались близкими (ниже определенного временного порога). Это помогло уменьшить фрагментацию светлых участков, вызванную неточными точками данных и короткими переходами внутри видео.

В довершение ко всему, были добавлены критерии подсчета баллов, как обсуждалось ранее. Это было измерено как общее время присутствия, а также близкие и далекие снимки, основанные на размере лица, распознанного на видео.

Объединив приведенную выше логику с обученным распознаванием пресса, нам удалось достичь POC (пресс, над которым нужно работать!) Наших намеченных целей:

Завершая нашу разработку, Юлиус также поделился своими обновлениями о полноценном приложении с игровыми функциями. Это приложение также было оборудовано домашней страницей POC с предлагаемым контентом, который фанаты могли бы заинтересовать в просмотре, который мы планировали показывать во время судейских шествий.

Презентации

Для процесса судейства было выбрано два судьи из Вики и еще два судьи из Ракутена. Каждой команде было дано время, чтобы поделиться своим конечным продуктом с судьями и аудиторией, а также рассказать о мотивах реализации своих видений на этом Викатоне.

Свои идеи для презентации представили 14 команд. Идеи варьировались от забавных идей, таких как разрешение пользователям взаимодействовать с видеопотоком (бросание сердец, когда появляется определенный персонаж), до идей, касающихся наших повседневных болевых точек, таких как настройка непрерывной доставки и / или развертывания в стиле спинакера ( зависит от окружающей среды).

Для моей команды мы остановились на теме «Моменты Вики», демонстрируя мобильное приложение Julius POC в сочетании с результатами анализа видео, над которыми мы с Кристи работали.

Некоторые из презентаций в настоящее время загружаются (и скоро будут связаны здесь!)

По итогам конкурса были объявлены следующие победители:

Самые эффективные - утоляющие жажду (Юлиус, Вэйюань, Кристи) (США !!!)
Лучшее техническое нововведение - Dishdash Master, расширение Chrome, напоминающее нам о заказе наш ежедневный обед, а также предоставление предложений (Candra, Longfei)
Самый креативный - OMO, новый интерактивный видео опыт (Стефани, Лаура, Аннабель)
Специальное предложение Приз Ракутен - новые переводы RIT и режим реального времени (Liling)

Поздравляем всех победителей!

По мере того, как торжества подходили к концу, было над чем поразмыслить. Оглядываясь назад, можно сказать, что за два дня каждая из команд-участниц сделала очень много. Некоторые идеи даже начали реализовываться чуть менее чем через месяц после мероприятия по инициативе соответствующих инженеров. Также был разговор о том, чтобы обсудить развертывание некоторых проектов как формальных элементов наших сервисов.

Что касается меня, то я бы не сказал, что теперь я эксперт по машинному обучению, но за этот короткий промежуток времени я многому научился и стал ценить в этой области. Между моей командой было также много солидарности и дружбы, при этом команды взаимно поддерживали друг друга во время презентации.

Я считаю, что это успех Викатона! С нетерпением жду следующей итерации и новых идей в наступающем году!