Neural Style Transfer

Материал из Викиконспекты
Версия от 05:40, 17 апреля 2019; Alexchekmenev (обсуждение | вклад) (What insights can convolutional neural network provide?)
Перейти к: навигация, поиск

What does Style Transfer mean?

Принцип работы трансфера стиля

Как видно на рисунке 1, есть два входных изображения, а именно изображение контента и изображение стиля, которые используются для создания нового изображения, называемого стилизованным изображением. Несколько вещей, на которые следует обратить внимание в этом изображении, это то, что оно имеет тот же контент, что и изображение контента, и имеет стиль, аналогичный стилю изображения стиля. Это выглядит хорошо, и мы почти уверены, что это не достигается путем наложения этих двух изображений, так как же нам понять, в чем смысл этой идеи? Чтобы ответить на этот вопрос, нам нужно сделать шаг назад и сосредоточиться на том, что на самом деле изучает нейронная сеть свертки? Что эти слои Convolution действительно кодируют в виде карт объектов или ядер, которые позволяют им делать это или заявлять об этом по-другому? Какие представления изучают CNN, когда мы вводим изображение, давайте сначала попробуем это понять.

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


What insights can convolutional neural network provide?

Архитектура сверточной сети VGG16
Карты признаков сети VGG16

В этом разделе я хочу поделиться некоторой интуицией о том, как более глубокий слой CNN представляет изображение и как мы можем использовать это вычисленное представление, которое имеет смысл только для модели в наших интересах при разработке передачи нейронного стиля. Давайте возьмем архитектуру VGG16 для понимания этого представления в скрытых слоях.

Используя вышеупомянутую архитектуру в качестве эталона, давайте рассмотрим 1-й слой свертки vgg16, который использует ядро 3x3 и обучает 64 карты признаков (feature map) для генерации представления изображения 224x224x64, принимая 3-канальное изображение размером 224x224 в качестве входных данных. если вы немного запутались, посмотрите ниже

Давайте предположим, что во время обучения этим 64 картам функций они, возможно, научились обнаруживать простые шаблоны, такие, что некоторые нейронные единицы активируются, когда они видят прямую линию, или даже для какого-либо другого типа шаблона, который может не иметь никакого смысла для человеческого глаза, но имеет огромный значение для этой модели. Это «Обнаружение» прямых линий или некоторого паттерна называется обучением представлению функции.

Теперь давайте рассмотрим 10-й слой свертки vgg16, который использует ядро 3x3 с 512 картами объектов для обучения и, наконец, генерирует вывод представления изображения 28X28x512, просто для простоты, давайте предположим, что в этом 10-м слое есть определенные единицы, которые активируются изображение, содержащее круги, подобные колесу автомобиля, или некоторые из них, которые активируются изображением, имеющим некоторый рисунок, похожий на три пересекающиеся линии и т. д.

Можно с уверенностью предположить, что CNN не учится кодировать, что такое изображение, но на самом деле учится кодировать то, что представляет изображение, или какое содержимое видно в изображении, и из-за нелинейной природы нейронных сетей мы перешли от мелких слоев к более глубоким слоям. скрытые юниты становятся способными обнаруживать все более и более сложные особенности по заданному изображению.

Эта природа представления кодирования сама по себе является ключом к передаче стиля, который используется для вычисления потерь между сгенерированным изображением относительно контента и изображения стиля. При обучении модели более десяти тысяч изображений на класс модель может генерировать аналогичное представление признаков для множества различных изображений, если они принадлежат к одному классу или имеют схожий контент или стиль. Следовательно, имеет смысл использовать разницу в значении представления признаков сгенерированного изображения по содержанию и стилю изображения, чтобы направлять итерации, через которые мы производим само сгенерированное изображение, но как мы можем убедиться, что изображение с содержанием (C) и сгенерированное изображение (G ) похожи по своему содержанию, а не по стилю, в то время как с другой стороны, как мы можем быть уверены, что сгенерированное изображение наследует только похожее представление стиля из образа стиля (S), а не само изображение стиля в целом. Это решается разделением функции потерь на две части: одна - потеря контента, а другая - потеря стиля, и вскоре мы поймем, чем они отличаются друг от друга и как они преодолевают поставленные нами проблемы.