Изменения

Перейти к: навигация, поиск

Блендинг изображений

2683 байта добавлено, 21:21, 7 января 2021
Постобработка и подбор гиперпараметров
Для того чтобы вставить изображение в картину или рисунок нужно не только сделать бесшовный переход и изменить цвета, но ещё и изменить текстуру вставляемого изображения, например сымитировать мазки кистью. Используем для этого комбинацию подходов из других статей<ref name="GEB16"/><ref name="JAFF16"/><ref name="WRB17"/>.
Алгоритм будет состоять из двух проходов. Первый проход будет делать грубую гармонизацию, а второй {{---}} более тщательную. Отличаться они будут '''стилевым маппингом todo: придумать норм название''' и функциями потерь<ref name="LPSB17">https://arxiv.org/pdf/1804.03189.pdf Fujun Luan, Sylvain Paris, Eli Shechtman, Kavita Bala (2018)</ref>.
{{Определение
* '''TODO''' красивые картинки
===Постобработка===
Возможно лучше такОписанный алгоритм даёт хорошие результаты в целом, но это при ближайшем рассмотрении могут быть артефакты. Поэтому сделаем двухступенчатую постобработку (подробное описание есть в оригинальной статье<ref name="LPSB17"/>):# Переведём изображение в [https://en.wikipedia.org/wiki/CIELAB_color_space CIELAB] и применим [https://en.wikipedia.org/wiki/Guided_filter Guided filter] для a и b каналов.# С помощбю алгоритма PatchMatch<ref name="BSFG09">https://www.researchgate.net/profile/Eli_Shechtman/publication/220184392_PatchMatch_A_Randomized_Correspondence_Algorithm_for_Structural_Image_Editing/links/02e7e520897b12bf0f000000.pdf Connelly Barnes, Eli Shechtman, Adam Finkelstein, Dan B Goldman (2009)</ref> и того же Guided filter делаем так чтобы все патчи выходного изображения присутсвовали в стилевом (чтобы не точнобыло новых объектов или структур) ===Подбор гиперпараметров=== Возьмём $l_{ref}$ = conv4_1, Выберем следующие веса для слоёв{| class="wikitable"|+ Первый проход|-! Параметр ! conv1_1 ! conv2_1 ! conv3_1 ! conv4_1 ! conv5_1 |-! $\alpha$ | $0$| $0$| $0$| $1$| $0$|-! $\beta$| $0$| $0$| $1/3$| $1/3$| $1/3$|} {| class="wikitable"|+ Второй проход|-! Параметр ! conv1_1 ! conv2_1 ! conv3_1 ! conv4_1 ! conv5_1 |-! $\alpha$ | $0$| $0$| $0$| $1$| $0$|-! $\beta$| $1/4$| $1/4$| $1/4$| $1/4$| $0$|-! $\gamma$ | $1/2$| $0$| $0$| $1/2$| $0$|} Введём гиперпараметр $\tau$ и возьмём $w_{style} = w_{hist} = \tau$, $w_{tv} = \tau\frac{10}{1 + \exp(10^4 * noise(S) - 25)}$, где $noise(S) = med_{i,j}\left\{(O^l_{i, j} - O^l_{i-1, j}))^2 + (O^l_{i, j} - O^l_{i, j-1}))^2\right\}$<ref>[https://github.com/luanfujun/deep-painterly-harmonization/blob/a33a9a70366b6baff1cc0291f857b5895b271fc1/neural_paint.lua#L470 код функции $noise$</ref> Для того чтобы подбирать $\tau$ авторы статьи использовали классификатор стилей изображений. Они взяли VGG-19, обучили её классифицировать 18 различных стилей. Эти стили были разделены на 3 категории с разными $\tau$. Используя Softmax можно интерполировать необходимый $\tau$ по следующей таблице: {| class="wikitable"|-! Категория стиля! Примеры стилей! $\tau$|-! Слабый| Барокко, Высокое Возрождение| $1$|-! Средний| Абстрактное Искусство, Постимпрессионизм| $5$|-! Сильный| Кубизм, Экспрессионизм| $10$|}
'''fun''' Harmonization(
$I$, <font color="green"> // Входное изображение </font>
$M$, <font color="green"> // Маска </font>
$S$ <font color="green"> // Стилевое изображение </font>
):
<font color="green"> // Грубый проход алгоритма. Каждый слой рассматривается отдельно при построении стилевого маппинга. </font>
$I'$ := SinglePassHarmonization($I$, $M$, $S$, IndependentMapping, $\mathcal{L}_1$)
==Глубокий блендинг==
58
правок

Навигация