Задача трансляции изображений
Определение: |
Задача трансляции изображения (англ. Image-to-image translation) — это задача из области компьютерного зрения, цель которой состоит в том, чтобы научиться строить соответствия между входным и выходным изображениями, используя тренировочные данные. |
Другими словами, задача состоит в том, чтобы научиться преобразовывать изображение из одной области в другую, получая в итоге изображение со стилем (характеристиками) последней.
Содержание
Описание задачи
Задача разделяется на два типа в зависимости от тренировочных данных.
В одном случае, у нас есть четкое представление результата, который должен получиться, а в другом случае, его нет, но есть множество, определяющее стиль желаемого результата (Рис. 2).
Обучение на парах изображений
Алгоритм трансляции изображений, обученный на парах изображений — это алгоритм трансляции одного изображения в другое, где тренировочные данные состоят из множества, в котором каждому входному изображению соответствует выходное изображение, содержащее первое с другим стилем.
Примерами приложения этого алгоритма являются следующие трансляции изображений:
- черно-белое изображение — цветное;
- сегментация изображения (англ. segmentation map) — реальная картинка;
- линии-края (англ. edges) — фотография;
- генерация разных поз и одежды на человеке;
- описывающий изображение текст — фотография.
Некоторые примеры изображены на Рис. 3.
Обучение на независимых множествах
Алгоритм трансляции изображений, обученный на двух независимых множествах — это такой алгоритм трансляции изображений, тренировочные данные которого состоят из двух независимых групп, описывающих свой стиль, цель которого научиться отображать одну группу в другую так, чтобы содержание изображений (общее) сохранялось, а стиль (уникальные элементы изображений) переносился.
Пример:
- тренировочные данные — два множества:
{реальные фотографии}, {картины К. Моне}
; - приложение — взяли любую фотографию, например, поле с цветами; получили поле с цветами в стиле К. Моне.
Pix2Pix
Pix2Pix[3] — это подход для трансляции изображений с помощью глубоких сверточных нейронных сетей.
Архитектура
Pix2Pix реализует архитектуру условных порождающих состязательных сетей (англ. CGAN), где для генератора взята архитектура, основанная на U-Net[5], а для дискриминатора используется сверточный классификатор PatchGAN[6], который штрафует алгоритм на уровне участков изображения.
Генератор CGAN'a работает следующим образом: на вход подается one-hot вектор класса x и вектор шума z, в результате прохода через условный генератор выдается сгенерированное изображение этого класса. Таким образом, генератор можно представить, как следующую функцию:
Генератор Pix2Pix работает cхожим образом, но вместо вектора класса подается изображение, а вектор шума и вовсе убирается, потому что он не вносит достаточно стохастичности в результат работы генератора.
Генератор обучается создавать максимально правдоподобные выходные изображения, дискриминатор же учится как можно лучше отличать фальшивые изображения от реальных.
Генератор
Для генератора Pix2Pix используется U-net-генератор.
U-net-генератор[5] — это модель encoder-decoder с добавлением пропускаемых соединений (англ. skip-connections) между зеркальными слоями в стеках кодировщика и декодера.
Алгоритм работы генератора:
- на вход подается изображение;
- далее последовательно применяются свертка, батч-нормализация (англ. Batch Norm layer), функция активации LeakyReLU и пулинг, что, тем самым, уменьшает количество признаков;
- при этом, следуя архитектуре U-net, добавляются пропускаемые соединения между каждым слоем и слоем , где — общее количество слоев; каждое пропускаемое соединение просто объединяет все каналы на уровне с другими на слое ; таким образом, информация, которая могла быть сильно сжата (потеряна), может доходить до некоторых более поздних слоев;
- после того, как получен слой минимального размера, начинается работа декодера, который делает то же, что и кодировщик, с отличием в слое, обратном пулингу, который увеличивает количество признаков;
- также в декодере добавляется dropout, чтобы достигнуть стохастичности на выходе генератора.
Генератор должен не только обмануть дискриминатор, но и приблизиться к истине, поэтому его функция ошибки выглядит следующим образом:
[8] , где — попиксельная разница.
Дискриминатор
Для дискриминатора данной сети используется сверточный дискриминатор PatchGAN.
PatchGAN дискриминатор[6] — это тип дискриминатора для генеративных состязательных сетей, который штрафует алгоритм на уровне локальных фрагментов (патчей).
Дискриминатор PatchGAN пытается определить, является ли каждый фрагмент размера изображения настоящим или поддельным. Этот дискриминатор сверточно запускается по изображению, усредняя все ответы, чтобы посчитать окончательный результат .
Проще говоря, для каждого фрагмента определяется матрица классификаций, где все значения находятся в промежутке , где — подделка. Проходясь сверткой, в итоге получаем конечную матрицу классификаций. Таким образом, для поддельного изображения от генератора PatchGan должен попытаться вывести матрицу нулей.
Интересно, что может быть намного меньше полного размера изображения и при этом давать результаты высокого качества. Это выгодно, потому что меньший PatchGAN имеет меньше параметров, работает быстрее и может применяться к изображениям большого размера.
Такой дискриминатор эффективно моделирует изображение как Марковское случайное поле[10], предполагая независимость между пикселями, разделенных диаметром более одного фрагмента.
Полное описание архитектуры
Для того, чтобы описать полный порядок работы Pix2Pix, обратимся к примеру:
Пусть у вас есть набор пар, состоящий из реальных фотографий и их сегментаций. Задача состоит в том, чтобы научиться генерировать из сегментированных изображений реальные.
- помещается сегментированное изображение в генератор U-Net, и он генерирует некоторый выход;
- дальше сгенерированное изображение соединяется с исходным входным сегментированным изображением, и это все идет в PatchGan дискриминатор, который выводит матрицу классификации, состоящую из значений между 0 и 1, которая показывает, насколько реальны или поддельны разные части этого изображения;
- затем для вычисления ошибки дискриминатора проводится 2 сравнения:
- сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным сегментированным изображением} с матрицей из всех 0;
- матрицы классификация от {объединения реального изображения с исходным входным сегментированным изображением} с матрицей из всех 1;
- затем для вычисления ошибки генератора проводится сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным изображением} с матрицей из всех 1, которое считается с помощью BCE Loss, которое впоследствии суммируется с попиксельным сравнением реального изображения со сгенерированным, домноженным на ;
Примеры
Для тестирования решения были проведены следующие эксперименты:
- сегментированные изображения фотографии;
- нарисованная карта фотоснимок;
- черно-белые фотографии цветные фотографии;
- линии-края фотографии;
- эскизы-рисунки фотографии;
- день ночь;
и так далее.
Pix2PixHD
Pix2PixHD[13]— нейронная сеть, основанная на архитектуре Pix2Pix, которая является новым удачным подходом для решения задачи получения изображений высокого разрешения из сегментированных изображений.
Основа Pix2Pix была улучшена за счет изменений в генераторе, дискриминаторе и функции ошибки.
Генератор был разбит на две подсети
и так, что первая приняла роль глобальной сети генератора, а вторая стала локальным усилителем сети. Таким образом, генератор стал задаваться набором . Глобальная сеть генератора работает с изображениями с разрешением , в то время как локальный усилитель сети принимает на вход изображения с разрешением в 4 раза больше размера вывода предыдущей сети. Для получения изображений большего разрешения могут быть добавлены дополнительные локальные усилители сети.Чтобы различать реальные и синтезированные изображения с высоким разрешением, дискриминатор должен иметь большое поле восприятия. Для этого потребуется либо более глубокая сеть, либо более крупные сверточные ядра, оба из которых увеличат емкость сети и потенциально могут вызвать переобучение. Кроме того, оба варианта требуют большего объема памяти для обучения, что уже является дефицитным ресурсом для создания изображений с высоким разрешением. Для решения проблемы предлагаем используется 3 дискриминатора, которые имеют идентичную структуру сети, но работают с разными масштабами изображения[14].
Функция ошибки была улучшена за счет добавления ошибки в разных масштабах изображения, для вычисления которой будем использовать выдаваемые значения дискриминатора на разных слоях изображения:
, где — количество слоев, — количество элементов в каждом слое, — исходное сегментированное изображение, — соответствующее реальное изображение, — сгенерированное изображение.См. также
- Компьютерное зрение
- Generative Adversarial Nets (GAN)
- Сверточные нейронные сети
- Сегментация изображений
Примечания
- ↑ 1,0 1,1 CycleGAN — GitHub
- ↑ CycleGAN — Towardsdatascience
- ↑ 3,0 3,1 Pix2Pix — GitHub
- ↑ 4,0 4,1 Pix2Pix — Towardsdatascience
- ↑ 5,0 5,1 U-Net: Convolutional Networks for Biomedical Image Segmentation
- ↑ 6,0 6,1 Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks
- ↑ Pix2Pix GAN Models — Machine Learning Mastery
- ↑ BCE Loss — towardsdatascience
- ↑ The PatchGAN structure — ResearchGate
- ↑ Markov random field — Wikipedia
- ↑ Pix2pix UNet_128 GAN network architecture — ResearchGate
- ↑ Sik-Ho Tsang
- ↑ 13,0 13,1 13,2 Pix2PixHD — GitHub
- ↑ High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
Источники информации
- Image-to-Image Translation with Conditional Adversarial Networks
- High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
- Learning image-to-image translation using paired and unpaired training samples
- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
- Apply Generative Adversarial Networks (GANs) — Coursera