Назад
143

3D Gaussian Splatting: Revolutionizing Real-Time Radiance Field Rendering

143

Введение

Gaussian Splatting — новый метод из области компьютерной графики для решения задачи novel-view synthesis (синтез изображений сцены с новых точек обзора). Он показывает впечатляющие результаты как в качестве синтеза, так и в скорости обучения и отрисовки новых изображений в высоком разрешении. Результаты авторов привлекли внимание не только в научном сообществе, но и за его пределами: метод с подобными свойствами способен значительно ускорить и удешевить различные технологии в графике и приблизить распространение их приложений. Поэтому будет интересно разобраться, как появилась идея создания Gaussian Splatting и как он работает.

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

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

Подробнее о методе

Метод 3D Gaussians Splatting (далее — 3D GS) можно разделить на три основные составляющие:

  • 3D Gaussians — новый способ представления пространства из реального мира;
  • Splatting or Tile-based Rasterizer — метод быстрого дифференцируемого рендеринга этого представления для высококачественного синтеза новых изображений;
  • Adaptive Density Optimizer — метод настройки компонент нового представления по собранным данным для создания цифрового пространства в высоком качестве.

Теперь разберем детально каждую компоненту.

3D Gaussians

Новое представление сцены строится из атомарных элементов — 3D гауссиан. Они задаются положением центра в пространстве, иначе говоря, средним \( \mu = (x, y, z)^{\top} \) , матрицей ковариации \( \Sigma \), а также цветом \( c = (R, G, B) \) и степенью насыщенности \( \sigma \in \mathbb{R}^{[0, 1]} \). Все параметры обучаемы и могут быть оптимизированы при помощи алгоритма обратного распространения ошибок. 3D гауссиан (совокупность этих элементов) задает radiance field — представление распределения света в пространстве сцены, которое можно описать отображением:

\( L_{\text{3DGS}}: \mathbb{R}^{5} \rightarrow \mathbb{R}^{+}, \quad L_{\text{3DGS}}(x, y, z, \theta, \phi) = \sum_i G(x, y, z, \mathbf{\mu}_i, \mathbf{\Sigma}_i) \cdot c_i(\theta, \phi), \)

где \( G(\hat{x}) = e^{-\frac{1}{2}(\hat{x})^{\top}\Sigma^{-1}(\hat{x})} \).

Важно отметить: при построении представления мы не использовали нейронные компоненты, что отличает этот подход от семейства NeRF.

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

Чтобы лучше понять, как выглядит новое представление сцены, представим несколько примеров ниже — от простого (с небольшим количеством компонент) к сложному (приближенному к реальности):

Рисунок 1. Одна гауссиана
Рисунок 2. Три гауссианы
Рисунок 3. Семь миллионов гауссиан (полностью непрозрачные). Лучше смотреть с зумом

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

Splatting or Tile-based rasterizer

Отрисовка (или рендеринг, или растеризация) происходит в четыре шага: \( (x, y, z, \theta, \phi) \) —> Frustum Culling —> Splatting —> Tiles Grouping & Sorting —> Parallel Rendering.

  • Frustum Culling для данной позы камеры определяет, какие гауссианы находятся за пределами обзора камеры, чтобы сэкономить вычислительные ресурсы в последующих вычислениях.
  • Splatting проецирует 3D гауссианы на поверхность изображения. Для данной матрицы перехода в пространство камеры \( W \) (extrinsics) и матрицы перехода в пространство изображения \( K \) (intrinciscs) мы можем посчитать проекцию среднего:

\( \mu^{2D} = K\left(\frac{W\mu}{(W\mu)_z}\right) \),

где \( (W\mu)_z \) — третья координата вектора \( \mu \). В свою очередь, проекция матрицы ковариации \( \Sigma \) :

\( J = \frac{\partial \mu^{2D}(\mu)}{\partial \mu} , \quad \Sigma’ = JW\Sigma W^T J^T \),

где \( J \) — это аффинная аппроксимация проекции.

Рисунок 4.1. (a) На этапе «splatting» 3D гауссианы проецируются в пространство изображения.
  • Tiles Grouping & Sorting разделяет изображение на непересекающиеся участки, каждый из которых включает 16×16 пикселей. Спроецированные гауссианы дублируются, если попадают на несколько участков одновременно. Тогда каждой присваивается порядковый номер согласно удаленности от камеры и номеру участка, который она перекрывает. Массив, сформированный для каждого региона, сортируется по глубине (близости к поверхности изображения) и номеру региона. Этот алгоритм позволяет значительно снизить вычислительные ресурсы, которые необходимо потратить на расчет гауссиан для каждого пикселя, благодаря параллельной обработке описанной далее.
Рисунок 4.2. (b) Алгоритм разделяет изображение на множество непересекающихся участков (tiles). (c) Алгоритм дублирует гауссианы, покрывающие несколько регионов, и присваивает каждой копии идентификаторы — ID региона и расстояние до поверхности изображения (Depth). Список сортируется по идентификаторам.
  • Parallel Rendering отрисовывает цвет в каждом пикселе изображения согласно тому, какие цвета и с какой насыщенностью хранят гауссианы в массиве данного пикселя. Цвет рассчитывается по формуле:

\( C(x) = \sum_{i \in N} c_i \alpha’_i(x) \prod_{j=1}^{i-1}\left(1 — \alpha’_j(x)\right) \),

где \( \alpha'(x) = \alpha(x)G^{2D}(x) \) — насыщенность цвета в каждой гауссиане, \( c \) — цвет гауссианы.

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

Рисунок 4.3. (d) После рендеринга отсортированных гауссиан мы можем получить все пиксели внутри региона. Обратите внимание: вычислительные процессы для пикселей и регионов независимы и могут выполняться параллельно.

Весь процесс остается дифференцируемым, и это, конечно, имеет решающее значение для оптимизации.

Adaptive density Optimizer

Без аккуратной настройки гауссиан под наши данные из описанного ранее представления мы не сможем отрисовать хороших изображений. Ключ для качественного рендеринга — алгоритм оптимизации из трех аспектов: правильная инициализация (Initialization), адаптивное уплотнение (Adaptive Densification) и дифференцируемая оптимизация (Differentiable Optimization).

  • Инициализация (Initialization)

Здесь авторы предлагают использовать алгоритм Structure-from-Motion (SfM) для получения разреженного облака точек. Этот шаг в любом случае выполняется, поскольку для работы любого алгоритма novel-view synthesis (NeRF или 3D GS) необходимо знать положения камер, с которых были получены обучающие изображения. Следовательно, все равно придется использовать SfM для их оценки. А поскольку в дополнение к положениям камер мы получаем сырые точки, мы можем использовать их для своей выгоды — инициализировать центры гауссиан. Однако иницилизировать точки можно и произвольно.

  • Адаптивное уплотнение (Adaptive Densification)

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

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

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

Алгоритм представлен на схеме ниже:

Рисунок 5. «Недостаточная реконструкция» в первой строке, “перереконструкция” — во второй.

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

  • Дифференцируемая оптимизация (Differentiable Optimization)

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

\( \mathcal{L} = (1 — \lambda)\mathcal{L}_1 + \lambda\mathcal{L}_{D-SSIM} \),

где \( \lambda \) — вес-гиперпараметр, \( \mathcal{L}1 = ||I{\text{pred}} — I_{\text{gt}}||1 \) — L1 функция потерь, \( \mathcal{L}{D-SSIM} \) — индекс структурного расхождения (DSSIM).

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

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

\( \Sigma = RSS^{\top}R^{\top} \),

где \( R \) и \( S \) — матрицы вращения и масштабирования, заданные через квартернион и 3D вектор соответственно. Таким образом, насыщенность получается по следущей схеме: \( R \), \( S \) —> \( \Sigma \) —> \( \Sigma’ \) —> \( \alpha \).

Схема метода 3D GS со всеми описанными компонентами представлена ниже:

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

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

Заключение

В завершение статьи приведем перечень преимуществ и недостатков нового подхода 3D GS:

+ высококачественные, фотореалистичные сцены

+ быстрая растеризация в реальном времени

+ быстрое обучение

— бОльшее требование к памяти по сравнению с NeRF подходами: VRAM (4 ГБ для просмотра, 12 ГБ для обучения) и диск (1 ГБ+)

Рисунок 7. Авторы статьи показывают результаты (Ours) рендеренга новых изображений с качеством, равным предыдущему методу с наилучшим качеством (Mip-NeRF360), причем требуется время оптимизации, сопоставимое с самыми быстрыми методами (InstantNGP; Plenoxels).

Полезные Ссылки:

[1] — 3D Gaussian Splatting for Real-Time Radiance Field Rendering, Kerbl, B. et al., SIGGRAPH 2023;

[2] — A Survey on 3D Gaussian Splatting, Chen, G. and Wang, W., arxiv 2024;

[3] — Dynamic 3D Gaussians: Tracking by Persistent Dynamic View Synthesis, Luiten J., 2023, International Conference on 3D Vision 2023;

[4] — Introduction to 3D Gaussian Splatting

Телеграм-канал

DeepSchool

Короткие посты по теории ML/DL, полезные
библиотеки и фреймворки, вопросы с собеседований
и советы, которые помогут в работе

Открыть Телеграм

Увидели ошибку?

Напишите нам в Telegram!