Изменения

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

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

363 байта убрано, 00:04, 8 января 2021
Нет описания правки
{{В разработке}}
[[Файл:inpainting_sample.jpg|thumb|400px|(a) {{---}} оригинальное изображение, (b) {{---}} изображение со стертыми частями, (с) {{---}} изображение, полученное в результате inpaintingподрисовки]]
'''InpaintingПодрисовка изображений ''' (англ. inpainting) {{---}} процесс восстановления испорченных или утраченных замены дефектных частей изображений и видеоизображения на реалистичные фрагменты. '''Вписывание части изображения''' - это подзадача подрисовки. В основном этот процесс происходит используя фоновую информацию и заполняя недостающие данные Процесс подрисовки обычно опирается на имеющиеся неиспорченные пиксели в определенной области визуального вводаизображении для замены поврежденных.
Методы данной области применяются как для редактирования изображений или для их восстановления изображений, если их часть которых была утрачена или подвержена некоторым дефектам, так и для их редактирования. С помощью современных моделей можно вырезать ненужные объекты или изменить их свойство (например, лишних людей на фотографиях), а также гибко редактировать изображения (например, изменить поменять цвет глаз у человека на фото).
== Виды inpainting подрисовки ==
[[Файл:denoising_sample.jpg|thumb|550px|Пример устранения наложенного текста на изобреженииизобрежение. В данном случае текстом покрыто 18.77% площади.]]
Inpainting Подрисовка обычно разделяется на две задачи:* '''Non-blind inpaintingУправляемая подрисовка''' {{(англ. non---}} blind inpainting). В этой задаче на вход модели вместе с изображением подается информация о том, какие пиксели в изображении нужно заменить, подается на вход модели. * '''Blind inpaintingСлепая подрисовка''' {{---}} (англ. blind inpainting). В решениях данной проблемы модель должна сама определитьопределяет, где на изображении дефектные пиксели, которые нужно заменить. Эту задачу также называют Модели слепой подрисовки чаще всего занимаются устранением шумов (англ. denoising (устранение шума), так как модели blind inpainting почти всегда устраняют именно шумы. В качестве шума может быть как примененный фильтр к изображению, так и наложенный текст. Пример работы модели удаления наложенного текста приведен на картинке справа.
В этом конспекте преимущественно речь пойдет про non-blind inpaintingуправляемую подрисовку.
== Простые методы ==
Для решения данной задачи существуют несколько разных множество различных методов. В этой части речь пойдет о , в том числе простых решениях. Почти все простые методы основаны на следующей концепции: заполнение отсутствующих частей пикселями, идентичными соседним пикселям или похожими на них. Такие методы часто зависят от множества факторов и наиболее подходят для задачи устранения шума или небольших дефектов изображения. Но на изображениях, где отсутствует значительная часть данных, эти методы дают плохое качество выходного изображения.
Есть два основных простых способа восстанавливать данные:
# Быстрый пошаговый метод (англ. Fast marching method). Этот метод двигается от границ области, которую нужно закрасить, к ее эпицентру, постепенно закрашивая пиксели. Каждый новый пиксель вычисляется как взвешенная сумма известных соседних пикселей.
# Метод Навье-Стокса (англ. Navier-Stokes method). Метод основывается на том, что грани объектов в изображении должны быть непрерывными. Цвета пикселей вычисляются на основе из известных областей около граней. Метод основывается на дифференциальных уравнениях в частных производных.
== Глубокое обучение ==
[[Файл:inpainting_network.jpg|thumb|550px|Пример GAN для inpainting.]]
Глубокое обучение позволяет в процессе восстановления пикселей подрисовки учитывать семантику изображения (в отличие от приведенных выше способовпростых методов). То есть в данном случае заполнение отсутствующих областей основывается на контексте, вносимым самим изображением, объектах, находящихся на изображении, и их классах.
Современные методы машинного обучения для решения данной задачи часто базируются на глубоких нейронных сетях для классификации изображений, [[Автокодировщик|автокодировщиках (autoencoder)]] и [[Generative_Adversarial_Nets_(GAN)|генеративно-состязательных сетях (GAN)]].
Сети обычно имеют модель автокодировщиков {{---}} сначала идут слои кодирующие, а потом декодирующие изображение. Функция потерь побуждает модель изучать другие свойства изображения, а не просто копировать его из входных данных в выходные. Именно это предоставляет возможность научить модель заполнять недостающие пиксели.
Обучение может происходить через сравнение оригинального изображения и синтетического, сгенерированного сетью, или через генеративно-состязательную сеть. Во втором случае для обучения используется дискриминатор, который определяет фейковое ли изображение подали ему на вход. В современных моделях обычно используют совмещенный подход: функции потерь зависят и от исходного изображения, и от выхода дискриминатора.
В ранних моделях часто использовались два дискриминатора:
# Локальному Локальный дискриминатор (англ. Local Discriminator) подавался . Ему подавалась на вход только сгенерированная часть изображения.# Глобальному Глобальный дискриминатор (англ. Global Discriminator) подавалось . В данном случае на вход подавалось все изображение целиком.Однако в современных моделях чаще используется один дискриминатор, который принимает на вход не только канал с выходным изображением, но и канал с маской (такие сети часто называются patchGAN). Современные модели чаще всего работают с масками принимают на вход маски произвольной формы (англ. free-form mask), при работе с которыми локальный дискриминатор показывает плохое качество. Именно поэтому концепция двух дискриминаторов стала не популярной.
=== Виды сверток ===
Помимо классической свертки в задаче вписывания части изображений подрисовки широко применяют другие виды сверток, которые дают лучшее качество выходного изображения.
==== Расширенная свертка (Dilated convolution) ====
=== Функции потерь ===
Существует большое множество различных функций потерь при методе обучение модели через сравнение сгенерированного изображения с оригинальным.
Примеры:
* '''L1-loss''' или '''Per-pixel loss''' {{---}} оценивает . Оценивает точность восстановления каждого пикселя по отдельности.
:<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://arxiv.org/pdf/1409.1556v6.pdf Very Deep Convolutional Networks for Large-Scale Image Recognition, Karen Simonyan, Andrew Zisserman]</ref>.
:<tex>I_{comp}</tex> {{---}} изображение <tex>I_{gen}</tex>, в котором нестертые части заменены на части из <tex>I_{gt}</tex>; <tex>\Theta_{q}(x)</tex> {{---}} карта признаков, полученная <tex>q</tex>-ым слоем VGG-16.
* '''Style loss''' {{---}} сравнивает . Сравнивает текстуру и цвета изображений, используя матрицу Грама<ref>[https://en.wikipedia.org/wiki/Gramian_matrix Gramian matrix, Wikipedia]</ref>.
:<tex>G_q(x) = (\Theta_{q}(I_{x}))^T (\Theta_{q}(I_{x}))</tex> {{---}} матрица Грама для выполнения автокорреляции на карте признаков VGG-16; <tex>C_{q}</tex> {{---}} размерность матрицы Грама.
* '''Total variation 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>, в которой все слои классической свертки заменены на стробированные.
----
Основа данной сети patchGAN {{---}} дискриминатор принимает на вход несколько каналов изображения. В данном случае помимо выходного изображения генератора и маски, дискриминатор принимает еще слой пользовательского ввода (эскизы и цвета).
Итоговая функция потерь формируется из выхода дискриминатора и функций сравнения изображения с оригинальным (per-pixel loss, perceptual loss, style loss) и выхода дискриминатора== Применение == Inpainting может применяться для различных целей: * Восстановление старых фотографий* Удаление шума с изображения* Удаление ненужных объектов с фото* Гибкое и простое редактирование фото с помощью эскизов и цветов
== См. также ==
128
правок

Навигация