Nvidia gaughan не работает

Nvidia research mingyuliu com gaugan

GauGAN — специальная программа, предназначенная для создания виртуальных миров. Она подходит как обычным любителям рисовать, так и специалистам, к примеру, создателям игр или ландшафтных дизайнов. Она доступна по ссылке nvidia-research-mingyuliu.com/gaugan, имеет удобный интерфейс и наглядное исполнение. Ниже рассмотрим, в чем особенности софта, как он работает, и как им правильно пользоваться.

Что это

Nvidia research mingyuliu com Gaugan — программа, выпущенная в свободный доступ летом 2019 года и пользующаяся большим спросом в 2021 году. Ее возможности позволяют превратить грубые наброски в «глубокие» изображения с природными ландшафтами. Все, что необходимо — выбрать интересующий рисунок, к примеру, море, песок, лес или годы, после чего интеллект GauGAN сделает работу самостоятельно.

Столь мощный инструмент могут использовать все желающие: обычные любители рисовать, создатели игр, дизайнеры и т. д. «Гауган» от «Нвидиа» — это удобный инструмент с искусственным интеллектом. Он быстро анализирует задачу и вносит изменения в рисунок. Создатель сервиса отмечет, что придумать дизайн при наличии уже готовых набросков проще, чем сделать все с нуля.

Читайте также:  Не работает клавиатура самсунг пей

Какие есть возможности

Gaugan предлагает бесплатно рисовать собственные карты и менять изображение, преобразуя разные элементы ландшафта: песок, небо, море и другие. Искусственный интеллект программы, созданный с помощью инфраструктуры PyTorch, сам анализирует, а впоследствии заполняет ландшафт с учетом полученной задачи. К примеру, при наличии объектов возле водоема можно сделать, чтобы они отражались в воде. Изменив отметку с «трава» на «снег», можно создать на изображении настоящую зимнюю сказку.

В системе GauGAN взаимодействует два элемента — генератор и дискриминатор. Первый помогает создавать изображения, а второй делает его более реалистичным. Инструмент позволяет добавлять фильтры стиля и менять уже готовое изображение с учетом замысла «художника». Иными словами, программа позволяет создавать новые картинки с элементами природы, дорог, зданий и людей.

На данный момент технология Gaugan еще дорабатывается. В будущем она будет полезной специалистам разных сфер деятельности. С ее помощью можно:

  1. Ускорить процесс визуализации объектов и сразу редактировать готовые изображения.
  2. Повысить эффективность работы создателей компьютерных игр и обучающего софта, действующего на базе VR-технологии.

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

Как рисовать

Чтобы начать рисовать, достаточно скачать любой браузер, после чего перейти по ссылке nvidia-research-mingyuliu.com/gaugan. Для начала работы поставьте отметку внизу о согласии с условиями и правилами применения программы.

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

  1. Здание: мост, забор, дом, платформа, крыша, стена (кирпич), стена (камень), стена (дерево).
  2. Земля: грязь, гравий, грязь, тротуар, дорога, песок.
  3. Пейзаж: гора, холм, облака, туман, река, море, небо, снег, камень, вода и другое.
  4. Растение: цветок, дерево, солома, трава.

Вверху можно менять форму / размер кисти, а также видеть цвет заливки. Слева можно поменять сам инструмент — кисть, пипетка или заливка.

Суть рисования следующая:

  1. Слева выберите то, что необходимо нарисовать, к примеру, реку, море, небо, снег и другое. Сделайте набросок с помощью кисти или заливки.
  2. Выберите изображение внизу.
  3. Жмите на стрелку и позвольте нейросети GauGAN выполнить все преобразования самостоятельно.

При желании можно скачать готовые изображения и хранить их на ПК / ноутбуке. В дальнейшем можно добавлять новые элементы и нажимать на стрелку между основными окнами. Здесь все зависит от фантазии пользователя.

Сразу отметим, что программа GauGAN доступна на английском. Чтобы пользоваться ей на русском языке, сделайте следующее:

  1. Откройте ссылку nvidia-research-mingyuliu.com/gaugan в браузере «Гугл Хром».
  2. Жмите правой кнопкой мышки в центральной части.
  3. Выберите пункт «Перевести на русский».

После этого можно играть в GauGAN или использовать возможности софта для работы. При этом интерфейс переводится на русский язык (хоть и с небольшими ошибками).

Теперь вы знаете, что такое GauGAN com, как рисовать на сайте, и для чего вообще необходима эта платформа. Практика показывает, что возможностей программы достаточно для создания как простых, так и сложных проектов.

В комментариях расскажите, как вы пользуетесь этой программой, для каких целей она применяется. Поделитесь своим мнением о возможностях и функционале софта.

Источник

NVIDIA Gaugan или уже скоро останемся без работы (но это не точно)

NVIDIA показала нейросеть для создания фотореалистичных пейзажей по наброскам.

Выглядит с точки зрения работяги пугающе отбором профессии, а с точки зрения обывателя восхищает прогрессом. А у вас какие мысли, коллеги?

Так это же прототип. А все остальное будет прикручиваться по мере надобности

А нейросеть сможет «поиграть с цветом» или «подобрать фактуру повкуснее»?

шах и мат, машины!

А так, конечно, прикольно)

У них на сайте можно демку попробовать. Что могу сказать — слишком сыро пока. Обыкновенный штамп в или восстанавливающая кисть в фотошопе имеет гораздо больше возможностей. В будущем, да, за ИИ будущее. Будут появляться очень мощные инструменты для работы. Кооперация человеческого интеллекта и машинного.

Всё равно цифровые фотоаппараты никогда не заменят плёночные

Тем, кто более-менее интересуется темой искусственного интеллекта, давно понятно, что само ai, а также deep learning, machine learning и прочее — лишь очередные базворды, которые меняются через десяток лет. По факту в основе всего этого лежит умелое применение математики и статистики на возросших мощностях gpu, ИИ не существует. Как бы ни надували щеки программисты и как бы ни изображали рождение магии на наших глазах, ничего принципиально нового на настоящий момент не изобретено. Да и вряд ли будет

Цитата 7083:

Это тоже правильно

Творчества от ИИ никто и не требует. А вот свалить на него всю рутину в творческом процессе — самое оно.

На наш век работы хватит.

А вот сына я точно буду отгораживать от дизайна.

Источник

Stroke of Genius: GauGAN Turns Doodles into Stunning, Photorealistic Landscapes

A novice painter might set brush to canvas aiming to create a stunning sunset landscape — craggy, snow-covered peaks reflected in a glassy lake — only to end up with something that looks more like a multi-colored inkblot.

But a deep learning model developed by NVIDIA Research can do just the opposite: it turns rough doodles into photorealistic masterpieces with breathtaking ease. The tool leverages generative adversarial networks, or GANs, to convert segmentation maps into lifelike images.

The interactive app using the model, in a lighthearted nod to the post-Impressionist painter, has been christened GauGAN.

Post-Impressionist Paul Gauguin painted several self-portraits, including this 1885 work housed at the Kimbell Art Museum. (Photo from Wikimedia Commons, licensed under public domain).

GauGAN could offer a powerful tool for creating virtual worlds to everyone from architects and urban planners to landscape designers and game developers. With an AI that understands how the real world looks, these professionals could better prototype ideas and make rapid changes to a synthetic scene.

“It’s much easier to brainstorm designs with simple sketches, and this technology is able to convert sketches into highly realistic images,” said Bryan Catanzaro, vice president of applied deep learning research at NVIDIA.

GauGAN is now available as a desktop application, called NVIDIA Canvas.

Catanzaro likens the technology behind GauGAN to a “smart paintbrush” that can fill in the details inside rough segmentation maps, the high-level outlines that show the location of objects in a scene.

GauGAN allows users to draw their own segmentation maps and manipulate the scene, labeling each segment with labels like sand, sky, sea or snow.

Developed using the PyTorch deep learning framework, the AI model then fills in the landscape with show-stopping results: Draw in a pond, and nearby elements like trees and rocks will appear as reflections in the water. Swap a segment label from “grass” to “snow” and the entire image changes to a winter scene, with a formerly leafy tree turning barren.

“It’s like a coloring book picture that describes where a tree is, where the sun is, where the sky is,” Catanzaro said. “And then the neural network is able to fill in all of the detail and texture, and the reflections, shadows and colors, based on what it has learned about real images.”

Despite lacking an understanding of the physical world, GANs can produce convincing results because of their structure as a cooperating pair of networks: a generator and a discriminator. The generator creates images that it presents to the discriminator. Trained on real images, the discriminator coaches the generator with pixel-by-pixel feedback on how to improve the realism of its synthetic images.

After training on a million real images, the discriminator knows that real ponds and lakes contain reflections — so the generator learns to create a convincing imitation.

The tool also allows users to add a style filter, changing a generated image to adapt the style of a particular painter, or change a daytime scene to sunset.

“This technology is not just stitching together pieces of other images, or cutting and pasting textures,” Catanzaro said. “It’s actually synthesizing new images, very similar to how an artist would draw something.”

While the GauGAN app focuses on nature elements like land, sea and sky, the underlying neural network is capable of filling in other landscape features, including buildings, roads and people.

The research paper behind GauGAN has been accepted as an oral presentation at the CVPR conference in June — a recognition bestowed on just 5 percent of more than 5,000 submissions.

Attendees of this week’s GPU Technology Conference can try out GauGAN for themselves in the NVIDIA booth with an interactive demo running on a TITAN RTX GPU.

Источник

Фотографии из грубых набросков: как именно работает нейросеть NVIDIA GauGAN

В прошлом месяце на NVIDIA GTC 2019 компания NVIDIA представила новое приложение, которое превращает нарисованные пользователем простые цветные шарики в великолепные фотореалистичные изображения.

Приложение построено на технологии генеративно-состязательных сетей (GAN), в основе которой лежит глубинное обучение. Сама NVIDIA называет его GauGAN — это каламбур-отсылка к художнику Полу Гогену. В основе функциональности GauGAN лежит новый алгоритм SPADE.

В этой статье я объясню, как работает этот инженерный шедевр. И чтобы привлечь как можно больше заинтересованных читателей, я постараюсь дать детализированное описание того, как работают свёрточные нейронные сети. Поскольку SPADE — это генеративно-состязательная сеть, я расскажу подробнее и о них. Но если вы уже знакомы с эти термином, вы можете сразу перейти к разделу «Image-to-image трансляция».

Генерация изображений

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

Дискриминатор занимается классификацией вводимых данных. Например, классификатор изображения — это дискриминатор, который берет изображение и выбирает одну подходящую метку класса, например, определяет изображение как «собаку», «автомобиль» или «светофор», то есть выбирает метку, которая целиком описывает изображение. Полученный классификатором вывод обычно представлен в виде вектора чисел , где — это число от 0 до 1, выражающее уверенность сети в принадлежности изображения к выбранному -классу.

Дискриминатор также может составить целый список классификаций. Он может классифицировать каждый пиксель изображения как принадлежащий классу «людей» или «машин» (так называемая «семантическая сегментация»).


Классификатор берет изображение с 3 каналами (красный, зеленый и синий) и сопоставляет его с вектором уверенности в каждом возможном классе, который может представлять изображение.

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

Генераторы

Генеративная сеть наподобие SPADE получает набор данных и стремится создавать новые оригинальные данные, которые выглядят так, как будто они принадлежат этому классу данных. При этом данные могут быть любыми: звуками, языком или чем-то еще, но мы сосредоточимся на изображениях. В общем случае ввод данных в такую ​​сеть представляет собой просто вектор случайных чисел, причем каждый из возможных наборов вводимых данных создает свое изображение.


Генератор на основе случайного входного вектора работает фактически противоположно классификатору изображения. В генераторах «условных классов» входной вектор — это, фактически, вектор целого класса данных.

Как мы уже видели, SPADE использует намного больше, чем просто «случайный вектор». Система руководствуется своеобразным чертежом, который называется «картой сегментации». Последняя указывает, что и где размещать. SPADE проводит процесс, обратный семантической сегментации, упомянутой нами выше. В целом, дискриминационная задача, переводящая один тип данных в другой, имеет аналогичную задачу, но идет другим, непривычным путем.

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

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


Обычная свертка 2×2 с шагом «2» превращает каждый блок 2×2 в одну точку, уменьшая выходные размеры на 1/2.


Транспонированная свертка 2×2 с шагом «2» генерирует блок 2×2 из каждой точки, увеличивая выходные размеры в 2 раза.

Тренировка генератора

Теоретически, сверточная нейронная сеть cможет генерировать изображения описанным выше образом. Но как мы мы ее натренируем? То есть, если учитывать набор входных данных-изображений, как мы можем настроить параметры генератора (в нашем случае SPADE), чтобы он создавал новые изображения, которые выглядят так, как будто они соответствуют предложенному набору данных?

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


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

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

Итак, как мы можем сообщить генератору, в каких пикселях он должен изменять свой вывод и каким образом он может создавать более реалистичные изображения (т.е. как подавать «сигнал об ошибке»)? Исследователи много размышляли над этим вопросом, и на самом деле это довольно сложно. Большинство идей, таких как вычисление некоторого среднего «расстояния» до реальных изображений, дают размытые картинки низкого качества.

В идеале мы могли бы «измерить», насколько реалистично выглядят сгенерированные изображения через использование концепции «высокого уровня», такой ​​как «Насколько сложно это изображение отличить от реального?»…

Генеративные состязательные сети

Именно это реализовали в рамках работы Goodfellow et al., 2014. Идея состоит в том, чтобы генерировать изображения, используя две нейронные сети вместо одной: одна сеть —
генератор, вторая — классификатор изображений (дискриминатор). Задача дискриминатора состоит в том, чтобы отличать выходные изображения генератора от реальных изображений из первичного набора данных (классы этих изображений обозначены как «поддельные» и «реальные»). Работа же генератора заключается в том, чтобы обмануть дискриминатор, создавая изображения, максимально похожие на изображения в наборе данных. Можно сказать, что генератор и дискриминатор являются противниками в этом процессе. Отсюда и название: генеративно-состязательная сеть.

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

Как это нам помогает? Теперь мы можем использовать сообщение об ошибке, основанное исключительно на предсказании дискриминатора: значение от 0 («фальшивый») до 1 («реальный»). Поскольку дискриминатор является нейронной сетью, мы можем делиться его выводами об ошибках и с генератором изображений. То есть, дискриминатор может сообщать генератору, где и как тот должен корректировать свои изображения, чтобы лучше «обмануть» дискриминатор (т.е. — как повысить реалистичность своих изображений).

В процессе обучения по нахождению поддельных изображений дискриминатор дает генератору все лучшую и лучшую обратную связь о том, как последний может улучшить свою работу. Таким образом, дискриминатор выполняет «learn a loss»-функцию для генератора.

«Славный малый» GAN

Рассматриваемый нами GAN в своей работе следует описанной выше логике. Его дискриминатор анализирует изображение и получает значение от 0 до 1, которое отражает его степень уверенности в том, реальное это изображение, или же подделанное генератором. Его генератор получает случайный вектор нормально распределенных чисел и выводит изображение , которое может обмануть дискриминатор (по факту, это изображение )

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

Дискриминатор выводит свое утверждение о том, что изображение реально. Это имеет смысл, так как возрастает, когда дискриминатор считает x реальным. Когда же дискриминатор лучше выявляет поддельные изображения, увеличивается и значение выражения (начинает стремиться к 1), так как будет стремиться к 0.

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

Со временем это приводит к интересным результатам:

Goodfellow GAN, имитирующий наборы данных MNIST, TFD и CIFAR-10. Контурные изображения являются самыми близкими в наборе данных к смежным подделкам.

Все это было фантастикой всего 4,5 года назад. К счастью, как показывает SPADE и другие сети, машинное обучение продолжает быстро прогрессировать.

Проблемы тренировки

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


Режим коллапса GAN похож на Goodfellow’s. Обратите внимание, многие из этих изображений спальни выглядят очень похожими друг на друга. Источник

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

Усилия исследователей по решению этих проблем в основном были направлены на изменение структуры функции потерь. Одним из простых изменений, предложенных Xudong Mao et al., 2016, является замена функции потерь на пару простых функций , в основе которых лежат квадраты меньшей площади. Это приводит к стабилизации процесса тренировки, получению более качественных изображений и меньшему шансу коллапса с использованием незатухающих градиентов.

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


Постепенное добавление слоев с более высоким разрешением во время обучения GAN существенно повышает стабильность всего процесса, а также скорость и качество получаемого изображения.

Image-to-image трансляция

До сих пор мы говорили о том, как генерировать изображения из случайных наборов вводных данных. Но SPADE не просто использует случайные данные. Эта сеть использует изображение, которое называется картой сегментации: она назначает каждому пикселю класс материала (например, трава, дерево, вода, камень, небо). Из этого изображения-карты SPADE и генерирует то, что выглядит как фотография. Это и называется «Image-to-image трансляция».


Шесть различных видов Image-to-image трансляции, продемонстрированные сетью pix2pix. Pix2pix является предшественником двух сетей, которые мы рассмотрим далее: pix2pixHD и SPADE.

Для того чтобы генератор выучил этот подход, ему нужен набор карт сегментации и соответствующие фотографии. Мы модифицируем архитектуру GAN, чтобы и генератор, и дискриминатор получили карту сегментации. Генератору, конечно, нужна карта, чтобы знать, «в какую сторону рисовать». Дискриминатору она также необходима, чтобы убедиться, что генератор размещает правильные вещи в правильных местах.

В ходе обучения генератор учится не ставить траву там, где на карте сегментации указано «небо», поскольку в противном случае дискриминатор легко определит поддельное изображение, и так далее.


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

Разработка image-to-image транслятора

Давайте посмотрим на реальный image-to-image транслятор: pix2pixHD. Кстати, SPADE спроектирован большей частью по образу и подобию pix2pixHD.

Для image-to-image транслятора наш генератор создает изображение и принимает его в качестве входного. Мы могли бы просто использовать карту сверточных слоев, но поскольку сверточные слои объединяют значения только в небольших участках, нам нужно слишком много слоев для передачи информации об изображении в высоком разрешении.

pix2pixHD решает эту проблему более эффективно при помощи «Кодировщика», который уменьшает масштаб входного изображения, за которым следует «Декодер», увеличивающий масштаб для получения выходного изображения. Как мы скоро увидим, у SPADE более элегантное решение, не требующее кодировщика.


Схема сети pix2pixHD на «высоком» уровне. «Остаточные» блоки и «+операция» относятся к технологии «skip connections» из Residual neural network. В сети есть скипаемые блоки, которые соотносятся между собой в кодировщике и декодере.

Пакетная нормализация — это проблема

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

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

Обучение pix2pixHD

Современные GAN, такие как pix2pixHD и SPADE, измеряют реалистичность своих выходных изображений немного иначе, чем это было описано для оригинального дизайна генеративно-состязательных сетей.

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

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

Так, оптимизация сводится к следующему:

где потери суммируются по трем дискриминационным факторам и коэффициенту , который контролирует приоритет обоих элементов.


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

Хотя дискриминаторы уменьшают масштаб изображения до тех пор, пока не разберут изображение целиком, они останавливаются на «пятнах» размером 70×70 (в соответствующих масштабах). Затем они просто суммируют все значения этих «пятен» для всего изображения.

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


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

Что не так с pix2pixHD?

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

Рассмотрим, что делает pix2pixHD с одноклассным вводом, скажем, с картой, на которой повсюду трава. Поскольку вход является пространственно однородным, выходы первого сверточного слоя также являются одинаковыми. Затем нормализация экземпляров «нормализует» все (идентичные) значения для каждого канала в изображении и возвращает как вывод для всех них. β-параметр может сдвинуть это значение от нуля, но факт остается фактом: выход больше не будет зависеть от того, была на входе «трава», «небо», «вода» или что-то еще.

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

И решение этой проблемы — главная особенность дизайна SPADE.

Решение: SPADE

Наконец-то мы достигли принципиально нового уровня в создании изображений из карт сегментации: пространственно-адаптивная (де)нормализация (SPADE).

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


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

Генератор SPADE объединяет всю эту конструкцию в небольшие «остаточные блоки», которые помещаются между слоями повышающей дискретизации (транспонированная свертка):


Высокоуровневая схема генератора SPADE в сравнении с генератором pix2pixHD

Теперь, когда карта сегментации подается «изнутри» сети, нет необходимости использовать ее в качестве входных данных для первого слоя. Вместо этого мы можем вернуться к исходной схеме GAN, в которой в качестве входных данных использовался случайный вектор. Это дает нам дополнительную возможность генерировать различные изображения из одной карты сегментации («мультимодальный синтез»). Это также делает ненужным весь «кодировщик» pix2pixHD, а это серьезное упрощение.

SPADE использует ту же функцию потерь, что и pix2pixHD, но с одним изменением: вместо возведения в квадрат значений в ней используется hinge loss.

С этими изменениями мы получаем прекрасные результаты:


Здесь результаты SPADE сравниваются с результатами pix2pixHD

Интуиция

Давайте подумаем о том, как SPADE может показывать такие результаты. В приведенном ниже примере у нас есть дерево. GauGAN использует один «древовидный» класс для представления как ствола, так и листьев дерева. Тем не менее, каким-то образом SPADE узнает, что узкая часть в нижней части «дерева» является стволом и должна быть коричневой, в то время как большая капля сверху должна быть листвой.

Сегментация с пониженной дискретизацией, которую использует SPADE для модуляции каждого слоя, и обеспечивает подобное «интуитивное» распознавание.

Вы можете заметить, что ствол дерева продолжается и в части кроны, которая относится к «листве». Так как же SPADE понимает, где разместить там часть ствола, а где листву? Ведь судя по карте 5х5, там должно быть просто «дерево».

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

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

Стиль передачи

В SPADE есть еще одно волшебное решение — способность генерировать изображение в заданном стиле (например, освещение, погодные условия, время года).


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

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

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

Источник

Оцените статью