Нейросеть научили генерировать котиков

Алекса Джоликёр-Мартино, программист и специалист по статистике, научила нейросеть генерировать котиков.
Нейросеть научили генерировать котиков

Нейросети можно научить не только распознавать, но и обрабатывать и генерировать изображения. Для последней цели используют системы из двух конкурирующих нейросетей — GAN (Generative adversarial network). Первая сеть (генерирующая) получает на входе значения переменных, а на выходе выдаёт значения функции от этих переменных. Вторая (различающая, или дискриминирующая) сравнивает результаты работы первой сети с образцами-эталонами — в случае Джоликёр-Мартино, с реальными фотографиями котов и кошек анфас.
Задача генерирующей сети — выдавать такие результаты, чтобы вторая сеть не могла отличить их от эталона; дискриминирующая сеть, в свою очередь, со временем учится всё точнее определять разницу между эталоном и изображением, сгенерированным нейросетью-генератором.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

В качестве образцов Джоликёр-Мартино использовала базу данных, состоящую из десяти тысяч кошачьих портретов. Лучшие результаты получились с изображениями размеров 64 x 64 пикселя и больше (их в базе набралось больше девяти тысяч), сгенерированными с помощью сети-генератора DCGAN.

Чуть менее убедительные котики получились, когда нейросети «скормили» шесть тысяч картинок разрешением 128 x 128, а генерированием занималась DCGAN с алгоритмами автокоррекции ошибок (Self-Normalizing Neural Networks) SELU.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Кроме того, Джоликёр-Мартино попробовала генерировать котиков с помощью алгоритма WGAN и LSGAN. В последнем случае вышло не очень: в один из раундов работы вместо котиков нейросеть выдала контрастные пятна.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Но один из разработчиков алгоритма LSGAN прислал Джоликёр-Мартино свою версию котиков, сгенерированных с его помощью, и они оказались очень даже ничего — очевидно, всё дело было в базовых параметрах работы обеих нейросетей: