Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Neural Radiance Fields (NeRF)

Нейронные поля излучения (NeRF) кодируют 3D-сцену в нейросети, обученной на фотографиях с известными параметрами съёмки, и создают новые ракурсы методом объёмного рендеринга вдоль лучей камеры.

Поле нейронного излучения (NeRF) представляет 3D-сцену в виде нейронной сети, которая сопоставляет любой трехмерной позиции и направлению взгляда плотность и цвет; сеть обучается на наборе обычных фотографий с известными позициями камеры. Для рендеринга вида через каждый пиксель проводят луч, запрашивают значения сети в точках вдоль него, а затем смешивают результаты с помощью объемного рендеринга. Поэтому обученный NeRF показывает сцену с ракурсов, которые не снимала ни одна камера. Бен Милденхолл, Пратул Шринивасан, Мэттью Танчик и их коллеги из UC Berkeley, Google Research и UC San Diego представили этот метод в работе NeRF: представление сцен в виде полей нейронного излучения для синтеза видов на ECCV 2020. NeRF воспроизводит отражения, тонкие структуры и полупрозрачные материалы, с которыми плохо справляется основанная на сетках фотограмметрия, и положил начало волне исследований нейронного рендеринга, приведшей к гауссовому сплаттингу.

Принцип работы нейронных полей излучения#

Исходный NeRF — это многослойный перцептрон без сверток. Он обрабатывает закодированную трехмерную позицию с помощью 8 полносвязных слоев по 256 каналов и выдает плотность объема и вектор признаков из 256 значений. Вектор признаков объединяется с закодированным направлением взгляда и проходит еще через один слой из 128 каналов, который выдает цвет RGB. Плотность зависит только от позиции, что сохраняет согласованность геометрии между видами, а цвет также зависит от направления, благодаря чему учитываются блики и отражения, смещающиеся при движении камеры:

Для рендеринга пикселя NeRF выбирает 64 точки вдоль луча камеры с помощью грубой сети, затем еще 128 точек там, где грубый проход обнаружил плотность, и вычисляет значения тонкой сети во всех этих точках. Каждый образец вносит свой цвет пропорционально непрозрачности и пропусканию — доле света, проходящего через предыдущие образцы; взвешенная сумма дает цвет пикселя. Во время обучения минимизируется квадрат разности между цветами пикселей на отрендеренных и исходных фотографиях для пакетов из 4096 лучей. Положения камер обычно определяются с помощью программ для Structure from Motion, например COLMAP, а обучение на одной сцене занимало от 100 000 до 300 000 итераций, то есть примерно один-два дня на GPU NVIDIA V100.

Обычный MLP, которому подают исходные координаты, обучается гладким функциям и размывает мелкие детали, поэтому NeRF сначала отображает каждую координату в синусы и косинусы с удваивающимися частотами: 10 частот для позиции и 4 для направления. В этом примере кода на PyTorch одна и та же сеть обучается на полосатом одномерном сигнале — с позиционным кодированием и без него:

import torch
from torch import nn

torch.manual_seed(0)
# Color along one line through a scene, with fine detail such as a striped texture
x = torch.linspace(-1, 1, 512).unsqueeze(1)
target = torch.sin(12 * torch.pi * x) * torch.cos(3 * torch.pi * x)

# NeRF's positional encoding: sines and cosines of the coordinate at 10 doubling frequencies
freqs = 2.0 ** torch.arange(10) * torch.pi
encoded = torch.cat([torch.sin(x * freqs), torch.cos(x * freqs)], dim=1)

for name, inputs in (("raw coordinate", x), ("positional encoding", encoded)):
    mlp = nn.Sequential(nn.Linear(inputs.shape[1], 256), nn.ReLU(), nn.Linear(256, 256), nn.ReLU(), nn.Linear(256, 1))
    optimizer = torch.optim.Adam(mlp.parameters(), lr=1e-3)
    for step in range(1000):
        loss = ((mlp(inputs) - target) ** 2).mean()
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"{name}: mean squared error {loss.item():.4f}")

Код выводит raw coordinate: mean squared error 0.0870 и positional encoding: mean squared error 0.0000. Средняя мощность сигнала равна 0,25, поэтому сеть на исходных координатах не улавливает около трети сигнала — мелкие полосы, — а сеть с кодированием воспроизводит его.

Более быстрые и надежные NeRF#

  • Сглаживание алиасинга и неограниченные сцены: Mip-NeRF рендерит конусы вместо бесконечно тонких лучей, чтобы устранять алиасинг, а Mip-NeRF 360 расширяет этот подход на неограниченные панорамные съемки 360°.
  • Скорость: Instant NGP от NVIDIA заменяет большую часть сети мультимасштабной хеш-таблицей обучаемых признаков. Это сокращает обучение с нескольких дней до секунд или минут, а рендеринг изображения размером 1920×1080 — до десятков миллисекунд.
  • Фотографии, сделанные в реальных условиях: NeRF in the Wild добавляет эмбеддинги внешнего вида для каждой фотографии и отдельный компонент для временных объектов, благодаря чему даже коллекции интернет-фотографий с меняющимся освещением и проходящими туристами позволяют получить четкую реконструкцию.
  • Преобразование текста в 3D: DreamFusion оптимизирует NeRF, пока его изображения со всех ракурсов не станут правдоподобными для двумерной диффузионной модели преобразования текста в изображение. Так объекты создаются по запросам без обучающих данных в 3D.
  • Гауссов сплаттинг: явно хранит сцену в виде миллионов трехмерных гауссиан и растеризует их, обеспечивая рендеринг в реальном времени без вычисления сети для каждого пикселя. В 2023 году его качество сравнялось с Mip-NeRF 360, и во многих инструментах захвата он заменил NeRF, хотя требует больше памяти.
  • Фотограмметрия: создает явную сетку, сопоставляя признаки на фотографиях. Сетки компактны и редактируются в стандартных программах для работы с 3D, но плохо справляются с блестящими, прозрачными и очень тонкими поверхностями.
  • Оценка глубины: NeRF попутно создает карту глубины — ожидаемое расстояние, на котором останавливается каждый луч, — но только после оптимизации на множестве фотографий одной сцены с известными положениями камер. Модели оценки монокулярной глубины предсказывают глубину по одному изображению за один прямой проход.
  • Неявные нейронные представления: NeRF — это неявное нейронное представление, специализирующееся на излучении и плотности; существуют и сети, которые хранят изображения, формы или аудио в виде непрерывных функций.

Требования к съемке#

NeRF предполагает, что сцена статична и освещение постоянно, а съемка ведется с множества перекрывающихся ракурсов с точными координатами камер. В исходной статье для обучения на каждом синтетическом объекте использовалось 100 отрендеренных видов, а на каждой реальной сцене с фронтальным обзором — от 20 до 62 фотографий. Любое движение во время съемки, например проходящий человек или автомобиль, попадает на одни фотографии, но отсутствует на других, и при оптимизации представляется полупрозрачными «плавающими» объектами. Модели сегментации экземпляров Ultralytics YOLO26 маскируют людей и транспортные средства на каждой фотографии, чтобы пиксели с ними можно было исключить из обучения.

Примеры применения в реальных условиях#

  • Кино и виртуальное производство: отснятые локации реконструируются и рендерятся с новых траекторий камеры, создавая фотореалистичные фоны и референсы декораций.
  • Робототехника и симуляция вождения: записанные среды реконструируются, чтобы команды автономных транспортных средств и робототехники могли рендерить виды с датчиков из точек, в которых исходная машина не проезжала.
  • Визуализация продуктов: несколько десятков фотографий товара превращаются в интерактивное изображение, которое покупатели могут свободно вращать.
  • Карты: для функции Immersive View в Google Maps компания Google реконструировала интерьеры ресторанов и кафе с помощью NeRF, используя фотографии с DSLR-камер, снятые примерно за час на каждое заведение. В основе лежал Mip-NeRF 360 с эмбеддингами внешнего вида из NeRF in the Wild и учетом экспозиции из Block-NeRF; результатом стали интерактивные видео 360° по выбранным маршрутам полета.

Изучи решения

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

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

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

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

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения