Передача нейронного стиля ( NST ) относится к классу программных алгоритмов, которые манипулируют цифровыми изображениями или видео, чтобы принять внешний вид или визуальный стиль другого изображения. Алгоритмы NST характеризуются использованием глубоких нейронных сетей для преобразования изображений. Обычно NST используется для создания искусственных произведений искусства из фотографий, например, путем переноса внешнего вида известных картин на фотографии, предоставленные пользователями. Несколько известных мобильных приложений используют для этой цели методы NST, включая DeepArt и Prisma . Этот метод использовался художниками и дизайнерами по всему миру для создания новых произведений искусства на основе существующих стилей.
NST — это пример стилизации изображения, проблемы, изучаемой более двух десятилетий в области нефотореалистичного рендеринга . Первыми двумя алгоритмами передачи стиля на основе примеров были аналогии изображений [1] и стегание изображений. [2] Оба эти метода были основаны на алгоритмах синтеза текстур на основе патчей .
Учитывая обучающую пару изображений — фотографию и изображение, изображающее эту фотографию, — можно изучить преобразование, а затем применить его для создания нового изображения из новой фотографии по аналогии. Если тренировочной фотографии не было, ее нужно было бы создать путем обработки входного изображения; стеганое изображение не требовало этого этапа обработки, хотя оно было продемонстрировано только на одном стиле.
NST был впервые опубликован в статье Леона Гатиса и др. «Нейронный алгоритм художественного стиля», первоначально опубликованной на ArXiv 2015, [3] и впоследствии принятой рецензируемой конференцией CVPR в 2016 году. [4] Оригинальная статья использовал архитектуру VGG-19 [5] , которая была предварительно обучена распознаванию объектов с использованием набора данных ImageNet .
В 2017 году Google AI представила метод [6] , который позволяет одной глубокой сети передачи сверточных стилей одновременно изучать несколько стилей. Этот алгоритм позволяет интерполяцию стилей в режиме реального времени, даже если это делается на видео носителе.
Процесс NST предполагает наличие входного изображения и образца изображения в стиле .
Изображение передается через CNN, а сетевые активации выбираются на уровне поздней свертки архитектуры VGG-19. Пусть будет результирующая выходная выборка, называемая «содержимым» входных данных .
Затем изображение стиля передается через ту же CNN, и сетевые активации выбираются на ранних и средних уровнях CNN. Эти активации закодированы в виде матрицы Грамиана , назовите ее для обозначения «стиля» .
Целью NST является синтез выходного изображения , отображающего содержимое в стиле , т. е. и .
Итеративная оптимизация (обычно градиентный спуск ) затем постепенно обновляется , чтобы минимизировать ошибку функции потерь:
,
где расстояние L2 . Константа контролирует уровень эффекта стилизации.
Изображение первоначально аппроксимируется путем добавления небольшого количества белого шума к входному изображению и подачи его через CNN. Затем мы последовательно распространяем эту потерю по сети с фиксированными весами CNN, чтобы обновить пиксели . После нескольких тысяч эпох обучения появляется (надеюсь) тот, который соответствует стилю и содержанию .
Алгоритмы обычно реализуются для графических процессоров , поэтому обучение занимает несколько минут. [ нужна цитата ]
NST также был распространен на видео. [7]
Последующая работа улучшила скорость NST для изображений. [ нужны разъяснения ]
В статье Фей-Фей Ли и др. принял другую регуляризованную метрику потерь и ускоренный метод обучения для получения результатов в реальном времени (на три порядка быстрее, чем Gatys). [8] Их идея заключалась в том, чтобы использовать не потерю пикселей , определенную выше, а скорее «перцепционную потерю», измеряющую различия между слоями более высокого уровня внутри CNN. Они использовали симметричный кодер-декодер CNN. При обучении используется функция потерь, аналогичная базовому методу NST, но также регуляризуется выходной сигнал для обеспечения гладкости с использованием потерь общей вариации (TV). После обучения сеть можно использовать для преобразования изображения в стиль, используемый во время обучения, используя один проход сети с прямой связью. Однако сеть ограничена единственным стилем, в котором она обучена. [9]
В работе Чэнь Дундуна и др. они исследовали объединение информации оптического потока в сети прямой связи , чтобы улучшить временную когерентность вывода. [10]
Совсем недавно были исследованы методы NST, основанные на преобразовании объектов , для быстрой стилизации, которые не привязаны к одному конкретному стилю и обеспечивают управляемое пользователем смешивание стилей, например преобразование отбеливания и окраски (WCT). [11]