Изменения

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

Вписывание части изображения

4244 байта добавлено, 19:24, 4 сентября 2022
м
rollbackEdits.php mass rollback
[[Файл:inpainting_sample.jpg|thumb|400px|Рисунок 1. Пример восстановления изображения. (a) {{В разработке---}}оригинальное изображение, (b) {{---}} изображение со стертыми частями, (с) {{---}} изображение, полученное в результате восстановления.<ref name="SC-FEGAN"/>]]
[[Файл:inpainting_sample'''Восстановление изображения '''(англ.jpg|thumb|400px|(ainpainting) {{---}} оригинальное изображение, (b) это процесс замены поврежденных частей изображения на реалистичные фрагменты. '''Вписывание части изображения''' {{---}} изображение со стертыми частямиэто подзадача восстановления, (с) {{---}} изображение, полученное в результате подрисовки]]которая опирается на имеющуюся неиспорченную часть изображении для замены поврежденной.
'''Подрисовка Алгоритмы вписывания части изображения применяются для редактирования изображений '''или для их восстановления, если их часть была утрачена или повреждена. С помощью современных моделей можно вырезать ненужные объекты или изменить их внешний вид (англ. inpaintingнапример, поменять цвет глаз у человека) {{---}} процесс замены дефектных частей изображения на реалистичные фрагменты. '''Вписывание части изображения''' - это подзадача подрисовки. Процесс подрисовки обычно опирается на имеющиеся неиспорченные пиксели в изображении для замены поврежденных.
Методы данной области применяются для редактирования изображений или для их восстановления, если их часть была утрачена или подвержена некоторым дефектам. С помощью современных моделей можно вырезать ненужные объекты или изменить их свойство (например, поменять цвет глаз у человека).
== Виды восстановления изображения ==
== Виды подрисовки ==[[Файл:denoising_sample.jpg|thumb|550px|Рисунок 2. Пример устранения текста, наложенного на изображение. В данном случае текстом покрыто 18.77% площади.<ref>[https://www.researchgate.net/publication/220903053_Fast_Digital_Image_Inpainting Fast Digital Image Inpainting, Manuel M. Oliveira, Brian Bowen, Richard McKenna, Yu-Sung Chang]</ref>]]
[[ФайлВосстановление изображения разделяется на две задачи:denoising_sample* '''Управляемое восстановление изображения''' (англ.jpg|thumb|550px|Пример устранения наложенного текста non-blind inpainting). В этой задаче вместе с изображением подается информация о том, какие пиксели нужно заменить.* '''Слепое восстановление изображения''' (англ. blind inpainting). В решениях данной проблемы модель сама определяет, где на изобрежениеизображении поврежденные пиксели. Модели слепого восстановления чаще всего занимаются устранением шумов (англ. denoising). В данном случае текстом покрыто 18качестве шума, например, может быть наложенный текст (см Рис.77% площади2).]]
Подрисовка обычно разделяется на две задачи:* '''Управляемая подрисовка'''(англ. non-blind inpainting). В этой задаче вместе с изображением подается информация о том, какие пиксели нужно заменить.* '''Слепая подрисовка'''(англ. blind inpainting). В решениях данной проблемы модель сама определяет, где на изображении дефектные пиксели. Модели слепой подрисовки чаще всего занимаются устранением шумов (англ. denoising). В качестве шума, например, может быть наложенный текст. Пример работы модели удаления наложенного текста приведен на картинке справа. В этом конспекте преимущественно речь пойдет про управляемую подрисовкууправляемое восстановление.
== Традиционные методы ==
Есть два основных простых метода восстановления данных:
# Быстрый пошаговый метод (англ. Fast marching method)<ref>[https://www.researchgate.net/publication/238183352_An_Image_Inpainting_Technique_Based_on_the_Fast_Marching_Method An Image Inpainting Technique Based onthe Fast Marching Method, Alexandru Telea]</ref>. Этот метод двигается от границ области, которую нужно закраситьзаполнить, к ее центру, постепенно закрашивая восстанавливая пиксели. Каждый новый пиксель вычисляется как взвешенная сумма известных соседних пикселей.# Метод Навье-Стокса (англ. Navier-Stokes method)<ref>[https://www.math.ucla.edu/~bertozzi/papers/cvpr01.pdf Navier-Stokes, Fluid Dynamics, and Image and Video Inpainting, M. Bertalmio, A. L. Bertozzi, G. Sapiro]</ref>. Метод основывается на том, что грани границы объектов в на изображении должны быть непрерывными. Цвета Значения пикселей вычисляются из известных областей около гранейвокруг испорченной части. Метод основывается на дифференциальных уравнениях в частных производных.
== Глубокое обучение ==
[[Файл:inpainting_network.jpg|thumb|550px|Рисунок 3. Пример GAN для inpainting.<ref>[http://iizuka.cs.tsukuba.ac.jp/projects/completion/data/completion_sig2017.pdf Globally and Locally Consistent Image Completion, Satoshi Lizuka, Edgar Simo-Serra, Hiroshi Ishikawa]</ref>]] В отличие от приведенных выше простых методов, глубокое обучение позволяет в процессе подрисовки учитывать семантику изображения. В этом случае заполнение отсутствующих областей основывается на контексте, определяемом объектами на изображении.
Современные методы машинного обучения для решения данной задачи часто базируются В отличие от приведенных выше методов, глубокое обучение позволяет в процессе восстановления изображения учитывать его семантику. В этом случае алгоритм заполнения отсутствующих областей основывается на глубоких нейронных сетях для классификации изображенийтом, [[Автокодировщик|автокодировщиках (autoencoder)]] и [[Generative_Adversarial_Nets_(GAN)|генеративно-состязательных сетях (GAN)]]какие объекты расположены на изображении.
Для того, чтобы понимать, какую часть изображения нужно заполнить, на вход сети кроме самого изображения подается слой маски с информацией о об испорченных пикселях, где данные отсутствуют.
Сети В сетях обычно имеют модель используется архитектура [[Автокодировщик|автокодировщиков (англ. autoencoder)]] {{---}} сначала идут слои кодирующие, а потом декодирующие изображение. Функция потерь побуждает заставляет модель изучать другие свойства изображения, а не просто копировать его из входных данных в выходные. Именно это предоставляет возможность позволяет научить модель заполнять недостающие пиксели.
Обучение может происходить через сравнение оригинального изображения и синтетического, сгенерированного сетью или через [[Generative_Adversarial_Nets_(GAN)|генеративно-состязательную сеть(GAN)]]. Во втором случае для обучения используется дискриминатор, который определяет фейковое настоящее ли изображение подали ему на вход. В современных моделях обычно используют совмещенный подход: функции потерь зависят и от исходного изображения, и от выхода дискриминатора.
В ранних моделях часто использовались применялись два дискриминатора(см Рис. 3):
# Локальный дискриминатор (англ. Local Discriminator). Ему подавалась на вход только сгенерированная часть изображения.
# Глобальный дискриминатор (англ. Global Discriminator). В данном случае на вход подавалось все изображение целиком.
Однако в современных моделях чаще используется один дискриминатор, который принимает на вход не только канал с выходным изображениемвосстановленное изображение, но и канал с маскоймаску. Современные модели чаще всего принимают на вход маски произвольной формы (англ. free-form mask), при работе с которыми локальный дискриминатор показывает плохое качество. Именно поэтому концепция двух дискриминаторов стала не популярнойнепопулярной.
=== Виды сверток Свертки ===
Помимо Для вписывания изображения помимо классической свертки в задаче подрисовки широко применяют используются другие виды свертокспособы перехода от слоя к слою. Подробнее про свертки можно прочитать в конспекте [[Сверточные нейронные сети]].# '''Расширенная свертка (англ. Dilated convolution)'''. Данный способ позволяет сохранить качество изображении, уменьшив затраты на память и вычисления.# '''Частичная свертка (англ. Partial convolution).''' Данная свертка дает лучшее качество на масках произвольной формы. Классическая свертка предполагает, что все пиксели валидны, а частичная учитывает количество стертых пикселей в рассматриваемой матрице. # '''Стробированная свертка (англ. Gated convolution).''' Данная свертка позволяет сохранять информацию о маске и эскизах пользователя во всех слоях сети, которые дают что дает возможность получить лучшее качество выходного изображения.
==== Расширенная свертка (Dilated convolution) =Функции потерь ===
Похожа на пуллинг и свертку Существует большое множество различных функций потерь при методе обучения модели через сравнение сгенерированного изображения с шагом, но позволяеторигинальным. Примеры:* Экспоненциально расширить рецептивное поле без потери качества изображения* Получить большее рецептивное поле при тех же затратах на вычисления и памяти, сохранив качество изображения'''L1-loss''' или '''Per-pixel loss'''. Оценивает точность восстановления каждого пикселя по отдельности.
Формула отличается от классической только коэффициентом расширения l:
<center><tex>L_{per-pixel} = \frac{1}{N_{I_{gt}}}\|M \odot (F *_I_{gen} - I_{lgt} k)(p) = \sum| + \alpha \limits_frac{1}{N_{I_{s+lt=pgt}}}F\|(s1 - M)k\odot (tI_{gen} - I_{gt})\|</tex>,</center>
Пример:где <tex>I_{gen}</tex> {{---}} выход генератора; <tex>I_{gt}</tex> {{---}} оригинальное изображение (англ. ground truth); <tex>N_a</tex> {{---}} количество элементов в объекте <tex>a</tex>; <tex>M</tex> {{---}} бинарная маска; <tex>\alpha</tex> {{---}} гиперпараметр, <tex>\odot</tex> {{---}} поэлементное перемножение.
{| |* '''Perceptual loss'''. Cравнивает признаки сгенерированного и исходного изображений, полученные с помощью модели VGG- |16<ref>[[Файлhttps:Dilated_convolution//arxiv.png|border|700px|thumb|left|Расширенная сверткаorg/pdf/1409.]] | 11556v6.pdf Very Deep Convolutional Networks for Large-Scale Image Recognition, 2- и 4-расширенные свертки с классическими ядрами 3x3Karen Simonyan, 5x5 и 9x9 соответственно. Красные точки обозначают ненулевые веса, остальные веса ядра равны нулю. Выделенные синие области обозначают рецептивные поляAndrew Zisserman]</ref>. |}
==== Частичная свертка (Partial convolution) ====
Частичная свертка позволяет решить две проблемы предыдущих подходов глубокого обучения:# Предположение, что испорченные области имеют простую форму <center><tex>L_{percept} = \sum\limits_{q}\frac{\|\Theta_{q}(I_{gen}) - \Theta_{q}(I_{gt})\|}{N_{\Theta_{q}(I_{gt})}} + \sum\limits_{q}\frac{\|\Theta_{q}(I_{comp}) - \Theta_{q}(I_{gt})\|}{N_{\Theta_{q}(прямоугольнуюI_{gt}).# Заполнение испорченной области одним цветом и применение свертки ко всему изображению вне зависимости от того, какие пиксели испорчены}}</tex>, а какие нет.</center>
Слой свертки состоит из:где <tex>XI_{comp}</tex> {{---}} значения пикселейизображение <tex>I_{gen}</tex>,в котором нестертые части заменены на части из <tex>MI_{gt}</tex> ; <tex>\Theta_{q}(x)</tex> {{---}} маскакарта признаков, указывающая на то какие пиксели испорченыполученная <tex>q</tex>-ым слоем VGG-16.
<tex>x* '''Style loss''' = \begin{cases} W^T(X\bigodot M)\frac{sum(1)}{sum(M)}+b. Считает корреляцию между признаками на каждом слое, & \mbox{if } sum(M)что на самом деле является матрицей Грама<ref>0 \\ 0[https://en.wikipedia.org/wiki/Gramian_matrix Gramian matrix, & \mbox{otherwise} \end{cases}Wikipedia]</texref>. Согласно алгоритму [[Neural Style Transfer|нейронного переноса стиля (англ. Neural Style Transfer, NST)]] матрица Грама содержит информацию о текстуре и цвете изображения. Таким образом style loss сравнивает сгенерированное и оригинальное изображения на схожесть стилей.
Поэлементное перемножение <tex>X</tex> и <tex>M</tex> позволяет получить результат, зависящий только от правильных пикселей, а <tex>\frac{sum(1)}{sum(M)}</tex> нормализует этот результат, так как количество правильных пикселей на каждом слое свертки различается.
Маска обновляется так:<center><tex>L_{style} = \sum\limits_{q}\frac{1}{C_q C_q} \| \frac{G_q(I_{gen})-G_q(I_{gt})}{N_q}\|</tex>,</center>
где <tex>m' G_q(x) = (\beginTheta_{casesq} 1, & (I_{x}))^T (\mboxTheta_{if q} sum(MI_{x}))</tex>0 \\ 0, & \mbox{otherwise{---} \end} матрица Грама для выполнения автокорреляции на карте признаков VGG-16; <tex>C_{casesq}</tex> {{---}} размерность матрицы Грама.
Если результат свертки зависел хоть от одного реального пикселя, то на следующем слое свертки результирующий пиксель не будет считаться испорченным* '''Total variation loss'''. Таким образом с каждым слоем свертки маска заполняется пока не будет полностью заполнена единицамиОценивает однородность полученного изображения.
==== Стробированная свертка (Gated convolution) ====
Разделение пикселей только на правильные и испорченные не позволяет:# Контролировать восстановление изображения и вносить некоторую дополнительную информацию.# Сохранить информацию об испорченной области<center><tex>L_{tv} = \sum\limits_{(i, так как постепенно все пиксели становятся правильными.j) \in R}\frac{\|I_{comp}^{i,j+1} - I_{comp}^{i,j}\|}{N_{I_{comp}}} + \sum\limits_{(i,j) \in R}\frac{\|I_{comp}^{i+1,j} - I_{comp}^{i,j}\|}{N_{I_{comp}}}</tex>,</center>
Вместо жесткой маскигде <tex>I_{comp}</tex> {{---}} изображение <tex>I_{gen}</tex>, которая обновляется по некоторым правилам, стробированная свертка учится автоматически извлекать маску в котором нестертые части заменены на части из данных:<tex>I_{gt}</tex>; <tex>N_{I_{comp}}</tex> {{---}} количество пикселей в <tex>I_{comp}</tex>
<tex>\begin{array}{rcl} Gating_{y,x} & = & \sum \sum W_g \cdot I \\ Feature_{y,x} & = & \sum \sum W_f \cdot I \\ O_{y,x} & = & \phi (Feature_{y,x}) \bigodot \sigma (Gating_{y,x}) \end{array}</tex>* '''Adversarial loss'''. Сравнивает генерируемые и оригинальные границы объектов в изображении.
Данная свертка учится динамическому отбору признаков для каждого слоя изображения и каждой логической области маски, значительно улучшая однородность цвета и качество исправления испорченных областей различных форм.
<center><tex>L_{adv} === Функции потерь ===\mathbb{E}[\log D(H_{gt}, I_{gray})] + \mathbb{E}[\log (1 - D(H_{gen}, I_{gray}))]</tex>,</center>
Существует большое множество различных функций потерь при методе обучение модели через сравнение сгенерированного где <tex>I_{gray}</tex> {{---}} черно-белое оригинальное изображение; <tex>H_{gt}</tex> {{---}} границы объектов оригинального изображения с оригинальным. Примеры: * '''L1; <tex>H_{gen}</tex> {{---}} генерируемые границы; <tex>D</tex> {{--loss''' или '''Per-pixel loss'''. Оценивает точность восстановления каждого пикселя по отдельности.}} дискриминатор;
* '''Feature-matching loss'''. Сравнивает изображения по признакам, извлекаемыми из всех слоев дискриминатора.
<center><tex>L_{per-pixel} = \frac{1}{N_{I_{gt}}}\|M \odot (I_{gen} - I_{gt})\| + \alpha \frac{1}{N_{I_{gt}}}\|(1 - M) \odot (I_{gen} - I_{gt})\|</tex></center>
:<texcenter>I_{gen}</tex> L_{FM} = \mathbb{---E}[\sum\limits_{i=1} выход генератора; <tex>I_^L \frac{gt1}</tex> {N_i} \|D^{---(i)}(H_{gt} оригинальное изображние - D^{(англ. ground truthi); <tex>N_a</tex> {{---}} количество элементов в объекте <tex>a</tex>; <tex>M</tex> (H_{{---gen}} бинарная маска; <tex>))\alpha| ]</tex> {{---}} гиперпараметр, <tex>\odot</texcenter> - поэлементное перемножение.
* '''Perceptual loss'''. Cравнивает признаки полученного и исходного изображений, полученные с помощью модели VGGгде <tex>L</tex> {{-16--}} количество слоев дискриминатора; <reftex>[https:N_i</tex> {{---}} число нейронов на <tex>i</arxiv.orgtex>-ом слое дискриминатора; <tex>D^{(i)}</pdf/1409.1556v6.pdf Very Deep Convolutional Networks for Largetex> {{---Scale Image Recognition, Karen Simonyan, Andrew Zisserman]}} значения дискриминатора на слое <tex>i</reftex>.;
При обучении обычно используется комбинация функций потерь с некоторыми весами, которые являются гиперпараметрами. В моделях, где вдобавок используется дискриминатор, функция потерь от его выхода также подмешивается к итоговой функции потерь.
<center><tex>L_{percept} = \sum\limits_{q}\frac{\|\Theta_{q}(I_{gen}) - \Theta_{q}(I_{gt})\|}{N_{\Theta_{q}(I_{gt})}} + \sum\limits_{q}\frac{\|\Theta_{q}(I_{comp}) - \Theta_{q}(I_{gt})\|}{N_{\Theta_{q}(I_{gt})}}</tex></center>= Примеры современных моделей ==
[[Файл:<tex>I_{comp}</tex> {{sc-fegan_result.jpg|thumb|300px|Рисунок 4. Пример работы модели SC--}} изображение <tex>I_{gen}</tex>, в котором нестертые части заменены на части из <tex>I_{gt}FEGAN.</tex>; <tex>\Theta_{q}(x)</tex> {{ref name="SC---}} карта признаков, полученная <tex>q<FEGAN"/tex>-ым слоем VGG-16.]]
* '''Style loss'''. Сравнивает текстуру и цвета изображений, используя матрицу Грама=== SC-FEGAN<refname="SC-FEGAN">[https://en.wikipediagithub.orgcom/wikirun-youngjoo/Gramian_matrix Gramian matrixSC-FEGAN Face Editing Generative Adversarial Network with User's Sketch and Color, WikipediaYoungjoo Jo, Jongyoul Park]</ref>.===
SC-FEGAN позволяет создавать высококачественные изображения лиц за счет эскизов, передаваемых пользователем вместо стертых частей изображения. Иными словами пользователь может стереть фрагмент, который он хочет изменить, нарисовать на его месте желаемый объект, и полученный эскиз, а также его цветовая палитра, будут отражены в сгенерированном фрагменте.
<center><tex>L_{style} = \sum\limits_{q}\frac{1}{C_q C_q} \| \frac{G_qДискриминатор данной сети принимает на вход сгенерированное изображение, маску и рисунок пользователя. Итоговая функция потерь формируется из выхода дискриминатора и функций сравнения изображения с оригинальным (I_{gen})per-G_q(I_{gt}pixel loss, perceptual loss, style loss)}{N_q}\|</tex></center>.
:<tex>G_q(x) = (\Theta_{q}(I_{x}))^T (\Theta_{q}(I_{x}))</tex> {{---}} матрица Грама для выполнения автокорреляции на карте признаков VGG-16; <tex>C_{q}</tex> {{---}} размерность матрицы Грама.
* '''Total variation loss'''[[Файл:DeepFillv2_model. Оценивает однородность полученного изображенияjpeg|thumb|300px|left|Рисунок 5.Сеть DeepFillv2.<ref name="DeepFillv2"/>]]
=== DeepFillv2<ref name="DeepFillv2">[https://github.com/csqiangwen/DeepFillv2_Pytorch Free-Form Image Inpainting with Gated Convolution, Jiahui Yu, Zhe Lin, Jimei Yang, Xiaohui Shen, Xin Lu, Thomas Huang]</ref> ===
<center><tex>L_Главная идея этой модели {tv} = \sum\limits_{(i,j) \in R}\frac{I_{comp}^{i,j+1} - I_{comp}^{i,j}}{N_{I_{comp}--}} + \sum\limits_{(iиспользование стробированной свертки,j) \in R}\frac{I_{comp}^{i+1,j} - I_{comp}^{i,j}}{N_{I_{comp}}}</tex></center>которая позволила добиться хорошего качества вписывания при восстановлении изображения с разными формами испорченных областей. Также можно использовать рисунок пользователя в качестве входных данных.
* '''Adversarial loss'''В данной модели используется вариант генеративно-состязательной сети {{---}} SN-PatchGAN. Сравнивает генерируемые Дискриминатор этой сети в каждой точке вычисляет кусочно-линейную функцию потерь, формируя таким образом <tex>h \times w \times c</tex> генеративно-состязательных сетей, каждая из которых сосредотачивается на различных частях и свойствах изображения. Генератор, состоящий из двух сетей (грубой и оригинальные грани объектов сети повышающей качество изображения), используют модель кодировщик-декодировщик вместо U-Net<ref>[https://arxiv.org/pdf/1505.04597.pdf U-Net: Convolutional Networks for Biomedical Image Segmentation, Olaf Ronneberger, Philipp Fischer, Thomas Brox]</ref>, в изображениикоторой все слои классической свертки заменены на стробированные. Полностью архитектура сети приведена на Рисунке 5.
----
=== Pluralistic Image Completion<center><texref>L_{adv} = \mathbb{E}[\log D(H_{gt}https://github.com/lyndonzheng/Pluralistic-Inpainting Pluralistic Image Completion, I_{gray})] + \mathbb{E}[\log (1 Chuanxia Zheng, Tat- D(H_{gen}Jen Cham, I_{gray}))Jianfei Cai]</tex></centerref>===
:<tex>I_{gray}</tex> Главное отличие этой модели от других {{---}} черное белое оригинальное способность выдавать несколько вариантов заполнения отсутствующих областей изображения. Обычно модели генерируют только один вариант, пытаясь приблизиться к оригинальному изображению. Используя же данную модель, человек может выбрать то сгенерированное изображение; <tex>H_{gt}</tex> {{---}} грани объектов оригинального , которое выглядит более реалистичным, получая таким образом более качественные изображения; <tex>H_{gen}</tex> {{---}} генерируемые грани; <tex>D</tex> {{---}} дискриминатор;на выходе.
* '''FeatureДанная модель добивается такого эффекта путем пропускания входного изображения через две параллельные сети. Первая сеть {{--matching loss'''-}} реконструирующая. Сравнивает изображения по признакамОна пытается приблизить выходное изображение к оригинальному. Вторая сеть {{---}} генерирующая, работающая с априорным распределением отсутствующих областей и выборками известных пикселей. Каждая сеть имеет свой дискриминатор, извлекаемым из всех слоев помогающий обучить модель. Кроме выхода дискриминаторадля обучения также используются функции сравнения полученного изображения с оригинальным.
----
[[Файл:EdgeConnect_sample.jpg|thumb|400px|Рисунок 6. Пример работы модели EdgeConnect.<ref name="EdgeConnect"/>]]
=== EdgeConnect<centerref name="EdgeConnect"><tex>L_{FM} = \mathbb{E}[\sum\limits_{i=1}^L \frac{1}{N_i} \|D^{(i)}(H_{gt} - D^{(i)}(H_{gen}))\| https://arxiv.org/pdf/1901.00212.pdf EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning, Kamyar Nazeri, Eric Ng, Tony Joseph, Faisal Z. Qureshi, Mehran Ebrahimi]</tex></centerref>===
EdgeConnect разбивает задачу вписывания на две части:<tex>L</tex> {{---}} количество слоев дискриминатора; <tex>N_i</tex> {{---}} число нейронов на <tex>i</tex>-ом слое дискриминатора; <tex>D^{(i)}</tex> {{---}} значения диксриминатора на слое <tex>i</tex>; # Выделение границ изображения и предсказание границ утраченной части изображения. # Использование сгенерированных границ для заполнения утраченной части изображения.
При обучении обычно В обоих частях используется комбинация функций потерь генеративно-состязательная сеть. Генераторы состоят из кодировщика, нескольких остаточных блоков с некоторыми весами, которые являются гиперпараметрамирасширенной сверткой и декодировщика (см Рис. 7). В моделях, где вдобавок Для дискриминатора используется дискриминаторPatchGAN<ref>[https://paperswithcode.com/method/patchgan PatchGan, функция потерь от его выхода также подмешивается к итоговой функции потерьPapersWithCode]</ref>.
{|-valign="top" |[[Файл:EdgeConnect_network.jpg|thumb|700px|Рисунок 7. Сеть EdgeConnect. <tex>G_1</tex> {{---}} генератор границ, <tex>G_2</tex> {{---}} генератор изображения, <tex>D_1</tex> и <tex>D_2</tex> {{---}} дискриминаторы.<ref name= Примеры современных моделей =="EdgeConnect"/>]] |}
=== DeepFillv2Для генерации ребер сначала выделяются границы существующей части изображения с помощью Canny edge detector<ref>[https://githuben.comwikipedia.org/run-youngjoowiki/SC-FEGAN Free-Form Image Inpainting with Gated Convolution, Jiahui Yu, Zhe Lin, Jimei Yang, Xiaohui Shen, Xin LuCanny_edge_detector Canny edge detector, Thomas HuangWikipedia]</ref> ===. Потом полученная граница вместе с маской и черно-белым изображением дается генератору. В качестве целевой функции потерь для тренировки сети берется комбинация двух функций: adversarial loss и feature-matching loss. Также для стабилизации обучения генератора и дискриминатора используется спектральная нормализация.
[[Файл:DeepFillv2_modelДля восстановления генератор получает на вход испорченное изображение и границы, которые составлены из реальных и сгенерированных на предыдущем этапе.jpeg|thumb|450px|Сеть DeepFillv2В результате генерируется полное изображение. Так же, как и на предыдущем этапе, используется составная функция потерь из adversarial loss, perceptual loss и style loss.]]
Главная идея данной модели {{---}} это использование стробированной сверткиОднако сети не удается предсказать достаточно хорошую границу, которая позволила добиться хорошего качества вписывания при восстановлении если отсутствует большая часть изображения с разными формами испорченных областей. Также данная модель может использовать набросок пользователя в качестве входных данныхили объект имеет сложную структуру.
Кроме того, в данной модели предлагается Также данную модель можно использовать вариант генеративно состязательной сети {{---}} SN-PatchGANдля соединения двух изображений (см Рис. Дискриминатор этой сети в каждой точке вычисляет кусочно-линейную функцию потерь, формируя таким образом <tex>h \times w \times c</tex> генеративно состязательных сетей, каждая из которых сосредотачивается на различных частях и свойствах изображения8) или удаления лишних объектов с фотографий.
Генератор, состоящий из двух сетей (грубой и сети повышающей качество изображения) имеет слой адаптации. Обе сети используют модель кодировщик{|-декодировщик вместо U-Net<ref>valign="top" |[[httpsФайл://arxivEdgeConnect_merge.org/pdf/1505jpg|thumb|700px| Рисунок 8.04597Пример соединения двух изображения моделью EdgeConnect.pdf U-Net: Convolutional Networks for Biomedical Image Segmentation, Olaf Ronneberger, Philipp Fischer, Thomas Brox]<ref name="EdgeConnect"/ref>, в которой все слои классической свертки заменены на стробированные.]] |}
----
=== SC-FEGANDeep Image Prior<refname="DeepImagePrior">[https://githubarxiv.comorg/run-youngjoopdf/SC-FEGAN Face Editing Generative Adversarial Network with User's Sketch and Color1711.10925v4.pdf Deep Image Prior, Dmitry Ulyanov, Youngjoo JoAndrea Vedaldi, Jongyoul ParkVictor Lempitsky]</ref> ===
[[Файл:sc-fegan_resultDeepImagePrior_minimization.jpgjpeg|thumb|450px550px|Пример работы модели SC-FEGANРисунок 9.Процесс восстановления изображения с помощью Deep Image Prior.<ref name="DeepImagePrior"/>]]
Данная модель позволяет производить высококачественные Как известно, большинство методов глубокого обучения требуют больших наборов данных для тренировки. В отличие от них Deep Image Prior не требует никакой предварительной обучающей выборки кроме одного изображения лиц, учитывая передаваемые пользователем эскизы и цвета на области маски (стертых частях которое надо исправить. Для этого сеть учится извлекать полезную информации из самого обрабатываемого изображения). Иными словами пользователь может легко редактировать Данный метод применяется для таких задач как вписывание части изображения, стирая фрагменты, которые он хочет изменить, и подставляя туда эскизы удаление шума и/или цвета, которые будут отражены в генерируемом фрагментеувеличение разрешения фотографий.
Дискриминатор данной сети принимает на вход несколько каналов изображенияСформулируем данную задачу как задачу минимизации: выходное изображение генератора, маску и слой пользовательского ввода (эскизы и цвета).
Итоговая функция потерь формируется из выхода дискриминатора и функций сравнения изображения с оригинальным <tex>\theta^{*} = \underset{\theta} {\mathrm{argmin}} ~E(per-pixel lossf_{\theta}(z), perceptual lossx_0), style loss\;\; x^{*} = f_{\theta^{*}}(z) \;\; (1).</tex>
где <tex>E(x, x_0)</tex> {{---}} это функция потерь, зависящая от решаемой задачи, а <tex>f_{\theta}(z)</tex> {{---}} некоторая сверточная сеть.
=== Pluralistic Image CompletionАлгоритм решения задачи (см Рис. 9):# Инициализируем <reftex>\theta</tex>[httpsслучайными весами.# На каждой итерации:## Сеть <tex>f</tex> с текущими весами <tex>\theta</tex> получает на вход фиксированный тензор <tex>z</tex> и возвращает восстановленное изображение <tex>x</githubtex>.com## С помощью сгенерированного изображения x и исходного изображения <tex>x_0</lyndonzhengtex> вычисляется функция потерь <tex>E(x;x0)</Pluralistic-Inpainting Pluralistic Image Completion, Chuanxia Zheng, Tat-Jen Cham, Jianfei Cai]tex>.## Веса <tex>\theta</reftex> ===обновляются так, чтобы минимизировать уравнение (1).
Главное отличие данной модели от других {{В качестве <tex>f</tex> предлагается использовать сеть U---}} способность выдавать несколько вариантов заполнения отсутствующих областей изображения. Обычно имеется множество возможных реалистичных вариантов подрисовки изображения, однако большинство моделей выдают на выход лишь один, пытаясь получить оригинальное изображение. Используя данную модель, человек может выбрать более реалистичные генерируемые фрагменты и получить более качественное изображение на выходеnet с пропускающими соединениями.
Данная модель добивается такого эффекта путем пропускания входного Для вписывания части изображения через две параллельные сети. Первая сеть {{используется следующая функция потерь: <tex>E(x, x_0) = \|(x ---}} реконструирующая. Она пытается приблизить выходное изображение к оригинальному. Вторая сеть x_0) * m \|^2</tex>, где <tex>m</tex> {{---}} генерирующая, работающая с априорным распределением отсутствующих областей и выборками известных пикселей. Каждая сеть имеет свой дискриминатор, помогающий обучить модель. Кроме выхода дискриминатора для обучения также используются функции сравнения полученного изображения с оригинальныммаска.
== См. также ==
*[[Автокодировщик]]
*[[Generative Adversarial Nets (GAN)|Генеративно-состязательныe сети]]
*[[Neural Style Transfer]]
== Примечания ==
1632
правки

Навигация