Нейронный перенос стиля ( NST ) относится к классу программных алгоритмов, которые обрабатывают цифровые изображения или видео, чтобы перенять внешний вид или визуальный стиль другого изображения. Алгоритмы NST характеризуются использованием глубоких нейронных сетей для преобразования изображений. Распространенным применением NST является создание искусственных произведений искусства из фотографий, например, путем переноса внешнего вида известных картин на предоставленные пользователем фотографии. Несколько известных мобильных приложений используют методы NST для этой цели, включая DeepArt и Prisma . Этот метод использовался художниками и дизайнерами по всему миру для разработки новых произведений искусства на основе существующих стилей.
NST — пример стилизации изображения, проблемы, которая изучалась более двух десятилетий в области нефотореалистичного рендеринга . Первыми двумя алгоритмами переноса стиля на основе примеров были аналогии изображений [1] и квилтинг изображений [2] . Оба эти метода основывались на алгоритмах синтеза текстур на основе патчей .
При наличии обучающей пары изображений — фотографии и художественного произведения, изображающего это фото, — можно было бы изучить преобразование и затем применить его для создания нового художественного произведения из новой фотографии по аналогии. Если бы обучающее фото не было доступно, его нужно было бы создать путем обработки входного художественного произведения; квилтинг изображений не требовал этого этапа обработки, хотя он был продемонстрирован только на одном стиле.
NST был впервые опубликован в статье «Нейронный алгоритм художественного стиля» Леона Гатиса и др., первоначально опубликованной на ArXiv 2015 [3] и впоследствии принятой на рецензируемой конференции CVPR в 2016 году [4]. В оригинальной статье использовалась архитектура VGG-19 [5] , которая была предварительно обучена для распознавания объектов с использованием набора данных ImageNet .
В 2017 году Google AI представил метод [6] , который позволяет одной глубокой сверточной сети переноса стилей изучать несколько стилей одновременно. Этот алгоритм позволяет интерполировать стили в реальном времени, даже если это делается на видеоносителях.
Этот раздел тесно связан с оригинальной статьей. [4]
Идея нейронного переноса стиля (NST) заключается в том, чтобы взять два изображения — изображение контента и изображение стиля — и создать третье изображение , которое минимизирует взвешенную комбинацию двух функций потерь: потери контента и потери стиля .
Общие потери представляют собой линейную сумму этих двух потерь: путем совместной минимизации потерь контента и стиля NST генерирует изображение, которое сочетает в себе содержание изображения контента со стилем изображения стиля.
И потеря контента, и потеря стиля измеряют сходство двух изображений. Сходство контента — это взвешенная сумма квадратов разностей между нейронными активациями одной сверточной нейронной сети (CNN) на двух изображениях. Сходство стиля — это взвешенная сумма матриц Грама в каждом слое (подробности см. ниже).
В оригинальной статье использовалась сверточная нейронная сеть VGG-19 , но метод применим к любой сверточной нейронной сети.
Пусть будет изображением на входе CNN.
Пусть будет матрицей откликов фильтра в слое на изображение , где:
Входное изображение кодируется в каждом слое сверточной нейронной сети с помощью откликов фильтра на это изображение, при этом более высокие слои кодируют более глобальные характеристики, но теряют детали локальных характеристик.
Пусть будет исходным изображением. Пусть будет изображением, которое генерируется для соответствия содержимому . Пусть будет матрицей ответов фильтра в слое на изображение .
Потеря контента определяется как квадратичная ошибка между представлениями признаков сгенерированного изображения и изображением контента на выбранном слое CNN: где и — активации фильтра в позиции в слое для сгенерированных и изображений контента соответственно. Минимизация этой потери способствует тому, чтобы сгенерированное изображение имело схожее содержание с изображением контента, как это зафиксировано активациями признаков на выбранном слое.
Общая потеря контента представляет собой линейную сумму потерь контента каждого слоя: , где — положительные действительные числа, выбранные в качестве гиперпараметров.
Потеря стиля основана на матрицах Грама сгенерированных и стилевых изображений, которые фиксируют корреляции между различными ответами фильтров на разных уровнях CNN: где Здесь и являются записями матриц Грама для сгенерированных и стилевых изображений на уровне . Явно,
Минимизация этой потери способствует тому, чтобы сгенерированное изображение имело схожие характеристики стиля с изображением стиля, как это зафиксировано корреляциями между ответами признаков в каждом слое. Идея заключается в том, что корреляции паттернов активации между фильтрами в одном слое фиксируют «стиль» в порядке рецептивных полей в этом слое.
Как и в предыдущем случае, в качестве гиперпараметров выбраны положительные действительные числа.
В оригинальной статье они использовали определенный набор гиперпараметров.
Потеря стиля вычисляется по для выходов слоев , , , , в сети VGG-19, и ноль в противном случае. Потеря контента вычисляется по для , и ноль в противном случае.conv1_1
conv2_1
conv3_1
conv4_1
conv5_1
conv4_2
Соотношение .
Изображение изначально аппроксимируется путем добавления небольшого количества белого шума к входному изображению и подачи его через CNN. Затем мы последовательно распространяем эту потерю обратно через сеть с фиксированными весами CNN, чтобы обновить пиксели . После нескольких тысяч эпох обучения (надеюсь) появляется то, что соответствует стилю и содержанию .
По состоянию на 2017 год [обновлять]при реализации на графическом процессоре для сходимости требуется несколько минут. [8]
В некоторых практических реализациях отмечается, что полученное изображение имеет слишком много высокочастотных артефактов, которые можно подавить, добавив общую вариацию к общим потерям. [9]
По сравнению с VGGNet, AlexNet не очень хорошо подходит для переноса нейронного стиля. [10]
NST также был распространен на видео. [11]
Последующая работа улучшила скорость NST для изображений с помощью специальных нормализаций . [12] [8]
В статье Фей-Фей Ли и др. принята другая регуляризованная метрика потерь и ускоренный метод обучения для получения результатов в реальном времени (на три порядка быстрее, чем у Гейтиса). [13] Их идея заключалась в том, чтобы использовать не пиксельную потерю, определенную выше, а «перцепционную потерю», измеряющую различия между слоями более высокого уровня в CNN. Они использовали симметричную сверточную-деконволюционную CNN. Обучение использует функцию потерь, аналогичную базовому методу NST, но также регуляризует вывод для гладкости, используя потерю полной вариации (TV). После обучения сеть может использоваться для преобразования изображения в стиль, используемый во время обучения, с использованием одного прямого прохода сети. Однако сеть ограничена единственным стилем, в котором она была обучена. [13]
В работе Чэнь Дундонга и др. они исследовали слияние информации оптического потока в сетях прямой связи с целью улучшения временной когерентности выходных данных. [14]
Совсем недавно были исследованы методы NST на основе преобразования признаков для быстрой стилизации, которые не привязаны к одному конкретному стилю и позволяют пользователю управлять смешиванием стилей, например, преобразование отбеливания и окрашивания (WCT). [15]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )