- PVSM.RU - https://www.pvsm.ru -

Что будет, если объединить фоторедактор и нейросеть

Что будет, если объединить фоторедактор и нейросеть - 1
Пример работы нейронного фоторедактора Neural Photo Editor. По центру — оригинальное изображение. Красными и синими квадратами показаны области скрытого пространства, сгенерированного после обучения нейросети. Ими можно манипулировать и напрямую (как обычно это делается) и косвенно, посредством «контекстной кисти»

Вы думаете, что «Фотошоп» творит чудеса в искажении реальности? Да, он может бесследно удалить человека с фотографии или нарастить волосы на голове, как у Илона Маска, с помощью «контекстной кисти». Но это и рядом не стоит с тем, на что способна нейросеть, если разрешить ей редактирование с контекстным анализом. Это совершенно другая реальность. Нейросеть способна заставить человека на фотографии улыбаться, придать вашей девушке черты Анджелины Джоли и так далее. Возможности безграничны.

Первая ласточка в этой области — нейронный фоторедактор Neural Photo Editor [1], который разработали сотрудники школы инженерных и физических наук [2] в Университете Хериота-Уатта (Эдинбург, Великобритания) вместе с коллегой из компании Renishaw [3].

Последние достижения в создании генеративных моделей [4] для изображений привели к появлению нейросетей, которые после обучения генерируют сэмплы и производят интерполяцию высочайшего качества. В данной области применяют два основных метода, изобретённых в 2013-2014 годах: Variational Autoencoder [5] (VAE) и Generative Adversarial Network [6] (GAN). Они показали, что нейросеть способна генерировать сложные, многомерные структуры в натуральных изображениях.

Вариационные автоэнкодеры VAE — это вероятностные графические модели, которые обучаются максимизировать вариационные нижние границы (исходя из вероятности данных), проецируя результат обучения в скрытое пространство (latent space), а затем реконструируя изображение из этого пространства.

Генеративные состязательные сети (GAN) осваивают генеративную модель, тренируя одну сеть («дискриминатор») отличать реальные и сгенерированные данные. Одновременно другая сеть («генератор») обучается генерировать сэмплы, которые дискриминатор не отличит от реальных.

Оба метода подходят для генерации изображений в скрытом пространстве – например, для добавления улыбки на хмурое лицо. У каждого из них свои преимущества и недостатки.

Нейронный фоторедактор Neural Photo Editor — это инновационный интерфейс для работы со скрытым пространством генеративных моделей. Такой метод позволяет осуществлять конкретные семантические правки в изображении с использованием «контекстной кисти», которая опосредованно изменяет собственный вектор.

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

Что будет, если объединить фоторедактор и нейросеть - 2
Результат изменения фотографии с помощью нейронного фоторедактора

Простой пример. Если мы берём фотографию белого лица с чёрными волосами — и применяем чёрную кисть на лбу, но нейронный фоторедактор автоматически добавит туда волосы. Редактор работает в реальном времени на приличном GPU.

Для улучшения результата редактирования в редакторе есть возможность редактирования реконструкции изображения после трансформации нейросетью (интерполяционная маска). В этом случае результат выходит более качественным (на иллюстрации внизу).

Что будет, если объединить фоторедактор и нейросеть - 3
Визуализация интерполяционной маски. Вверху слева направо: реконструкция, дельта (ошибка) реконструкции, оригинальное изображение. Внизу: модицифированная реконструкция, дельта, результирующее изображение

На следующих изображениях показаны примеры работы нейросети в реконструкции и интерполяции фотографий из баз CelebA, ImageNet и SVHN. Слева — исходные изображения, с каждым шагом направо показаны результаты постепенной реконструкции в нейросети.

Что будет, если объединить фоторедактор и нейросеть - 4

Свою работу авторы опубликовали [7] 22 сентября 2016 года на arXiv.org.

Код программы Neural Photo Editor опубликован на Github [1]. В том же репозитории опубликован код интроспективной состязательной нейросети, которая представляет собой гибрид вариационных автоэнкодеров (VAE) и генеративных состязательных сетей (GAN).

Для запуска Neural Photo Editor понадобятся:

  • Theano [8], библиотека Python для эффективного определения, оптимизации и оценки математических выражений с использованием многомерных массивов.
  • Lasagne [9], библиотека для создания и обучения нейросетей на Theano.
  • Для повышения производительности рекомендуется (но не обязательно) установить cuDNN [10], библиотеку от Nvidia для аппаратного ускорения стандартных процедур, таких как прямая и обратная свёртка, пулинг, нормализация и активация слоёв. Это часть Nvidia Deep Learning SDK [11].
  • numpy, scipy, PIL, Tkinter и tkColorChooser из комплекта установки Python.

Автор: alizar

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/193768

Ссылки в тексте:

[1] нейронный фоторедактор Neural Photo Editor: https://github.com/ajbrock/Neural-Photo-Editor

[2] школы инженерных и физических наук: https://www.hw.ac.uk/schools/engineering-physical-sciences/

[3] Renishaw: http://www.renishaw.ru/

[4] генеративных моделей: https://en.wikipedia.org/wiki/Generative_model

[5] Variational Autoencoder: https://arxiv.org/abs/1312.6114

[6] Generative Adversarial Network: https://arxiv.org/abs/1606.04934

[7] опубликовали: http://arxiv.org/abs/1609.07093

[8] Theano: http://deeplearning.net/software/theano/

[9] Lasagne: http://lasagne.readthedocs.io/en/latest/index.html

[10] cuDNN: https://developer.nvidia.com/cudnn

[11] Nvidia Deep Learning SDK: https://developer.nvidia.com/deep-learning-sdk

[12] Источник: https://geektimes.ru/post/280944/