GAN – генеративно-состязательная нейросеть (Generative adversarial network, GAN) – один из алгоритмов классического машинного обучения, обучения без учителя. Суть идеи в комбинации двух нейросетей, при которой одновременно работает два алгоритма “генератор” и “дискриминатор”. Задача генератора – генерировать образы заданной категории. Задача дискриминатора – пытаться распознать созданный образ.
Таким образом генератор генерирует определенные образы. Например, картинки, похожие на лица, а дискриминатор пытается определить лицо это было или нет. И со временем сеть обучается настолько, что генератор генерирует весьма реалистичные лица.
Дискриминатор. Для распознавания используются сверточные нейронные сети (CNN). Принципы работы и применение CNN описаны в отдельной статье. Для понимания “на пальцах”: CNN может распознавать образы на картинках, например, выделять из всего изображения лица, цифры и т.п. Для того, чтобы нейронная сеть научилась что-то распознавать, ей нужно обработать большое количество изображений, где содержатся искомые образы.
Простым языком: вы даете нейронной сети большое количество картинок котиков, на которых отмечаете в какой части изображения находятся котики (это называется “разметка”), и потом нейросеть уже сама способна сказать есть ли на картинке котики и где они находятся.
Генератор. Формирование изображений начинается с генерации произвольного шума, на котором постепенно начинают проступать фрагменты искомого изображения. Представьте себе, что вы трясете тарелку с песком, пока не удается “натрясти” что-то, отдаленно напоминающее цифру. А затем продолжаете трясти пока контуры цифры не станут более явными. Нейросеть запоминает каким именно образом вы трясли тарелку, чтобы добиться такого результата, и в следующий раз воспроизводит ваши действия.
Естественно, это иллюстративный пример и в реальных моделях применяются более разумные подходы. В качестве генерирующей нейронной сети могут использоваться (и часто используются) сети FFNN – нейронные сети прямого распространения (feed forward neural networks).
Создание контента и данных: например, создание картинок для интернет-магазина, аватаров для игр, видеоклипов, сгенерированных автоматически, исходя из музыкального бита произведения, или даже виртуальных ведущих для ТВ-программ. Благодаря работе GAN и генеративных моделей возникает синтез данных, на которых потом будут обучаться другие системы.
Автоматическое редактирование: этот подход уже используется в современных смартфонах и некоторых программах. Он позволяет менять на фотографии выражение лица, количество морщин и причёску, менять день на ночь, состаривать изображения и т.п.
Генерация потрясающе реалистичных изображений “знаменитостей” (а на самом деле – несуществующих людей) с помощью PG GAN от nVidia. C помощью этой сети можно также генерировать изображения любых других категорий.
https://medium.com/
Все эти изображения сгенерированы системой на базе генеративно-состязательных нейронных сетей, часть из них выглядит не слишком реалистично, но другая часть весьма правдоподобна.
https://towardsdatascience.com/
Модель Everybody Dance Now, созданная группой ученых из Университета Беркли, представляет простой метод на основе генеративных нейронных сетей передачи движения «сделай как я». Дано: исходное видео танцующего человека. Достигнутый результат: мы заставляем изображение другого человека танцевать. Это называется “перенос движения”.
Перенос стиля из одного изображения на другое позволяет при помощи нейросетей делать такие впечатляющие вещи как “превратить лошадь в зебру”
Или генерировать “аниме-портреты” по фотографии. На этой картинке видно, как с этой задачей справляются разные виды ГАНов.
https://towardsdatascience.com/
Изменение эмоций, возраста, выражения лица человека – всего этого можно достичь, правильно обучив и запрограммировав нейронные сети GAN. На практике это выглядит следующим образом: на входе модели подается исходное фото и указывается эмоция, которую нужно показать на выходе.
https://towardsdatascience.com/
Также нейронные сети GAN используют для генерации реалистичного видео городской среды. Например, при создании фильмов, игр, виртуальной реальности.
Преобразование набросков и контурных рисунков в фотореалистичное изображение при помощи GAN происходит следующим образом: вы рисуете от руки лицо, сумку или, например, кота и получаете фотореалистичное изображение на выходе. Поиграться с этим можно здесь.
https://affinelayer.com/pixsrv/
Поскольку GAN – довольно молодой метод (он появился только в 2014 году, а первые “приличные” результаты появились в 2016-2017 годах), еще никто не знает достоверно, что можно, а чего нельзя сделать с помощью GAN. Обзорам новых вариаций GAN и способам их применения посвящено много статей, мы же соберем самые интересные из них и будем публиковать их в нашем блоге.
Для чего мы в Evergreen планируем применять нейронные сети GAN? Основная идея – автоматизация производства контента, который раньше требовал усилий дизайнеров.
Если вы считаете, что сейчас переплачиваете за создание контента, который может создавать машина, поделитесь с нами своей идеей. Мы будем рады найти метод генерации, подходящий вашим потребностям.