Продолжаем рассказ, теперь про 3D реконструкцию.

И 3D Gaussian Splatting, и полигональные модели можно получить с помощью методов фотограмметрии, задача которых — по набору фотографий построить 3D модель объекта или окружающей среды. Но методы, за счёт которых это достигается, существенно отличаются.

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

Реконструкция сцены с помощью Gaussian Splatting же работает так. Сначала, как и для получения полигональной модели, необходимо определить положения снимков. Это делается теми же инструментами. А вот построение 3D модели с помощью Gaussian Splatting плотно опирается на теорию Deep Learning.

Реконструкция происходит итеративно, используя по одному исходному изображению (размер батча равен 1). Фактически мы решаем задачу регрессии, пытаясь приблизить виртуальный снимок 3D модели из гауссиан к исходному изображению. В процессе обучения используется стандартный цикл обучения, с даталоадерами, Адамами, регуляризациями, препроцессингом и постпроцессингом для моделей, и так далее.

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