GAN – генеративно-состязательная нейросеть (Generative adversarial network, GAN) – один из алгоритмов классического машинного обучения, обучения без учителя. Суть идеи в комбинации двух нейросетей, при которой одновременно работает два алгоритма “генератор” и “дискриминатор”. Задача генератора – генерировать образы заданной категории. Задача дискриминатора – пытаться распознать созданный образ.

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

Каким образом нейросеть может что-то генерировать и распознавать?

Дискриминатор. Для распознавания используются сверточные нейронные сети (CNN). Принципы работы и применение CNN описаны в отдельной статье. Для понимания “на пальцах”: CNN может распознавать образы на картинках, например, выделять из всего изображения лица, цифры и т.п. Для того, чтобы нейронная сеть научилась что-то распознавать, ей нужно обработать большое количество изображений, где содержатся искомые образы.

Простым языком: вы даете нейронной сети большое количество картинок котиков, на которых отмечаете в какой части изображения находятся котики (это называется “разметка”), и потом нейросеть уже сама способна сказать есть ли на картинке котики и где они находятся.

Генератор. Формирование изображений начинается с генерации произвольного шума, на котором постепенно начинают проступать фрагменты искомого изображения. Представьте себе, что вы трясете тарелку с песком, пока не удается “натрясти” что-то, отдаленно напоминающее цифру. А затем продолжаете трясти пока контуры цифры не станут более явными.  Нейросеть запоминает каким именно образом вы трясли тарелку, чтобы добиться такого результата, и в следующий раз воспроизводит ваши действия.

Генератор изображений CNN

Естественно, это иллюстративный пример и в реальных моделях применяются более разумные подходы. В качестве генерирующей нейронной сети могут использоваться (и часто используются) сети FFNNнейронные сети прямого распространения (feed forward neural networks).

Как и где применяются GAN и генеративные модели?

Создание контента и данных:  например, создание картинок для интернет-магазина, аватаров для игр, видеоклипов, сгенерированных автоматически, исходя из музыкального бита произведения, или даже виртуальных ведущих для ТВ-программ. Благодаря работе GAN и генеративных моделей возникает синтез данных, на которых потом будут обучаться другие системы.

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

Применение GAN нейросетей – реальные вдохновляющие примеры

Генерация потрясающе реалистичных изображений “знаменитостей” (а на самом деле – несуществующих людей) с помощью PG GAN от nVidia. C помощью этой сети можно также генерировать изображения любых других категорий.

Генерация лиц

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

генерация изображений предметов

Модель Everybody Dance Now, созданная группой ученых из Университета Беркли, представляет простой метод на основе генеративных нейронных сетей передачи движения «сделай как я». Дано: исходное видео танцующего человека. Достигнутый результат: мы заставляем изображение другого человека танцевать. Это называется “перенос движения”.

Перенос стиля из одного изображения на другое позволяет при помощи нейросетей делать такие впечатляющие вещи как “превратить лошадь в зебру”

Генератор изображений CNN

Или генерировать “аниме-портреты” по фотографии. На этой картинке видно, как с этой задачей справляются разные виды ГАНов.

Изменение лица

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

Изменение эмоций CNN

Также нейронные сети GAN используют для  генерации реалистичного видео городской среды. Например, при создании фильмов, игр, виртуальной реальности.

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

Переобразование набросков в картинку

Вместо заключения: что конкретно можно разработать, используя нейронные сети GAN

Поскольку GAN – довольно молодой метод (он появился только в 2014 году, а первые “приличные” результаты появились в 2016-2017 годах), еще никто не знает достоверно, что можно, а чего нельзя сделать с помощью GAN. Обзорам новых вариаций GAN и способам их применения посвящено много статей, мы же соберем самые интересные из них и будем публиковать их в нашем блоге.

Для чего мы в Evergreen планируем применять нейронные сети GAN? Основная идея – автоматизация производства контента, который раньше требовал усилий дизайнеров.

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

28.01.2019
Рейтинг: 5 / 5 (1)