Как сделать стилизованное фото

Создание стилизованной фотографии в программе Photoshop

Этим уроком мы начнем новую интересную тему — создание стилизованной фотографии в программе Photoshop. И на данной странице будут со временем появляться ссылки на новые уроки по заданной теме.

Стилизация — это намеренное приведение оригинала фото к какому-то иному виду, придание ему новых характеристик и нового «видения». То есть мы берем обычную фотографию и задаем ей новый стиль, отсюда и название процесса обработки фотографии.

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

В результате стилизации можно получить из обычной фотографии картину, рисунок (черно-белый и цветной), гравюру, «мультяшное» фото, картинку в стиле поп-арт и фэнтези…

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

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

В каждом уроке мы будем рассматривать по 1-2 возможных варианта стилизации фотографии.

Стилизация фотографии при помощи RGB- каналов

Начнем наш урок с получения стилизованного фото самым простым, на мой взгляд, способом: при помощи окна «Каналы».

Мы будем работать в данном уроке с RGB- каналами, которые создаются в программе Photoshop автоматически при загрузке изображения. Увидеть их можно, выбрав в основном меню программы Окно вкладку Каналы.
Как видим, каждое изображение представлено в виде трех каналов – красного, зеленого и синего. По-английски – Red, Green, Blue. Из первых букв и получается название каналов – RGB.

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

Шаг 1.
А) Открываем в программе фотографию цветка.
Б) Создаем дубликат слоя (Ctrl+J), переходим на него. Слой Фон закрываем.
В) Открываем окно Каналы.
На скриншоте показаны одновременно виды всех трех описанных выше действий.

Шаг 2.
Выбираем любой из каналов (для примера выбран синий канал). Остальные каналы отключаем. Вот так выглядит теперь наша фотография.

Шаг 3.
Задаем инверсию канала. Это можно сделать двумя способами. Через меню Изображение- Коррекция- Инверсия либо при помощи быстрых клавиш Ctrl+I.

Шаг 4.
Включаем все остальные каналы. Получаем вот такой эффект стилизации.

Аналогично можно изменять остальные два каналы или выбирать сочетание каналов. В результате получаем следующие варианты нашей изначальной фотографии.

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

А можно дополнить выполненные преобразования, например, эффектами наложения.

Для этого делаем следующее:

Как сделать стилизованное фото

• Оставляем видимыми слой Фон (оригинал фотографии) и слой с измененным каналом (в нашем случае Фон-копия или фон-копия 1… и тому подобное).
• Переходим на слой с эффектом и применяем к нему разные эффекты наложения. Для этого дважды кликаем по нему правой кнопкой мышки и экспериментируем с режимами наложения. Выбираем тот вариант, который вам больше всего подходит для вашей фотографии.

Вот какие варианты получились у меня при «игре» с режимами наложения.

(* при клике по фотографиям их можно увидеть в большем размере)

Следующий урок: Стилизация фотографии с использованием меню Коррекция и эффектов наложения.

Источник

Стилизация в фотографии

Это очень интересное направление, в котором одновременно проявляются практически все основные навыки фотохудожника: построение концепции съёмки, детальная проработка образа, профессиональная фотосъёмка и качественная постобработка.

За основу для этой статьи я взяла серию кадров с Одри Хепбёрн из кинофильма «Завтрак у Тиффани». У меня было несколько съёмок в таком стиле, но даже сейчас этот образ для меня до конца не раскрыт, и ещё остались идеи для новых снимков.

Мои модели с радостью принимают предложение войти в образ легендарной актрисы. Классический жанр, стиль Одри, узнаваемый всеми кадр, высокое качество снимка — всё это прекрасно сочетается в фотографии, которая может украсить любой интерьер:

Что такое стилизация в фотографии? Для меня это возможность повторить нечто узнаваемое, стильное, шедевральное и добавить своё видение.

Когда я работала над съёмками серии «Завтрак у Тиффани», меня не покидало ощущение, будто я каким-то чудесным образом оказалась по ту сторону экрана и у меня появился счастливый шанс поснимать сюжеты самой.

Как сделать стилизованное фото

Узнаваемость с первого взгляда — один из основных критериев того, что проект состоялся. В этом случае у меня была идея повторить самые известные кадры фильма. Работа по их выбору стала началом подготовки к фотосессии.

Кстати, ещё один важный момент — выбор модели. Конечно же, не было задачи найти девушку, похожую на Одри. Но какое-то сходство всё-таки желательно.

Как сделать стилизованное фото

КОНЦЕПЦИЯ

Я решила снимать только в студии. Интерьеры, городские локации, витрины — всё было реализовано при помощи Photoshop, прорисовано и сколлажировано на этапе постобработки. Поэтому для стилизации я выбирала те примеры, которые смогу воспроизвести наиболее точно. Также я смотрела на детали, на второстепенных персонажей, которые должны были присутствовать уже в студии. В итоге у меня получилось 10–15 кадров.

СОЗДАНИЕ ОБРАЗА

Я очень много работаю с моделями в рамках художественных и стилизованных фотосессий, и у меня есть большой список фирм и брендов, предоставляющих в аренду платья и аксессуары. Кстати, этот образ в плане подбора одежды не самый сложный. Что-то мы покупали, что-то брали в аренду. Сложнее всего, кстати, было найти похожую шляпку.

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

Повторить этот кадр не так сложно. Главное, как я уже говорила, сделать его узнаваемым. Тут уже большую роль играет схожесть реквизита, аксессуаров и, конечно же, самой модели. Она необязательно должна быть копией нашей героини, но важно вжиться в роль, прочувствовать настроение, максимально повторить позу. Не менее важны правильный макияж, причёска, которые готовят стилисты на съёмочной площадке.

Как сделать стилизованное фото

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

Как сделать стилизованное фото

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

Конечно же, у каждого из нас разные цели и задачи. Я хотела не только максимально повторить кадр, над которым я работаю, но и внести в съёмку что-то своё, поэтому я не стремилась к стопроцентной точности. Важна узнаваемость с первого взгляда и читаемость идеи, а нарушать границы, дополнять образы, я могу только на уровне интуиции.

Как сделать стилизованное фото

СЪЁМКА В СТУДИИ

Теперь о технических особенностях. Тут две составляющих. Первая — профессиональная фотосъёмка, вторая — художественная обработка. Под профессиональной работой я подразумеваю старательные, детально продуманные действия. Для хорошего результата и начинающему фотографу, и профи нужно потратить массу усилий.

На этапе съёмки моим верным помощником является камера Nikon D800. Я более 10 лет работаю с Nikon и вряд ли когда-нибудь предпочту другой фотобренд. Nikon D800 — это оптимальное качество плюс большой формат кадра. Так как я часто печатаю свои работы в большом формате для выставок, публикаций в журналах, делаю своим клиентам фотокниги, Nikon D800 для меня незаменим.

В студии я обычно работаю с объективами Nikon 24-70mm f/2.8G ED AF-S Nikkor и Nikon 70-200mm f/2.8G ED AF-S VR II Zoom-Nikkor, используя студийный импульсный свет. Эта линейка объективов даёт великолепную резкость, что очень важно при съёмке материала для дальнейшей работы с большими форматами. А матрица и максимальное разрешение у Nikon D800 позволяет печатать снимки в превосходном качестве.

ПОСТОБРАБОТКА

Съёмка на белой циклораме позволяет в дальнейшем не полностью отделять модель от фона, но и накладывать слои в Photoshop. Важно правильно выставить свет, чтобы на этапе постобработки было легче заменить фон, дорисовать или проработать детали. Нужно добиться отсутствия теней на заднем плане, иначе при прорисовке фона это «выдаст» монтаж, и работа не будет смотреться реалистично.

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

Как я уже писала, все фоны были добавлены на этапе постобработки. Если приложить максимум усилий к тому, чтобы на съёмочной площадке всё было в соответствии с концепцией, фотосессия получится реалистичной и максимально приближенной к оригиналу.

Источник

Как сделать стилизованное фото

Войти

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Сегодня мы расскажем о художественных фильтрах в фотошопе. С помощью этих фильтров возможна стилизация под живопись (масло, пастель, карандаш), имитация поверхностей и структур. При помощью этих фильтров вы сможете создать из своих фотографий произведения искусства.

Как сделать стилизованное фото

Фильтр – инструмент для изменения изображения. Это может быть размытие, усиление резкости, стилизация, усиление рельефа, изменение цветовой гаммы и многое другое.

Все фильтры вы можете найти во вкладке “Фильтр”, которая находится сверху. При нажатии на данную вкладку перед нами появляется меню.

Как сделать стилизованное фото

Имитирует рисунок акварельными красками. Но не очень хорошо. Применив пару трюков можно добиться замечательных результатов. Сделайте две копии фотографии с помощью Ctrl + J, затем выберите фильтр “Акварель”.

Как сделать стилизованное фото

Marine watercolor / © luceluceluce

Меняем режим наложения первого слоя на Screen (Осветление или Экран), а второй на Multiply (Умножение). В оба слоя добавьте маски. Держите нажатой клавишу Alt, чтобы создать черную маску. С помощью кисти белого цвета и акварельной кисти, варианты которой вы найдете в интернете, рисуйте по маскам. Таким образом, вы будете имитировать типичные цветовые переходы. Фотошоп провел предварительную работу и подготовил эскиз. С помощью кистей и текстуры вы можете получить нужный эффект.

Как сделать стилизованное фото

Фильтр “Цветной карандаш” использует текущий цвет фона, как цвет бумаги, на которой будет создаваться рисунок. То есть еще до применения фильтра нужно принять небольшое решение. Цвета снимка превратятся в цвета карандашей. Между карандашными штрихами будет виден цвет бумаги.

Как сделать стилизованное фото

Так как мелкие детали редко хорошо прорабатываются, лучше работать с большими фотографиями. С помощью одноразового применения фильтра сложно получить хороший результат. Поэтому я рекомендую сделать несколько копий изображения, применить на разных копиях разные настройки и с помощью масок слоев прорисовать те участки, которые лучше всего подходят к данной части фотографии. Текстура бумаги способствует тому, что изображение выглядит более реалистично. В данном случае текстура находится в слое над всеми остальными слоями и я использовал режим наложения слоя Multiply (Умножение) с небольшой прозрачностью.

Как сделать стилизованное фото

sexy woman / © stryjek

Фильтр смягчает изображение путем добавления диагональных мазков, причем светлые области становятся ярче и теряют детализацию. В этом фильтре используются цвета снимка для имитации растушевки. При этом можно задавать длину штриха, что естественно влияет на детали и резкость/размытие. Можно менять яркость разных зон снимка и интенсивность яркости.

Как сделать стилизованное фото

Так вы добьетесь, что штрихи будут не слишком равномерными. Конечно здесь важно правильно выбрать мотив. Фантастические коллажи здесь подходят больше, чем, например, портрет.

Как сделать стилизованное фото

The Temple / © Zuboff

Как сделать стилизованное фото
Green forest with fog / © andreiuc88

То есть с помощью этого фильтра можно добиться эффекта иллюстрации. Для определения содержания изображения достаточно даже простого контура. Здесь тоже очень важно выбрать правильное изображение. Здесь тоже имеет смысл использовать разные режимы смешивания слоев, например, Overlay (Наложение).

Как сделать стилизованное фото

Green forest with fog / © andreiuc88

Этот фильтр имитирует нанесение краски на еще свежую штукатурку, по крайней мере в теории. Выбор мотива очень важен и здесь.

Как сделать стилизованное фото

Как сделать стилизованное фото

Saint Mary Magdalene / © zatletic

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

Как сделать стилизованное фото

Как сделать стилизованное фото

Mediterrane Impression / © pk200258

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

Как сделать стилизованное фото

Настройки зависят от мотива. После настроек фильтра стоит на некоторых частях снимка с помощью маски удалить (или частично удалить) действие фильтра.

Как сделать стилизованное фото

На контрастных снимках дает достаточно интересный эффект. Шкала Grain (Зерно) управляет размером зерна, Highlight Area (Освещение) — процентом осветленных участков, a Intensity (Интенсивность) — экспозицией (освещенностью).

Как сделать стилизованное фото

Как сделать стилизованное фото

Fine art image / © konradbak

Как сделать стилизованное фото

Fashion Couple Dramatic / © Gabi Moisa

Как сделать стилизованное фото

Как сделать стилизованное фото

Grand Cru Rotwein / © Wilm Ihlenfeld

Как сделать стилизованное фото

Как сделать стилизованное фото
dutch mills 3 / © dzain

Превращает изображение в монохромный негатив и добавляет светлую обводку, «свечение», по контуру объектов.

Как сделать стилизованное фото

Придает снимку вид картины, выполненной маслом.

Как сделать стилизованное фото

Как сделать стилизованное фотоrotes Italien / © Grischa Georgiew

Как сделать стилизованное фотоLüneburger Heide / © Thorsten Schier

Как сделать стилизованное фото
Superhero businessman / © Nomad_Soul

О других фильтрах и их применении мы расскажем в следующей статье.

Источник

Стилизация изображений с помощью нейронных сетей: никакой мистики, просто матан

Приветствую тебя, Хабр! Наверняка вы заметили, что тема стилизации фотографий под различные художественные стили активно обсуждается в этих ваших интернетах. Читая все эти популярные статьи, вы можете подумать, что под капотом этих приложений творится магия, и нейронная сеть действительно фантазирует и перерисовывает изображение с нуля. Так уж получилось, что наша команда столкнулась с подобной задачей: в рамках внутрикорпоративного хакатона мы сделали стилизацию видео, т.к. приложение для фоточек уже было. В этом посте мы с вами разберемся, как это сеть «перерисовывает» изображения, и разберем статьи, благодаря которым это стало возможно. Рекомендую ознакомиться с прошлым постом перед прочтением этого материала и вообще с основами сверточных нейронных сетей. Вас ждет немного формул, немного кода (примеры я буду приводить на Theano и Lasagne), а также много картинок. Этот пост построен в хронологическом порядке появления статей и, соответственно, самих идей. Иногда я буду его разбавлять нашим недавним опытом. Вот вам мальчик из ада для привлечения внимания.

Visualizing and Understanding Convolutional Networks (28 Nov 2013)

Первым делом стоит упомянуть статью, в которой авторы смогли показать, что нейронная сеть — это не черный ящик, а вполне даже интерпретируемая вещь (кстати, сегодня это можно сказать не только о сверточных сетях для компьютерного зрения). Авторы решили научиться интерпретировать активации нейронов скрытых слоев, для этого они использовали деконволюционную нейронную сеть (deconvnet), предложенную несколькими годами ранее (кстати, теми же Зейлером и Фергусом, которые являются авторами и этой публикации). Деконволюционная сеть — это на самом деле такая же сеть со свертками и пулингами, но примененными в обратном порядке. В оригинальной работе по deconvnet сеть использовалась в режиме обучения без учителя для генерации изображений. В этот раз авторы применили ее просто для обратного прохода от признаков, полученных после прямого прохода по сети, до исходного изображения. В итоге получается изображение, которое можно интерпретировать как сигнал, вызвавший данную активацию на нейронах. Естественно, возникает вопрос: а как сделать обратный проход через свертку и нелинейность? А тем более через max-пулинг, это уж точно не инвертируемая операция. Рассмотрим все три компонента.

Обратный ReLu

В сверточных сетях в качестве функции активации часто используется ReLu(x) = max(0, x), который делает все активации на слое не отрицательными. Соответственно, при обратном проходе через нелинейность необходимо получить также не отрицательные результаты. Для этого авторы предлагают использовать этот же ReLu. С точки зрения архитектуры Theano необходимо переопределить функцию градиента операции (бесконечно ценный ноутбук находится в рецептах лазаньи, оттуда вы почерпнете детали того, что за класс ModifiedBackprop).

Как сделать стилизованное фото

Обратная свертка

Тут немного сложнее, но все логично: достаточно применить транспонированную версию того же ядра свертки, но к выходам из обратного ReLu вместо предыдущего слоя, используемого при прямом проходе. Но боюсь, что на словах это не так очевидно, посмотрим на визуализацию этой процедуры (тут вы найдете еще больше визуализаций сверток).

Свертка при stride=1Обратная версия
Как сделать стилизованное фотоКак сделать стилизованное фото
Свертка при stride=2Обратная версия
Как сделать стилизованное фотоКак сделать стилизованное фото

Обратный пулинг

Вот эта операция (в отличие от предыдущих) вообще говоря не инвертируема. Но нам все же хотелось бы при обратном проходе каким-то способом пройти через максимум. Для этого авторы предлагают использовать карту того, где был максимум при прямом проходе (max location switches). При обратном проходе входной сигнал в анпулинг преобразуется так, чтобы приближенно сохранить структуру исходного сигнала, тут действительно проще увидеть, чем описать.

Как сделать стилизованное фото

Результат

Алгоритм визуализации крайне прост:

Каждый серый квадрат на изображении ниже соответствует визуализации фильтра (который применяется для свертки) или весов одного нейрона, а каждая цветная картинка — это та часть оригинального изображения, которая активирует соответствующий нейрон. Для наглядности нейроны внутри одного слоя сгруппированы в тематические группы. В общем внезапно оказалось, что нейронная сеть выучивает ровно то, о чем писали Хьюбел и Вейзел в работе про структуру зрительной системы, за что и были удостоены Нобелевской премии в 1981 году. Благодаря этой статье мы получили наглядное представление того, что выучивает сверточная нейронная сеть на каждом слое. Именно эти знания позволят позже манипулировать содержимым генерируемого изображения, но до этого еще далеко, следующие несколько лет ушли на совершенствование способов «трепанации» нейронных сетей. Помимо этого, авторы статьи предложили способ анализа, как лучше выстраивать архитектуру сверточной нейронной сети для достижения лучших результатов (правда, ImageNet 2013 они так и не выиграли, но попали в топ; UPD: таки оказывается выиграли, Clarifai это они и есть).

Как сделать стилизованное фото

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

Как сделать стилизованное фото

Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps (19 Apr 2014)

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

Class Model Visualisation

Итак, представьте, что у нас есть обученная нейронная сеть для решения задачи классификации на какое-то количество классов. Обозначим за Как сделать стилизованное фотозначение активации выходного нейрона, который соответствует классу c. Тогда следующая задача оптимизации дает нам ровно то изображение, которое максимизирует выбранный класс:

Как сделать стилизованное фото

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

Вы наверняка видели в интернетах странные изображения с мордами собак — DeepDream. В оригинальной статье авторы используют следующий процесс для генерации изображений, которые максимизируют выбранный класс:

Получаются такие вот изображения:

Как сделать стилизованное фото

А если инициализировать первое изображение реальной фотографией и запустить этот же процесс? Но на каждой итерации будем выбирать случайный класс, обнулять остальные и вычислять значение производной, то получится вот такой вот deep dream.

Как сделать стилизованное фото

Почему же столько морд собак и глаз? Все просто: в имаджнете из 1000 классов почти 200 собак, у них есть глаза. А также много классов, где просто есть люди.

Class Saliency Extraction

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

Как сделать стилизованное фото

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

Striving for Simplicity: The All Convolutional Net (13 Apr 2015)

Данная статья вообще говоря не о визуализации, а о том, что замена пулинга сверткой с большим страйдом не приводит к потере качества. Но как побочный продукт своих изысканий авторы предложили новый способ визуализации фич, который они применили для более точного анализа того, что выучивает модель. Их идея в следующем: если мы просто берем производную, то при деконволюции обратно не проходят те фичи, которые были на входном изображении меньше нуля (применение ReLu для входного изображения). И это приводит к тому, что на пропагируемом обратно изображении появляются отрицательные значения. С другой стороны, если использовать deconvnet, то от производной ReLu берется еще один ReLu — это позволяет не пропускать обратно отрицательные значения, но как вы видели результат получается «так себе». Но что если объединить эти два метода?

Как сделать стилизованное фото

Тогда получится вполне чистое и интерпретируемое изображение.

Как сделать стилизованное фото

Go deeper

Теперь давайте задумаемся, а что нам это дает? Позволю себе напомнить, что каждый сверточный слой — это функция, которая получает на вход трехмерный тензор и на выход тоже выдает трехмерный тензор, быть может, другой размерности d x w x h; depth — это количество нейронов в слое, каждый из них генерит плашку (feature map) размером wigth x height.

Давайте попробуем провести следующий эксперимент на сети VGG-19:

Да вы почти ничего не видите, т.к. рецептивная область очень маленькая, это вторая свертка 3х3, соответственно общая область 5х5. Но увеличив, мы увидим, что фича — это просто детектор градиента.

Как сделать стилизованное фото

Как сделать стилизованное фото

Как сделать стилизованное фото

Как сделать стилизованное фото

Как сделать стилизованное фото

А теперь представим, что вместо максимума по плашке мы будем брать производную значения суммы всех элементов плашки по входному изображению. Тогда очевидно рецептивная область группы нейронов будет покрывать все входное изображение. Для ранних слоев мы увидим яркие карты, из которых мы делаем вывод, что это детекторы цветов, затем градиентов, затем границ и так далее в сторону усложнения паттернов. Чем глубже слой, тем более тусклое изображение получается. Это объясняется тем, что у более глубоких слоев, более сложный паттерн, который они детектируют, а сложный паттерн появляется реже, чем простой, потому и карта активаций тускнеет. Первый способ подходит для понимания слоев со сложными паттернами, а второй — как раз для простых.

Как сделать стилизованное фото

Как сделать стилизованное фото

Как сделать стилизованное фото

Более полную базу активаций вы можете скачать для нескольких изображений тут и тут.

A Neural Algorithm of Artistic Style (2 Sep 2015)

Итак, прошло пару лет с момента первой удачной трепанации нейронной сети. У нас (в смысле — у человечества) есть на руках мощный инструмент, который позволяет понять, что выучивает нейронная сеть, а также убрать то, что нам не очень хотелось бы что бы она выучивала. Авторы данной статьи разрабатывают метод, который позволяет сделать так, чтобы одно изображение генерировало похожую карту активаций на какое то целевое изображение, а возможно даже и не на одно — это и лежит в основе стилизации. На вход мы подаем белый шум, и похожим итеративным процессом как в deep dream мы приводим это изображение к такому, у которого карты признаков похожи на целевое изображение.

Content Loss

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

Как сделать стилизованное фото

Обозначим выход i-ого слоя от входной как Как сделать стилизованное фото. Тогда если мы будем минимизировать взвешенную сумму невязок между входным изображением Как сделать стилизованное фотои некоторым изображением, к которому мы стремимся c, то получится ровно то, что нужно. Наверное.

Как сделать стилизованное фото

Для экспериментов с этой статьей можно использовать этот волшебный ноутбук, там происходят вычисления (как на ГПУ, так и на ЦПУ). ГПУ используется для вычисления фич нейросети и значения функции стоимости. Theano выдает функцию, которая умеет вычислять градиент целевой функции eval_grad по входному изображению x. Затем это все подается в lbfgs и запускается итеративный процесс.

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

Как сделать стилизованное фото

Как сделать стилизованное фото

Легко заметить две особенности полученного изображения:

Добавление ранних слоев сразу исправляет ситуацию с цветами.

Как сделать стилизованное фото

Надеюсь, к этому моменту вы ощутили, что вы можете управлять тем, что будет перерисовано на изображение из белого шума.

Style Loss

И вот мы добрались до самого интересного: а как же нам передать стиль? Что такое стиль? Очевидно, что стиль — это не то что мы оптимизировали в Content Loss’е, ведь там содержится много информации о пространственных положениях фичей. Так что первое, что нужно сделать, — это каким-либо способом убрать эту информацию из представлений, полученных на каждом слое.

Автор предлагает следующий способ. Возьмем тензор на выходе из некоторого слоя, развернем по пространственным координатам и посчитаем матрицу ковариации между плашками. Обозначим это преобразование как G. Что мы на самом деле сделали? Можно сказать, что мы посчитали, как часто признаки внутри плашки встречаются попарно, или, другими словами, мы аппроксимировали распределение признаков в плашках многомерным нормальным распределением.

Как сделать стилизованное фото

Тогда Style Loss вводится следующим образом, где s — это некоторое изображение со стилем:

Как сделать стилизованное фото

Попробуем для Винсента? Получим в принципе что-то ожидаемое — шум в стиле Ван Гога, информация о пространственном расположении фичей полностью потеряна.

Как сделать стилизованное фото
Как сделать стилизованное фото

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

Как сделать стилизованное фото

Наверняка вы задались вопросом о том, а почему мы вычисляем именно матрицу ковариации, а не что то другое? Ведь существует много способов того, как агрегировать признаки так, чтобы потерялись пространственные координаты. Это действительно вопрос открытый, и если взять что-то очень простое, то результат изменится не драматически. Давайте проверим это, будем вычислять не матрицу ковариации, а просто среднее значение каждой плашки.

Как сделать стилизованное фото

Как сделать стилизованное фото

Комбинированный лосс

Естественно, возникает желание смешать эти две функции стоимости. Тогда мы из белого шума будем генерировать такое изображение, что в нем будут сохранены признаки из content-изображения (у которых есть привязка к пространственным координатам), а также будут присутствовать «стилевые» признаки, не привязанные к пространственным координатам, т.е. мы будем надеяться, что детали изображения контента останутся нетронутыми со своих мест, но будут перерисованы с нужным стилем.

Как сделать стилизованное фото

На самом деле присутствует еще и регуляризатор, но мы его опустим для простоты. Остается ответить на следующий вопрос: а какие слои (веса) использовать при оптимизации? И боюсь, что ответа на этот вопрос у меня нет, да и у авторов статьи тоже. У них есть предложение использовать следующие, но это совсем не значит, что другая комбинация будет работать хуже, слишком большое пространство поиска. Единственное правило, которое следует из понимания модели: нет смысла брать соседние слои, т.к. у них признаки будут отличаться друг от друга не сильно, потому в стиль добавляется по слою из каждой группы conv*_1.

Итоговую модель можно представить в следующем виде.

Как сделать стилизованное фото

Как сделать стилизованное фото
Как сделать стилизованное фото

Попытка контролировать процесс

Давайте вспомним предыдущие части, уже как два года до текущей статьи, другие ученые исследовали, что же действительно выучивает нейронная сеть. Вооружившись всеми этими статьями, можно нагенерить визуализации фич различных стилей, различных изображений, различных разрешений и размеров, и попытаться понять, какие слои с каким весом брать. Но даже перевзвешивание слоев не дает полного контроля над происходящим. Проблема здесь более концептуальная: мы ведь оптимизируем не ту функцию! Как так, спросите вы? Ответ простой: эта функция минимизирует невязку… ну вы поняли. Но что мы действительно хотим — это то, чтобы изображение нам понравилось. Выпуклая комбинация content и style loss функций не является мерилом того, что наш разум считает красивым. Было замечено, что если продолжать стилизацию слишком долго, то функция стоимости естественно падает ниже и ниже, а вот эстетическая красота результата резко падает.

Как сделать стилизованное фото

Ну да ладно, есть еще одна проблема. Допустим, мы нашли слой, который извлекает нужные нам признаки. Допустим, какие-то текстурки треугольные. Но этот слой еще содержит множество других признаков, например кружочков, которые мы очень не хотим видеть на результирующем изображении. Вообще говоря, если бы можно было нанять миллион китайцев, то можно было бы визуализировать все фичи стилевого изображения, и полным перебором просто отметить те, которые нам нужны, и только их включить в функцию стоимости. Но по понятным причинам это не так просто. Но что если мы просто удалим все кружочки, которые мы не хотим видеть на результате, из стилевого изображения? Тогда просто не сработают активации соответствующих нейронов, которые реагируют на кружочки. И, естественно, тогда в результирующей картинке этого не появится. То же самое и с цветами. Представьте яркое изображение с большим количеством цветов. Распределение цветов будет очень размазанным по всему пространству, таким же будет и распределение у результирующего изображения, но вот в процессе оптимизации наверняка потеряются те пики, которые были на оригинале. Оказалось, что простое уменьшение разрядности цветовой палитры решает эту проблему. Плотность распределения большинства цветов будет около нуля, и будут большие пики на нескольких участках. Таким образом, манипулируя оригиналом в фотошопе, мы манипулируем признаками, которые извлекаются из изображения. Человеку проще выразить свои желания визуально, нежели пытаться сформулировать их на языке математики. Пока. В итоге, дизайнеры и менеджеры, вооружившись фотошопом и скриптами для визуализации признаков, добились раза в три быстрее результата лучше, чем тот, что сделали математики с программистами.

ОригиналДеградированная версия
Как сделать стилизованное фотоКак сделать стилизованное фото

Как сделать стилизованное фото

Как сделать стилизованное фото
Как сделать стилизованное фото
Как сделать стилизованное фото

Texture Networks: Feed-forward Synthesis of Textures and Stylized Images (10 Mar 2016)

Вроде бы на этом можно было остановиться, если не один нюанс. Вышеописанный алгоритм стилизации работает очень долго. Если взять реализацию, где lbfgs запускается на ЦПУ, то процесс занимает минут пять. Если переписать так, чтобы и оптимизация шла в ГПУ, то процесс будет занимать 10-15 секунд. Это никуда не годится. Возможно авторы этой и следующей статьи думали примерно так же. Обе публикации вышли независимо с разницей в 17 дней, спустя почти год после предыдущей статьи. Авторы текущей статьи, как и авторы предыдущей, занимались генерацией текстур (если вы просто обнулите Style Loss примерно это и получится). Они предложили оптимизировать не изображение, полученное из белого шума, а некоторую нейронную сеть, которая генерирует стилизованное изображение.

Как сделать стилизованное фото

Теперь если процесс стилизации не включает в себя никакой оптимизации, требуется сделать только прямой проход. А оптимизация требуется только один раз для тренировки сети-генератора. В этой статье используется иерархический генератор, где каждый следующий z размером больше предыдущего и семплируется из шума в случае генерации текстуры, и из некоторой базы изображений для тренировки стилизатора. Критично использовать что-то отличное от тренировочной части имаджнета, т.к. фичи внутри Loss-сети вычисляются сетью, обученной как раз на тренировочной части.

Как сделать стилизованное фото

Perceptual Losses for Real-Time Style Transfer and Super-Resolution (27 Mar 2016)

Как видно из названия, авторы, которые опоздали всего на 17 дней с идеей генерирующей сети, занимались увеличением разрешения изображений. Они судя по всему были вдохновлены успехами residual learning на последнем имаджнете.

Как сделать стилизованное фото

Соответственно residual block и conv block.

Как сделать стилизованное фото

Таким образом, теперь у нас на руках помимо контроля над стилизацией есть еще и быстрый генератор (благодаря этим двум статьям время генерации одного изображения измеряется десятками мс).

Окончание

Информацию из рассмотренных статей и код авторов мы использовали как начальную точку для создания еще одного приложения для стилизации первого приложения для стилизации видео:

Генерит что-то такое:

Ну и остальные полезные ссылки:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *