Компьютерная графика
Neural Rendering: NeRF
2020 год: публикуется NeRF. 2023 год: 3D Gaussian Splatting даёт real-time рендеринг. 2024 год: Apple Vision Pro использует это технологию в продукте. За 4 года research прошёл путь от «интересная идея» до «в кармане миллиарда людей». Neural rendering меняет как снимают кино, проектируют здания, проводят виртуальные туры и работают AR/VR устройства.
- **Google Maps Immersive View** строит 3D виды городов из aerial + street фото через NeRF-like reconstruction: облёт зданий без физического посещения
- **Apple Vision Pro Spatial Photos** конвертирует обычные фото в 3D immersive experience через on-device neural depth estimation и view synthesis
- **Netflix 'Matrix Resurrections'** использовал NeRF-based technology для bullet-time эффектов без установки 100+ физических камер
- **Matterport** оцифровывает недвижимость в 3D для продажи: 11M+ сцен, NeRF-powered 3D tours - покупатель облетает квартиру до посещения
Neural Radiance Fields (NeRF)
**NeRF (Mildenhall et al., 2020)** представляет 3D сцену как нейронную сеть: MLP принимает 3D координату (x,y,z) и угол обзора (θ,φ), возвращает плотность σ (объект здесь или нет) и цвет (r,g,b). Рендеринг нового вида: каждый луч через пиксель сэмплируется вдоль дальности, MLP запрашивается в каждой точке, объёмный rendering интегрирует результаты. 100 фотографий → фотореалистичный синтез любого вида.
Positional encoding - ключевое решение. MLP с обычными (x,y,z) входами не может захватить высокочастотные детали (острые края, мелкие текстуры) - neural networks склонны к spectral bias. PE трансформирует координаты в sinusoidal basis functions: γ(p) = (sin(2^0 πp), cos(2^0 πp), ..., sin(2^L πp), cos(2^L πp)). После PE сеть видит high-frequency structure.
NeRF обучается за 1-2 дня на одной A100 GPU. Почему так медленно для такой небольшой сети (8 слоёв MLP)?
3D Gaussian Splatting
**3D Gaussian Splatting (3DGS, 2023)** - революция в neural rendering скорости. Вместо MLP: сцена представлена миллионами 3D Gaussian'ов - маленьких цветных 'облаков'. Каждый Gaussian: позиция (3D), ковариационная матрица (форма/ориентация), непрозрачность, spherical harmonics coefficients (view-dependent цвет). Рендеринг: project Gaussian'ы на экран (2D splats), сортировать по глубине, alpha-blend. Результат: 30-120fps на RTX 3090.
3DGS обучается за 30-60 минут vs 1-2 дня для NeRF. Хранение: 3DGS файл для комнаты - ~300MB vs NeRF weights - ~5MB. Компромисс: 3DGS storage больше, но rendering намного быстрее. WebGL реализация 3DGS (splat.xyz) позволяет просматривать Gaussian сплаты прямо в браузере без GPU. Reality Capture → COLMAP → 3DGS - полный pipeline реконструкции из фотографий.
3DGS рендерит быстрее NeRF в 100-1000x. Почему рендеринг быстрее если хранить миллионы 3D Gaussian'ов vs один MLP?
Novel View Synthesis
**Novel View Synthesis (NVS)** - генерация фотографии сцены с произвольной позиции камеры на основе набора входных изображений. NeRF и 3DGS - лучшие современные NVS методы. Применения: виртуальные туры, 3D реконструкция без LiDAR, кинематографические эффекты (bullet time без сотен камер).
Instant-NGP (NVIDIA, 2022) ускорил NeRF с 1-2 дней до 5 минут через multiresolution hash encoding. Вместо positional encoding - lookup table в hash grid на разных разрешениях. Параметры: GPU-side hash tables обновляются через backprop. Результат: студент может сделать NeRF из видео за кофе. Реализация: github.com/NVlabs/instant-ngp.
NeRF обученный на 100 фотографиях комнаты показывает четкое изображение с training viewpoints но размытое с novel viewpoints между ними. Что означает эта проблема?
Real-Time Neural Rendering
**Разрыв между качеством и скоростью** в neural rendering сокращается. 3DGS дал real-time (30-120fps), но ограничен статическими сценами и большим storage. Активные направления: Dynamic NeRF (deformable scenes), Compact 3DGS (сжатие через vector quantization), Relightable NeRF (изменение освещения), NeRF для AR/VR.
Apple Vision Pro (2024) использует NeRF-like rendering для Spatial Photos: стереопара фотографий трансформируется в immersive 3D experience через neural depth estimation и view synthesis. Google Immersive View в Maps строит 3D виды из сочетания aerial imagery и NeRF - пользователь может облетать здания с любого угла.
NeRF и 3DGS создают настоящую 3D геометрию объектов, как 3D сканер
NeRF и 3DGS создают representation для view synthesis - отлично для рендеринга с любого угла, но не дают explicit mesh или точную геометрию для CAD/manufacturing
NeRF density поле и 3DGS Gaussian'ы - appearance models, не geometry models. Извлечение mesh из NeRF (через marching cubes) даёт грубый результат. Для точной геометрии - LiDAR или structured light 3D scanning. Для реалистичного рендеринга - NeRF/3DGS
3DGS идеален для статических сцен. Для dynamic video (актёр двигается) нужен другой подход. Почему 3DGS плохо масштабируется на видео?
Ключевые идеи
- **NeRF:** MLP (x,y,z,θ,φ) → (σ, rgb); volume rendering через ray marching; positional encoding захватывает high-frequency детали; 1-2 дня обучения
- **3D Gaussian Splatting:** миллионы 3D Gaussian'ов; tile-based rasterization; 30-120fps; 1 час обучения; 300MB storage
- **Novel View Synthesis:** COLMAP для camera poses; фотореалистичный синтез любого вида; оценка через PSNR/SSIM/LPIPS
- **Real-Time:** 3DGS в production для static scenes; dynamic scenes - открытая проблема; Apple/Google интегрировали в products
Связанные темы
Neural rendering пересекается с несколькими областями:
- Differentiable Rendering — NeRF - пример differentiable renderer: gradient descent оптимизирует MLP weights для минимизации photometric loss
- Self-Supervised Learning — NeRF обучается self-supervised - только изображения без 3D ground truth. DINO features используются в Semantic NeRF для segmentation
- Graphics Engine Architecture — Интеграция 3DGS в game engine требует специального rendering pass и memory management для миллионов Gaussian'ов
Вопросы для размышления
- NeRF не знает о 3D структуре явно - MLP учится имплицитно из фотографий. Как это отличается от эпиполярной геометрии и traditional stereo reconstruction? Когда NeRF лучше, когда хуже классического MVS (Multi-View Stereo)?
- 3DGS хранит сцену как миллионы Gaussian'ов - это не mesh, не voxels, не points. Как компрессия (VQ, entropy coding) может уменьшить 300MB до 30MB без значительной потери качества, и какой trade-off это создаёт?
- Editing NeRF-сцены - открытая проблема. Если хочется убрать стул из комнаты и посмотреть что за ним, NeRF должен 'угадать' background. Как in-painting через diffusion models и NeRF можно объединить для semantic scene editing?