ATSplat: как адаптивные токены сократили число гауссов в 5,7 раз при реконструкции 3D-сцен

ATSplat: как адаптивные токены сократили число гауссов в 5,7 раз при реконструкции 3D-сцен

Все современные feed-forward методы для 3D Gaussian Splatting страдают одной и той же проблемой: они размещают гауссовы примитивы в каждом пикселе входного изображения. Каждый пиксель → один гаусс → подъём вдоль луча камеры. Получается просто и эффективно, но неоптимально — количество примитивов растёт вместе с разрешением камеры и числом ракурсов, а не со сложностью сцены. Фрагментарные текстуры, пустые стены и гладкие поверхности получают столько же примитивов, сколько геометрически сложные области. ATSplat решает эту проблему, возвращая в feed-forward режим способность классического 3DGS к адаптивому уплотнению — и делает это за один forward pass.

В чём суть проблемы пиксельного выравнивания

Классический 3D Gaussian Splatting начинается с разреженного облака точек от COLMAP и затем адаптивно уплотняет примитивы: там, где реконструкция некачественная, гауссы клонируются и масштабируются, а в простых областях остаются разреженными. Это элегантно — вычислительная мощность концентрируется на сложных участках.

Feed-forward подходы — pixelSplat, MVSplat, DepthSplat, iLRM — отказались от этой итеративной оптимизации ради скорости. Они регрессируют гауссы напрямую из изображений, за один проход сети. Но привязка к пиксельной сетке создаёт парадокс: примитивы расставляются не по сцене, а по камере. Если камера сняла гладкую стену в высоком разрешении — стена получает миллионы примитивов. Если в кадре оказалась сложная геометрия с перекрытиями — ей всё равно достанется тот же пиксельный бюджет.

Результат: типичный feed-forward метод генерирует 131K–262K гауссов на сцену (при разрешении 256×256), причём значительная часть — избыточна. При масштабировании до 512×960 и 12 ракурсов количество примитивов достигает миллионов, что делает рендеринг медленным, а хранение — дорогим.

Архитектура ATSplat: от пикселей к адаптивным 3D-токенам

ATSplat переосмысливает три ключевых принципа классического 3DGS — разреженную инициализацию, свободное 3D-размещение и адаптивное уплотнение — как feed-forward операции над набором якорных токенов в трёхмерном пространстве.

Мультивью-энкодер. Каждое входное изображение токенизируется в грубые патчи через замороженный DINO-бэкбон. К патч-токенам добавляются Plücker raymap-эмбеддинги — кодировка геометрии камеры, позволяющая сети понимать направление луча для каждого патча. Затем мульти-вью-трансформер применяет глобальный self-attention по всем ракурсам, создавая кросс-вью признаки: каждый патч теперь знает, что видят другие камеры.

Инициализация разреженных якорей. Вместо того чтобы создавать гаусс в каждом пикселе, ATSplat предсказывает глубину для каждого патча через лёгкий MLP и проецирует результат в 3D по лучу камеры. Каждый патч становится одним якорным токеном — точка в пространстве с признаковым вектором. Эти токены образуют разреженный каркас сцены. Для обогащения локальным 3D-контекстом каждый якорь агрегирует признаки k-ближайших соседей через PointNet-оператор.

Декодер image-to-3D. Якорные токены проходят через стек трансформер-блоков, где cross-attention с мелкозернистыми признаками изображений (извлечёнными при двойном разрешении) уточняет каждый токен. Именно здесь происходит декодирование в гауссы: каждый токен регрессирует набор локальных гауссов, чьи позиции предсказаны как смещения от якоря. Примитивы больше не привязаны к пиксельной сетке — они размещены в 3D относительно якоря.

Адаптивное расширение токенов — ключевой механизм

Самая интересная часть ATSplat — модуль Adaptive Token Expansion (ATE). В классическом 3DGS адаптивное уплотнение работает через градиенты рендеринга: если область недовосстановлена, гауссы клонируются. Feed-forward модель не может вычислить градиенты на инференсе — у неё нет итераций оптимизации.

ATSplat обходит это, обучая лёгкий MLP предсказывать неопределённость каждого токена. На каждом блоке декодера MLP выдаёт скалярный score для каждого якоря. Токены с наивысшей неопределённостью (верхняя доля ρ_l) расширяются: их признаки проходят через линейную проекцию, создающую M резидуальных дочерних токенов. Каждый дочерний токен наследует координату якоря, но получает собственный признак — а значит, и собственный набор гауссов со своими позициями и цветами.

Как обучается предсказание неопределённости. Это тонкий момент. Score неопределённости привязывается как атрибут к гауссам токена и рендерится через стандартное альфа-композитинг в 2D-карту неопределённости. Эта карта супервизируется L1-лоссом к настоящей карте ошибок рендеринга (D-SSIM между рендером и ground truth). Градиенты останавливаются для параметров гауссов (stop-gradient) — лосс обновляет только предиктор неопределённости, не трогая геометрию.

Результат: за один forward pass сеть самостоятельно определяет, какие области сцены нуждаются в дополнительных примитивах, и расширяет токены именно там. Гладкая стена остаётся с одним токеном, а сложная текстурированная область — с несколькими.

Количественные результаты

На датасете RealEstate10K (домашние видео из YouTube, в основном закрытые помещения) при 2 входных ракурсах и разрешении 256×256:

ATSplat достигает 28,46 dB PSNR, 0,894 SSIM и 0,118 LPIPS — используя всего 23K гауссов за 0,022 секунды инференса. Для сравнения, pixelSplat показывает 25,89 dB при 131K гауссах (в 5,7 раз больше), MVSplat — 26,39 dB при 131K, а iLRM — 28,65 dB при 131K. ATSplat почти догнал iLRM по качеству, затратив в 5,7 раз меньше примитивов и в 3 раза меньше времени.

TokenGS — ближайший конкурент по адаптивности — использует 262K гауссов при 28,41 dB. То есть ATSplat лучше по качеству при в 11 раз меньшей сцене.

На более сложном датасете DL3DV (крупномасштабатные съёмки внутренних и наружных сцен) при 6 входных ракурсах и разрешении 256×448 ATSplat показывает 29,06 dB PSNR с 507K гауссами. DepthSplat при тех же условиях — 28,92 dB, но с большим числом примитивов.

При увеличении разрешения до 512×960 и 12 ракурсов ATSplat генерирует всего 311K гауссов — и завершает реконструкцию менее чем за секунду на одном RTX 3090. Рендеринг новелльных ракурсов при этом идёт на 1136 FPS.

Почему это важно для применения

Сокращение числа гауссов в 5,7 раз — не просто академическое достижение. Это практический параметр, определяющий, где можно применять метод. Мобильные устройства с ограниченной памятью не могут хранить миллионы примитивов. AR/VR-приложения требуют стабильные 90+ FPS — при миллионах гауссов тайт-фреймы падают ниже порога комфорта. Веб-рендеринг через WebGPU тоже ограничен пропускной способностью.

ATSplat с его 23K–507K гауссами вписывается в эти ограничения. 311K примитивов при 1136 FPS означает, что рендеринг занимает менее миллисекунды — даже с запасом для AR-композиции, освещения и пост-обработки.

Кроме того, адаптивное размещение имеет фундаментальное значение для качества. Там, где пиксельные методы размещают избыточные примитивы на гладких участках и недооснащают сложные области, ATSplat перенаправляет ёмкость туда, где она действительно нужна. Это прямая аналогия с адаптивным уплотнением в классическом 3DGS — но реализованная в одном forward pass.

Обучение и реализация

Модель обучалась на двух датасетах параллельно. RealEstate10K — домашние видео из YouTube с преимущественно закрытыми помещениями, разрешение кадров варьируется. DL3DV — крупномасштабный датасет с внутренними и наружными сценами, более сложная геометрия и большие пространственные экстенты. Обучение проходило на GPU NVIDIA (архитектура Ampere/Ada), оптимизатор AdamW с cosine learning rate schedule. Энкодер использовал замороженный DINOv2 — предобученный визуальный трансформер, хорошо передающий семантические признаки без дополнительного обучения.

Тренировочный pipeline включает несколько компонент лосса одновременно: фото-лосс (L1 между рендером и ground truth), перцептивный лосс (LPIPS), SSIM-лосс для структурной согласованности, лосс глубины для патчей, и лосс неопределённости для ATE-модуля. Комбинирование этих лоссов позволяет сети одновременно оптимизировать визуальное качество, геометрическую точность и адаптивность размещения.

Интересная деталь реализации — использование Plücker raymap для кодирования геометрии камеры. Каждая камера характеризуется 6-мерным Plücker-вектором (направление луча и момент), который добавляется как эмбеддинг к патч-токенам. Это позволяет сети различать, откуда смотрит каждая камера, без явной подачи матриц проекции — информация о геометрии встроена в признаки.

Ограничения и будущее

Авторы честно указывают на три открытых направления. Во-первых, ATSplat расширяет токены, но не отбрасывает ставшие избыточными — механизм pruning, аналогичный классическому 3DGS, мог бы дополнительно сократить число примитивов на 10–20% и ускорить декодер. Во-вторых, масштабирование на крупные сцены с десятками ракурсов и высоким разрешением потребует архитектурных улучшений — текущая архитектура тестировалась на 2–12 ракурсах. В-третьих, расширение на случай без заранее известных поз камер (unposed setting) открыло бы применение к произвольным фото из интернета.

Часто задаваемые вопросы

Чем ATSplat отличается от pixelSplat и MVSplat?

PixelSplat и MVSplat размещают один гаусс в каждом пикселе входного изображения, поднимая его вдоль луча камеры. Количество примитивов определяется разрешением снимков, а не сложностью сцены. ATSplat вместо пиксельной привязки строит разреженные 3D-якоря из патчей и адаптивно расширяет только те, где reconstruction error высок. Результат — в 5,7 раз меньше гауссов при сопоставимом качестве.

Можно ли использовать ATSplat для одного изображения?

Текущая версия обучена на 2–12 ракурсах. Одно изображение технически возможно (режим 1 view), но глубина для единственного патча будет предсказана менее надёжно, и качество реконструкции заметно снизится. Для single-view 3D лучше подходят диффузионные подходы.

Как быстро обучается ATSplat?

Авторы не указывают время обучения в основной части статьи, но архитектура (DINO-бэкбон + трансформер) типична для методов этого класса. Обучение на RealEstate10K и DL3DV стандартно занимает несколько дней на 8 GPU. Инференс — менее секунды на RTX 3090 для 12 изображений при 512×960. Для практического внедрения важно, что дообучение на новых датасетах (например, промышленных сценах или медицинских) требует существенно меньше эпох, чем обучение с нуля, благодаря предобученному DINO-энкодеру.

Что такое D-SSIM и почему он используется для супервизии неопределённости?

D-SSIM (Structural Similarity Index) измеряет структурное различие между двумя изображениями, учитывая яркость, контраст и структуру одновременно — в отличие от MSE, который считает только попиксельную разницу. Для супервизии предиктора неопределённости D-SSIM даёт более информативную карту ошибок: он выделяет области с размытием, артефактами и структурными несоответствиями, а не просто с яркостными отклонениями.

Итог

ATSplat демонстрирует, что ключевое преимущество классического 3DGS — адаптивное уплотнение примитивов по сложности сцены — можно перенести в feed-forward режим. Вместо привязки к пиксельной сетке метод строит разреженный каркас из 3D-якорей, предсказывает неопределённость реконструкции для каждого якоря и расширяет только те, что в сложных областях. Итог: state-of-the-art качество при 5,7-кратном сокращении числа гауссов и рендеринг на 1136 FPS с 311K примитивов.

Если вы работаете с neural rendering, AR/VR или 3D-контентом — ATSplat стоит изучить. Проект доступен на странице проекта.

← Все записи