Хабрахабр

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

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

  • Обучение завершили 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-приложения, в которое загружается видео, а затем с помощью цветовых подсказок размечаются кадры.

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


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

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

* * *

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть