Вписывание части изображения
Inpainting — процесс восстановление испорченных или утраченных частей изображений и видео. В основном, этот процесс происходит используя фоновую информацию и заполняя недостающие данные в определенной области визуального ввода.
Методы данной области применяются как для восстановления изображений, часть которых была утрачена или подвержена некоторым дефектам, так и для редактирования изображений. С помощью современных моделей можно вырезать ненужные объекты (например, лишних людей на фотографиях), а также гибко редактировать изображения (например изменить цвет глаз у человека на фото).
Виды вписывания
Задача inpainting обычно разделяется на две задачи:
- Non-blind inpainting — информация о том, какие пиксели в изображении нужно заменить, подается на вход модели.
- Blind inpainting — модель должна сама определить, где на изображении пиксели, которые нужно заменить. Эту задачу также называют denoising (устранение шума), так как модели blind inpainting почти всегда устраняют именно шумы. В качестве шума может быть как примененный фильтр к изображению, так и наложенный текст. Пример работы модели удаления наложенного текста приведен на картинке справа.
В конспекте далее речь пойдет только про non-blind inpainting.
Простые методы
Для решения данной задачи существуют несколько разных методов. В этой части речь пойдет о простых решениях. Почти все простые методы основаны на следующей концепции: заполнение отсутствующих частей пикселями, идентичными соседним пикселям или похожими на них. Такие методы часто зависят от множества факторов и наиболее подходят для задачи устранения шума или небольших дефектов изображения. Но на изображениях, где отсутствует значительная часть данных, эти методы дают плохое качество выходного изображения.
Есть два основных простых способа восстанавливать данные:
- Быстрый пошаговый метод (англ. Fast marching method). Этот метод двигается от границ области, которую нужно закрасить, к ее эпицентру, постепенно закрашивая пиксели. Каждый новый пиксель вычисляется как взвешенная сумма известных соседних пикселей.
- Метод Навье - Стокса (англ. Navier-Stokes method). Метод основывается на том, что грани объектов в изображении должны быть непрерывными. Цвета пикселей вычисляются на основе известных областей около граней. Метод основывается на дифференциальных уравнениях в частных производных.
Глубокое обучение
Глубокого обучение позволяет в восстановлении пикселей учитывать семантику изображения (в отличие от приведенных выше способов). То есть заполнение отсутствующих областей основывается на контексте, вносимым самим изображением, объектах, находящихся на изображении, и их классах.
Современные методы машинного обучения для решения данной задачи часто базируются на глубоких нейронных сетях для классификации изображений, автокодировщиках (autoencoder) и генеративно-состязательных сетях (GAN).
Для того, чтобы понимать, какую часть изображения нужно заполнить, на вход сети кроме самого изображения подается слой маски с информацией о пикселях, где данные отсутствуют.
Сети обычно имеют модель автокодировщиков - сначала идут слои кодирующие, а потом декодирующие изображение. Функция потерь побуждает модель изучать другие свойства изображения, а не просто копировать его из входных данных в выходные. Именно предоставляет возможность научить модель заполнять недостающие пиксели.
Обучение может происходить через сравнение оригинального изображения и синтетического, сгенерированного сетью или через генеративно-состязательную сеть. Во втором случае для обучения используется дискриминатор, который определяет фейковое ли изображение подали ему на вход. В современных моделях обычно используют совмещенный подход: функции потерь зависят и от исходного изображения и от выхода дискриминатора.
В ранних моделях часто использовались два дискриминатора:
- Локальному (англ. Local Discriminator) подавался на вход только сгенерированная часть изображения.
- Глобальному (англ. Global Discriminator) подавалось на вход все изображения целиком.
Однако в современных моделях чаще используется один дискриминатор, который принимает на вход не только канал с выходным изображением, но и канал с маской (такие сети часто называются patchGAN). Современные модели чаще всего работают с масками произвольно формы (англ. free-form mask), при работе с которыми локальный дискриминатор показывает плохое качество. Именно поэтому концепция двух дискриминаторов стала не популярной.
Виды сверток
Функции потерь
Существует большое множество различных функций при при методе обучение модели через сравнение сгенерированного изображения с оригинальным. Примеры:
- L1-loss или Per-pixel loss — оценивает точность восстановления каждого пикселя по отдельности.
- — количество элементов в объекте ; — бинарная маска; — выход генератора; — оригинальное изображние (англ. ground truth); — гиперпараметр, - поэлементное перемножение.
- Perceptual loss — сравнивает признаки полученного и исходного изображений, полученные из изображения с помощью модели VGG-16.
- — изображение , в котором нестертые части заменены на части из ; — карта признаков, полученная -ым слоем VGG-16.
- Style loss — сравнивает текстуру и цвета изображений, используя матрицу Грама.
- — матрица Грамма для выполнения автокорреляции на карте признаков VGG-16; — размерность матрицы Грама.
- Total variation loss — оценивает однородность полученного изображения.
При обучении обычно используется комбинация функций потерь с некоторыми весами, которые являются гиперпараметрами. В моделях, где вдобавок используется GAN, функция потерь от выхода дискриминатора также подмешивается к итоговой функции потерь.
Примеры современных моделей
DeepFillv2
Главная идея данной модели это использование стробированной свертки, которая позволила добиться хорошего качества вписывания при восстановлении изображения с разной формы испорченными областями. Также данная модель может использовать набросок пользователя в качестве входных данных.
Более того, чтобы добиться более высокого качества вписывания, предлагается использовать вариант генеративно состязательной сети - SN-PatchGAN. Дискриминатор этой сети в каждой точке вычисляет кусочно-линейную функцию потерь, формируя таким образом
генеративно состязательных сетей, каждая из которых сосредотачивается на различных частях и свойствах изображения.Генератор, состоящий из двух сетей (грубой и сети повышающей качество изображения) также адаптируется. Обе сети используют модель кодировщик-декодировщик вместо U-Net, в которой все слои классической свертки заменены на стробированные.
SC-FEGAN
Данная модель позволяет производить высококачественные изображения лиц, учитывая передаваемые пользователем эскизы и цвета на области маски (стертых частях изображения). Иными словами пользователь может легко редактировать изображения, стирая фрагменты, которые он хочет изменить, и подставляя туда эскизы и/или цвета, которые будут отражены в генерируемом фрагменте.
Основа данной сети patchGAN - дискриминатор принимает на вход несколько каналов изображения. В данном случае помимо выходного изображения генератора и маски, дискриминатор принимает еще слой пользовательского ввода (эскизы и цвета).
Итоговая функция потерь формируется из функций сравнения изображения с оригинальным (per-pixel loss, perceptual loss, style loss) и выхода дискриминатора.
Применение
Inpainting применяется для различных целей:
- Восстановление старых фотографий
- Удаление шума с изображения
- Удаление ненужных объектов с фото
- Гибкое и простое редактирование фото с помощью эскизов и цветов