Трансляция изображения - это процесс переноса изображения из одного домена в другой. Под доменом здесь подразумевается стиль или элементы, например, перевод фотографии лошади в изображение зебры, превращение дневного снимка в ночной или восстановление деталей старой фотографии
Если данные размечены (то есть у нас есть пары изображений вход-выход, например, чёрно-белая фотография и её цветной оригинал), то трансляция становится задачей обучения отображению между двумя наборами изображений. Для этого часто используется классическая модель Pix2Pix, основанная на условной GAN (cGAN)
Для этого применяют модели Pix2Pix, SPADE, OASIS
Непарные данные - это ситуация, когда у нас нет готовых пар “вход-выход”. Например, есть много фотографий лошадей и много фотографий зебр, но неизвестно, какой именно конь соответствует какой зебре. Для такого случая существуют модели неконтролируемой трансляции, как CycleGAN, которая использует принцип “циклической согласованности” (cycle-consistency loss). Эта модель обучается с помощью двух генераторов и двух дискриминаторов без использования парных примеров
Модель Pix2Pix - условная генеративно-состязательная сеть для трансляции изображения, предложенная в 2017 году. Она способна обрабатывать изображения с разрешением 256x256
В качестве дискриминатора в модели используется сеть PatchGAN - свёрточная сеть, которая классифицирует не всё изображение целиком, а каждый его небольшой отдельный патч (область пикселей). Дискриминатор выдаёт матрицу оценок, где каждый элемент отвечает за реалистичность своего маленького фрагмента картинки. Такой подход заставляет генератор лучше прорабатывать локальные детали и текстуры
В качестве генератора используется модель U-Net, в архитектуре которой кодировщик и декодировщик помимо основной связи есть соединения с пропуском (skip-connections)
Ее модификация, Pix2PixHD, уже может обрабатывать изображения с разрешением 2048x1024
В ней уже есть два генератора: глобальный и локальный
Также используются 3 дискриминатора - каждый обрабатывает признаки разного масштаба: один дискриминатор обрабатывает изображение в исходном разрешении, второй - в два раза меньше, а третий - в четыре раза меньше
Пусть дана семантическая сегментация изображения, и нужно на основе нее сгенерировать изображение. Сегментация же представляется в виде одноканального изображения, где значение пикселя - это номер класса объекта
Чтобы решить эту задачу, можно применить модель GauGAN - модель для синтеза фотореалистичных изображений из карт сегментации с помощью генеративно-состязательных сетей
GauGAN использует специальный блок нормализации SPADE (Spatially-Adaptive Normalization). В отличие от обычных слоёв нормализации, которые не учитывают пространственную структуру маски сегментации, SPADE использует карту сегментации для вычисления параметров масштаба и сдвига в каждом пикселе. Это не даёт сети забыть, где находятся границы объектов, что позволяет генерировать чёткие фотореалистичные изображения
Другая модель OASIS более простая и эффективная для тех же задач, которая отказывается от вспомогательных функций потерь, оставляя только состязательное обучение. OASIS перерабатывает дискриминатор в сегментационную сеть, которая понимает входную карту меток, и учится генерировать более детализированные и разнообразные изображения, особенно в редких классах объекта
Основная проблема состоит в том, что сеть строит грубое приближение, затем добавляет детали, из-за чего появляется проблема шахматной доски. Когда размер фильтра не делится нацело на сдвиг (страйд), в изображении могут появляться регулярные артефакты в виде шахматной доски
Чтобы решить ее, пришли к подходу VQ-VAE - Vector Quantized Variational Autoencoder (Векторно-квантованный вариационный автоэнкодер). Такой кодировщик:
Сжимает изображение, превращая его в набор векторов - но в отличие от обычного подхода, эти векторы получаются не непрерывными, а дискретными
Для этого используется векторное квантование: существует специальная кодовая книга, где хранятся несколько заранее подготовленных векторов. Функция кодировщика - выдать вектор (или набор векторов), который будет максимально близок к какому-то одному вектору из этой книги
В следствие этого на вход декодера подаётся не непрерывное число, а конкретный код из этой книги
Декодер, получив код из книги, способен восстановить уже очень хорошее, чёткое и качественное изображение
Однако это не решает главную задачу - генерировать новые объекты
Поэтому авторы предложили обучить дополнительную авторегрессионную модель - Prior. Эта модель учится предсказывать следующий код в последовательности, полностью учитывая всю иерархию и отношения между всеми обобщёнными кодами
На основе VQ-VAE была создана модель VQ-GAN. Эта модель позволяет генерировать изображение размером 1280x832 и была обучена на датасете ImageNet
VQ-VAE-2 использует вместо одной книги две: одна глобальная, которая отвечает за общие черты, а другая локальная, которая описывает мелкие фрагменты
Из-за этого VQ-GAN не страдает от коллапса мод и даёт более разнообразные изображения, чем многие другие генеративно-состязательные сети
Ключевая проблема в том, что сеть не может генерировать изображения объектов всех категорий одинаково хорошо, так как дискретные кодировки не всегда идеально передают сложное распределение естественных изображений
Перенос стиля - процесс совмещения оригинального изображения контента и изображения стиля, которое позволяет создавать уникальные сочетания
Классический подход состоит в том, чтобы взять предобученную свёрточную сеть (например, VGG-19) и определить матрицу Грама для карт признаков изображения стиля
Матрица Грама отвечает за взаимные корреляции между фильтрами сети, то есть она описывает текстуру или абстрактный стиль: какие цвета, формы и узоры сочетаются в изображении. Затем градиентным спуском подбирается целевое изображение, которое одновременно близко к исходному по содержимому и имеет такую же матрицу Грама, как и заданное стилевое изображение