Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Мы представляем GANcraft — работающий без участия человека фреймворк нейронного рендеринга для генерации фотореалистичных изображений больших миров из 3D-блоков, например, таких, которые созданы в Minecraft. Наша система получает на входе мир из семантических блоков, в котором каждому блоку назначена метка, например, «земля», «дерево», «трава», «песок» или «вода».
Мы задаём мир как непрерывную объёмную функцию и обучаем нашу модель рендерингу фотореалистичных изображений с сохранением внешнего вида с произвольных точек обзора без наличия реальных изображений блочного мира.
Кроме позиции камеры, GANcraft позволяет пользователю задавать семантику и стиль сцены.
Выходные данные нашей модели. В левом нижнем углу показаны блочные миры, подаваемые на вход.
Видео с кратким описанием
Обзор технологии
Какую конкретно задачу пытается решить GANcraft?
GANcraft нацелен на решение задачи преобразования одного мира в другой мир. Имея семантически размеченный мир, например, такой, который используется в популярной игре Minecraft, GANcraft способен преобразовать его в новый мир, имеющий ту же структуру, но с добавленным фотореализмом. После этого новый мир можно рендерить с произвольных точек обзора, получая фотореалистичные видео и изображения, сохраняющие внешний вид при смене точек обзора. GANcraft упрощает процесc 3D-моделирования сложных ландшафтных сцен, на создание которых потребовались бы многие годы практики.
По сути, GANcraft превращает любого игрока Minecraft в 3D-художника!
Вопрос: "Почему просто не использовать преобразование im2im?"
Так как исходных истинных фотореалистичных рендеров для созданного пользователем блочного мира не существует, нам приходится обучать модели при помощи непрямого контроля.
Хорошими кандидатами являются некоторые уже существующие решения. Например, можно использовать методики преобразования «изображение-изображение» (image-to-image, im2im), в частности, MUNIT and SPADE, изначально обучавшуюся только на 2D-данных, чтобы конвертировать покадровые маски сегментации, спроецированные из блочного мира, в реалистично выглядящие изображения.
Также можно использовать wc-vid2vid — методику, учитывающую 3D-объём, для генерации изображений с постоянным внешним видом при помощи 2D-ретуширования и 3D-искажений, применяя в качестве 3D-геометрии поверхности вокселей.
Эти модели нужно обучать на преобразовании реальных карт сегментации в реальные изображения, а затем применить в Minecraft.
В качестве ещё одной альтернативы можно обучить NeRF-W, изучающую поле 3D-излучения от нефотометрической, но позиционированной и 3D-неизменной коллекции изображений. Её можно обучить по прогнозируемым изображениям из методики im2im (псевдоистинных данных, о которых будет рассказано в следующем разделе), то есть данных, которые максимально близки к требованиям.
Слева направо: MUNIT, SPADE, wc-vid2vid, NSVF-W (NSVF + NeRF-W), GANcraft(наша методика)
Сравнивая результаты различных методик, мы сразу же можем заменить некоторые проблемы:
- Методики im2im наподобие MUNIT и SPADE не сохраняют внешний вид объектов вне зависимости от точки обзора, потому что они не имеют знаний о 3D-геометрии и каждый кадр генерируется отдельно.
- wc-vid2vid создаёт видео с постоянным внешним видом объектов, но со временем качество изображения быстро портится из-за накопления погрешностей блочной геометрии и недостаточного количества данных для тестового обучения.
- NSVF-W (наша реализация NeRF-W с добавленной воксельной подготовкой в стиле NSVF) тоже создаёт результаты с постоянным внешним видом объектов, но результат выглядит скучным и ему не хватает мелких деталей.
В последнем столбце представлены результаты GANcraft, которые и сохраняют внешний вид объектов, и обладают высоким качеством. Использование нейронного рендеринга гарантирует постоянство внешнего вида объектов, а инновации в архитектуре модели и схеме обучения позволяют добиться беспрецедентного фотореализма.
Несовпадение распределения и псевдоистинные данные
Допустим, у нас есть подходящая модель нейронного рендеринга с воксельной подготовкой, способная создавать фотореалистичный мир. Нам всё равно нужен какой-то способ её обучения без истинных изображений с указанным расположением камеры. Adversarial training достигло определённого успеха на задачах нейронного рендеринга малого размера без условий, когда изображения с указанием их позиции недоступны. Однако для GANcraft проблема ещё более сложна. В отличие от реального мира, блочные миры из Minecraft обычно имеют гораздо более разнообразное распределение меток. Например, некоторые сцены могут быть полностью покрыты снегом, песком или водой. Существуют также сцены, в которых на небольшой площади пересекается множество биомов. Кроме того, невозможно сопоставить сэмплируемое распределение камер с распределением на фотографиями из Интернета при случайном сэмплировании точек обзора из модели нейронного рендеринга.
Примеры изображений, сгенерированных без псевдоистинных данных:
Примеры изображений, сгенерированных с псевдоистинными данными:
Как видно на первых примерах, adversarial training с помощью фотографий из Интернета из-за сложности задачи приводит к нереалистичным результатам.
Создание и использование псевдоистинных данных для обучения стало одним из самых важных вкладов нашей работы и значительно улучшило результаты (вторые примеры).
Генерирование псевдоистинных данных
Псевдоистинные данные — это фотореалистичные изображения, сгенерированные из масок сегментации с помощью предварительно обученной модели SPADE. Так как маски сегментации сэмплируются из блочного мира, псевдоистинные данные имеют те же метки и позиции камер, что и изображения, сгенерированные для тех же точек обзора. Это не только снижает рассогласование распределения меток и камер, но и позволяет нам использовать более сильные потери, например, функции перцептуальных потерь и L2, для более быстрого и стабильного обучения.
Гибридный нейронный рендеринг, ограниченный вокселами
В GANcraft мы задаём фотореалистичную сцену сочетанием объёмного 3D-рендерера и рендерера изображений 2D-пространства. Мы задаём нейронное поле свечения, ограниченное вокселями: имея данные блочного мира, мы назначаем каждому углу блоков вектор характеристик, и используем трилинейную интерполяцию для задания кода расположения в произвольных местах внутри вокселя. Благодаря этому можно задать поле излучения при помощи MLP, получающего на входе код локации, семантическую метку и код общего стиля, а на выходе создающего точечный объект (схожий с данными излучения) и плотность его объёма. Зная параметры камеры, мы рендерим поле излучения для получения карты 2D-характеристик, которая при помощи CNN преобразуется в изображение.
Полная архитектура GANcraft
Такая двухэтапная архитектура значительно улучшает качество изображений, сокращая при этом объёмы вычислений и занимаемой памяти, потому что поле излучения можно смоделировать более простым MLP. Предложенная нами архитектура способна обрабатывать очень большие миры. В своих экспериментах мы использовали воксельные сетки размером 512×512×256, что эквивалентно 0,26 квадратным километрам.
Нейронный купол неба
Старые методики нейронного рендеринга на основе вокселей не могли моделировать бесконечно удалённое от сцены небо. Однако небо является неотъемлемым ингредиентом фотореалистичности. Для добавления неба мы используем в GANcraft дополнительный MLP. MLP преобразует направление луча камеры в вектор характеристик, имеющий тот же размер, что и точечные объекты из поля излучения. Этот вектор характеристик используется в качестве полностью непрозрачного окончательного сэмпла луча, смешивающего характеристики пикселя в соответствии с оставшейся пропускаемостью луча.
Генерация изображений с разнообразным внешним видом
Процесс генерации GANcraft является условным и зависит от задающего стиль изображения. Во время обучения мы используем в качестве задающего стиль изображения псевдоистинные данные, что позволяет объяснить несоответствие между сгенерированным изображением и псевдоистинными данными потерями при реконструкции. Во время вычислений мы можем управлять стилем выходных данных, передавая GANcraft различные изображения, задающие стиль. В примере ниже мы линейно интерполируем стиль между шестью различными изображениями стиля.
Интерполяция между несколькими стилями
Другие результаты
Подведём итог
- GANcraft — мощный инструмент для преобразования состоящих из семантических блоков миров в фотореалистичные миры без необходимости наличия истинных данных.
- Существующие методы показывают плохие результаты из-за непостоянства объектов при смене точки обзора и отсутствия фотореализма.
- GANcraft хорошо проявляет себя в такой сложной задаче преобразования «из мира в мир», когда истинные данные недоступны, а несоответствие распределения между миром Minecraft и фотографиями из Интернета велико.
- Мы представили новую схему обучения с использованием псевдоистинных данных. Она значительно повышает качество результатов.
- Мы добавили гибридный конвейер нейронного рендеринга, способный эффективно создавать отображение больших и сложных сцен.
- Мы можем управлять внешним видом результатов GANcraft при помощи задающих стиль изображений.
На правах рекламы
Серверы в аренду для любых целей — это именно про виртуальные серверы от нашей компании.
Уже давно используем исключительно быстрые серверные накопители от Intel и не экономим на железе — только брендовое оборудование и самые современные решения на рынке для предоставления услуг.