im2im
November 7, 2021

UNIT: Unsupervised Image-to-Image Translation Networks

🔗 Ссылки

https://arxiv.org/abs/1703.00848

https://github.com/NVlabs/imaginaire/tree/master/projects/unit

💎 Контрибьюшн

В этой статье предложен фреймворк для unsupervised image-to-image translation. Благодаря нему можно имея 2 разных домена изображений X и Y смоделировать функцию, которая переводит элемент из X в элемент из Y. Например, можно научиться превращать самоедов в корги, или более продуктовый пример: фотографии со спутника в карты местности.

Unsupervised-подход имеет смысл использовать, когда собрать обучающую выборку невозможно (например, для превращений пород собак и видов кошек), или очень дорого (например, для дневной и ночной съёмки).

Превращение собак. Для каждой пары пород учится своя сеть.

Для этого авторы усилили cycle-consistency constraint, которое используется для маппинга между доменами, до shared-latent space constraint: существует общее латентное пространство Z, такое, что любая пара соответствующих изображений (x, y) маппится в одну и ту же точку из Z; и любая точка из Z обязательно маппится в пару соответствующих изображений (x, y).

🛠 Задача

Будем говорить, что пара изображений (x, y) из множеств X и Y соответствует друг другу, если y получено из x некоторым преобразованием f. Предполагается, что хотя бы одно такое f существует. Пример: дневные и ночные фотографии.

Отличие unsupervised-подхода от привычного supervised в том, какие данные доступны во время обучения:

  • Supervised: соответствующие пары (x, y). Можно говорить, что даны примеры из совместного распределения П(P_X, P_Y).
  • Unsupervised: 2 независимых множества изображений X и Y. Если переформулировать на языке статистики, то доступны примеры из частных распределений P_X и P_Y.

В обоих случаях стоит задача выучить совместное распределение, чтобы по изображению из одного домена можно было сэмплировать соответствующие изображения из другого.

Coupling theory говорит о том, что для данных частных распределений существует бесконечное множество совместных. Мотивационный пример: если даны 2 одномерных нормальных распределения, то чтобы получить сколь угодно много совместных, можно двигать одномерные вдоль осей.

Возможное совместное распределение двух гауссиан.

Поэтому задача: "Выучить совместное распределение по частным распределениям", — является некорректно поставленной. Для конкретизации нужны дополнительные предположения о структуре совместного распределения. В случае supervised-обучения ими выступают сами сэмплы (x, y).

При unsupervised-обучении для задачи image-to-image translation часто используется cycle-consistency constraint, говорящее о том, что при переводе изображения в другой домен и обратно, оно должно быть таким же, как исходное.

Пояснение cycle-consistency из статьи про CycleGAN.

В этой статье авторы предлагают shared-latent space constraint, более сильное условие, т.к. из него можно вывести cycle-consistency (скомбинировав нужным образом эмбеддеры и генераторы):

Z — общее латентное пространство, точки которого маппятся в соотвествующие пары изображений, и наоборот.

🔎 Детали

Схема архитектуры. Пунктиром отмечены возможные общие веса, нотация 1->2 означает, что изображение преобразовано из домена 1 в домен 2; 1->1 — из домена 1 в латентное пространство и обратно в домен 1.
CoGAN = Coupled GAN, аналогичная архитектура, использующая условие shared-latent space.

После обучения для image-translation 1->2 нужно использовать композицию

F = G2 • E1

1. VAE

Энкодер и генератор рассматриваются как VAE. Энкодер выучивает распределение векторов в латентном пространстве, из которого дальше сэмплирует генератор и синтезирует изображение. Для каждого домена свой энкодер и генератор. Размерность латентного пространства в работе — dim = 512.

В качестве prior — стандартное нормальное распределение в каждой из компонент латентного вектора; энкодер оценивает только вектор мат. ожиданий, а σ = 1.

Для обучения используется reparametrization trick:

а в качестве лосса — variational upper bound*:

Второе слагаемое по сути регуляризатор того, что сгенерированное изображение будет таким же, как исходное.
Поэтому pG1распределение Лапласа, и likelihood -> max — то же самое, что и L1 -> min между картинками.

* Это выражение очень похоже на ELBO, и я не очень понимаю, в чём отличие (а если оно есть, то не понимаю мотивацию использовать именно upper bound, когда все используют ELBO).

2. Weight-sharing

Дополнительно предполагается наличие низкоуровнего общего латентного пространства H. Авторы объясняют это так: Z отвечает за высокоуровневое описание содержание, а H определяет то, какие пиксели будут отвечать за конкретные объекты на изображении.

Эта идея реализуется как несколько общих слоёв в энкодерах и генераторах. Причём если в конце энкодеров k общих слоёв, то и у генераторов в начале должно быть k общих слоёв. На практике авторы экспериментировали с 1–4 общими слоями.

Однако использование только этого механизма не гарантирует, что shared-latent space constraint будет выполнено. Но даже если латентные коды соответствующих картинок будут совпадать, то элементы векторов могут означать семантически разное!

3. GANs

GANы в этом фреймворке могут обучаться на двух типах сгенерированных изображений:

  1. Из image-reconstruction stream: X->Z->X
  2. Из image-translation stream: Y->Z->X

Авторы подчёркивают, что adversarial learning применяется только для (2), т.к. (1) может обучаться supervised (именно это и происходит при обучении VAE).

4. Cycle-consistency

Выше было сказано, что shared-latent space — более сильное условие, чем cycle-consistency. А значит, cycle-consistency является необходимым условием для shared-latent space, поэтому в процессе обучения требуется его соблюдение:

Третье слагаемое отвечает за близость (L1) исходной картинки и картинки, полученной из X->Z->Y->Z->X,
а первые два — за то, чтобы распределения латентных кодов мало отличались от prior.

🔬 Эксперименты

Объективные измерения

Для объективных экспериментов использовался датасет из фотографий со спутника и соответствующих им кусочков навигационных карт — 1096 и 1098 картинок размером 512x512 (датасет предложен в работе pix2pix). Обучение происходило в unsupervised-режиме на кропах 256x256 в течение 100K итераций.

Качество image-translation измерялось только для задачи Image->Map, поскольку кусочки карт из унимодального распределения (для мультимодального можно использовать FID, но его придумали спустя 3 месяца после публикации этой статьи).

Метрика — Accuracy по пикселям. Пиксель считается корректным, если его цвет отличается на ≤16 от GT.

Выводы:

  • Качество генерации не зависит от количества общих слоёв (b), но их отсутствие ведёт к деградации качества (d)
  • Reconstruction term важен при обучении (c), поэтому его вес должен быть достаточно большим (в экспериментах λ_2 = λ_4 — это коэффициенты при reconstruction-лоссах)
  • Отсутствие лосса для cycle-consistency также приводит к ухудшению качества (d)

Визуальное сравнение

Авторы говорят, что модель плохо справляется со случаями, когда в source-домене не хватает информации для адекватного перевода в target-домен. Например, для задачи Night->Day.

Domain Adaptation

Наиболее важный результат — sota для SVHN->MNIST, т.к. датасеты совсем из разных доменов
(SVHN — фотографии номеров домов).

Задача: имея размеченные картинки в source-домене, обучить классификатор для target-домена, в котором разметка отсутствует.

Решение:

  1. Обучить UNIT для задачи Source->Target
  2. Одновременно с этим учить классификатор C, использующий верхнеуровневые фичи дискриминатора для source-домена
  3. Последние слои дискриминаторов — общие
  4. Накинуть L1-регуляризацию на фичи с последнего слоя дискриминаторов для соответствующих картинок

Таким образом оба дискриминатора переводят картинки из обоих доменов в одно семантическое пространство, а значит для классификации можно пользоваться уже обученным классификатором C.

Ограничения подхода

  1. Поскольку в качестве prior'а в латентном пространстве выступает нормальное распределение, функция image-translation унимодальна
  2. Нестабильный алгоритм поиска оптимальной седловой точки

В следующей работе — MUNIT — предлагается фреймворк для мультимодального синтеза.