im2im
November 3, 2021

pix2pixHD: High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs

🔗 Ссылки

https://arxiv.org/abs/1711.11585

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

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

Эта работа положила начало conditional-генерации изображений в высоком разрешении. Она используется в основе дальнейших исследований для image-to-image translation, в первую очередь SPADE, и video-to-video translation подходы.

Результат генерации по edge-map'ам

Для этого авторы предложили несколько доработок к оригинальному pix2pix-фреймворку:

  • Coarse-to-fine генератор — общие coarse-планы картинки генерируются в низком разрешении, а затем добавляются мелкие детали и текстуры
  • Multi-scale дискиминаторы — одна и та же архитектура (с разными весами) применяется к картинкам разного размера для достижения реализма на разных масштабах. Это дополнительно стабилизирует обучение
  • FM-loss — форсит генератор синтезировать изображения с "реалистичной" проекцией в латентном пространстве. Это также стабилизирует обучение
  • Использование instance-segmentation map'ов для разделения объектов внутри одного класса

🛠 Задача

Имея семантические карты синтезировать изображение, которое будет выглядеть реалистично и соответствовать семантическим картам.

В качестве семантических карт можно использовать (но не ограничиваться):

  • Карты границ
  • Карты сегментации (можно комбинировать semantic и instance)
  • Карты глубины
  • Карты сегментации поз человека

Пример:

Вход: карта сегментации и карта границ
Результат pix2pixHD

Математически задачу можно сформулировать в терминах равенства real- и fake-распределений, обусловленных на одни и те же семантические данные. Поэтому предлагается использовать GAN-фреймворк, в котором минимизируется расстояние между распределениями (например, JS или EM).

🔎 Детали

Coarse-to-fine генератор

G1 — global generator, отвечает за общий контент; G2 — local generator, добавляет мелкие детали

Генератор состоит из нескольких частей:

  • G1global-генератор, который по уменьшенному семантическому изображению генерирует реалистичную картинку того же мелкого разрешения (например, 1024x512)
  • G[k] (k > 1) — local-генераторы, которые снабжают картинку текстурами и деталями мелкими деталями

Upscale-часть G2 (и любого G[k], k > 1) принимает на вход сумму фичемап от downscale-части и от upscale-части G[k - 1]. Этот дизайн наследует идеи ResNet и UNet — генераторы высших порядков синтезируют добавочное изображение.
Это позволяет лучше течь градиентам и стабилизировать обучение, т. к. генерация контента происходит в низком разрешении*.

Хотя авторы и допускают использование нескольких генераторов, они остановились на k = 2

* Здесь неявно утверждается, что моделирование распределения реалистичных картинок — более сложная задача, чем моделирование реалистичных текстур высокого разрешения на картинках низкого разрешения.

Multi-scale дискриминатор

Чтобы не усложнять модель дискриминатора и не оверфититься, авторы предлагают использовать одну и ту же архитектуру — PatchGAN 70x70 — для разных масштабов (уменьшение в 1x, 2x, 4x раз). Каждый дискриминатор выучивает свои веса.

Благодаря разным receptive-field дискриминаторы определяют реалистичность на разных уровнях — те, что работают на уменьшенных картинках, смотрят на более глобальную структуру.

FM-loss

Дискриминатор D можно рассматривать как feature-extractor для картинки. Тогда можно потребовать, чтобы фичемапы (по сути — разные статистики по изображению) real- и fake-изображений были близки, например, по L1:

k — номер дискриминатора; i — индекс слоя; s — семантическая карта

По сути это вариант Perceptual loss'а, где в качестве сети-эмбеддера выступает дискриминатор. Для более качественных результатов можно добавить настоящий Perceptual loss с предобученной VGG, и по наблюдениям авторов это улучшает результаты:

Instance maps

Проблема instance map в том, что нельзя заранее спрогнозировать, сколько объектов каждого типа будет на изображении. Следовательно, нельзя использовать one-hot encoding — малая размерность может оказаться недостаточным, а большая ведёт к лишним бессмысленным вычислениям.

Авторы говорят, что главная информация от instance map — это границы объектов. Генератор плохо справляется с генерацией машин, когда не может отличить их друг от друга.

Для этого по instance map строится карта границ объектов и конкатенируется с картой сегментации.

Instance-level Feature Embedding

Чтобы влиять на генерируемые изображение, к картам сегментации и границ приклеивается ещё одно изображение. Оно содержит instance-averaged фичи исходной картинки.

Для этого вместе с генератором и дискриминатором обучается энкодер-декодер E, который возвращает фичемапу того же размера, что и картинка:

После обучения по латентным векторам объектов из train-сета прогоняется K-means, чтобы получить несколько векторов стиля для каждого класса. На инференсе для каждого объекта случайно выбирается один из них.

Также это даёт возможность сделать понятный интерфейс:
выбери тип дороги из вариантов {асфальт, брусчатка}

Обучение

Общий лосс состоит из LSGAN-компонент для minimax-оптимизации и FM-компоненты (+ VGG-loss) для стабилизации генератора:

λ = 10, K = 10 (для K-means)

На инференсе время генерации картинки 2048x1024 составляет 0.02–0.03с (скорость 33–50 FPS)

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

Датасеты

  • Cityscapes: 2975 / 500 картинок для обучения / валидации, разрешение 2048x1024
  • NYU Indoor RGBD: 1200 / 249 картинок, разрешение 561x427
  • ADE20K: 20210 / 2000 картинок, разрешение 512xH (все картинки разного размера, рескейлились к W=512)
  • Helen Face: 2000 / 330 картинок, разрешение 1024x1024

Для сравнений приведены данные с валидационной выборки на Cityscapes.

Компетиторы

  • pix2pix — базовая архитектура для conditional-генерации картинок небольшого разрешения. Обучена с нуля для разрешения 2048x1024
  • CRN — сеть для conditional-генерации картинок высокого разрешения, веса публично доступны

Результаты

1. Объективное сравнение

Карты сегментации получены с помощью PSPNet;
Oracle — исходная картинка (по сути качество PSPNet и upper bound для генератора)

2. Субъективное сравнение

Оценивается Human Preference Score — как часто на SbS люди выбирают наш алгоритм. Проводилось в 2 сетапах:

  • Unlimited time: без ограничения по времени
  • Limited time: с ограничением от 1/8 до 8 секунд на просмотр для понимания, как быстро заметны отличия
Unlimited time: для честности сравнения pix2pixHD обучали без instance map'ов
Limited time: чем дольше человек смотрит на пару картинок, тем лучше заметны отличия между способами генерации. То, что красная линия идёт выше зелёной, говорит о том, что pix2pixHD качественнее CRN

3. Ablation study

  • all losses vs. GAN-loss only: 68.55%
  • all losses vs. GAN-loss + FM-loss: 58.90%
  • w/ instance maps vs. w/o instance maps: 64.34%
  • multi-scale Ds vs. single D: 69.20%
Результаты для ADE20K