призма приложение для фото

Prisma – оригинальное приложение для обработки фото

Самая популярная категория мобильных приложений на сегодняшний день – это различные простые фоторедакторы. Простота – главный критерий популярности в этом сегменте. Пользователей подкупает минимализм и скорость работы с программой. Запустить утилиту, сделать селфи и выбрать пару фильтров – на все это уйдет не больше минуту. Именно о такой программе и пойдет речь в данной статье – Prisma. Новая российская графическая программа Prisma art – это редактор для обработки фотографий (photo editor), который был разработан бывшими сотрудниками Яндекса и Mail.ru в начале июня. Меньше чем за месяц Prisma стал самым скачиваемым софтом за летний период 2016 года.призма приложение для фото. pris18 1. призма приложение для фото фото. призма приложение для фото-pris18 1. картинка призма приложение для фото. картинка pris18 1.

Фотографии до и после обработки:

призма приложение для фото. priroda. призма приложение для фото фото. призма приложение для фото-priroda. картинка призма приложение для фото. картинка priroda.

Что из себя представляет Prisma?

Новое мобильное приложение Prisma Art – это графический редактор для обработки фото с использованием нейронных сетей. Кроме того, модная программа прибегает к искусственному интеллекту художника в процессе обработки. Prizma можно назвать самой оригинальной и интересной разработкой последнего года. Утилита сканирует выбранную вами фотографию и анализирует, в каком стиле можно использовать фильтр. По словам организаторов, они создали уникальную технологию, которая перерисовывает фотографию с нуля, а не просто накладывает определенный фильтр. Поэтому две фотографии с одинаковой обработкой найти практически невозможно.призма приложение для фото. prisma3e. призма приложение для фото фото. призма приложение для фото-prisma3e. картинка призма приложение для фото. картинка prisma3e.

• Быстрота. Обработать фото в русском приложении Призма можно всего за несколько секунд, нужно только найти его оригинал. Это ставит программу в выгодное положение перед конкурентами, обработка в которых может занять вплоть до нескольких минут;
• Оригинальность. Самое популярное приложение – это приложение с оригинальной идей, как Prizma art (напоминаем, что полное название Prisma art filters and photo effects). На сегодняшний день подобных решений в области редактирования фотографий; Не так давно появилась возможность обработки видео prisma для IOS.
• Особенности процесса обработки. Для начала смартфон отправляет фото на анализ содержимого в облачный сервис Apple. После этого фото «перерисовывается» и присылается обратно на ваше мобильное устройство. Весь это процесс занимает не больше минуты. После чего вы можете использовать фото для своих целей – выкладывать в социальные сети и делиться ими со своими друзьями.призма приложение для фото. Bezymyannyjj. призма приложение для фото фото. призма приложение для фото-Bezymyannyjj. картинка призма приложение для фото. картинка Bezymyannyjj.

Несмотря на все удобства, программа-фоторедактор Призма имеет некоторые недостатки:
• Необходимость постоянного подключения к Интернету;
• На данный момент доступна Prisma для iPhone и Android. Ситуация с персональными компьютерами и смартфонами на Windows Phone пока не решена.
Абсолютно все подробности и историю создания приложения для обработки фото Prisma вы найдете в соседних разделах нашего сайта.

Так в чём же секрет? Смотри видео:

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

Источник

Prisma: Photo Editor, Filters 12+

Funny Art Effects Blend Color

Prisma labs, inc.

Screenshots

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

призма приложение для фото. 1x1 42817eea7ade52607a760cbee00d1495. призма приложение для фото фото. призма приложение для фото-1x1 42817eea7ade52607a760cbee00d1495. картинка призма приложение для фото. картинка 1x1 42817eea7ade52607a760cbee00d1495.

Description

You don’t need to be an experienced photo editor to turn photos into captivating digital art. Why? Because there’s Prisma for it! With the Prisma photo editor, it’s easy to unleash the artist within and go from average photo to mesmerizing edit in seconds!

Recognized as the App of the Year in 2016 Prisma has a constantly growing community of over 120 million users all over the world. Prisma provides a lot of features both for general and selfie photo editing. Download Prisma and let AI technology convert your photos into an artistic piece!

EXTENSIVE LIBRARY OF STYLES

More than 500 various styles are waiting for you to be tried out in Prisma’s library. New styles are going live on a daily basis for you to spruce up your creativity. You can also try Portrait styles that are specially designed for making captivating selfies.

•Among the best selection of Prisma’s tools to customize your photo, it’s worth mentioning the Portrait Segmentation feature. The essential tool for selfies is set to not only add the style to the whole image but also be applied either to the person or the background separately.

•Another way to enhance your photos without putting too much effort into the editing process is using vivid frames that will complement absolutely any of your photos.

•And the icing on the cake — Prisma’s feature for background editing. With this tool, you can replace the background of any selfie you want! You can select the background from the colorful templates, or choose any other from your phone’s gallery.

ALL THE BENEFITS IN ONE PLAN

A Prisma Premium subscription gives access to any style without an exception and allows you to save photos in HD quality!

Before purchasing a subscription, you can try Prisma for 3 days for FREE. You can then choose from several subscription plans that have the same set of features. The only difference is the time interval for each plan.

———————————————
Prisma Premium Subscription:

Payment will be charged to iTunes Account at confirmation of purchase. Subscription automatically renews unless auto-renew is turned off at least 24-hours before the end of the current period. The account will be charged for renewal within 24-hours prior to the end of the current period, and identify the cost of the renewal. Subscriptions may be managed by the user and auto-renewal may be turned off by going to the user’s Account Settings after purchase. Any unused portion of a free trial period, if offered, will be forfeited when the user purchases a subscription to that publication, where applicable.

Источник

Киберпанк, который мы заслужили, или как Prisma превращает ваши селфи в произведение искусства

призма приложение для фото. ce8600cc27965ce38149db39d73085a6. призма приложение для фото фото. призма приложение для фото-ce8600cc27965ce38149db39d73085a6. картинка призма приложение для фото. картинка ce8600cc27965ce38149db39d73085a6.

Привет, Хабр! Я Миша, R&D инженер в Prisma Labs. Наш отдел занимается разработкой новых фичей для мобильных приложений Prisma и Lensa. Prisma это AI-based фоторедактор, который по нажатию одной кнопки всего за пару секунд переносит художественный стиль с картин на ваши фотографии. Недавно мы решили расширить его функционал и дать пользователям возможность переносить стиль с портретов, нарисованных художниками, на свои селфи. В этом посте я расскажу про особенности задачи портретного Style Transfer, о существующих методах, которые мы попробовали, и о том, как адаптировали их под смартфоны.

Кто такой этот ваш Style Transfer?!

Чтобы мы с вами были на одной волне, я начну свой рассказ с небольшого описания задачи Style Transfer (ST) и обзора наиболее популярных подходов к её решению.

В общем случае, задача ST формулируется так: у нас есть фотография C и стилевое изображение S (например, это может быть картина маслом, диджитал арт и др.); мы хотим получить изображение, в котором “контент” из C (под контентом подразумевается всё что изображено на фотографии) будет нарисован в том же “стиле”, что и S (более строгое определение контента и стиля изображений можно найти тут).

Исследователи занимаются этой задачей уже давно, но широкую известность она получила в 2015 году, когда вышла статья Л. Гатиса, и др., в которой предложили ST на основе нейронных сетей (они на тот момент были на вершине своего хайпа). Вот так выглядит пайплайн метода:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Пайплайн гатисовского ST [1]

Верхнеуровнево этот метод можно описать так: значения пикселей картинки с шумом итеративно изменяются так, чтобы её дескрипторы (фичи) после каждой итерации приближались к дескрипторам стилевой и контентной картинок в терминах L2 нормы. На современных GPU весь процесс обычно занимает несколько минут.

Если вас не интересуют детали этого метода или вы уже знакомы с ним, можете смело читать дальше, остальным же – велкам под кат

До запуска итерационного процесса стилизации извлекаются дескрипторы контентного p и стилевого a изображений (для данной пары изображений это делается один раз). В качестве дескрипторов используются фичемапы (aka карты признаков) с разных слоёв свёрточной нейросети VGG-19, предобученной на датасете ImageNet.

Фичемапа на L-ом слое сети представляет собой тензор размерности призма приложение для фото. 0b68e59fd60172b65f4995ec49442dcc. призма приложение для фото фото. призма приложение для фото-0b68e59fd60172b65f4995ec49442dcc. картинка призма приложение для фото. картинка 0b68e59fd60172b65f4995ec49442dcc., где призма приложение для фото. a7bf648c64228fadab73f59030942181. призма приложение для фото фото. призма приложение для фото-a7bf648c64228fadab73f59030942181. картинка призма приложение для фото. картинка a7bf648c64228fadab73f59030942181.,призма приложение для фото. 12aa79b6d953281cb38e45106dab2810. призма приложение для фото фото. призма приложение для фото-12aa79b6d953281cb38e45106dab2810. картинка призма приложение для фото. картинка 12aa79b6d953281cb38e45106dab2810.,призма приложение для фото. 34a573673f28c1c54bd98f15776b35bf. призма приложение для фото фото. призма приложение для фото-34a573673f28c1c54bd98f15776b35bf. картинка призма приложение для фото. картинка 34a573673f28c1c54bd98f15776b35bf.– количество фичемап, их высота и ширина соответственно. Фичемапы изображения сами по себе являются хорошими дескрипторами контента на изображении, но при этом они не подходят в качестве дескрипторов стиля. Поэтому фичемапы стилевого изображения сначала преобразуются в матрицы размерности призма приложение для фото. a3d14adccadcb215d4bf7dd1c01a46b2. призма приложение для фото фото. призма приложение для фото-a3d14adccadcb215d4bf7dd1c01a46b2. картинка призма приложение для фото. картинка a3d14adccadcb215d4bf7dd1c01a46b2., а затем для каждой такой матрицы рассчитывается матрица Грама призма приложение для фото. d96ec98f8e719f95d3546743fe9a2c8d. призма приложение для фото фото. призма приложение для фото-d96ec98f8e719f95d3546743fe9a2c8d. картинка призма приложение для фото. картинка d96ec98f8e719f95d3546743fe9a2c8d.– матрица кросс-корреляций фичемап в слое L. Эти матрицы каким-то магическим образом содержат в себе всю необходимую информацию о стиле (на самом деле, существует объяснение, почему матрица Грама является хорошим дескриптором стиля).

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

призма приложение для фото. d07974872446b5797bc80703f909e658. призма приложение для фото фото. призма приложение для фото-d07974872446b5797bc80703f909e658. картинка призма приложение для фото. картинка d07974872446b5797bc80703f909e658., призма приложение для фото. b24eb75f4c31009412039b10c04d1be8. призма приложение для фото фото. призма приложение для фото-b24eb75f4c31009412039b10c04d1be8. картинка призма приложение для фото. картинка b24eb75f4c31009412039b10c04d1be8.

где призма приложение для фото. 13ffe1d094099436d9db90d1a38c1445. призма приложение для фото фото. призма приложение для фото-13ffe1d094099436d9db90d1a38c1445. картинка призма приложение для фото. картинка 13ffe1d094099436d9db90d1a38c1445.ипризма приложение для фото. d8e948e223c9e1228d7239c0f5301a9d. призма приложение для фото фото. призма приложение для фото-d8e948e223c9e1228d7239c0f5301a9d. картинка призма приложение для фото. картинка d8e948e223c9e1228d7239c0f5301a9d.– дескрипторы контента и стиля, извлечённые из x с k-ого слоя сети, призма приложение для фото. 66cad6d3340373bb5e0ca2bdaf32146a. призма приложение для фото фото. призма приложение для фото-66cad6d3340373bb5e0ca2bdaf32146a. картинка призма приложение для фото. картинка 66cad6d3340373bb5e0ca2bdaf32146a.ипризма приложение для фото. 6401f202270eee350f841ee6de3ca4d9. призма приложение для фото фото. призма приложение для фото-6401f202270eee350f841ee6de3ca4d9. картинка призма приложение для фото. картинка 6401f202270eee350f841ee6de3ca4d9.– дескрипторы контента и стиля, извлечённые из p и a соответственно. Целевой функцией будет взвешенная сумма таких расстояний:

призма приложение для фото. 0f9c07aa08d9ae0c737385c917eb8ff1. призма приложение для фото фото. призма приложение для фото-0f9c07aa08d9ae0c737385c917eb8ff1. картинка призма приложение для фото. картинка 0f9c07aa08d9ae0c737385c917eb8ff1.

Методом обратного распространения ошибки (backpropagation) находим градиенты этой функции по значениям пикселей x, и “двигаем” значения х в направлении, противоположном найденному градиенту.

Повторяем эти шаги заданное количество итераций, или пока лосс не упадет ниже заданного значения. Силу наложения стиля можно регулировать, изменяя веса лоссов: хотим больше стиля – уменьшаем вес призма приложение для фото. 3da96a5edb0f37e1cbceabd645e937c7. призма приложение для фото фото. призма приложение для фото-3da96a5edb0f37e1cbceabd645e937c7. картинка призма приложение для фото. картинка 3da96a5edb0f37e1cbceabd645e937c7.или увеличиваем вес призма приложение для фото. e458d1e0c37b923ea16fc044d4f981fa. призма приложение для фото фото. призма приложение для фото-e458d1e0c37b923ea16fc044d4f981fa. картинка призма приложение для фото. картинка e458d1e0c37b923ea16fc044d4f981fa..

При удачном подборе контентного и стилевого изображений, а также весов лоссов, можно получить впечатляющие результаты:

призма приложение для фото. d1c2140a9c0a9d06b42feb921405227f. призма приложение для фото фото. призма приложение для фото-d1c2140a9c0a9d06b42feb921405227f. картинка призма приложение для фото. картинка d1c2140a9c0a9d06b42feb921405227f.Гатисовский Style Transfer в действии

Несмотря на это, гатисовский ST работает очень медленно – на GeForce GTX 1080 стилизация изображения в разрешении 1024х1024 занимает в среднем около минуты.

В 2016 году вышла работа Д. Джонсона и др., в которой предлагается первый real-time Style Transfer на нейросетях. Основная идея метода заключается в обучении под каждый стиль свёрточной нейронной сети с архитектурой вида энкодер-декодер с использованием функции потерь, предложенной Гатисом: призма приложение для фото. a7642d9ced319f2ffec258f21e9552aa. призма приложение для фото фото. призма приложение для фото-a7642d9ced319f2ffec258f21e9552aa. картинка призма приложение для фото. картинка a7642d9ced319f2ffec258f21e9552aa.

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Схема обучения нейросети для real-time Style Transfer [3]

Этот подход явно уступает гатисовскому ST в качестве, но по скорости заметно превосходит его (стилизация одного изображения занимает сотни миллисекунд), а значит, хорошо подходит для запуска на смартфонах. Именно этот метод и стал основой для нашего приложения Prisma.

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

[AdaIN] – предлагают метод для “arbitrary style transfer” – это когда одна нейросеть умеет делать style transfer с произвольным стилем в real-time;

[WCT] – это тоже разновидность arbitrary style transfer, отличительной особенностью которого является улучшенное качество стилизаций и возможность регулировать силу переноса стиля даже после обучения сети;

[D&R] – по аналогии с Laplacian Pyramid авторы предложили многоуровневую архитектуру, состоящую из Drafting блока, который осуществляет стилизацию в низком разрешении 128х128, и нескольких Refinement блоков, последовательно увеличивающих разрешение до 512х512. По качеству стилизаций и времени инференса есть существенный буст по сравнению с AdaIn и WCT;

[UltraST] – в этой статье авторы оптимизировали AdaIN и WCT с помощью Knowledge Distillation, что позволило делать arbitraty style transfer в разрешении 10240 х 4096 (!).

Зачем нужно придумывать что-то ещё для портретов?

В процессе написания портрета художник обычно использует различные типы мазков и композиции цветов для лица, глаз и волос. От портретного Style Transfer пользователь, скорее всего, ожидает такого же локального переноса: чтобы кожа/глаза/губы на лице были нарисованы так же, как соответствующие им части на стилевом портрете. Однако, методы, про которые я рассказал, в большинстве случаев выдают совсем не то, что мы ожидаем:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Ожидание vs. Реальность

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

Попытки установить такое соответствие по фичемапам нейросети (например, посчитав для каждой фичемапы 4D тензор корреляций) в большинстве случаев не приводят к желаемому эффекту. Одна из потенциальных причин кроется в том, что используемая нейросеть обучалась на задаче классификации, и поэтому она извлекает те признаки изображения, по которым его можно отнести к одному из классов. Кроме того, при обучении использовался датасет ImageNet, в котором нет ни человеческих лиц, ни тем более художественных портретов. Поэтому нет каких-либо гарантий, что извлекаемые нейросетью признаки будут содержать информацию о семантических частях лица, которая нам нужна для установления соответствия между контентным и стилевым лицами.

Может возникнуть резонный вопрос: а что будет, если мы обучим сетку для face segmentation/face recognition, возьмём её энкодер и заменим им VGG в гатисовском ST? На самом деле, этот вопрос открытый, я лично пока не видел ни одной работы, в которой это исследовали.

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

Кодируем информацию о стиле в фичемапах контентного изображения

В статье авторы предлагают модифицировать гатисовский метод для работы с портретами. Их пайплайн выглядит так:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Пайплайн описанного метода [6]

Алгоритм состоит из двух этапов – генерация (Stage A) и опциональный пост-процессинг стилизованного изображения (Stage B).

Отличие от гатисовского ST заключается в следующем. В предложенном пайплайне фичи контентного изображения преобразуются так, чтобы в них помимо информации о контентном изображении также содержалась информация о локальном распределении цвета и текстур в стилевой картинке. С таким подходом Content Loss форсит не только сохранение контента, но и локальный перенос стиля:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Локальный перенос стиля на пальцах: мы хотим, чтобы правая часть лица девушки была нарисована в светлых тонах, а левая – в темных, так же как на стилевом портрете [6] Более подробное описание метода

Формально преобразование фичей контентного изображения можно записать так:

призма приложение для фото. d803b2565396a90ab188d2f75e386cf5. призма приложение для фото фото. призма приложение для фото-d803b2565396a90ab188d2f75e386cf5. картинка призма приложение для фото. картинка d803b2565396a90ab188d2f75e386cf5.,

призма приложение для фото. accf587c076c38296fa37a393b23b836. призма приложение для фото фото. призма приложение для фото-accf587c076c38296fa37a393b23b836. картинка призма приложение для фото. картинка accf587c076c38296fa37a393b23b836.,

призма приложение для фото. 7de7a160034915af6d2638c0d41db38c. призма приложение для фото фото. призма приложение для фото-7de7a160034915af6d2638c0d41db38c. картинка призма приложение для фото. картинка 7de7a160034915af6d2638c0d41db38c.,

где призма приложение для фото. f24de28a26a39d2ea0535c77f9fd2b0c. призма приложение для фото фото. призма приложение для фото-f24de28a26a39d2ea0535c77f9fd2b0c. картинка призма приложение для фото. картинка f24de28a26a39d2ea0535c77f9fd2b0c., призма приложение для фото. 877b1471bbf8e065de28398adcc1419f. призма приложение для фото фото. призма приложение для фото-877b1471bbf8e065de28398adcc1419f. картинка призма приложение для фото. картинка 877b1471bbf8e065de28398adcc1419f.– фичемапы контентного и стилевого изображений на L-ом слое, призма приложение для фото. 7d2a59f0bf2f0998f2fad0beac9aca7a. призма приложение для фото фото. призма приложение для фото-7d2a59f0bf2f0998f2fad0beac9aca7a. картинка призма приложение для фото. картинка 7d2a59f0bf2f0998f2fad0beac9aca7a.– модифицированные фичемапы, призма приложение для фото. f4d81c800ba05e4a541e0479e34d5d89. призма приложение для фото фото. призма приложение для фото-f4d81c800ba05e4a541e0479e34d5d89. картинка призма приложение для фото. картинка f4d81c800ba05e4a541e0479e34d5d89.– “gain map”, который показывает, как соотносятся активации стилевой и контентной фичемап.

Пример визуализации исходных и преобразованных фичемап, а также gain maps:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.

В описанном выше преобразовании фичемап предполагается, что лица на контентном и стилевом изображениях выровнены. Реальные же фотографии могут отличаться от стилевой картинки ракурсом и углом поворота головы, поэтому до начала процесса стилизации стилевое и контентное изображения выравниваются – текстура лица на стилевом изображении “натягивается” на лицо c контентного изображения. Авторы предлагают делать выравнивание по 68 лендмаркам лица комбинацией методов Image Morphing и SIFT-Flow.

Инсайд про более простой и быстрый подход к выравниванию

В своей реализации мы использовали альтернативный, более быстрый подход:

Считаем векторы смещений между соответствующими лендмарками стилевого и контентного изображений;

Значения сдвигов для остальных точек сетки находим путём интерполяции, получаем flow field F, в котором F(x, y) – вектор, показывающий откуда взять пиксель (x, y) в стилевом изображении;

Делаем warping стилевого изображения по F.

Результат выравнивания выглядит немного крипово:

призма приложение для фото. 56794f911ae3d4301e38697ed428b80b. призма приложение для фото фото. призма приложение для фото-56794f911ae3d4301e38697ed428b80b. картинка призма приложение для фото. картинка 56794f911ae3d4301e38697ed428b80b.Результат выравнивания стилевого изображения по контентному

Вот так выглядят фотографии, стилизованные нашей реализацией этого метода:

призма приложение для фото. 256f8a7c6ce13eff06f8ec3ce0e397e9. призма приложение для фото фото. призма приложение для фото-256f8a7c6ce13eff06f8ec3ce0e397e9. картинка призма приложение для фото. картинка 256f8a7c6ce13eff06f8ec3ce0e397e9.Наши результаты

При сравнении полученных стилизаций с результатами гатисовского ST становится особенно заметно, что рассматриваемый метод более “осознанно” и натурально переносит стиль в области лица (на первом и третьем стилях это видно невооружённым глазом):

призма приложение для фото. b2192496372658863fbd25bcd32a121c. призма приложение для фото фото. призма приложение для фото-b2192496372658863fbd25bcd32a121c. картинка призма приложение для фото. картинка b2192496372658863fbd25bcd32a121c.Сравнение портретного ST (первая строка) с гатисовским ST (вторая строка) на одном контентном изображении

Теперь перейдем к недостаткам этого метода. Прежде всего, есть проблема с переносом высокочастотных стилевых деталей. Например, здесь алгоритм не смог перенести текстуру полотна:

призма приложение для фото. fb724134323d7d3bd02de160a4aaae30. призма приложение для фото фото. призма приложение для фото-fb724134323d7d3bd02de160a4aaae30. картинка призма приложение для фото. картинка fb724134323d7d3bd02de160a4aaae30.

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

На фотографиях с сильно повёрнутыми лицами алгоритм выравнивания работает плохо, отчего появляются нежелательные артефакты:

призма приложение для фото. cbe9972cbb173505ab724b8368f8eecd. призма приложение для фото фото. призма приложение для фото-cbe9972cbb173505ab724b8368f8eecd. картинка призма приложение для фото. картинка cbe9972cbb173505ab724b8368f8eecd.

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

призма приложение для фото. cbc821c9d37f209fd5a0110f76fc1b09. призма приложение для фото фото. призма приложение для фото-cbc821c9d37f209fd5a0110f76fc1b09. картинка призма приложение для фото. картинка cbc821c9d37f209fd5a0110f76fc1b09.

Если есть сильные отличия по размеру лица, причёске и другим атрибутам между лицами на контентном и стилевом изображениях, возникает ghosting артефакт (когда часть стилевого изображения попадает на результат):

призма приложение для фото. febc03ae4337364aac3524e5a4966381. призма приложение для фото фото. призма приложение для фото-febc03ae4337364aac3524e5a4966381. картинка призма приложение для фото. картинка febc03ae4337364aac3524e5a4966381.Пример ghosting артефакта – в данном случае плечо и волосы со стилевого портрета попали на задний фон стилизованного [6] Последнюю проблему авторы предлагают фиксить пост-процессингом (Stage B):

Генерируем фоновое изображение

Вычисляем маску маттинга фигуры человека на контентном изображении

По найденной маске вставляем стилизованное изображение на сгенерированный фон

В целом, это решает проблему, но в этом случае мы полностью теряем фон, что может не понравиться нашим пользователям.

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

Нейросети? Не, не слышали!

Наверняка у многих, кто дочитал до этих строк, сложилось впечатление, что придумать что-то лучше нейронок для задачи портретного ST нельзя. Поспешу вас в этом разубедить.

В 2001 году придумали метод Image Analogies, который с данной пары изображений “до/после применения фильтров” умеет переносить эффект наложенных фильтров (по аналогии с имеющимся примером “до/после” наложения фильтра) на любое другое изображение:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Визуализация концепта Image Analogies. A и A’ исходное изображение до и после наложения фильтра (в данном случае фильтр представляет собой эффект акварели), B – изображение, на которое будет перенесён эффект фильтра, B’ – результат переноса [7]

Image Analogies работает примерно так:

Строится NNF(A, B) (Nearest Neighbour Field) – маппинг призма приложение для фото. 59540b7f3cc7a5d648405ca7cd021410. призма приложение для фото фото. призма приложение для фото-59540b7f3cc7a5d648405ca7cd021410. картинка призма приложение для фото. картинка 59540b7f3cc7a5d648405ca7cd021410., который каждому пикселю q из B ставит в соответствие ближайший (в терминах некоторого функционала) пиксель p из A; так как между A и A’, B и B’ есть прямое соответствие, можно положить NNF(A’, B’) = NNF(A, B);

Для построения NNF нужно уметь сравнивать пиксели изображений A и B между собой. Для этого используются различные дескрипторы пикселей. В самом простом случае, дескриптором пикселя могут быть его RGB значения, но из-за своей “низкоуровневости” такой дескриптор малоинформативен и чаще всего его использование приводит к плохому NNF. Поэтому авторы предложили помимо RGB значений использовать результаты применения steerable фильтров к изображениям A и B. По извлеченным дескрипторам близость двух пикселей из A и B (а, следовательно, и из A’ и B’) оценивается как L2 норма разницы соответствующих дескрипторов. Чтобы ускорить поиск ближайшего соседа для каждого пикселя, можно использовать приближенные методы поиска ближайших соседей.

Более подробное описание алгоритма Image Analogies

На вход алгоритму даются дескрипторы двух изображений A и B, а также стилизованная версия первого изображения, A’. Дескрипторы представляют из себя трёхмерные тензоры размерности H x W x C, где H, W – высота и ширина изображения, а C – размерность дескриптора. Таким образом, любой пиксель с координатой u изображения I будет описываться вектором I'[u] размерности C, а патч радиуса r с центром в u – сконкатенированными дескрипторами соседей u в радиусе r.

Для каждого дескриптора обоих изображений вычисляется Гауссовская пирамида.

Стилизация начинается с самого высокого уровня Гауссовской пирамиды. На уровне L дескрипторами пикселя u выступают дескрипторы соответствующего патча размером 5х5, а также дескрипторы патча u размера 3х3 с предыдущего уровня L-1. Последующие шаги описаны для одного уровня.

Для каждого пикселя q в B’ ищется ближайший ему пиксель p в A’. В качестве меры близости патчей p и q используется следующий функционал:

призма приложение для фото. 7c04b75a6743b63aeb5811d95687d7b0. призма приложение для фото фото. призма приложение для фото-7c04b75a6743b63aeb5811d95687d7b0. картинка призма приложение для фото. картинка 7c04b75a6743b63aeb5811d95687d7b0.

где призма приложение для фото. 05c76133a2d2bbca3d1e1c9943982c2e. призма приложение для фото фото. призма приложение для фото-05c76133a2d2bbca3d1e1c9943982c2e. картинка призма приложение для фото. картинка 05c76133a2d2bbca3d1e1c9943982c2e.– составляющая, которая минимизируется на более согласованных патчах p и q (то есть когда у патчей близкие RGB значения), а призма приложение для фото. 4c0d0365e24917b4b693b6ad66672b4b. призма приложение для фото фото. призма приложение для фото-4c0d0365e24917b4b693b6ad66672b4b. картинка призма приложение для фото. картинка 4c0d0365e24917b4b693b6ad66672b4b.– составляющая, которая минимизируется на пикселях с похожими дескрипторами. Стоит отметить, что призма приложение для фото. 317945517bfa567f2284b125fd1127fe. призма приложение для фото фото. призма приложение для фото-317945517bfa567f2284b125fd1127fe. картинка призма приложение для фото. картинка 317945517bfa567f2284b125fd1127fe.на уровне L рассчитывается только по уже сгенерированным пикселям B’.

Таким образом, ближайший сосед пикселя q из B’, p* находится как:

призма приложение для фото. 088e15adb817f312a91f9f2324b7ace0. призма приложение для фото фото. призма приложение для фото-088e15adb817f312a91f9f2324b7ace0. картинка призма приложение для фото. картинка 088e15adb817f312a91f9f2324b7ace0.

Шаг 4 повторяется до тех пор, пока для всех пикселей в B’ не будут найдены соседи. В конце этого шага получаем NNF.

По полученному NNF восстанавливается B’.

Шаги 3-6 повторяются на следующем скейле.

Пример кода на Python :

В последующие годы появилось много работ, в которых предлагались различные варианты улучшения дескрипторов и методов построения NNF. Из них хотелось бы выделить работу StyLit, в которой авторы применяют Image Analogies для стилизации трёхмерных моделей. В качестве дескрипторов предлагается использовать RGB и LPE (Light Paths Expressions) тензоры. LPE описывают распространение света в данной 3D сцене и за счёт этого позволяют получить более реалистичную стилизацию, которая больше похожа на рисунок от руки художника.

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Вот так выглядит StyLit в терминах Image Analogies [8] Также в этой работе предложили улучшение алгоритма расчёта NNF, использовавшегося в Image Analogies

В Image Analogies используется жадный алгоритм, который плохо справляется со стилизацией высокоуровневых структур. Поэтому в StyLit предложили минимизировать призма приложение для фото. b7a080cbd31dba88af63cef8a4596eef. призма приложение для фото фото. призма приложение для фото-b7a080cbd31dba88af63cef8a4596eef. картинка призма приложение для фото. картинка b7a080cbd31dba88af63cef8a4596eef., делая несколько итераций EM алгоритма:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Псевдокод одной итерации EM алгоритма [8]

В первом цикле создается NNF для стилизованного изображения B’ с предыдущей итерации. Далее по полученному NNF рассчитываются значения пикселей стилевого изображения B’ путем усреднения значений соответствующих пикселей в соседних патчах.

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

В 2017 StyLit был адаптирован для задачи портретного ST и переименован в FaceStyle. В FaceStyle предложили использовать специфичные для лиц дескрипторы:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Дескрипторы FaceStyle [9]

Расскажу о них подробнее. Gseg (segmentation guidance) задает соответствие между семантическими участками лиц на контентном и стилевом изображениях. Иными словами, не даёт алгоритму стилизации копировать патчи с бровей стилевого лица и вставлять их на лоб контентного лица. Для получения маски лица и волос авторы используют аналитический маттинг со своими модификациями (подробности в статье). Маски бровей, глаз, носа, губ и рта рисуют по 68 лендмаркам лица. Дескриптор Gseg представляет из себя RGB картинку, в котором каждая семантическая часть лица закодирована своим цветом.

На первый взгляд может показаться, что одного Gseg может быть вполне достаточно, чтобы получить хорошую стилизацию, но это не так. Например, по Gseg нельзя отличить правую часть лица от левой, а иногда это может быть полезным. Для того чтобы локализовать перенос, авторы предлагают использовать Gpos (positional guidance) – для контентного изображения это по сути грубый NNF, построенный по лицевым лендмаркам, для стилевого – identity NNF (в каждом пикселе закодированы координаты этого пикселя). Для расчёта Gpos авторы используют метод Moving Least Squares Deformation, натравленный на лендмарки. Мы в своей реализации для получения этого дескриптора использовали подход к выравниванию лиц, описанный в предыдущей главе.

Ни Gseg, ни Gpos никак не форсят сохранение контента на стилизованной фотографии, поэтому нужен ещё один дескриптор – Gapp (appearence guidance). Gapp стиля – это просто стилевое изображение, преобразованное в grayscale. Сделать то же самое для контентного изображения нельзя, потому что, если на нем будет присутствовать тень/блик, это обязательно проявится в виде артефакта на стилизованном изображении. Поэтому авторы сначала выравнивают локальный контраст и интенсивность контентного и стилевого изображений, используя метод переноса стиля с одного портретного фото на другое – ST for Headshot Portraits, а уже затем используют полученное контентное изображение с выровненным контрастом в качестве дескриптора. Существует и более быстрый способ получения этого дескриптора:

посчитать первый уровень Laplacian Pyramid (LP) для контента и стиля;

выровнять гистограмму полученного LP контента по LP стиля;

полученные LP использовать в качестве Gapp.

Если визулизировать FaceStyle в концепции Image Analogies, получится что-то такое:

призма приложение для фото. 65ef24e655220a5239fd2333b39bdde8. призма приложение для фото фото. призма приложение для фото-65ef24e655220a5239fd2333b39bdde8. картинка призма приложение для фото. картинка 65ef24e655220a5239fd2333b39bdde8.Визуализация FaceStyle как разновидности метода Image Analogies. Здесь A и B – извлечённые дескрипторы (Gapp, Gseg, Gpos) со стилевого (source) и контентного (target) изображений

Стилизации, которые мы получили, этим методом, лишены недостатков предыдущего метода портретного ST и выглядят без преувеличения очень круто:

призма приложение для фото. 3023234471bc577595a3e1054a4f5c17. призма приложение для фото фото. призма приложение для фото-3023234471bc577595a3e1054a4f5c17. картинка призма приложение для фото. картинка 3023234471bc577595a3e1054a4f5c17.Результаты FaceStyle

призма приложение для фото. 5f24890a932e546c1d3ce809f6470475. призма приложение для фото фото. призма приложение для фото-5f24890a932e546c1d3ce809f6470475. картинка призма приложение для фото. картинка 5f24890a932e546c1d3ce809f6470475.Фейл кейсы FaceStyle

Также можно заметить, что FaceStyle не использует дескрипторы для чего-то кроме лица. Соответственно, всё, что находится вне маски лица, стилизуется не так, как мы ожидаем. Мы решили расширить дескриптор Gseg, путем добавления маски шеи и тела, при этом нам на сдачу добавилась маска бэкграунда. Но это не всегда даёт хорошие результаты (примеры в первых двух столбцах на картинке выше). Придумать тут что-то более умное довольно-таки трудно, хотя попытки предпринимались.

Ещё одна слабая сторона FaceStyle – это длительность стилизации. При условии, что все дескрипторы предпосчитаны, стилизация одного изображения в разрешении 1024х1024 у нас занимает около 25с на Intel(R) Xeon(R) CPU E5-2620. На смартфоне, соответственно, будет ещё дольше (помним, что нам нужно будет также считать дескрипторы).

Distillation is my profession

Все рассмотренные выше методы ST для портретов итеративные и далеки от real-time даже на современных десктопных CPU/GPU. Как же ускорить медленный итеративный алгоритм, который умеет генерировать пары source-stylized images хорошего качества? Правильно, дистиллировать его нейросетями!

Генерируем датасет пар изображений в выбранном стиле;

Учим на полученном датасете image-to-image сетку;

Сейчас этот подход довольно-таки популярный, особенно среди любителей StyleGAN (вот, например, статья с ECCV 2020). Есть даже работа, в которой авторы дистиллировали FaceStyle. Далее расскажу вкратце про основные идеи из неё.

В качестве генератора использовали нейросеть архитектуры энкодер-декодер из работы Real-time Style Transfer, модифицировав её следующим образом:

добавили skip connections с выходов слоёв энкодера к соответствующим слоям декодера;

увеличили количество residual блоков;

добавили дополнительный свёрточный слой на выходе декодера.

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Архитектура генератора для дистилляции FaceStyle (слева – исходная архитектура, справа – после модификаций) [12]

В качестве лосса использовали взвешенную сумму:

adversarial лосса на основе PatchGAN

попиксельного L1 лосса между выходом сети и ground truth

На Nvidia RTX 2080 Ti такой генератор работает под 15 FPS на изображениях 512х512, что вполне можно считать real-time. Помимо прироста в скорости, на сдачу сетка ещё и бустанула качество стилизаций на сложных кейсах – генератор неплохо справляется там, где косячил FaceStyle:

призма приложение для фото. c26df2fd1a552f044ee28537a5df4397. призма приложение для фото фото. призма приложение для фото-c26df2fd1a552f044ee28537a5df4397. картинка призма приложение для фото. картинка c26df2fd1a552f044ee28537a5df4397.Примеры кейсов, на которых дистилляция фиксит проблемы FaceStyle [12]

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

На простых кейсах стилизации FaceStyle выглядят более чётко по сравнению с результатами дистилляции – в первом случае стилизованное изображение “собирается” из патчей стилевого, что позволяет сохранить все художественные детали; нейросеть же – параметрическая модель, которая ввиду ограниченного количества параметров может лишь аппроксимировать маппинг между исходными изображениями и таргетами:

призма приложение для фото. 53107605121298d57020f81c249e5e15. призма приложение для фото фото. призма приложение для фото-53107605121298d57020f81c249e5e15. картинка призма приложение для фото. картинка 53107605121298d57020f81c249e5e15.Сравнение качества детализации. Слева направо: результат дистилляции, результат FaceStyle, стилевое изображение [12]

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

Как мы затаскивали это всё на смартфон

Нам предстояло решить две задачи:

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

увеличить разрешение до 1024х1024.

С одной стороны, нужно было сделать генератор более mobile-friendly, и при этом сохранить совместимость с фреймворками инференса нейросетей на смартфонах (CoreML, ONNX, TFLite); c другой – сохранить качество результатов на уровне большого генератора. Мы решили взять за основу архитектуру нейросети, которая раньше использовалась у нас в сегментации фона на портретных фотографиях:

призма приложение для фото. image loader. призма приложение для фото фото. призма приложение для фото-image loader. картинка призма приложение для фото. картинка image loader.Архитектура нейросети для сегментации бэкграунда на портретных фото

По сути, это всё тот же энкодер-декодер со skip-connections, что использовали авторы для дистилляции FaceStyle, но со следующими модификациями:

В residual блоках используются separable свёрточные слои вместо обычных – они выполняют практически ту же работу, что и обычные свёртки, только за меньшее количество операций и требуют меньше памяти.

В качестве basic блока используется не Conv + ReLU слой, а целый residual блок.

Вместо конкатенации выходов слоёв энкодера с выходами слоёв декодера используется поэлементное сложение – это ускоряет сходимость и улучшает качество результатов.

Мы адаптировали эту архитектуру под нашу задачу следующим образом:

Сделали энкодер более глубоким;

Увеличили разрешение входного изображения до 512х512;

Добавили Instance Normalization слои (без них сетка сильно артефачит);

Сделали энкодер и декодер симметричными (одинаковое количество residual блоков на соответствующих слоях);

Заменили Transposed Conv слои на Upsample + Conv (про мотивацию можно почитать тут).

При обучении мы так же использовали PatchGAN лосс, поэтому нужно было ещё и правильно подобрать дискриминатор к оптимизированному генератору. Для этого мы уменьшили количество фичемап в исходном дискриминаторе и добавили Spectral Normalization во все свёрточные слои.

С тяжелым генератором разобрались, осталось решить проблему с разрешением. Для этого мы использовали модифицированный ESRGAN, увеличивающий разрешение входного изображения в 2 раза. Учили его на кропах изображений, стилизованных обученной ST сеткой, в качестве ground truth использовались результаты FaceStyle.

В итоге весь пайплайн получился довольно-таки лёгким ( призма приложение для фото. 329532d8359a963602547b20cd37f3be. призма приложение для фото фото. призма приложение для фото-329532d8359a963602547b20cd37f3be. картинка призма приложение для фото. картинка 329532d8359a963602547b20cd37f3be.Portrait ST в нашем приложении

Сейчас у нас в проде есть четыре портретных ST фильтра: Leya, Aqua, Michael и Arturo, с которыми вы можете поиграться. На этом мы решили не останавливаться, поэтому в ближайшее время подъедет ещё больше фильтров. Следите за апдейтами;)

Источник

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

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