Перевод изображения - модель pix2pix

машинное обучение

1. Введение

Многие проблемы обработки изображений, компьютерной графики и компьютерного зрения можно рассматривать какВходное изображение «переводится» в соответствующее выходное изображение.. «Перевод» часто используется для перевода между языками, например, для перевода между китайским и английским языками. Но перевод изображения означаетПреобразование изображения в изображение в различных формах. Например, сцена изображения может быть представлена ​​в виде изображения RGB, поля градиента, карты границ, карты семантических меток и т. д. Эффект показан ниже.

image.png

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

2. Основная идея

2.1 Структурированные потери для моделирования изображений

Проблемы преобразования изображения в изображение обычно решаются с точки зрения классификации пикселей или регрессии. Эти формулировки рассматривают выходное пространство как «неструктурированное», то есть каждый выходной пиксель считается условно независимым от всех других пикселей данного входного изображения. Принимая во внимание, что cGAN (условный GAN) отличаются тем, что изучают структурированные потери и теоретически могут наказывать любую возможную структуру между выходом и целью.

2.2 cGAN

До этого многие исследователи использовали GAN для достижения впечатляющих результатов в отрисовке, прогнозировании будущего состояния, обработке изображений с пользовательскими ограничениями, передаче стилей и суперразрешении, но каждый метод адаптирован для конкретного приложения. Фреймворк Pix2pix отличается тем, что в нем нет конкретного приложения. Он также отличается от предыдущей работы несколькими вариантами архитектуры генератора и дискриминатора. Для генератора мы используем архитектуру на основе «U-Net», для дискриминатора мы используем сверточный классификатор «PatchGAN», который наказывает структуру только в масштабе фрагментов изображения.

Pix2pix основан на идее cGAN. Когда cGAN входит в сеть G, он не только вводит шум, но и вводит условие, а поддельные изображения, генерируемые сетью G, будут затронуты конкретным условием. Затем, если изображение используется в качестве условия, сгенерированные поддельные изображения имеют соответствующую связь с изображениями условий, тем самым реализуя процесс преобразования изображения в изображение. Схема Pixpix выглядит следующим образом:

image.png

Структура сети Pix2pix показана на рисунке выше.Генератор G использует структуру U-Net.Входное контурное изображение x кодируется и декодируется в реальное изображение.Дискриминатор D использует условный дискриминатор PatchGAN, предложенный автором. Роль дискриминатора D состоит в том, чтобы судить о сгенерированном изображении G(x) как о ложном и истинном для реального изображения при условии отображения контура x.

2.3 Сравнение cGAN и Pix2pix

image.png

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

Целевая функция общих cGAN выглядит следующим образом:

L_{cGAN}(G, D) =E_{x,y}[log D(x, y)]+E_{x,z}[log(1 − D(x, G(x, z))]

где G пытается минимизировать цель, а D пытается ее максимизировать, т. е.:\rm G^∗ =arg; min_G; max_D ;L_{cGAN}(G, D)

Для сравнения, обучите заодно и обычный ГАН, то есть пусть только D судит, настоящее ли это изображение.

\rm L_{cGAN}(G, D) = E_y[log D(y)]+ E_{x,z}[log(1 − D(G(x, z))]

Для задач преобразования изображений ввод и вывод G на самом деле совместно используют много информации, например задачи раскрашивания изображения, а дополнительная информация используется совместно вводом и выводом. Поэтому, чтобы обеспечить сходство между входным изображением и выходным изображением, также добавляется L1 Loss:

\rm L_{L1}(G) = E_{x,y,z}[||y − G(x, z)||_1]

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

Окончательная функция потерь:

\rm G^∗ = arg;\underset{G}{min};\underset{D}{max}; L_{cGAN}(G, D) + λL_{L1}(G)

3. Сетевая архитектура (сетевая архитектура)

И генератор, и дискриминатор используют модуль convolution-BatchNorm-ReLu.

3.1 Создание сети G

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

image.png

Структура U-Net основана на модели кодировщик-декодер, а кодировщик и декодер являются симметричными структурами. Отличие U-Net в том, что i-й слой и n-i-й слой соединены, где n — общее количество слоев, и такое соединение называется пропускным соединением. Размеры изображений i-го слоя и n-i-го слоя одинаковы, и можно считать, что они несут одинаковую информацию.

3.2 Дискриминантная сеть D

Изображение, восстановленное с функциями потерь L1 и L2, очень размыто, то есть L1 и L2 не могут хорошо восстановить высокочастотную часть изображения (края изображения и т. д.), но могут восстановить низкочастотную часть цветового блока изображения).

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

Чтобы лучше оценить часть изображения, дискриминантная сеть Pix2pix использует структуру patchGAN, то есть изображение делится на несколько фрагментов фиксированного размера, и подлинность каждого фрагмента оценивается отдельно, и, наконец, среднее значение принимается как D. Наконец, выход. Преимущества этого:

  • Ввод D становится меньше, объем вычислений небольшой, а скорость обучения высокая.
  • Поскольку G сама по себе является полностью сверточной, масштаб изображения не ограничен. И если D будет обрабатывать образ в соответствии с Патчем, ограничений на размер изображения нет. Это позволит всему фреймворку Pix2pix не иметь ограничений на размер изображения, увеличивая масштабируемость фреймворка.

В документе PatchGAN рассматривается как еще одна форма потери текстуры или стиля. В конкретных экспериментах использовались нашивки разного размера, и оказалось, что больше подходит размер 70х70.

3.3 Оптимизация и вывод

Обучение проводилось с использованием стандартного подхода: попеременное обучение D и G, а также с использованием минипакетного SGD и оптимизатора Adam.

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

4. Интерпретация исходного кода

Эта часть в основном предназначена для интерпретации исходного кода статьи:GitHub.com/Военные учения/Пак Ючон….

image.png

  • файловый поезд:

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

--model: e.g.,pix2pix,cyclegan,colorization

--dataset_mode: e.g.,aligned,unaligned,single,colorization)

  • файловый тест:

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

4.1 Данные папки:

Файлы в этом каталоге содержат загрузку и обработку данных, и пользователи могут создавать свои собственные наборы данных. Файлы под данными подробно описаны ниже:

  • __init__.py:Реализуйте интерфейс между пакетом и сценариями обучения и тестирования. train.py и test.py упакованы в соответствии с заданной опцией для создания набора данных.from data import create_datasetиdataset = create_dataset(opt)
  • **base_dataset.py:** наследует класс набора данных и абстрактный базовый класс torch, и этот файл также включает некоторые общие методы преобразования изображений для удобства последующих подклассов.
  • **image_folder.py:** Изменен код официальной папки изображений pytorch, чтобы изображения можно было загружать из текущего каталога и подкаталогов.
  • **template_dataset.py:** Предоставьте шаблоны и ссылки для создания собственных наборов данных и аннотируйте некоторые детали.
  • aligned_dataset.py и **unaligned_dataset.py:**Разница в том, что первый загружает пару изображений {A,B} из одной папки, а второй загружает {A},{B} из двух разных папок.
  • **single_dataset.py:** Загрузить только одно изображение по указанному пути.
  • **colorization_dataset.py:** Загрузите изображение RGB и преобразуйте его в пару (L, ab). В цветовом пространстве Lab для рисования цветовой модели используется pix2pix.

4.2 Папкимодели:

Модули, входящие в модели: целевая функция, оптимизатор, сетевая архитектура. Файлы под моделями подробно описаны ниже:

  • __init__.py:Чтобы реализовать интерфейс между пакетом и сценариями обучения и тестирования.train.py и test.pyСоздайте модель на основе данного пакета опций optfrom models import create_model и model = create_model(opt).
  • base_model.py:Унаследован от абстрактного класса, а также включает некоторые другие часто используемые функции:setup,test,update_learning_rate,save_networks,load_networks, который будет использоваться в подклассах.
  • template_model.py:Шаблон для реализации собственной модели с аннотациями некоторых деталей.
  • pix2pix_model.py:Реализована модель pix2pix, набор данных для обучения модели.--dataset_mode aligned,по умолчанию--netG unet256 --netD basicдискриминатор (PatchGAN). --gan_mode vanillaПотеря GAN (стандартная перекрестная энтропия).
  • **colorization_model.py:** наследует pix2pix_model. Модель делает следующее: сопоставляет черно-белые изображения с цветными изображениями.-dataset_model colorizationнабор данных. по умолчанию,colorizationнабор данных будет установлен автоматически--input_nc 1and--output_nc 2.
  • **cycle_gan_model.py:** для реализации модели циклагана.--dataset_mode unalignedнабор данных,--netG resnet_9blocksгенератор ResNet,--netD basicдискриминатор (PatchGAN, представленный pix2pix), GAN методом наименьших квадратовobjective(--gan_mode lsgan)
  • **networks.py:** содержит сетевую архитектуру генератора и дискриминатора, уровни нормализации, метод инициализации, структуру оптимизатора (политику скорости обучения), целевую функцию GAN (vanilla,lsgan,wgangp).
  • **test_model.py:** используется для генерации результатов циклагана, модель устанавливается автоматически.--dataset_mode single.

4.3 Папкиoptions:

Содержит настройки обучающего модуля и тестового модуляTrainOptions和TestOptionsобаBaseOptionsподкласс . Детализирует файлы в разделе options.

  • **init.py:** Этот файл используется для того, чтобы интерпретатор Python рассматривал папку параметров как пакет.
  • **base_options.py:** Помимо опций, используемых при обучении и тестировании, есть еще несколько вспомогательных методов: парсинг, печать, сохранение опций.
  • **train_options.py:**Параметры, необходимые для обучения.
  • test_options.py: параметры, необходимые для тестирования.

4.4 Папкиутилиты:

В основном содержит некоторые полезные инструменты, такие как визуализация данных. Детализируйте файлы под utils:

  • **init.py:** Этот файл используется для того, чтобы интерпретатор Python рассматривал папку utils как пакет.
  • **get_data.py:** скрипт для загрузки набора данных.
  • **html.py:** Сохраните изображение и напишите его как HTML. На основе DOM API в diminate.
  • **image_pool.py:** реализовать буфер для хранения ранее созданных изображений.
  • **visualizer.py:** сохраните изображение и отобразите его.
  • **utils.py:** содержит некоторые вспомогательные функции: преобразование tensor2numpy, mkdir для диагностики сетевых градиентов и т. д.

5. Резюме и перспективы

5.1 Преимущества и недостатки pix2pix

Модель Pix2pix представляет собой однозначное сопоставление между x и y**. Другими словами, pix2pix — это реконструкция наземной истины: входная контурная карта → декодируется в соответствующий вектор посредством кодирования Unet → декодируется в реальное изображение. Область применения этого сопоставления один к одному очень ограничена.Когда разрыв между входными данными и данными в обучающем наборе велик, сгенерированные результаты, вероятно, будут бессмысленными, что требует, чтобы наш набор данных охватывал различные типы. насколько это возможно.

В этой статье изложены все основные моменты статьи Pix2Pix, в том числе:

  • cGAN, вход представляет собой изображение вместо случайного вектора
  • U-Net, используя пропускное соединение для обмена дополнительной информацией
  • Соедините вход с D, чтобы обеспечить сопоставление
  • Патч-D для уменьшения количества вычислений и увеличения эффекта
  • Добавление функции потерь L1 для обеспечения согласованности между входом и выходом

5.2 Резюме

В настоящее время вы можетеМОнаходится в центре приложений платформыpix2pixGAN, вы можете испытать экспериментальную часть бумаги, изображение архитектурной этикетки → фото (Архитектурные этикетки → фото), скороЭскиз рисунка здания, который вы рисуете, создается в вашем воображении как коттедж.. В процессе обучения, если вы столкнетесь с трудностями или обнаружите наши ошибки, вы можете связаться с нами в любое время.

Благодаря этой статье у вас должно быть предварительное понимание структуры сети и принципа реализации модели Pix2pix, а также предварительная реализация ключевых частей кода. Если вы знакомы с тензорным потоком глубокого обучения, вы можете обратиться кверсия тензорного потока реализует Pix2pix; Если вы знакомы с инфраструктурой pytorch, вы можете обратиться кpytorch реализует Pix2pix; Если вы хотите узнать больше о принципе работы starGAN, вы можете обратиться кбумага.

6. Ссылка:

1. Тезис:АР Вест V.org/PDF/1611.07…

2. Официальный сайт Pix2pix:phillipi.github.io/pix2pix/

3. Код версии PyTorch:GitHub.com/Филлип и/Пи…

4. Версия тензорного потока кода:GitHub.com/Также Чен Линь/…

5. Версия тензорного потока кода:GitHub.com/аффинный слой…

6. Чжиху:zhuanlan.zhihu.com/p/38411618

7. Чжиху:zhuanlan.zhihu.com/p/55059359

8. Блог:blog.CSDN.net/QQ_16137569…

9. Блог:blog.CSDN.net/inf INI he_LV…

10. Блог:blog.CSDN.net/WeChat_3647…

о нас

Mo(URL:momodel.cn) поддерживает PythonПлатформа онлайн-моделирования искусственного интеллекта, который помогает быстро разрабатывать, обучать и развертывать модели.


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

В настоящее время клуб каждую субботу проводит офлайн-мероприятия технического салона на тему машинного обучения в Ханчжоу, а также время от времени проводит обмен документами и академические обмены. Я надеюсь собрать друзей из всех слоев общества, которые интересуются искусственным интеллектом, продолжать общаться и расти вместе, а также способствовать демократизации и популяризации искусственного интеллекта.

image.png