[Машинное обучение, Учебный процесс в IT, Карьера в IT-индустрии] Генератор жанровых постеров для фильмов и перенос стиля картинки — проекты студентов курса «Нейронные сети» Техносфера

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
05-Авг-2020 18:31


Мы рассказали про выпускные проекты выпускников семестровых курсов по мобильной разработке Технопарка (МГТУ им. Баумана) (предыдущие публикации: «Разработка приложений на iOS», «Разработка приложений на Android»). Сегодня делимся интересными проектами студентов второго семестра Техносферы — совместного с МГУ образовательного проекта с годовой программой обучения в области анализа и работы с большими объемами данных. Студенты проходят курсы по машинному обучению, инфопоиску, нейронным сетям и другим дисциплинам. В обучении применён проектный метод, поэтому итоги семестра мы подводим на защитах студенческих проектов.
В образовательном процессе большую роль играют эксперименты. Студенческие проекты без них не обходятся: ребята пробуют разные подходы, методы, архитектуры, инструменты. Часто после эксперимента студенты отказываются от выбора технологии и алгоритма в пользу нового подхода. Это большая часть опыта и обучения. Ниже мы расскажем о таких этапах в разработке двух студенческих проектах.
  • Проект Movie posters GAN/embed.
  • Проект Cyrclegan on cartoon series.

CycleGAN on cartoon series
Авторы этого проекта решили использовать технику CycleGAN для перевода картинок из одного анимационного фильма в другой. GAN (Generative adversarial network) — методика обучения моделей image-to-image. Обучаются две нейронные сети: дискриминатор и генератор, которые находятся в соперничающих отношениях. Генератор пытается увеличить ошибку классификации, дискриминатор — уменьшить. А CycleGAN — методика передачи обучения imag-to-image в режиме без учителя.
Допустим, есть два домена картинок — A и В. Создаются два генератора и два дискриминатора: gen_A2B, gen_B2A, disc_A, disc_B. Нужно, чтобы по картинке из A генератор gen_A2B создавал эту же картинку, но так, чтобы она была в домене B. Для этого вводят cycle consistency loss:
l1loss(gen_b2a(gen_a2b(a)), a)

В этом случае генератор будет генерировать картинки, которые обманывают дискриминатор, но при этом сохраняют изначальный контент.
Архитектура решения:
Генератор:

Resnet-блоки позволяют запоминать изначальную картинку. Также использовались instance normalization вместо batch normalization, потому что последний добавляет шумы из других картинок.
Дискриминатор:

Готового набора изображений не нашлось, поэтому выбрали картинки из ключевых кадров анимешных полнометражек: для А использовали «Унесенные призраками» Хаяо Миядзаки, а для B — «Твоё имя» Макото Синкая. Поскольку CycleGAN не очень подходят для кардинальных изменений (например, формы), авторы взяли оба домена из аниме.
В качестве функции потерь использовали сначала LSGAN, а потом WGAN GP, потому что LSGAN в процессе обучения создавал странные артефакты и терял цвета.
Для обучения использовали предобученную на horse2zebra модель (веса найдены лишь для генераторов). Она уже имеет понимание, что ей надо сохранять содержимое картинки, поэтому авторы в самом начале получили неплохой autoencoder, который оставалось только научить обманывать дискриминатор.
В самом начале обучения выставляли большое значение для cycle loss identity loss и gradient clipping, но когда прошло достаточно эпох, решили понемногу уменьшать эти значения, чтобы генератор стал чуть больше пытаться обманывать дискриминатор.
Также пытались в качестве дискриминатора использовать большие предобученные сети (VGG, RESNET, Inception), но они очень большие и обучение сильно замедлялось.
В результате работе удалось достичь того, что, стиль переносится близко к оригиналу, с сохранением общей цветовой гаммы (сверху оригиналы, снизу сгенерированные картинки):




Код проекта: https://github.com/IlyasKharunov/Cyclegan_project
Команда проекта: Ильяс Харунов, Олег Вербин.
Видео с защитой проекта.
Movie posters GAN/embed
Следующий проект интересен как раз с точки зрения пути, который проделал студент. В отличие от других студенческих проектов, Дмитрий выполнял работу самостоятельно. Такой путь оказался сложнее, чем у других, но результаты и выводы интересные.
Автор решил сделать сеть, которая генерировала бы постеры к фильмам по заданным жанрам. Например, чтобы постеры для фильмов ужасов были в тёмных тонах, для комедий — в светлых, и тому подобное.
С сайта IMDB автор взял 41 тыс. постеров для фильмов в двадцати жанрах за период 1970-2020. Позднее выяснилось, что для некоторых жанров изображений слишком мало, поэтому Дмитрий сбалансировал набор по жанрам, и в итоге осталось 32 тыс. постеров.
Затем для безжанрового генерирования картинок студент применил нейросеть с архитектурой DCGAN. Она работала с постерами размера 64x128.

Результаты получились криповатые:

Затем автор попробовал архитектуру CVAE+DCGAN:

А также VAE без GAN и GAN с классификатором. Пришел к заключению, что собранный набор постеров слишком сложен для этих методов. Тогда автор применил conditional GAN: это то же самое, что и DCGAN, только жанры теперь подавались и в генератор, и в дискриминатор. Латентный вектор z был взят длиной 100, жанры в hot-формате длиной 20, в результате получился вектор длиной 120. К ответу был добавлен жанр и выполнялся дополнительный прогон по одному линейному слою.
Удалось добиться такого результата:

Как видите, студенту было интересно пробовать различные подходы, результаты получились интересными. Авто получил много нового опыта, пришел к выводу, что для реализации такой идеи необходимо сразу брать более сложную нейронную сеть, например, StyleGAN.
Процесс обучения сети:
Извините, данный ресурс не поддреживается. :(
Команда проекта: Дмитрий Питеркин.
Видео с защитой проекта.
В скором времени мы расскажем и о самых интересных дипломных проектах по разработке на C++ и Go, фронтенд-разработке и созданию интерфейсов. Подробнее о наших образовательных проектах вы можете почитать по этой ссылке. И почаще заходите на канал Технострим, там регулярно появляются новые обучающие видео о программировании, разработке и других дисциплинах.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_mashinnoe_obuchenie (Машинное обучение), #_uchebnyj_protsess_v_it (Учебный процесс в IT), #_karera_v_itindustrii (Карьера в IT-индустрии), #_obrazovanie_v_it (образование в it), #_blog_kompanii_mail.ru_group (
Блог компании Mail.ru Group
)
, #_mashinnoe_obuchenie (
Машинное обучение
)
, #_uchebnyj_protsess_v_it (
Учебный процесс в IT
)
, #_karera_v_itindustrii (
Карьера в IT-индустрии
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 17:31
Часовой пояс: UTC + 5