Компьютерное зрение

NeRF и Neural Rendering

2020 год. Группа из UC Berkeley публикует видео: 50 фотографий пластмассового лего-бульдозера, обработанных небольшой нейросетью, превращаются в фотореалистичный облёт с любого ракурса. Никаких меш-моделей, никакого ручного 3D-моделирования. Текстуры, тени, отражения на ободах - всё восстановлено сетью. К 2023 году те же 50 фото на новом методе генерируют видео в реальном времени со 100 FPS. Так начался новый раздел компьютерной графики - neural rendering.

  • **Google Maps Immersive View**: облёт городов в Google Earth построен на технологиях, родственных NeRF; миллионы фото зданий сшиваются в навигируемые 3D-сцены
  • **Spielberg's Lightyear (Pixar)**: использовали Gaussian Splatting для пре-визуализации сцен - режиссёр снимает пространство один раз и облетает виртуальную камеру для поиска кадра
  • **Apple Vision Pro Spatial Personas**: ML-аватары в FaceTime моделируют пользователя через neural radiance field, обновляемый в реальном времени по фронтальной камере

Предварительные знания

  • Свёрточные и трансформерные сети: что такое MLP, ReLU, attention
  • Классическое 3D-восстановление: SfM, COLMAP, sparse point cloud, калибровка камер
  • Базовое понимание рендеринга: луч, пиксель, alpha-композитинг
  • Линейная алгебра: матрицы проекции камеры, кватернионы для вращений
  • 3D Reconstruction
  • Vision Transformers

От Neural Radiance Fields до Gaussian Splatting

В 2020 году группа из UC Berkeley и Google (Ben Mildenhall, Pratul Srinivasan, Matthew Tancik и соавторы) опубликовала статью 'NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis' на ECCV. Идея оказалась обманчиво простой: представить целую 3D-сцену как один маленький MLP, отображающий координату и направление взгляда в цвет и плотность, а изображения восстанавливать через дифференцируемый объёмный рендеринг. Работа получила награду ECCV и за три года породила сотни производных методов: mip-NeRF для антиалиасинга, Instant-NGP от NVIDIA (хэш-сетки, обучение за секунды), NeRF in the Wild для нестабильного освещения. В 2023 году Bernhard Kerbl и соавторы из INRIA выпустили '3D Gaussian Splatting for Real-Time Radiance Field Rendering' на SIGGRAPH: вместо неявного MLP сцена хранится как явное облако миллионов 3D-гауссиан, что дало рендеринг свыше 100 FPS при качестве уровня NeRF. Метод почти мгновенно вытеснил NeRF в продакшене графики и AR/VR.

Neural Radiance Fields (NeRF)

В 2020 году группа из UC Berkeley показала демо, разорвавшее CV-сообщество: 50 фотографий лего-бульдозера, и через несколько часов обучения нейросеть генерирует фотореалистичный видеоролик облёта с любого ракурса. Технология - **Neural Radiance Fields (NeRF)**. Идея: вместо явной 3D-сетки представить сцену как непрерывную функцию F: (x, y, z, θ, φ) -> (RGB, σ). Маленький MLP (~8 слоёв) принимает координату точки в пространстве и направление взгляда, возвращает цвет и плотность. Рендеринг идёт через volumetric ray marching: для каждого пикселя проводится луч, на нём сэмплируется ~64 точки, и интегрируется по формуле объёмного рендеринга.

Ключевые элементы NeRF: (1) Positional encoding - входные координаты кодируются через [sin(2^k * x), cos(2^k * x)] для k=0..L, иначе MLP не способен учить высокочастотные детали (текстуры, края); (2) View-dependent эффекты - direction θ, φ позволяет моделировать блики и отражения; (3) Hierarchical sampling - сначала coarse-сеть прикидывает где плотность велика, потом fine-сеть подсэмплирует именно там. Стоимость обучения оригинального NeRF - 1-2 дня на одной GPU.

Зачем NeRF использует positional encoding входных координат вместо подачи (x, y, z) напрямую в MLP?

Gaussian Splatting

NeRF даёт фотореалистичный результат, но медленный: рендеринг одного кадра 800x800 занимает 30+ секунд на RTX 3090. В 2023 году INRIA опубликовала **3D Gaussian Splatting**, который перевернул индустрию: real-time рендеринг (>100 FPS) при качестве уровня NeRF. Идея: вместо неявной MLP-функции хранить сцену как явное облако из миллионов 3D-гауссиан, каждая с параметрами (μ - центр, Σ - ковариация, цвет SH-коэффициенты, прозрачность α). Рендеринг: проецировать гауссианы на экран и альфа-композитировать в порядке глубины.

Pipeline 3D Gaussian Splatting: (1) Инициализация из sparse point cloud от SfM (COLMAP); (2) Дифференцируемое splatting проецирует 3D-гауссианы в 2D-эллипсы на экране; (3) Adam-оптимизация по L1 + SSIM-функции потерь по картинкам обучения; (4) Adaptive density control - на основе градиентов клонируются ('split') или удаляются ('prune') гауссианы. Итог: 1-3 миллиона гауссиан на сцену, размер сцены 100-700 МБ, обучение 20-40 минут (против 1-2 дней у NeRF).

Почему 3D Gaussian Splatting достигает 100+ FPS, в то время как NeRF застрял на ~0.03 FPS?

Синтез новых видов

**Novel View Synthesis (NVS)** - общий термин для задачи: даны несколько фотографий объекта или сцены с известными позами камер, требуется сгенерировать вид с произвольной новой камеры. NeRF и Gaussian Splatting - это per-scene решения: обучают одну модель под одну сцену. Generalizable NVS-методы (PixelNeRF, IBRNet, MVSNeRF) предобучаются на сотнях сцен и могут сделать рендер новой сцены feed-forward за секунды, без долгого обучения - но качество ниже, чем у per-scene NeRF/3DGS.

Pipeline производственной системы NVS: (1) Capture - снять 50-300 фото с разных ракурсов, держать одинаковый фокус и экспозицию; (2) Pose estimation - запустить COLMAP/HLoc для построения sparse point cloud и калибровки камер; (3) Train NeRF/3DGS на 20-60 минут; (4) Render - сгенерировать видео по заданной траектории (spline через ключевые позы). Качество сильно зависит от полноты покрытия сцены: тёмные углы и зеркальные поверхности обычно ломают reconstruction.

Какое главное практическое ограничение per-scene NeRF/3DGS, которое решают generalizable-методы (PixelNeRF и подобные)?

Генерация 3D-сцен

Следующий шаг после NVS - **генерация** 3D с нуля, без входных фотографий. DreamFusion (Google, 2022) предложил Score Distillation Sampling (SDS): использовать предобученный 2D-diffusion (Imagen) как учителя для NeRF. Алгоритм: рендерим NeRF из случайного угла -> diffusion-модель оценивает 'насколько это похоже на текст-промпт?' -> градиент течёт обратно в параметры NeRF. После 2-3 часов оптимизации NeRF представляет 3D-объект, который из любого ракурса похож на запрос вроде 'a hamburger floating in space'.

Метод | Время | Качество | Особенности. DreamFusion (SDS) | 1.5-2 ч | средне | первый text-to-3D через 2D diffusion. Magic3D | 40 мин | выше | coarse-to-fine, две стадии. SyncDreamer | секунды | средне | multi-view diffusion за один проход. TripoSR | секунды | хорошо | image-to-3D, прямой ViT-decoder. Trellis | минуты | очень высокое | latent 3D-diffusion на сетках/гауссианах. Тренд 2024-2025: переход от SDS к прямому 3D-генеративу - быстрее и стабильнее.

NeRF, Gaussian Splatting и DreamFusion - это конкурирующие подходы, один из них в итоге победит

Это разные слои стека: NeRF/3DGS - представления сцены, NVS - inference (рендеринг видов), SDS - инструмент для обучения, когда нет точных входов

NeRF и 3DGS отвечают на вопрос 'как хранить 3D', NVS - 'как рендерить из этого', SDS - 'как получить 3D, когда есть только текст или мало фото'. Они комбинируются: DreamFusion использует NeRF как представление и SDS как loss; современные text-to-3D пайплайны выдают 3DGS на выходе вместо NeRF.

Почему DreamFusion использует 2D-diffusion модель как 'учителя' для оптимизации 3D-NeRF, а не обучает 3D-diffusion напрямую?

Ключевые идеи

  • **NeRF** представляет сцену как непрерывную MLP-функцию (x, y, z, direction) -> (RGB, σ); рендеринг через volumetric ray marching, обучение по серии фото с известными позами
  • **Positional encoding** через sin/cos на разных частотах - технический ключ к качеству: без него MLP не учит высокочастотные детали
  • **3D Gaussian Splatting** заменяет неявный MLP на явное облако миллионов 3D-гауссиан; рендер real-time через tile-based alpha blending, обучение в десятки раз быстрее NeRF
  • **Score Distillation Sampling (DreamFusion)** компенсирует нехватку 3D-датасетов: 2D-diffusion работает как 'оракул реализма' для оптимизации NeRF по текстовому промпту

Связанные темы

Лего-бульдозер из вступления показал, что нейросеть может выучить 3D-сцену из плоских фото. Эта идея перевернула не только CV, но и computer graphics, AR/VR и пайплайны кинопроизводства. NeRF/3DGS опираются на классические методы 3D-восстановления и сами становятся фундаментом для генеративных моделей:

  • 3D Reconstruction (классическая) — NeRF и 3DGS используют sparse point cloud от SfM/COLMAP как стартовую инициализацию; без классической калибровки камер neural rendering не запустится
  • Computer Graphics: рендеринг — Уравнение объёмного рендеринга в NeRF - дифференцируемая версия классического volume rendering из физически корректной графики 1980-х
  • Diffusion модели — DreamFusion использует предобученный 2D-diffusion (Imagen, Stable Diffusion) как учителя для 3D-генерации - связь между генеративным CV и neural rendering

Вопросы для размышления

  • NeRF хранит сцену как MLP (~5 МБ весов), 3DGS - как явные 3D-гауссианы (100-700 МБ). С точки зрения хранения 1000 сцен в облаке какой формат выигрывает экономически и почему?
  • Лего-бульдозер из 50 фото восстановим. Что произойдёт с NeRF, если входные фотографии содержат зеркало или прозрачное стекло? Какие предположения метода ломаются?
  • Score Distillation Sampling использует 2D-diffusion как оракула. Если завтра выйдет 3D-diffusion в десять раз качественнее, какие компоненты пайплайна text-to-3D останутся, а какие исчезнут?

Связанные уроки

  • cv-12 — 3D reconstruction - фундамент для implicit NeRF представления
  • cv-05 — ViT-архитектура влияет на NeRF generalization (generalizable NeRF)
  • cv-14 — Dynamic NeRF для video - следующий шаг после статической сцены
  • cgeom-07 — NeRF - implicit геометрия vs explicit mesh в computational geometry
  • la-06-transformations
NeRF и Neural Rendering

0

1

Войти