Задача трансляции изображений

Материал из Викиконспекты
Перейти к: навигация, поиск
Эта статья находится в разработке!


Определение:
Задача трансляции изображения (англ. Image-to-image translation) — это задача из области компьютерного зрения, цель которой состоит в том, чтобы научиться строить соответствия между входным и выходным изображениями, используя тренировочные данные.

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

Рис. 1. Пример трансляции изображения: превращение лошади в зебру.[1]

Описание задачи

Задача разделяется на два типа в зависимости от тренировочных данных.
В одном случае, у нас есть четкое представление результата, который должен получиться, а в другом случае, его нет, но есть множество, определяющее стиль желаемого результата (Рис. 2).

Рис. 2. Виды тренировочных данных для трансляции изображений. [2]

Обучение на парах изображений

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

Примерами приложения этого алгоритма являются следующие трансляции изображений:

  • черно-белое изображение — цветное;
  • сегментация изображения (англ. segmentation map) — реальная картинка;
  • линии-края (англ. edges) — фотография;
  • генерация разных поз и одежды на человеке;
  • описывающий изображение текст — фотография.

Некоторые примеры изображены на Рис. 3.

Рис. 3. Примеры применения алгоритма трансляции изображений, обученном на парных тренировочных данных. (Pix2Pix)[3]

Обучение на независимых множествах

Алгоритм трансляции изображений, обученный на двух независимых множествах — это такой алгоритм трансляции изображений, тренировочные данные которого состоят из двух независимых групп, описывающих свой стиль, цель которого научиться отображать одну группу в другую так, чтобы содержание изображений (общее) сохранялось, а стиль (уникальные элементы изображений) переносился.

Пример:

  • тренировочные данные — два множества: {реальные фотографии}, {картины К. Моне};
  • приложение — взяли любую фотографию, например, поле с цветами; получили поле с цветами в стиле К. Моне.
Рис. 4. Примеры применения алгоритма трансляции изображений, обученном на двух независимых множествах. (CycleGan)[1]

Pix2Pix

Pix2Pix[3] — это подход для трансляции изображений с помощью глубоких сверточных нейронных сетей.

Архитектура

Рис. 5. Пример процесса обучения генератора и дискриминатора для Pix2Pix. [4]

Pix2Pix реализует архитектуру условных порождающих состязательных сетей (англ. CGAN), где для генератора взята архитектура, основанная на U-Net[5], а для дискриминатора используется сверточный классификатор PatchGAN[6], который штрафует алгоритм на уровне участков изображения.

Генератор CGAN'a работает следующим образом: на вход подается one-hot вектор класса x и вектор шума z, в результате прохода через условный генератор выдается сгенерированное изображение этого класса. Таким образом, генератор можно представить, как следующую функцию: G:{x,z}y.
Генератор Pix2Pix работает cхожим образом, но вместо вектора класса подается изображение, а вектор шума и вовсе убирается, потому что он не вносит достаточно стохастичности в результат работы генератора.

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

Генератор

Рис. 6. Архитектура Pix2Pix генератора. [7]

Для генератора Pix2Pix используется U-net-генератор.
U-net-генератор[5] — это модель encoder-decoder с добавлением пропускаемых соединений (англ. skip-connections) между зеркальными слоями в стеках кодировщика и декодера.

Алгоритм работы генератора:

  • на вход подается изображение;
  • далее последовательно применяются свертка, батч-нормализация (англ. Batch Norm layer), функция активации LeakyReLU и пулинг, что, тем самым, уменьшает количество признаков;
  • при этом, следуя архитектуре U-net, добавляются пропускаемые соединения между каждым слоем i и слоем ni, где n — общее количество слоев; каждое пропускаемое соединение просто объединяет все каналы на уровне i с другими на слое ni; таким образом, информация, которая могла быть сильно сжата (потеряна), может доходить до некоторых более поздних слоев;
  • после того, как получен слой минимального размера, начинается работа декодера, который делает то же, что и кодировщик, с отличием в слое, обратном пулингу, который увеличивает количество признаков;
  • также в декодере добавляется dropout, чтобы достигнуть стохастичности на выходе генератора.

Генератор должен не только обмануть дискриминатор, но и приблизиться к истине, поэтому его функция ошибки выглядит следующим образом:
L(G)=BCELoss[8] +λni=1|generated_outputreal_output|, где |generated_outputreal_output| — попиксельная разница.

Дискриминатор

Рис. 7. Архитектура PatchGAN дискриминатора. [9]

Для дискриминатора данной сети используется сверточный дискриминатор PatchGAN.

PatchGAN дискриминатор[6] — это тип дискриминатора для генеративных состязательных сетей, который штрафует алгоритм на уровне локальных фрагментов (патчей).
Дискриминатор PatchGAN пытается определить, является ли каждый фрагмент размера N×N изображения настоящим или поддельным. Этот дискриминатор сверточно запускается по изображению, усредняя все ответы, чтобы посчитать окончательный результат D.
Проще говоря, для каждого фрагмента определяется матрица классификаций, где все значения находятся в промежутке [0,1], где 0 — подделка. Проходясь сверткой, в итоге получаем конечную матрицу классификаций. Таким образом, для поддельного изображения от генератора PatchGan должен попытаться вывести матрицу нулей.
Интересно, что N может быть намного меньше полного размера изображения и при этом давать результаты высокого качества. Это выгодно, потому что меньший PatchGAN имеет меньше параметров, работает быстрее и может применяться к изображениям большого размера.
Такой дискриминатор эффективно моделирует изображение как Марковское случайное поле[10], предполагая независимость между пикселями, разделенных диаметром более одного фрагмента.

Полное описание архитектуры

Для того, чтобы описать полный порядок работы Pix2Pix, обратимся к примеру:

Пусть у вас есть набор пар, состоящий из реальных фотографий и их сегментаций. Задача состоит в том, чтобы  научиться генерировать из сегментированных изображений реальные.

  • помещается сегментированное изображение в генератор U-Net, и он генерирует некоторый выход;
  • дальше сгенерированное изображение соединяется с исходным входным сегментированным изображением, и это все идет в PatchGan дискриминатор, который выводит матрицу классификации, состоящую из значений между 0 и 1, которая показывает, насколько реальны или поддельны разные части этого изображения;
  • затем для вычисления ошибки дискриминатора проводится 2 сравнения:
    • сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным сегментированным изображением} с матрицей из всех 0;
    • матрицы классификация от {объединения реального изображения с исходным входным сегментированным изображением} с матрицей из всех 1;
  • затем для вычисления ошибки генератора проводится сравнение матрицы классификации от {объединения сгенерированного изображения с исходным входным изображением} с матрицей из всех 1, которое считается с помощью BCE Loss, которое впоследствии суммируется с попиксельным сравнением реального изображения со сгенерированным, домноженным на λ;
Рис. 8. Архитектура Pix2Pix. [11]

Примеры

Для тестирования решения были проведены следующие эксперименты:

  • сегментированные изображения фотографии;
  • нарисованная карта фотоснимок;
  • черно-белые фотографии цветные фотографии;
  • линии-края фотографии;
  • эскизы-рисунки фотографии;
  • день ночь;

и так далее.

Рис. 9. Примеры Pix2Pix. [12]

Pix2PixHD

Рис. 10. Генератор Pix2PixHD. [4]

Pix2PixHD[13]— нейронная сеть, основанная на архитектуре Pix2Pix, которая является новым удачным подходом для решения задачи получения изображений высокого разрешения из сегментированных изображений.

Основа Pix2Pix была улучшена за счет изменений в генераторе, дискриминаторе и функции ошибки.

Генератор был разбит на две подсети G1 и G2 так, что первая приняла роль глобальной сети генератора, а вторая стала локальным усилителем сети. Таким образом, генератор стал задаваться набором G={G1,G2}. Глобальная сеть генератора работает с изображениями с разрешением 1024×512, в то время как локальный усилитель сети принимает на вход изображения с разрешением в 4 раза больше размера вывода предыдущей сети. Для получения изображений большего разрешения могут быть добавлены дополнительные локальные усилители сети.

Чтобы различать реальные и синтезированные изображения с высоким разрешением, дискриминатор должен иметь большое поле восприятия. Для этого потребуется либо более глубокая сеть, либо более крупные сверточные ядра, оба из которых увеличат емкость сети и потенциально могут вызвать переобучение. Кроме того, оба варианта требуют большего объема памяти для обучения, что уже является дефицитным ресурсом для создания изображений с высоким разрешением. Для решения проблемы предлагаем используется 3 дискриминатора, которые имеют идентичную структуру сети, но работают с разными масштабами изображения[14].

Функция ошибки была улучшена за счет добавления ошибки в разных масштабах изображения, для вычисления которой будем использовать выдаваемые значения дискриминатора на разных слоях изображения: E(s,x)Ti=11Ni[||D(i)k(s,x)D(i)k(s,G(s))||], где T — количество слоев, Ni — количество элементов в каждом слое, s — исходное сегментированное изображение, x — соответствующее реальное изображение, G(s) — сгенерированное изображение.

Рис. 11. Пример работы Pix2PixHD — label-to-streetview.[13]
Рис. 12. Пример работы Pix2PixHD — label-to-face. [13]

CycleGAN

Нейронная сеть, в отличии от Pix2Pix позволяет реализовать решение задачи обучения на независимых множествах

Архитектура CycleGAN [2]

Архитектура

CycleGAN реализует архитектуру согласованных с циклом состязательных сетей (англ. Cycle-Consistent Adversarial Networks), суть, которой состоит в решении проблемы отсутствия парного набора данных. Сеть предоставляет подход перевода изображение из исходного домена X в целевой домен Y при отсутствии парных примеров. Цель задачи в изучении отображения G:XY, так, чтобы распределение изображений G(X) было неотличимо от распределения G(Y) с учетом состязательной потери(aнгл. Сonsistency loss). Так же что бы избежать режима коллапса(англ. Mode collapse), мы проверяем отображение G:YX, который пытается сопоставить Y и X. Другими словами для выполнения успешного преобразования должно выполниться следующее условие GYtoX(GXtoY(X))x+Сonsistency loss. Структура дискриминатора и генератора аналогичны тем, которые используются в Pix2Pix.

Функция потерь

Функция потерь должен быть выполнен таким образом что бы Дискриминатор одобрял все оригинальные изображения соответствующих категорий и отклонял все изображения, которые генерируются соответствующими Генераторами, чтобы обмануть их. Генераторы должны заставить дискриминаторы утверждать все сгенерированные изображения, чтобы обмануть их.

Примеры

Обычно применяются для следующих задач:

  • изменения стиля фотографии;
Пример работы CycleGAN

См. также

Примечания

Источники информации