Изменения

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

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

484 байта убрано, 12:38, 10 января 2021
Нет описания правки
[[Файл:inpainting_network.jpg|thumb|550px|Пример GAN для inpainting.]]
В отличие от приведенных выше простых методов, глубокое обучение позволяет в процессе подрисовки восстановления изображения учитывать его семантику изображения. В этом случае заполнение алгоритм заполнения отсутствующих областей основывается на контекстетом, определяемом объектами какие объекты расположены на изображении.
Современные методы машинного обучения для решения данной задачи часто базируются Для того, чтобы понимать, какую часть изображения нужно заполнить, на глубоких нейронных сетях для классификации изображений, [[Автокодировщик|автокодировщиках (autoencoder)]] и [[Generative_Adversarial_Nets_(GAN)|генеративно-состязательных сетях (GAN)]]вход сети кроме самого изображения подается слой маски с информацией об испорченных пикселях.
Для тогоСети обычно имеют модель [[Автокодировщик|автокодировщиков (autoencoder)]] {{---}} сначала идут слои кодирующие, чтобы понимать, какую часть изображения нужно заполнить, на вход сети кроме самого а потом декодирующие изображение. Функция потерь заставляет модель изучать другие свойства изображения подается слой маски с информацией о пикселях, где данные отсутствуюта не просто копировать его из входных данных в выходные. Именно это позволяет научить модель заполнять недостающие пиксели.
Сети обычно имеют модель автокодировщиков {{Обучение может происходить через сравнение оригинального изображения и синтетического, сгенерированного сетью или через [[Generative_Adversarial_Nets_(GAN)|генеративно---}} сначала идут слои кодирующиесостязательную сеть (GAN)]]. Во втором случае для обучения используется дискриминатор, а потом декодирующие который определяет настоящее ли изображениеподали ему на вход. Функция В современных моделях обычно используют совмещенный подход: функции потерь побуждает модель изучать другие свойства зависят и от исходного изображения, а не просто копировать его из входных данных в выходные. Именно это предоставляет возможность научить модель заполнять недостающие пикселии от выхода дискриминатора.
Обучение может происходить через сравнение оригинального изображения и синтетического, сгенерированного сетью или через генеративно-состязательную сеть. Во втором случае для обучения используется дискриминатор, который определяет фейковое ли изображение подали ему на вход. В современных моделях обычно используют совмещенный подход: функции потерь зависят и от исходного изображения, и от выхода дискриминатора. В ранних моделях часто использовались применялись два дискриминатора:
# Локальный дискриминатор (англ. Local Discriminator). Ему подавалась на вход только сгенерированная часть изображения.
# Глобальный дискриминатор (англ. Global Discriminator). В данном случае на вход подавалось все изображение целиком.
Однако в современных моделях чаще используется один дискриминатор, который принимает на вход не только канал с выходным изображениемвосстановленное изображение, но и канал с маскоймаску. Современные модели чаще всего принимают на вход маски произвольной формы (англ. free-form mask), при работе с которыми локальный дискриминатор показывает плохое качество. Именно поэтому концепция двух дискриминаторов стала не популярной.
=== Виды сверток ===
=== Pluralistic Image Completion<ref>[https://github.com/lyndonzheng/Pluralistic-Inpainting Pluralistic Image Completion, Chuanxia Zheng, Tat-Jen Cham, Jianfei Cai]</ref> ===
Главное отличие данной этой модели от других {{---}} способность выдавать несколько вариантов заполнения отсутствующих областей изображения. Обычно имеется множество возможных реалистичных вариантов подрисовки восстановления изображения, однако большинство моделей выдают на выход лишь один, пытаясь получить оригинальное изображение. Используя данную модель, человек может выбрать более реалистичные генерируемые фрагменты и получить более качественное изображение на выходе.
Данная модель добивается такого эффекта путем пропускания входного изображения через две параллельные сети. Первая сеть {{---}} реконструирующая. Она пытается приблизить выходное изображение к оригинальному. Вторая сеть {{---}} генерирующая, работающая с априорным распределением отсутствующих областей и выборками известных пикселей. Каждая сеть имеет свой дискриминатор, помогающий обучить модель. Кроме выхода дискриминатора для обучения также используются функции сравнения полученного изображения с оригинальным.
=== EdgeConnect<ref>[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]</ref> ===
Данная модель EdgeConnect разбивает задачу вписывания на две части:
# Выделение границ изображения и предсказание границ утраченной части изображения.
# Использование сгенерированных границ для заполнения утраченной части изображения.
Для генерации ребер сначала выделяются границы существующей части изображения с помощью Canny edge detector<ref>[https://en.wikipedia.org/wiki/Canny_edge_detector Canny edge detector, Wikipedia]</ref>. Потом полученная граница вместе с маской и черно-белым изображением дается генератору. В качестве целевой функции потерь для тренировки сети берется комбинация двух функций: adversarial loss и feature-matching loss. Также для стабилизация обучения генератора и дискриминатора используется спектральная нормализация.
Для восстановления генератору дается генератор получает на вход испорченное изображение и границы изображения, которые составлены из реальных и сгенерированных на предыдущем этапе. И в В результате генерируется полное изображение. Также как и на предыдущем этапе используется составная функция потерь из: adversarial loss, perceptual loss и style loss.
Однако, данной сети не удается предсказать достаточно хорошую границу, если отсутствует большая часть изображения или объект имеет сложную структуру.
Также данную модель можно использовать для соединения двух изображений или удаления лишних объектов с фотографий.
=== Deep Image Prior<ref>[https://arxiv.org/pdf/1711.10925v4.pdf Deep Image Prior, Dmitry Ulyanov, Andrea Vedaldi, Victor Lempitsky]</ref> ===
Как известно, большинство методов глубокого обучения требуют больших наборов данных для тренировки. В отличии отличие от них данный метод Deep Image Prior не требует никакой предварительной обучающей выборки кроме одного изображения, которое надо исправить. Сеть Для этого сеть учится извлекать полезную информации из самого обрабатываемого изображения. Данный метод может применяться применяется для таких задач как вписывание части изображения, удаление шума и увеличение разрешения фотографий.
Сформулируем данную задачу как задачу минимизации:
<tex>\theta^{*} = \underset{\theta} {\mathrm{argmin}} ~E(f_{\theta}(z), x_0) , \;\ ; x^{*} = f_{\theta^{*}}(z) \;\; (1)</tex>,
<tex>E(x, x_0)</tex> {{---}} это функция потерь, зависящая от решаемой задачи, а <tex>f_{\theta}(z)</tex> {{---}} некоторая сверточная сеть.
# Инициализируем <tex>\theta</tex> рандомными весами.
# На каждой итерации:
## Сеть <tex>f</tex> с текущими весами <tex>\theta</tex> получает на вход фиксированный тензор <tex>z</tex> и возвращает реставрированное восстановленное изображение <tex>x</tex>.
## С помощью сгенерированного изображения x и исходного изображения <tex>x_0</tex> вычисляется функция потерь <tex>E(x;x0)</tex>.
## Веса <tex>\theta</tex> обновляются так, чтобы минимизировать вышеприведенное уравнение(1).
В качестве <tex>f</tex> предлагается использовать сеть U-net с пропускающими соединениями.
Анонимный участник

Навигация