Руководство

Глава 9 — SfM-бэкенды

Режим эксперта с переключателем Camera Alignment в Инспекторе (Apple Photogrammetry / Native (Beta))
Режим эксперта с переключателем Camera Alignment в Инспекторе (Apple Photogrammetry / Native (Beta))
Инспектор с активной опцией Native (Beta) — выбран второй вариант переключателя Camera Alignment, все остальные параметры конфигурации обучения без изменений
Инспектор с активной опцией Native (Beta) — выбран второй вариант переключателя Camera Alignment, все остальные параметры конфигурации обучения без изменений

Переключатель Camera Alignment в Инспекторе — это сегментированный элемент управления с двумя вариантами — Apple Photogrammetry (значение по умолчанию для сборок App Store, полностью совместимо с песочницей) и Native (Beta) (собственный бэкенд RadianceKit на базе FAST+BRIEF+GLOMAP, разработанный в фазах 3.8/3.9, по состоянию на 2026-05). Native (Beta) проверен только на орбитальных съёмках и быстрее Apple Photogrammetry при ≥1 000 кадров, но пока не проходит порог качества фазы 3 §5 (finalLoss ≤ 0.0115) — отсюда и тег Beta. Внешние результаты SfM из Metashape, COLMAP или любого другого фотограмметрического ПО можно дополнительно импортировать через меню File (текстовый формат Q3 COLMAP, импорт рабочей области Q6) — сам переключатель при этом не меняется, но импортированные позы заменяют результат SfM.

SfM расшифровывается как Structure from Motion. Из набора перекрывающихся фотографий программа восстанавливает для каждого изображения положение и направление взгляда камеры в общей 3D-системе координат. Попутно создаётся грубое 3D-облако точек, которое инициализирует обучение Gaussian Splatting. Результат SfM является входом для собственно обучения и решающим образом определяет конечное качество изображения.

RadianceKit предлагает пять путей SfM: два бэкенда, встроенных в само приложение (Q1 Apple Photogrammetry, Q4/Q5 Native), два пути импорта из внешних инструментов (Q3 текстовый формат COLMAP, Q6 двоичный импорт Workspace), а также Q2 двоичный COLMAP, доступный только в сборках для разработчиков вне App Store. Какой из них подходит, зависит от типа сцены (орбита вокруг объекта, помещение, полёт дрона) и от того, предоставляет ли уже внешнее ПО готовую реконструкцию.

Q1 — Apple Photogrammetry

ГДЕ

Режим эксперта → Инспектор → Training Configuration → переключатель Camera Alignment, запись «Apple Photogrammetry».

ТЕХНИЧЕСКИ

Обёртка над встроенным фреймворком фотограмметрии Apple, изначально разработанным для Object Capture. Внутри Apple извлекает признаки своим проприетарным конвейером (этапы публично не документируются), проверяет их многоракурсным сопоставлением и решает bundle adjustment на Apple Silicon Neural Engine + GPU. Бэкенд полностью совместим с App Store (никакого внешнего бинарного файла, Sandbox=true, on-device), но выдаёт только позы камер плюс грубое облако точек — никаких диагностических метрик вроде длины треков или ошибки репроекции. Масштабируется согласно рекомендации Apple до нескольких сотен изображений. При количестве кадров более ~500 в линейных пролётах дронов или больших уличных сценах наблюдались воспроизводимые сбои или тихий пропуск отдельных камер.

Q3 — текстовый формат COLMAP (Metashape / ETH3D)

ГДЕ

Меню «File → Import COLMAP / Metashape Workspace…» (Cmd+⇧+I) ИЛИ перетаскивание папки с sparse/0/cameras.txt.

ТЕХНИЧЕСКИ

Читает стандартизированный текстовый экспорт COLMAP — три текстовых файла cameras.txt, images.txt, points3D.txt в подпапке sparse/0/ — и преобразует во внутреннюю модель результата SfM. То же определение формата, что и у двоичного экспорта COLMAP, только в ASCII вместо двоичного представления. Экспортируется Agisoft Metashape, RealityCapture, PolyCam и бенчмарком ETH3D ровно в этом виде. Парсер разделяет с двоичным парсером определение модели камеры (все распространённые модели: SIMPLE_PINHOLE, PINHOLE, OPENCV, OPENCV_FISHEYE, FULL_OPENCV). Устойчив к строкам-комментариям и пустым строкам. В тестах масштабируется до ~1 400 камер (ETH3D Tunnel) без проблем.

Q4 — Native SfM (инкрементальный)

ГДЕ

Режим эксперта → Инспектор → Training Configuration → переключатель Camera Alignment, запись «Native (Beta)». Инкрементальный — режим по умолчанию для этого бэкенда — отдельного переключателя маппера в Инспекторе нет. Через CLI режим можно задать явно ключом –native-sfm или –sfm-mapper incremental.

ТЕХНИЧЕСКИ

Собственная реализация всего конвейера SfM с ускорением на GPU: признаки FAST+BRIEF ИЛИ SuperPoint+LightGlue через CoreML (с –coreml-features), затем сопоставление Hamming-KNN, RANSAC фундаментальной матрицы, построение треков, выбор начальной пары, двухвидовый bootstrap (F→E плюс DLT), жадный инкрементальный маппер с регистрацией PnP и многоракурсной триангуляцией, и наконец bundle adjustment через Schur-редуцированный Levenberg-Marquardt с функцией потерь Хьюбера и аналитическими якобианами через Cholesky-solve. Полностью совместим с App Store: никакого внешнего бинарного файла, Sandbox=true. С детектором коллапса R2, поставляемым в фазе 3.10: если приложение регистрирует менее 60 % входных кадров или количество точек на камеру падает ниже 13, оно автоматически переключается на глобальный маппер (Q5). Эмпирически чист на сценах орбита/поворотный стол; при более общих движениях (полёт дрона, помещения со сложной геометрией) показатель успешности ниже — однако детектор такие случаи перехватывает. Надёжно масштабируется до ~200 камер, выше — со значительно бóльшим временем выполнения.

Q5 — Native SfM (глобальный)

ГДЕ

Вызывается автоматически, когда инкрементальный маппер (Q4) срабатывает детектором коллапса (зарегистрировано менее 60 % входных кадров или количество точек на камеру ниже 13). Принудительно вручную — только через CLI –sfm-mapper global. В Инспекторе глобальный метод недоступен через отдельный переключатель — приложение само решает, когда переключаться.

ТЕХНИЧЕСКИ

Глобальный вариант собственного конвейера. Сначала извлечение признаков + сопоставление как в Q4, затем оценка относительных поз для всех проверенных пар, после — усреднение поворотов (синхронизирует все повороты камер в мировой системе координат) и усреднение перемещений (на основе LSQR в matrix-free sparse-формулировке, чтобы избежать переполнения integer при большом числе камер). В принципе масштабируется до ~5 000 камер, на практике с потерей качества при числе свыше нескольких сотен камер — замер порога приёмки фазы 3.8 §5 на K-1351 дал finalLoss 0.07 вместо целевых 0.0115. Трактуется как «fallback-уровень»: вступает в действие, когда инкрементальный маппер вырождается, но сам по себе на качество повторно не проверяется.

Q6 — импорт рабочей области Metashape / текстового COLMAP (фаза Q7)

ГДЕ

Меню File → «Import COLMAP / Metashape Workspace…» (Cmd+⇧+I). Перетаскивание папки с sparse/0/cameras.{bin,txt} и images/.

ТЕХНИЧЕСКИ

Автоматически распознаёт, соответствует ли папка, выбранная перетаскиванием или через open-panel, одной из трёх схем размещения рабочей области COLMAP (sparse/0/, sparse/ или корень), и является ли реконструкция двоичной (cameras.bin) или текстовой (cameras.txt). Двоичный путь использует двоичный парсер COLMAP, текстовый — загрузчик ETH3D — оба порождают одну и ту же модель результата SfM, и остальной конвейер (импорт изображений, запуск тренировки MCMC) безразличен к источнику. Изображения открываются через систему bookmark песочницы приложения с security-scoped-доступом, так что импорт работает и в версии для App Store. Специально рассчитан на случай «экспорт из Metashape без перерасчёта реконструкции». Упомянутый в пункте меню File детектор предупреждает в журнале приложения, если выбранная папка не является распознаваемой рабочей областью.

Какой бэкенд когда?

СценарийРекомендуемый бэкенд
Скан объекта, 50–200 фотографийQ1 Apple Photogrammetry
Крупная уличная съёмка / дрон / >500 изображенийQ6 Workspace Import (рассчитайте в Metashape или COLMAP, затем загрузите)
Имеется экспорт Metashape/RealityCaptureQ6 Import (SfM не нужен)
Набор ETH3D / академический текстовый COLMAPQ3 текстовый импорт COLMAP
Строгая совместимость с App Store + орбитальная сценаQ4 Native инкрементальный
Q4 не справляетсяQ5 Native глобальный (автоматически)
Данные бенчмарка ETH3DQ3 (autotest precomputed)

Быстрое сравнение

БэкендApp StoreПесочницаВнешний бинарный файлЛучшее применениеМакс. ~камер
Q1 Apple PGОбъект-орбита~300
Q2 COLMAP двоичный❌ (только сборка для разработчиков)colmap/glomapБольшие уличные~5 000
Q3 текстовый импорт COLMAPБенч-наборы~1 500
Q4 Native инкрементальныйОбъект-орбита~200
Q5 Native глобальныйОткат с Q4~1 351
Q6 Workspace ImportПовторное использование Metashapeпо источнику