Mail.ru Group corporate blog
Machine learning
Studying in IT
IT career
February 13

Техносфере пять лет



Сегодня проект Техносфера празднует своё пятилетие. Вот наши достижения за эти годы:

  • Обучение завершили 330 выпускников.
  • На курсе обучается 120 студентов.
  • Занятия ведут 30 преподавателей.
  • В учебной программе 250 занятий по 16 дисциплинам.
  • Ученики выполняют 71 ДЗ.
  • 8000 пользователей.
  • Больше 100 студентов начали свою карьеру в Mail.ru Group.

В конце обучения студенты создают собственные выпускные проекты, на которые им даётся три месяца. И в честь пятилетия Техносферы мы собрали самые яркие выпускные работы последних лет. О своих проектах расскажут сами выпускники.

«Яркая Память»


Всеволод Викулин, Борис Копин, Денис Кузьмин

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

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

Мы попробовали множество готовых нейронных сетей, но ни одна из них не дала нужного качества. Тогда мы решили создать собственную. На первом этапе нейронная сеть пыталась предсказывать RGB-картинку по ЧБ-каналу, однако результат был так себе, потому что сеть стремилась всё раскрашивать в серых тонах.


Пример работы исходной нейронной сети.

Тогда мы решили использовать вторую заранее обученную нейронную сеть.

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


Новая архитектура нейронной сети.

Но главное, нужно было научить модель как можно реалистичнее раскрашивать лица людей. Мы столкнулись с тем, что среди существующих наборов данных не нашлось подходящих под нашу задачу — нужны были крупные фото лиц с некоторым естественным фоном. Чтобы сформировать свой набор изображений, мы сначала построили список имён 5000 знаменитостей. Потом по этим именам искали картинки в различных поисковых системах. С помощью методов распознавания лиц отсеивали картинки, не содержащие лиц вообще, а на оставшихся фотографиях выделялись наиболее подходящие фрагменты. Так мы собрали необходимый набор в 600 тыс. фотографий.

Дальше возникла задача реалистичного раскрашивания военной формы.

Для её решения пришлось искусственным образом генерировать картинки военной формы с различными медалями и орденами. Кроме того, пришлось разобрать на кадры некоторые цветные фильмы про войну.


Примеры фотографий из обучающего набора.

Объединив всё это с популярным набором фотографий общего плана, мы получили 2,5 млн фотографий для обучения нейросети.

Подготовили рабочий прототип нейронной сети и приступили к разработке приложения на платформе ОК. Это стандартное web-приложение с бэкендом и фронтендом. Мы отвечали за бэкенд, а фронтенд взяла на себя команда ОК. Реально оценив имеющиеся ресурсы, мы решили, что рациональней будет использовать текущую архитектуру проекта Artisto.

Для этого мы портировали код нейронной сети во фреймворк Lua Torch и внедрили его в окружение.


Интерфейс приложения в ОК.

9 мая наше приложение стало доступно для многомиллионной аудитории Одноклассников, о нём написали несколько крупных СМИ, и на текущий момент сервисом пользуется 230 тысяч человек. Очень тяжело было реализовать проект в столь сжатые сроки, но мы со всем справились. Большое спасибо нашим менторам Ольге Шуберт и Алексею Воропаеву, которые помогли нам с интеграцией в ОК. Также благодарим группу разработки инфраструктуры из Mail.ru Поиск за помощь с интеграцией в проект Artisto, и отдельно Дмитрия Соловьёва за бесценные консультации по архитектуре нейронной сети.

«Music Map»


Владимир Бугаевский, Дана Злочевская, Ралина Шавалиева



Идею проекта нам подсказали менторы Алексей Воропаев и Дмитрий Соловьёв. Когда-то был плеер Sony, который умел классифицировать песни по четырём настроениям. Сегодня технологии сильно шагнули вперёд, искусственный интеллект и нейросети активно развиваются, и мы поняли, что можем сделать что-то более крутое, что понравится нашим пользователям — карту музыки, которая визуализировала бы настроение аудиозаписей пользователя ВКонтакте. А реализовать решили в виде расширения для Chrome — его легко установить и удобно использовать.

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

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

Мы выделили три фронта работ над приложением:

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

Объём работ был чрезвычайно большим, поэтому каждый смог попробовать себя во всём. Наша команда действовала очень слаженно: мы постоянно вместе придумывали разные способы решения тех или иных задач и помогали друг другу разобраться в особенностях реализации отдельных частей. Основной трудностью, с которой мы столкнулись, были чрезвычайно сжатые сроки — три месяца. За это время нам пришлось разобраться с нуля в разработке фронтенда (научиться писать на JavaScript), в тонкостях фреймворка для обучения нейронной сети (PyTorch) и освоить технологии модульной разработки (Docker). Сейчас наше приложение работает в тестовом режиме у нескольких пользователей.

«Video Colorization для профессионалов»


Юрий Адмиральский, Денис Бибик, Антон Боговский, Георгий Каспарьянц



Идея проекта возникла в результате анализа современных тенденций в развитии нейронных сетей для решения задач компьютерной графики и обработки мультимедиа-контента. В этой сфере уже предложено несколько различных подходов к раскрашиванию отдельных изображений, такая задача возникает, например, при обработке старых архивных фотографий. С другой стороны, успех раскрашенных версий чёрно-белых советских фильмов показал актуальность задач раскрашивания видео. Раскраска видеозаписи вручную, покадрово, является чрезвычайно трудоёмкой задачей, для решения которой требуется привлекать профессиональные студии. А из пользователей, желающих получить цветные версии своих старых видеозаписей, мало кто владеет необходимыми навыками и располагает достаточным временем для ручной раскраски, не говоря уже о деньгах для выполнения такой задачи с помощью профессиональных коллективов видеостудий. Поэтому мы решили попытаться применить известные подходы к раскрашиванию и создать программу-редактор для существенного уменьшения трудоёмкости раскраски видеозаписей с помощью нейронных сетей.

Основная задача, которую необходимо было решить при разработке подобной программы — добиться получения правильных цветов при раскраске объектов в кадре. Мы столкнулись с тем, что классические наборы данных (например, ImageNet), используемые при обучении нейронных сетей для решения задач обработки изображений, не позволяют добиться хорошей автоматической (без какой-либо дополнительной информации) раскраски. К примеру, некоторые объекты в кадре не распознавались и оставались чёрно-белыми на раскрашенном изображении. Другой проблемой state-of-the-art моделей был неправильный выбор цветов для раскраски объектов — как из-за недоопределённости задачи (раскраска одежды), так и в результате неправильного определения редких объектов, а также объектов, затронутых артефактами сжатия. При смене кадров наблюдалась смена цвета раскраски присутствующих в кадре объектов из-за неустойчивости моделей к небольшим изменениям кадра.

Для решения этой задачи мы применили метод локальных цветовых подсказок, который позволял путём задания цвета отдельных точек объектов добиваться корректного назначения цветов для всего объекта и корректных цветовых переходов. При этом нейронная сеть при раскраске контролирует соблюдение границ объектов и переходы яркости. Этот подход позволил сократить трудоёмкость раскраски отдельных кадров (требовалось явно задать цвета лишь отдельных точек на кадре, без применения кистей), помог решить проблему недоопределённостей и смены цветов при переходе между от кадра к кадру. Дополнительно мы реализовали модели, позволяющие отслеживать движение объектов в кадре и перемещать цветовые точки-подсказки. С помощью своей программы-редактор мы раскрасили фрагмент из старого черно-белого фильма The Kid.


Пример раскрашенного кадра из фильма Чаплина The Kid (1921).

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

Для создания редактора мы проделали большую работу, включая тестирование и доработку моделей раскрашивания и отслеживания объектов кадра, разработку клиент-серверной архитектуры приложения и проработку usability клиентского приложения. Мы изучили тонкости работы с фреймворком PyTorch, реализующим работу нейронных сетей, освоили фрейворк Qt 5 для разработки клиентского приложения, научились применять Django-REST и Docker для разработки и развёртывания вычислительного бэкенда.


Пример работы клиентского приложения.

Спасибо преподавателям Техносферы за самоотверженный труд, за актуальные знания, которые вы даёте студентам. Желаем проекту расти и развиваться!

* * *

Подать заявку на обучение можно до 10:00 16 февраля на сайте sphere.mail.ru. Обратите внимание, что в Техносфере могут обучаться только студенты и аспиранты МГУ им. М.В. Ломоносова.

+30
3.1k 7
Comments 3