Передача нейронного стиля - Neural Style Transfer

Мона Лиза в стиле « Звездной ночи » с использованием нейронной передачи.
Мона Лиза в стиле « Женщина в шляпе » с использованием нейронной передачи стиля.
Мона Лиза в стиле « Великой волны » с использованием нейронной передачи стиля.

Передача нейронного стиля ( NST ) относится к классу программных алгоритмов, которые манипулируют цифровыми изображениями или видео, чтобы перенять внешний вид или визуальный стиль другого изображения. Алгоритмы NST характеризуются использованием глубоких нейронных сетей для преобразования изображений. Обычно NST используется для создания искусственных произведений искусства из фотографий, например, путем переноса внешнего вида известных картин на фотографии, предоставленные пользователем. Некоторые известные мобильные приложения используют для этой цели методы NST, в том числе DeepArt и Prisma . Этот метод использовался художниками и дизайнерами по всему миру для разработки новых произведений искусства на основе существующих стилей.

Алгоритмы передачи более ранних стилей

NST - это пример стилизации изображения , проблема, изучаемая более двух десятилетий в области нефотореалистичного рендеринга . Первыми двумя примерами алгоритмов переноса стилей были « Аналогии с изображениями» и «Квилтинг с изображениями». Оба эти метода были основаны на алгоритмах синтеза текстур на основе патчей .

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

NST

NST был впервые опубликован в статье Леона Гэтиса и др. «Нейронный алгоритм художественного стиля», первоначально выпущенной для ArXiv 2015, и впоследствии принятой экспертной оценкой Computer Vision and Pattern Recognition (CVPR) в 2016 году.

NST основан на алгоритмах синтеза текстур на основе гистограмм , в частности на методе Портиллы и Симончелли. NST можно резюмировать как синтез текстур на основе гистограмм с функциями сверточной нейронной сети (CNN) для проблемы аналогий изображений. В исходной статье использовалась архитектура VGG-19 , которая была предварительно обучена для распознавания объектов с использованием набора данных ImageNet .

В 2017 году Google AI представил метод, который позволяет одной сети передачи глубоких сверточных стилей изучать несколько стилей одновременно. Этот алгоритм позволяет выполнять интерполяцию стилей в реальном времени, даже если это делается на видео носителях.

Формулировка

Процесс NST предполагает входное изображение и пример стиля изображения .

Изображение передается через CNN, и сетевая активация дискретизируется на уровне поздней свертки архитектуры VGG-19. Позвольте быть результирующим образцом вывода, называемым «содержанием» ввода .

Затем образ стиля передается через ту же CNN, а сэмплы активаций сети производятся на раннем и среднем уровнях CNN. Эти активации кодируются в матричное представление Грамиана , называемое для обозначения «стиля» .

Цель NST является синтез выходного изображения , который демонстрирует содержание применяется со стилем , то есть и .

Затем итеративная оптимизация (обычно градиентный спуск ) постепенно обновляется, чтобы минимизировать ошибку функции потерь:

,

где - расстояние L2 . Константа регулирует уровень эффекта стилизации.

Обучение

Первоначально изображение аппроксимируется путем добавления небольшого количества белого шума к входному изображению и передачи его через CNN. Затем мы последовательно распространяем эту потерю через сеть с фиксированными весами CNN, чтобы обновить пиксели . После нескольких тысяч эпох обучения появляется (надеюсь), что соответствует стилю и содержанию .

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

Расширения

NST также был расширен на видео.

Последующая работа улучшила скорость NST для изображений.

В статье Fei-Fei Li et al. применили другую регуляризованную метрику потерь и ускоренный метод обучения для получения результатов в режиме реального времени (в три раза быстрее, чем у Gatys). Их идея заключалась в использовании не потерь на основе пикселей, определенных выше, а скорее «потери восприятия», измеряющей различия между высокоуровневыми уровнями в CNN. Они использовали симметричный кодировщик-декодер CNN. При обучении используется функция потерь, аналогичная базовому методу NST, но также производится упорядочение выходных данных для обеспечения плавности с использованием потерь полной вариации (TV). После обучения сеть может использоваться для преобразования изображения в стиль, используемый во время обучения, с использованием одного прохода сети с прямой связью. Однако сеть ограничена одним стилем, в котором она обучалась.

В работе Chen Dongdong et al. они исследовали объединение информации оптического потока в сети прямого распространения , чтобы улучшить временную когерентность выходных данных.

Совсем недавно методы NST, основанные на преобразовании признаков , были исследованы для быстрой стилизации, которая не связана с одним конкретным стилем и обеспечивает управляемое пользователем смешивание стилей, например преобразование отбеливания и окраски (WCT).

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