«Цель искусства не в том, чтобы воспроизвести реальность, а в том, чтобы создать реальность такой же интенсивности».

- Альберто Джакометти

Введение

Как художник и энтузиаст машинного обучения, я задавался вопросом, как машина будет рисовать, если ее научат использовать цвета и мазки кистью. У вас такой же вопрос? GAN можно использовать для создания произведений искусства! The Verge писал в марте 2019 года, что изображения, созданные GAN, стали определяющим видом современного искусства искусственного интеллекта [3]. Я реализовал Deep Convolutional GAN ​​(DCGAN) в трех разных жанрах (абстракция, цветочная живопись и натюрморт), и работу над проектом можно найти здесь.

Что делают сети GAN?

Генеративные состязательные сети (GAN) были одной из самых интересных разработок в методах машинного обучения, обнаруженных Яном Гудфеллоу в 2014 году, и с тех пор используются в различных областях визуализации. Сети GAN состоят из двух сетей: сети генератора и сети дискриминатора. Генератор можно сравнить с вором, пытающимся произвести фальшивую валюту и использовать ее без обнаружения, или с манипулятором, которому поручено создавать обучающие данные, запускаться случайным образом и получать как реалистично, насколько это возможно. Он начинает с латентных векторов, изучает различные характеристики распределения в реальном мире и генерирует поддельные данные, почти неотличимые от реальных. Дискриминатор похож на полицию, пытающуюся обнаружить фальшивую валюту, enforcer, чья работа состоит в том, чтобы обнаруживать и классифицировать данные как «настоящие» или «фальшивые», и уметь в этом хорошо разбираться. Он работает как классификатор. Обучение обеих сетей выполняется поочередно до тех пор, пока не будет достигнута точка, в которой генератор сможет обмануть дискриминатор, а дискриминатор больше не сможет различать реальные и поддельные данные (или изображения в нашем случае).

Люди работали над различными версиями GAN, чтобы сделать обучение стабильным и помочь сетям сойтись или генерировать более качественные данные. GANS широко использовались при генерации изображений, когда у нас меньше данных для обучения нашей сети, они использовались для создания новых данных или для возрождения некоторых потерянных художников и художественных форм. Я использовал DCGAN, представленные в 2016 году, архитектуру генераторной сети, которая генерировала спальни. Для подробного объяснения я нашел эту статью полезной. Этот DCGAN дал довольно хорошие результаты для создания произведений искусства. С некоторыми модификациями, такими как кондиционирование классов, можно получить лучшие результаты.

Некоторые из модификаций, которые можно использовать: Вспомогательный классификатор GAN (AC-GAN), представленный Августом Одена и др. al. в 2016 году добавляет слой классификатора к дискриминатору и вектор кондиционирования к генератору. В этой модели используются трансферное и многозадачное обучение (Одена и др., 2016). StackGAN представил Чжан и др. al. в 2016 году использует информацию о функциях, полученную из рекуррентной нейронной сети, и двухэтапный процесс генерации изображения. Улучшенная версия wasserstein GAN может использоваться для стабильного обучения моделей.

Сбор данных, модель и детали обучения

Сбор наборов данных. Генератор в GAN учится генерировать данные только из того распределения, на котором дискриминатор обучен классифицировать или распознавать изображения, поэтому выбор правильного набора данных был сложной задачей. Первый эксперимент, который я провел, заключался в обучении модели на наборе данных, собранном мной из изображений Google, которые содержали картины одного художника: Боба Росса. Набор данных был слишком мал (100 изображений), но не дал хороших результатов. Затем я увеличил набор данных и собрал изображения из базы данных wikiart (которая представляет собой коллекцию из более чем 100 000 картин, каждая из которых помечена по стилю, жанру, художнику, году создания картины и т. Д.) И создал три набора данных для 3 разных жанров, а именно: цветы. - живопись (1279 изображений), абстракция (192 изображения) и натюрморты (1201 изображение).

Модель: модель содержит две сети, генератор и дискриминатор. Модель довольно простая.

Сеть дискриминатора: поскольку входом является изображение, мы будем использовать сверточную нейронную сеть для дискриминатора, который действует как классификатор и выводит одно число, так как его задача состоит в том, чтобы распознать, является ли изображение поддельным (сгенерированным) или реальным (из реального распределения. ). Шаг 2 используется для постепенного уменьшения размера выходной карты объектов. Сеть дискриминаторов идет от:

3x64x64 → 64x32x32 → 128x16x16 →256x8x8 →512x4x4 → 1x1x1 → 1

Сеть генераторов: принимает на вход скрытый тензор (случайный входной вектор) и генерирует из него изображения. Эта сеть принимает вектор шума 128x1x1 и отображает его на выход G (Z), который имеет размер 64x64x3. Сеть идет от:

128x1x1 → 512x4x4 → 256x8x8 → 128x16x16 → 64x32x32 → 3x64x64

Детали обучения:

Я использовал различные размеры пакетов от 16 до 128 в зависимости от наличия графического процессора и генерировал 16 изображений за эпоху. Детали настройки были взяты из статьи DCGAN.

Вот советы по настройке, процитированные непосредственно из статьи [1]:

Все модели были обучены с помощью стохастического градиентного спуска (SGD) мини-пакета с размером мини-пакета 128. В LeakyReLU наклон утечки был установлен на 0,2 во всех моделях. В то время как предыдущая работа GAN использовала импульс для ускорения обучения, мы использовали оптимизатор Adam с настроенными гиперпараметрами. Мы обнаружили, что предлагаемая скорость обучения 0,001 является слишком высокой, вместо этого мы использовали 0,0002. Кроме того, мы обнаружили, что оставление параметра импульса β1 на предлагаемом значении 0,9 привело к тренировочным колебаниям и нестабильности, а уменьшение его до 0,5 помогло стабилизировать тренировку.

Я также обучил модель WGAN с изменением функций потерь и отсечения градиента, использовал lr = 5e-5 и RMSprop в качестве оптимизатора. Почти одинаковые результаты были получены от обеих сетей GAN.

Полученные результаты

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

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

Картины, созданные на основе набора данных натюрморта после 500 эпох, показаны ниже.

Говорят, что «практика делает человека совершенным», но я не уверен в людях, но я заметил, что машины могут действительно хорошо учиться после обучения на большом наборе данных в течение многих эпох. Я использовал функцию brisque из Matlab, чтобы вычислить качество сгенерированных изображений. Эта функция MATLAB вычисляет оценку качества изображения без эталона для изображения A, используя оценщик пространственного качества слепого / безопорного изображения (BRISQUE). Меньший балл указывает на лучшее качество восприятия. Оценка, рассчитанная для новых картин, находилась в диапазоне от 30 до 40. Я также провел опрос, и путем субъективного анализа друзей, которые являются художниками, художниками и любителями искусства, 8/10 человек сказали, что качество сгенерированных изображений для цветов -Живопись и натюрморты были очень хорошими.

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

Заключение

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

использованная литература

  1. « Обучение неконтролируемому представлению с помощью глубоких сверточных генерирующих состязательных сетей », Алек и др. др., ICLR 2016.
  2. «Вассерштайн ган». , автор Arjovsky et. др., 2017.
  3. Https://www.theverge.com/2019/3/5/18251267/ai-art-gans-mario-klingemann-auction-sothebys-technology
  4. Абстрактная живопись.
  5. GAN - способы повышения производительности GAN.
  6. Различные версии GAN в pytorch и tensorflow.