Розробка системи 3D-реконструкції через Gaussian Splatting

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка системи 3D-реконструкції через Gaussian Splatting
Складний
~1-2 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Розробка системи 3D-реконструкции через Gaussian Splatting

3D Gaussian Splatting (3DGS) — революционный метод 2023 года, который совмещает качество NeRF с возможностью рендеринга в реальном времени (100+ FPS). Сцена представляется набором миллионов 3D гауссиан с атрибутами: позиция, форма, прозрачность, цвет (сферические гармоники). Рендеринг — быстрая растеризация гауссиан, а не дорогостоящий ray marching NeRF.

Принцип работы

Инициализация: SfM облако точек (COLMAP) → каждая точка становится начальным 3D Gaussian. Оптимізація: градиентный спуск по позициям, формам и цветам гауссиан так чтобы они воспроизводили входные фотографии. Адаптивный densification: разделение маленьких гауссиан и удаление прозрачных — модель адаптирует количество гауссиан автоматически.

# gaussian-splatting (официальная реализация + nerfstudio)
from nerfstudio.configs.method_configs import method_configs

# 3DGS через nerfstudio
# ns-train splatfacto --data ./processed

# Параметры оптимизации
config = method_configs['splatfacto']
config.pipeline.model.num_downscales = 2      # прогрессивное обучение
config.pipeline.model.densify_grad_thresh = 0.0002
config.pipeline.model.densify_size_thresh = 0.01
config.max_num_iterations = 30000

gsplat: Python библиотека для 3DGS

import gsplat
import torch

class GaussianSplattingReconstruction:
    def __init__(self):
        self.means = None       # [N, 3] позиции
        self.quats = None       # [N, 4] ориентации (quaternions)
        self.scales = None      # [N, 3] масштабы
        self.opacities = None   # [N, 1] прозрачность
        self.colors = None      # [N, 3] базовый цвет или SH коэффициенты

    def render(self, camera_pose: torch.Tensor,
               intrinsics: dict,
               width: int, height: int) -> torch.Tensor:
        """Рендеринг сцены с заданной позиции камеры"""
        renders, alphas, _ = gsplat.rasterization(
            means=self.means,
            quats=self.quats,
            scales=self.scales,
            opacities=torch.sigmoid(self.opacities),
            colors=self.colors,
            viewmats=camera_pose.unsqueeze(0),
            Ks=build_K(intrinsics).unsqueeze(0),
            width=width,
            height=height,
            near_plane=0.01,
            far_plane=100.0,
            render_mode='RGB'
        )
        return renders[0]  # [H, W, 3]

Сравнение 3DGS vs NeRF

Параметр 3D Gaussian Splatting NeRF (Instant-NGP)
Скорость рендеринга 100–200+ FPS 5–30 FPS
Качество (PSNR) 27–32 dB 26–31 dB
Время обучения 30–60 мин 15–30 мин
Размер модели 500MB–2GB 50–500MB
Редактирование сцены Проще (гауссианы) Сложнее
Прозрачные объекты Хуже Хуже

4D Gaussian Splatting (динамические сцены)

Расширение для видео и движущихся объектов — добавление временного измерения:

# 4D-GS: каждая гауссиана имеет временную траекторию
# Применение: спортивные видео, медицинские симуляции, VFX

from fourDGaussians import FourDGaussianModel

model = FourDGaussianModel(
    sh_degree=3,
    deformation_type='MLP'  # MLP аппроксимация деформации
)
# Навчання на видео-последовательности с известными позициями камер

Інтеграція с 3D редакторами

Экспорт гауссиан в формат .ply (совместимый с SuperSplat, GSplat редакторами):

import numpy as np
from plyfile import PlyData, PlyElement

def export_gaussians_to_ply(means, colors, scales, output_path: str):
    """Экспорт 3DGS в Polycam/SuperSplat совместимый PLY"""
    vertex_data = np.zeros(len(means), dtype=[
        ('x', 'f4'), ('y', 'f4'), ('z', 'f4'),
        ('red', 'u1'), ('green', 'u1'), ('blue', 'u1'),
        ('scale_0', 'f4'), ('scale_1', 'f4'), ('scale_2', 'f4'),
    ])

    vertex_data['x'] = means[:, 0]
    vertex_data['y'] = means[:, 1]
    vertex_data['z'] = means[:, 2]
    vertex_data['red'] = (colors[:, 0] * 255).astype(np.uint8)
    vertex_data['green'] = (colors[:, 1] * 255).astype(np.uint8)
    vertex_data['blue'] = (colors[:, 2] * 255).astype(np.uint8)

    ply = PlyData([PlyElement.describe(vertex_data, 'vertex')], text=False)
    ply.write(output_path)

Застосування 3DGS

  • E-commerce: фотореалистичный 360° просмотр товара в браузере в реальном времени (WebGL через three-gaussian-splats)
  • Архитектурные туры: виртуальные экскурсии по объектам
  • VFX и кино: быстрые 3D-активы из фотосессии
  • Digital twin: документация промышленных объектов
Задача Срок
Pipeline для object capture 3–4 недели
WebGL viewer + облачный сервис 6–9 недель
4D/динамические сцены 10–16 недель