Начало работы с GANs для перевода от изображения к изображению

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

Перевод от изображения к изображению является задачей передачи стилей и характеристик от одной области изображения до другого. Исходная область является областью стартового изображения. Целевая область является желаемой областью после перевода. Приложения доменного перевода для трех демонстрационных областей изображения включают:

ПриложениеИсходная областьЦелевая область
Преобразование стиля дня к сумракуИзображения получены днемИзображения получены в сумраке
Отобразите шумоподавлениеИзображения с шумовым искажениемИзображения без видимого шума
СуперразрешениеИзображения с невысокой четкостьюИзображения высокого разрешения

Выберите GAN

Можно выполнить перевод от изображения к изображению с помощью глубокого обучения порождающие соперничающие сети (GANs). ГАНЬ состоит из сети генератора и одной или нескольких сетей различителя, которые обучены одновременно, чтобы максимизировать общую производительность. Цель сети генератора состоит в том, чтобы сгенерировать реалистические изображения в переведенной области, которую нельзя отличить от изображений в исходной области. Цель сетей различителя состоит в том, чтобы правильно классифицировать исходные обучающие данные как действительные и синтезируемые генератором изображения как фальшивка.

Тип GAN зависит от обучающих данных.

  • Контролируемые GANs имеют взаимно-однозначное отображение между изображениями во входных и выходных областях. Для примера смотрите, Генерируют Изображение из Карты Сегментации Используя Глубокое обучение (Computer Vision Toolbox). В этом примере исходная область состоит из изображений, полученных уличных сцен. Целевая область состоит из категориальных изображений, представляющих карты семантической сегментации. Набор данных предоставляет карту сегментации основной истины для каждого входного изображения обучения.

  • Безнадзорные GANs не имеют взаимно-однозначного отображения между изображениями во входных и выходных областях. Для примера смотрите, что Безнадзорный Перевод Дня к сумраку Изображений Использует МОДУЛЬ. В этом примере входные и выходные области состоят из изображений, полученных в дневном времени и условиях сумрака, соответственно. Однако содержимое сцены дневного времени и изображений сумрака отличается, таким образом, дневные изображения не имеют соответствующего изображения сумрака с идентичным содержимым сцены.

Создайте сети GAN

Image Processing Toolbox™ предлагает функции, которые позволяют вам создать популярные сети GAN. Можно опционально изменить сети путем изменения свойств, таких как количество субдискретизации операций и типа активации и нормализации. Таблица описывает функции, которые позволяют вам создать и изменить сети GAN.

СетьСоздание и функции модификации
сеть генератора pix2pixHD [1]

pix2pixHD GAN выполняет контролируемое изучение. Сеть состоит из одного генератора и одного различителя.

Создайте pix2pixHD сеть генератора использование pix2pixHDGlobalGenerator. Добавьте локальный усилитель в pix2pixHD сеть с помощью addPix2PixHDLocalEnhancer функция.

Сеть генератора CycleGAN [4]

Сеть CycleGAN выполняет безнадзорное изучение. Сеть состоит из двух генераторов и двух различителей. Первый генератор берет изображения из области A и генерирует изображения в области B. Соответствующий различитель берет изображения, сгенерированные первым генератором и действительными изображениями в области B, и пытается правильно классифицировать изображения как действительные и фальшивка. С другой стороны второй генератор берет изображения из области B и генерирует изображения в области A. Соответствующий различитель берет изображения, сгенерированные вторым генератором и действительными изображениями в области A, и пытается правильно классифицировать изображения как фальшивку и действительный.

Создайте сеть генератора CycleGAN использование cycleGANGenerator функция.

МОДУЛЬНАЯ сеть генератора [4]

Безнадзорный перевод от изображения к изображению (МОДУЛЬ) GAN выполняет безнадзорное изучение. Сеть состоит из одного генератора и двух различителей. Генератор берет изображения в обеих областях, A и B. Генератор возвращает четыре выходных изображения: два переведенных изображения (A-to-B и B-A), и два самовосстановленных изображения (A-A и B-to-B). Первый различитель берет действительное и сгенерированное изображение от области A и возвращает вероятность, что изображение действительно. Точно так же второй различитель берет действительное и сгенерированное изображение от области B и возвращает вероятность, что изображение действительно.

Создайте МОДУЛЬНУЮ сеть генератора использование unitGenerator функция. Выполните перевод от изображения к изображению в обученной сети UNIT с помощью unitPredict функция.

Сеть различителя PatchGAN [3]

Сеть различителя PatchGAN может служить сетью различителя для pix2pixHD, CycleGAN и МОДУЛЯ GANs, а также пользовательский GANs.

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

Можно также использовать patchGANDiscriminator функция, чтобы создать пиксельную сеть различителя. Эта сеть является сетью различителя PatchGAN, размер закрашенной фигуры которой является одним пикселем.

Некоторые сети требуют дополнительной модификации вне опций, доступных в сетевых функциях создания. Например, можно хотеть заменить слои сложения на слои конкатенации глубины, или можно хотеть, чтобы начальный текучий слой ReLU сети UNIT имел масштабный коэффициент кроме 0,2. Чтобы совершенствовать существующую сеть GAN, можно использовать Deep Network Designer (Deep Learning Toolbox). Для получения дополнительной информации смотрите Сети Сборки с Deep Network Designer (Deep Learning Toolbox).

Если вам нужна сеть, которая не доступна через встроенные функции создания, то можно создать пользовательские сети GAN из модульных компонентов. Во-первых, создайте модули энкодера и декодера, затем объедините модули с помощью encoderDecoderNetwork функция. Можно опционально включать мостиковое соединение, связи пропуска или дополнительные слои в конце сети. Для получения дополнительной информации смотрите, Создают Модульные Нейронные сети.

Обучите сеть GAN

Чтобы обучить генератор GAN и сети различителя, необходимо использовать пользовательский учебный цикл. Существует несколько шагов, вовлеченных в подготовку пользовательского учебного цикла. Для примера, который показывает полный рабочий процесс, смотрите, Обучают Порождающую соперничающую сеть (GAN) (Deep Learning Toolbox).

  • Создайте сети различителя и генератор.

  • Создайте одно или несколько хранилищ данных, которые читают, предварительно обрабатывают и увеличивают обучающие данные. Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения (Deep Learning Toolbox). Затем создайте minibatchqueue Объект (Deep Learning Toolbox) для каждого datastore, который справляется с мини-пакетной обработкой наблюдений в пользовательском учебном цикле.

  • Задайте функцию градиентов модели для каждой сети. Функция берет в качестве входа сеть и мини-пакет входных данных, и возвращает градиенты потери. Опционально, можно передать дополнительные аргументы функции градиентов (например, если функция потерь запрашивает дополнительную информацию), или возвратите дополнительные аргументы (например, значения потерь). Для получения дополнительной информации смотрите Функцию Градиентов Модели Define для Пользовательского Учебного Цикла (Deep Learning Toolbox).

  • Задайте функции потерь. Определенные типы функций потерь обычно используются для приложений для перевода от изображения к изображению, несмотря на то, что реализация каждой потери может варьироваться.

    • Соперничающая потеря обычно используется сетями различителя и генератором. Эта потеря использует pixelwise или patchwise различие между правильной классификацией и предсказанной классификацией различителем.

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

  • Задайте опции обучения, такие как тип решателя и номер эпох. Для получения дополнительной информации смотрите, Задают Опции обучения в Пользовательском Учебном Цикле (Deep Learning Toolbox).

  • Создайте пользовательский учебный цикл что циклы по мини-пакетам в каждую эпоху. Цикл читает каждый мини-пакет данных, оценивает градиенты модели с помощью dlfeval (Deep Learning Toolbox) функция и обновления сетевые параметры.

    Опционально, включайте функции отображения, такие как графики баллов или пакеты сгенерированных изображений, которые позволяют вам контролировать процесс обучения. Для получения дополнительной информации смотрите Монитор Процесс обучения GAN и Идентифицируйте Общие Типы отказа (Deep Learning Toolbox).

Ссылки

[1] Ван, Звон-Chun, Мин-Юй Лю, июнь-Yan Чжу, Эндрю Тао, Ян Коц и Брайан Кэйтанзаро. "Синтез изображений с высоким разрешением и Семантическая Манипуляция с Условным GANs". На 2018 Конференциях IEEE/CVF по Компьютерному зрению и Распознаванию образов, 8798–8807. Солт-Лейк-Сити, UT, США: IEEE, 2018. https://doi.org/10.1109/CVPR.2018.00917.

[2] Чжу, июнь-Yan, парк Taesung, Филип Изола и Алексей А. Эфрос. "Непарный Перевод От изображения к изображению Используя Сопоставимые с циклом Соперничающие Сети". На 2 017 Международных конференциях IEEE по вопросам Компьютерного зрения (ICCV), 2242–2251. Венеция: IEEE, 2017. https://ieeexplore.ieee.org/document/8237506.

[3] Isola, Филип, июнь-Yan Чжу, Тинхой Чжоу и Алексей А. Эфрос. "Перевод от изображения к изображению с Условными Соперничающими Сетями". На 2 017 Конференциях по IEEE по Компьютерному зрению и Распознаванию образов (CVPR), 5967–76. Гонолулу, HI: IEEE, 2017. https://arxiv.org/abs/1611.07004.

[4] Лю, Мин-Юй, Томас Бреуель и Ян Коц. "Безнадзорные Сети Перевода От изображения к изображению". Усовершенствования в Нейронных Системах обработки информации 30 (NIPS 2017). Лонг-Бич, CA: 2017. https://arxiv.org/abs/1703.00848.

Смотрите также

| | | | | |

Связанные примеры

Больше о