Neural Radiance Field (NeRF) — это полностью подключенная нейронная сеть, которая может генерировать новые виды сложных 3D-сцен на основе частичного набора 2D-изображений. Она обучена использовать потери рендеринга для воспроизведения входных видов сцены. Она работает, беря входные изображения, представляющие сцену, и интерполируя их, чтобы визуализировать одну полную сцену. NeRF — это очень эффективный способ создания изображений для синтетических данных.
Сеть NeRF обучена отображать непосредственно направление взгляда и пространственное положение (ввод 5D) до непрозрачности и цвета (вывод 4D), используя объемную визуализацию для визуализации новых видов. NeRF — это алгоритм, требующий больших вычислительных ресурсов, и обработка сложных сцен может занять часы или дни. Однако доступны новые алгоритмы, которые значительно улучшают производительность.
Чтобы понять, как работает NeRF, давайте рассмотрим некоторые основные понятия.
Рендеринг
Рендеринг — это процесс создания изображения из 3D-модели. Модель будет содержать такие функции, как текстуры, затенение, тени, освещение и точки обзора, а роль механизма рендеринга заключается в обработке этих функций для создания реалистичного изображения.
Три распространенных типа алгоритмов рендеринга: растеризация, которая проецирует объекты геометрически на основе информации в модели без оптических эффектов; рейкастинг (ray casting), который вычисляет изображение с определенной точки зрения, используя основные оптические законы отражения; и трассировка лучей (ray tracing), в которой используются методы Монте-Карло для получения реалистичного изображения за гораздо более короткое время. Трассировка лучей используется для повышения производительности рендеринга в графических процессорах NVIDIA.
Объемный рендеринг
Объемный рендеринг позволяет создать 2D-проекцию 3D-дискретного набора данных.
Для заданного положения камеры алгоритм объемного рендеринга получает RGBα (красный, зеленый, синий и альфа-канал) для каждого вокселя в пространстве, через которое проходят лучи от камеры. Цвет RGBα преобразуется в цвет RGB и записывается в соответствующем пикселе 2D-изображения. Процесс повторяется для каждого пикселя, пока не будет визуализировано все 2D-изображение.
Синтез представлений
Синтез представлений противоположен объемному рендерингу — он включает создание 3D-вида из серии 2D-изображений. Это можно сделать с помощью серии фотографий, которые показывают объект с разных ракурсов, создают полусферический план объекта и размещают каждое изображение в соответствующем месте вокруг объекта. Функция синтеза вида пытается предсказать глубину по серии изображений, описывающих разные перспективы объекта.
Как работает NeRF
NeRF использует разреженный набор входных представлений для оптимизации функции непрерывной объемной сцены. Результатом этой оптимизации является возможность создавать новые виды сложной сцены. Вы можете предоставить входные данные для NeRF в виде статического набора изображений.
Непрерывная сцена представляет собой пятимерную векторную функцию со следующими характеристиками:
- Входными данными являются трехмерное местоположение x = (x; y; z) и двухмерное направление просмотра (θ; Φ).
- Его выходом является излучаемый цвет c = (r; g; b) и объемная плотность (α).
Вот как вы можете создать NeRF с определенной точки зрения:
- Создайте выборочный набор 3D-точек, пропустив лучи камеры через сцену.
- Создайте выходной набор плотностей и цветов, введя выбранные вами точки с соответствующими направлениями 2D-просмотра в нейронную сеть.
- Соберите свои плотности и цвета в 2D-изображение, используя классические методы объемного рендеринга.
Описанный выше процесс оптимизирует глубокий, полносвязный, многослойный персептрон (MLP), но не требует использования сверточных слоев. Он использует градиентный спуск, чтобы свести к минимуму ошибки между каждым наблюдаемым изображением и всеми соответствующими представлениями, полученными из представления.
Улучшение производительности NeRF
Первоначальная модель NeRF имела несколько недостатков — она медленно обучалась и рендерилась и могла обрабатывать только статические сцены. Она также негибка, потому что модель NeRF, обученная на одной сцене, не может быть использована для других сцен.
Вот несколько методов, основанных на NeRF и пытающихся решить некоторые из его проблем.
RegNeRF
RegNeRF означает regularizing neural radiance fields (RegNeRF) для синтеза представлений из разреженных входных данных. Это помогает решить проблему с производительностью полей нейронного излучения (NeRF), когда количество входных просмотров невелико.
Исследования показывают, что большинство артефактов в сценариях с разреженным входом возникает из-за ошибок в предполагаемой геометрии сцены и расходящегося поведения в начале обучения. Упорядочение внешнего вида и геометрии заплат, визуализируемых с незамеченных точек зрения, помогает решить эту проблему. В качестве решения авторы также предложили отжиг пространства выборки лучей в процессе обучения. В документе дополнительно используется нормализующая модель потока для упорядочения цвета ненаблюдаемых точек обзора.
pixelNeRF
Платформа обучения pixelNeRF может прогнозировать непрерывное представление нейронной сцены на основе одного или нескольких входных изображений. Построение NeRF обычно требует независимой оптимизации представления каждой сцены, что требует множества калиброванных представлений и значительного времени вычислений.
Эта структура обучения решает эти проблемы, представляя архитектуру, в которой используется полностью сверточный подход для обработки NeRF на входных изображениях. Это позволяет обучать сеть на нескольких сценах, чтобы предварительно изучить сцену, гарантируя, что она может выполнять синтез новых представлений с прямой связью, используя как можно меньше представлений (даже одно).
Mega-NeRF
Mega-NeRF — это обучающая среда, которая использует NeRF для создания интерактивных трехмерных сред из крупномасштабных визуальных снимков, таких как здания и несколько городских кварталов, собранных в основном с помощью дронов. Традиционно NeRF оцениваются с использованием сцен с одним объектом. Однако этот метод создает несколько проблем.
Традиционные NeRF требуют моделирования тысяч изображений с различными условиями освещения, каждое из которых захватывает лишь небольшую часть сцены, что затрудняет достижение быстрого рендеринга, обеспечивающего интерактивные пролеты. Кроме того, эти непомерно большие модели требуют мощностей, которые делают невозможным обучение на одном графическом процессоре.
Mega-NeRF решает эти проблемы, анализируя статистику видимости для крупномасштабных сцен. Для этого требуется разреженная сетевая структура, в которой параметры специализированы для разных областей сцены. Он вводит простой алгоритм геометрической кластеризации для параллелизма данных, который разделяет обучающие изображения (или пиксели) на разные подмодули NeRF, которые можно обучать параллельно.
LOLNeRF
LOLNeRF расшифровывается как Learn from One Look (LOL). Этот метод обучения использует NeRF для генеративного 3D-моделирования, обучая только на данных с преимущественно отдельными представлениями каждого объекта. Это помогает создать соответствующую трехмерную структуру объектов таким образом, чтобы их можно было визуализировать из разных представлений.
Этот метод использует реконструкцию множества изображений, выровненных по приблизительной канонической позе, с помощью одной сети, обусловленной общим скрытым пространством, для изучения пространства полей излучения, которое моделирует форму и внешний вид для класса объектов. Он включает в себя обучение моделей использованию наборов данных, содержащих только одно представление каждого субъекта, для реконструкции категорий объектов без информации о глубине или геометрии.
Neural Sparse Voxel Fields (NSVF)
NSVF — это нейронное представление сцены, которое обеспечивает быструю высококачественную визуализацию, не зависящую от конкретной точки обзора. Он работает, определяя ограниченные вокселами неявные поля, организованные в разреженной сети ячеек, и постепенно изучает структуры вокселей в каждой ячейке сети. Он может намного быстрее визуализировать новые представления, пропуская воксели без содержимого сцены — этот метод делает NSVF более чем в десять раз быстрее, чем исходный NeRF.
Mip-NeRF
Mip-NerF расширяет исходную модель NeRF с целью уменьшения эффектов размытия и визуальных артефактов. NeRF использовал один луч на пиксель, что часто вызывало размытие или алиасинг при разных разрешениях. Mip-NeRF использует геометрическую форму, известную как усеченный конус, для визуализации каждого пикселя вместо луча, что уменьшает алиасинг, позволяет отображать мелкие детали изображения и снижает количество ошибок на 17–60%. Модель также на 7% быстрее, чем NeRF.
KiloNeRF
KiloNeRF решает проблему медленного рендеринга в NeRF, которая в основном связана с необходимостью миллионы раз запрашивать глубокую сеть MLP (multi-layer perceptron). KiloNeRF разделяет рабочую нагрузку между тысячами небольших MLP вместо одного большого MLP, к которому нужно обращаться много раз. Каждый небольшой MLP представляет собой часть сцены, что позволяет повысить производительность в 3 раза при более низких требованиях к хранилищу и сравнимом качестве изображения.
Plenoxels
Пленоптические воксели (Plenoxels) заменяют MLP в центре NeRF разреженной трехмерной сеткой. Каждая точка запроса интерполируется из окружающих ее вокселей. Таким образом, новые 2D-изображения визуализируются без запуска нейронной сети, что значительно снижает сложность и требования к вычислениям. Plenoxels обеспечивают визуальное качество, аналогичное NeRF, но на два порядка быстрее.