Руководство

Глава 2 — Инспектор (Expert View)

Режим Expert пуст — слева Project Navigator с Images/Cameras/Log, заголовок «Images (0)» и зона перетаскивания «Drop images here / or tap + to import», по центру пустой Viewport, справа Инспектор с шестью свёрнутыми секциями (Presets, Cameras & Capture, Training, Progress, Look, Export), у каждой заголовок и серая подстрока фазы; внизу строка статуса «Idle» с зелёной кнопкой запуска и красной кнопкой остановки
Режим Expert пуст — слева Project Navigator с Images/Cameras/Log, заголовок «Images (0)» и зона перетаскивания «Drop images here / or tap + to import», по центру пустой Viewport, справа Инспектор с шестью свёрнутыми секциями (Presets, Cameras & Capture, Training, Progress, Look, Export), у каждой заголовок и серая подстрока фазы; внизу строка статуса «Idle» с зелёной кнопкой запуска и красной кнопкой остановки

Пустой Инспектор перед импортом: Левая колонка показывает пункты Images, Cameras и Log, под ними — заголовок «Images (0)» и зона перетаскивания «Drop images here / or tap + to import». Viewport в центре пуст. Справа расположен Инспектор с шестью свёрнутыми секциями: Presets, Cameras & Capture, Training, Progress, Look и Export. Под каждым заголовком серая строка поясняет, что делает секция и когда она действует — «Ready-made recipes — they replace the training settings» (Presets), «Before training · decides how camera positions are solved · applies to the next run» (Cameras & Capture), «Before training · drives scene build-up and optimization · applies to the next run» (Training), «Display only» (Progress), «After training · applies immediately · reversible any time» (Look) и «Leveling the floor turns the view at once; the chosen orientation and format apply when saving» (Export). Совсем внизу проходит строка статуса со статусом «Idle», а также зелёная кнопка запуска и красная кнопка остановки; вверху справа находится переключатель Simple/Expert, здесь — на Expert.

Инспектор с 35 импортированными изображениями — заголовок «Images (35)», имена файлов IMG_0953.JPG по возрастанию, Viewport ещё пуст, статус «Idle»
Инспектор с 35 импортированными изображениями — заголовок «Images (35)», имена файлов IMG_0953.JPG по возрастанию, Viewport ещё пуст, статус «Idle»

Инспектор после импорта: Заголовок списка изображений показывает «Images (35)», под ним перечислены импортированные снимки с возрастающими именами файлов начиная с IMG_0953.JPG. Изображения этой тестовой серии имеют разрешение 4032×3024 пикселей; логика Auto Render Scale считывает это разрешение и предлагает подходящую Render Scale. Viewport ещё пуст, строка статуса показывает «Idle». Зелёная кнопка запуска слева внизу теперь активна и запускает обучение с активным Preset.

Инспектор во время обучения — заголовок окна «RadianceKit — Training 23%», в Viewport живой предпросмотр тканевой утки на овечьей шкуре, прогресс 4,700/20,000 с ETA 1m9s, строка метрик Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, в Инспекторе развёрнутая группа CLASSIC с отмеченным зелёным «Balanced 20K iters»
Инспектор во время обучения — заголовок окна «RadianceKit — Training 23%», в Viewport живой предпросмотр тканевой утки на овечьей шкуре, прогресс 4,700/20,000 с ETA 1m9s, строка метрик Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K, в Инспекторе развёрнутая группа CLASSIC с отмеченным зелёным «Balanced 20K iters»

Инспектор во время обучения: Заголовок окна показывает общий прогресс, здесь «RadianceKit — Training 23%». Viewport рендерит идущую реконструкцию в реальном времени — тканевую утку на овечьей шкуре, уже вполне узнаваемую (интервал обновления живого предпросмотра задаётся в Settings → General → Training → Live Preview). Под Viewport идут прогресс («4,700/20,000», «ETA 1m9s») и строка метрик с Loss 0.0109, LR 2.0e-04, SH 1 и Gaussians 16.0K; слева внизу расположены кнопки паузы и остановки. В Инспекторе развёрнута группа CLASSIC, «Balanced 20K iters» отмечена зелёной галочкой. Значок «Modified» появляется только тогда, когда какой-то параметр отклоняется от Preset — здесь его не видно. Боковая панель «Log» собирает события SfM и стадий обучения.

Инспектор после завершения обучения — заголовок окна «RadianceKit — Training Complete — 8,708 Gaussians», слева «Complete» с 8,708 Gaussians, Images 25 и Cameras 35, строка статуса «Completed» при 20,000/20,000, строка метрик Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, в Viewport готовая реконструкция утки во весь формат
Инспектор после завершения обучения — заголовок окна «RadianceKit — Training Complete — 8,708 Gaussians», слева «Complete» с 8,708 Gaussians, Images 25 и Cameras 35, строка статуса «Completed» при 20,000/20,000, строка метрик Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K, в Viewport готовая реконструкция утки во весь формат

Инспектор после обучения: Заголовок окна называет результат: «Training Complete — 8,708 Gaussians». В левой колонке стоит «Complete» с тем же числом, а также Images 25 и Cameras 35 — 25 изображений потому, что диалог Frame Quality отсеял десять смазанных из 35 снимков. Строка статуса сообщает «Completed» при 20,000/20,000, строка метрик — Loss 0.0075, LR 0.0e+00, SH 3 и Gaussians 9.7K. Viewport показывает готовое облако точек во весь формат — активна орбитальная навигация перетаскиванием (вращение вокруг центра сцены).

То, что здесь стоят два разных числа Gaussians, сделано намеренно: строка метрик и Training Metrics называют состояние на момент окончания обучения (здесь 9,660, округлённо 9.7K), заголовок окна и сцена — состояние после автоматических проходов очистки (8,708). Между ними происходят Post-Training Compactification и удаление игольчатых и дискообразных сплатов. Меньшее число — то, что видно в Viewport и что сохраняется при экспорте. Группы Training Metrics и Loss History теперь заполнены конечными значениями, секция Export активна.

Инспектор — это правая боковая панель в Expert Mode (⌘2). Он объединяет все параметры, влияющие на обучение, в шести сворачиваемых секциях, которые с 2026-07-18 сгруппированы по домену. Порядок по умолчанию сверху вниз таков: Presets, Cameras & Capture, Training, Progress, Look и Export. Под каждым заголовком стоит вторая строка, которая называет фазу — когда секция действует и насколько она обратима (например, «Before training · decides how camera positions are solved · applies to the next run» для Cameras & Capture, «After training · applies immediately · reversible any time» для Look, «Display only» для Progress). Две прежние секции слились: Метрики и График потерь теперь две отдельно сворачиваемые группы («Training Metrics» и «Loss History») внутри Progress, а прежняя секция Enhancements полностью вошла в Training. Секция «Look» (пост-обработка изображения после обучения) — это реальное переименование в UI прежней секции «Finishing» — её внутреннее имя по причинам совместимости осталось «Finishing», а отображаемый заголовок называется «Look» (тот же приём с Training, которая внутренне называется «Training Configuration»). Каждую секцию можно свернуть кликом по заголовку, а порядок — изменить перетаскиванием. При первом запуске секции свёрнуты — на изображении выше все шесть закрыты; состояние приложения затем сохраняет предпочтения по свёрнутости и порядку между запусками приложения. Уже сохранённый прежний порядок при первом запуске однократно переносится на новую группировку; Viewport ▸ Reset Inspector Layout восстанавливает исходное состояние поставки.

Ряд элементов управления из Инспектора появляется в почти идентичной форме и в настройках (Глава 3) — как правило это бэкенд SfM, Sky Masking и похожие значения по умолчанию. Разделение намеренное: настройки задают глобальный для приложения шаблон для вновь создаваемых проектов, Инспектор переопределяет эти значения для текущего открытого проекта. Тот, кто освоил логику управления одной стороной, может вслепую пользоваться и другой.

Левая колонка в Expert Mode — Project Navigator — не относится к Инспектору, но является его прямым соседом. Там импортированные изображения можно выбирать кликом, просматривать пробелом в Quick Look и удалять через кнопку с минусом или клавишу Удалить (с отменой через Cmd-Z). Инспектор следует за текущим выбором в боковой панели, показывая контекстную подробную информацию, но семь основных секций всегда остаются доступны.

Секция Look (L1–L5)

Секция Look (внутри по-прежнему называемая «Finishing») с момента перегруппировки доменов является пятой секцией Inspector — между Progress и Export — и собирает пост-тренировочные корректировки изображения в одном месте. Все регуляторы работают неразрушающе: каждый слайдер применяет вычисление Look заново к неизменному Pristine-снимку (исходный DC-цвет, Opacity, масштаб) — корректировка тем самым идемпотентна, а не кумулятивна. Результат появляется live во Viewport (WYSIWYG, точно так же, как в последующем экспорте) и встраивается в каждый экспорт. Секция доступна только после завершения тренировочного прогона (до этого показывается «Available after a training run completes.»); её значения сбрасываются при каждой новой тренировке. Пока идёт экспорт, все регуляторы заблокированы — появляется подсказка о блокировке «Locked while exporting — the file uses the current settings.», а GroupBox становится disabled.

L1Слайдер Saturation

ГДЕ

Inspector → секция Look → GroupBox → Saturation.

ТЕХНИЧЕСКИ

Слайдер 0.5–1.2, отображение с двумя знаками после запятой (например, «1.00»). Масштабирует SH-DC-цветность каждого сплата относительно значения яркости: 1.0 = без изменений, < 1.0 = обесцвечено (цвет стягивается к оттенкам серого), > 1.0 = насыщеннее. Математически DC-цвет пересчитывается из Pristine-снимка заново, поэтому повторное движение слайдера не накапливается. Значение было проверено на материале с DJI-дронов (виадук Пенсфорд), который склонен к перенасыщенности — дефолт для дронов составляет 0.82. Влияет только на цветовую основу (SH-степень 0), более высокие SH-коэффициенты остаются нетронутыми.

L2Слайдер Splat length

ГДЕ

Inspector → секция Look → GroupBox → Splat length.

ТЕХНИЧЕСКИ

Слайдер 0.3–1.0, отображение с двумя знаками после запятой. Стягивает три оси масштабирования каждого гауссиана в лог-пространстве к их среднему значению (чем меньше значение, тем сильнее): 1.0 = без изменений, меньшие значения делают вытянутые «игольчатые» сплаты более округлыми, 0 соответствовал бы чистым сферам. Воздействует на игольчатые, чрезмерно растянутые сплаты, не меняя общий размер, и тем самым уменьшает типичные артефакты «конфетти». Применяется от Pristine-снимка (исходное лог-масштабирование), поэтому идемпотентно. Коммутирует со Splat size (L3), поскольку оба работают в лог-пространстве.

L3Слайдер Splat size

ГДЕ

Inspector → секция Look → GroupBox → Splat size.

ТЕХНИЧЕСКИ

Слайдер 0.5–2.0, отображение с двумя знаками после запятой. Масштабирует каждый гауссиан равномерно по всем трём осям: 1.0 = без изменений, < 1.0 = меньше/плотнее/резче, > 1.0 = крупнее/ «пушистее» (заполняет пробелы между сплатами). Поскольку масштабы лежат в лог-пространстве, умножение превращается там в аддитивный сдвиг — это коммутирует со Splat length (L2), так как постоянное смещение не затрагивает отклонение от среднего. Применяется от Pristine-снимка, то есть идемпотентно. Новинка этой версии.

L4Fade far region (с суб-слайдерами)

ГДЕ

Inspector → секция Look → GroupBox → переключатель «Fade far region» плюс суб-слайдеры «Fade start ×radius» и «Fade floor».

ТЕХНИЧЕСКИ

Переключатель, активирующий радиальное затухание Opacity с расстоянием от центра тяжести камер — слабо наблюдаемое «дальнее конфетти» на фоне скрывается. Только для орбитальных съёмок: переключатель затемнён, если сцена для этого не подходит (линейные полёты, слишком мало или вырожденные камеры); тогда вместо суб-слайдеров появляется подсказка «Far-fade applies only to orbit captures (not this scene).» Пригодность определяется по азимутальному покрытию положений камер (орбита огибает центр тяжести и заполняет много секторов компаса, линейный полёт — лишь ~2). Два суб-слайдера управляют геометрией: Fade start ×radius (1.0–3.0) задаёт внутренний радиус как кратное радиусу орбиты, внутри которого действует полная Opacity; Fade floor (0.0–1.0) — коэффициент Opacity далеко за пределами радиуса затухания. Важно: затухание пропускает область Sky-Dome (замороженные гауссианы купола), чтобы намеренно воссозданный фоновый купол не затемнялся вместе с остальным.

L5Кнопка Reset finishing

ГДЕ

Inspector → секция Look → GroupBox → «Reset finishing» (внизу, маленькая кнопка).

ТЕХНИЧЕСКИ

Сбрасывает все настройки Look на значения по умолчанию (Saturation 1.0, Fade выключен, Splat length 1.0, Splat size 1.0) и немедленно запускает повторный Finishing, так что Viewport возвращается к неизменённому тренированному состоянию. Поскольку весь стек Look идемпотентно вычисляется от Pristine-снимка, «возврат к дефолту» — это точно исходный вывод тренировки — никакой потери качества от многократных переключений туда-сюда. Как и все регуляторы секции, заблокирована во время идущего экспорта.

Раздел пресетов (I1–I11)

Раздел пресетов — это самый быстрый способ применить проверенную конфигурацию. Встроенные пресеты (Capture Class, Classic, MCMC, Hybrid) дают опробованные, воспроизводимые отправные точки; собственные пресеты можно сохранять, экспортировать, импортировать и передавать другим. Список сгруппирован по категориям (Capture Class, Classic, MCMC, Hybrid, Custom), и одновременно может быть развёрнута не одна категория. Через механизм контекстного меню (правый клик по строке) доступны экспорт, дублирование и — для собственных пресетов — удаление.

I1Кнопка Save…

ГДЕ

Инспектор → раздел пресетов → кнопка Save… (панель действий внизу).

ТЕХНИЧЕСКИ

Открывает всплывающее окно (popover) с текстовым полем и кнопками Save/Cancel. Текущее состояние настроек тренировки сохраняется как новый пользовательский пресет (в формате JSON, хранится на уровне приложения). Процесс сохранения копирует все 81 параметр тренировки плюс текущую стратегию Densification. Пресет автоматически попадает в категорию Custom, независимо от того, от какого встроенного пресета он был получен. Пустые имена и ввод, состоящий только из пробелов, отбрасываются. Уже существующие имена не отклоняются — у каждого пресета есть собственный внутренний ID, дублирующиеся имена технически допустимы, но на практике вводят в заблуждение.

I2Текстовое поле Preset Name

ГДЕ

Всплывающее окно Save → текстовое поле «Preset Name».

ТЕХНИЧЕСКИ

Простое текстовое поле со скруглённой рамкой, широкой формы. Значение принимается как имя пресета при щелчке по кнопке Save. Ограничения по длине в интерфейсе нет, но сохранённое имя должно быть кодируемо в JSON и отображаться в списках интерфейса — эмодзи и умлауты работают. Содержимое при открытии всплывающего окна автоматически сбрасывается на пустую строку. Кнопка Save остаётся недоступной, пока поле после обрезки пробелов пусто. Нет автодополнения и нет предзаполнения именем текущего активного пресета.

I3Кнопка Cancel (диалог Save)

ГДЕ

Всплывающее окно Save → кнопка Cancel (слева).

ТЕХНИЧЕСКИ

Закрывает всплывающее окно без сохранения. Отбрасывает содержимое текстового поля — при следующем открытии оно снова будет сброшено на пустое логикой кнопки Save… (I1). Стандартный стиль кнопки, никаких диалогов подтверждения, никаких горячих клавиш. Текущий TrainingConfig остаётся неизменным, так как путь сохранения вообще не был выполнен.

I4Кнопка Save (диалог Save)

ГДЕ

Всплывающее окно Save → кнопка Save (справа, более заметный стиль).

ТЕХНИЧЕСКИ

Запускает собственно сохранение. Ещё раз проверяет, что имя не пустое (защитная проверка), а затем записывает текущий TrainingConfig в формате JSON в хранилище приложения. После этого закрывает всплывающее окно. Выделена синим, недоступна, пока текстовое поле пусто. Если сохранение не удастся (например, из-за того что хранилище приложения заполнено — крайне маловероятно), на данный момент не появляется видимого диалога с ошибкой; пресет тогда при следующем запуске приложения просто не появится.

I5Кнопка Export…

ГДЕ

Инспектор → раздел пресетов → панель действий → кнопка Export….

ТЕХНИЧЕСКИ

Экспортирует выбранный в данный момент пресет как файл .radiancepreset (внутренне JSON). Недоступна, если ни один пресет не выбран. При щелчке приложение открывает диалог сохранения с предустановленным именем файла (имя пресета + расширение .radiancepreset). Сохранённый формат содержит полный TrainingConfig плюс метаданные (имя, категория, ID, флаг built-in). Двойной щелчок в Finder открывает приложение — но не автоматически импорт; пользователь должен воспользоваться кнопкой Import (I6).

I6Кнопка Import…

ГДЕ

Инспектор → раздел пресетов → панель действий → кнопка Import….

ТЕХНИЧЕСКИ

Открывает диалог выбора файла, допускающий только файлы .radiancepreset (множественный выбор отключён). При выборе файл JSON загружается, проверяется и добавляется в категорию Custom — с новым внутренним ID, чтобы избежать конфликтов со встроенными пресетами. Импорт автоматически устанавливает категорию Custom, даже если экспортированный пресет изначально был, например, встроенным. Повреждённые или несовместимые с более старой версией схемы файлы молча отклоняются, без диалога с ошибкой (однако в журнале консоли есть сведения).

I7Строка пресета (активация щелчком)

ГДЕ

Инспектор → раздел пресетов → любая строка пресета в любой категории.

ТЕХНИЧЕСКИ

Щелчок по строке пресета заменяет все поля TrainingConfig значениями из пресета, запоминает ID активного пресета и сбрасывает статус Modified. Галочка активности перед строкой появляется только тогда, когда пресет выбран И не изменён. Как только какое-либо значение TrainingConfig изменяется (слайдер, степпер, переключатель в других разделах инспектора), рядом с именем появляется оранжевый значок «Modified». Встроенные пресеты нельзя перезаписать — при изменении необходимо через кнопку Save (I1) создать собственную копию.

I8Пункт контекстного меню «Export…»

ГДЕ

Правый клик по любой строке пресета → первый пункт «Export…».

ТЕХНИЧЕСКИ

Функциональность идентична I5 (кнопка Export…), но доступна удобнее — без необходимости предварительно выбирать пресет. Экспортирует непосредственно тот пресет, по строке которого щёлкнули. Работает одинаково для всех категорий пресетов (built-in или Custom), без ограничений. Экспорт содержит флаг built-in и исходную категорию, но при повторном импорте категория, как описано в I6, преобразуется в Custom.

I9Пункт контекстного меню «Duplicate»

ГДЕ

Правый клик по любой строке пресета → второй пункт «Duplicate».

ТЕХНИЧЕСКИ

Клонирует пресет в категорию Custom. Создаёт новый внутренний ID, добавляет « Copy» к имени и сохраняет копию. Работает также для встроенных пресетов — клон в этом случае редактируемый. Оригинал остаётся нетронутым. TrainingConfig копируется значение за значением (JSON-roundtrip), так что никаких ссылочных связей между оригиналом и копией не существует.

I10Пункт контекстного меню «Delete»

ГДЕ

Правый клик по строкам собственных пресетов → последний пункт «Delete» (красный, деструктивное действие).

ТЕХНИЧЕСКИ

Виден только для пресетов Custom. Встроенные пресеты удалить нельзя. Пункт помечен как деструктивный, отображается в контекстном меню красным и отделён разделителем, чтобы его нельзя было случайно нажать. Диалога подтверждения нет — один щелчок сразу удаляет пресет. Удалённый пресет невозможно восстановить (Cmd-Z здесь не работает — отмена действий в текущей сборке существует только для списка изображений, но не для операций с пресетами). Если удалённый пресет был активен в данный момент, текущий TrainingConfig остаётся неизменным, обнуляется лишь активный выбор пресета.

I11Заголовок категории (разворачивание/сворачивание)

ГДЕ

Инспектор → раздел пресетов → любой заголовок категории (Capture Class, Classic, MCMC, Hybrid, Custom).

ТЕХНИЧЕСКИ

Состояние разворачивания для каждой категории с разным значением по умолчанию: курируемая группа Capture Class стартует развёрнутой, Classic, MCMC, Hybrid и Custom стартуют свёрнутыми. Состояние не сохраняется — при перезапуске приложения все категории снова находятся в состоянии по умолчанию. Стрелка-шеврон анимированно вращается. Число справа в заголовке показывает количество пресетов в этой категории. Область клика охватывает всю область заголовка.

Раздел конфигурации обучения (I12–I22)

Crop der Training-Sektion — Densification als Dreier-Umschalter Classic | MCMC | Hybrid mit Classic aktiv, darunter die ausgegrauten Zeilen MCMC Quality (aus), Auto-scale by scene (an) und Max Gaussians 150,000 samt Schloss-Hinweis; abgesetzt darunter Depth-Priority Scatter (aus), Full-Resolution Training (aus), Max Iterations 5,000 und Densify Until 3,500 mit blauem Ketten-Symbol, Regler SSIM Weight bei 0.20 und Render Scale bei 50%
Вырезка из раздела обучения — Densification в виде тройного переключателя Classic | MCMC | Hybrid с активным Classic, ниже — серые (неактивные) строки MCMC Quality (выкл), Auto-scale by scene (вкл) и Max Gaussians 150,000 с подсказкой-замком; отдельно ниже — Depth-Priority Scatter (выкл), Full-Resolution Training (выкл), Max Iterations 5,000 и Densify Until 3,500 с синим значком цепочки, регуляторы SSIM Weight на 0.20 и Render Scale на 50%

Здесь собраны центральные рычаги для запуска обучения: как работает Densification, сколько итераций, насколько велик вес SSIM — а также, в нижней части, бывшие самостоятельные Enhancements (Perceptual Loss, группа Outdoor, Advanced Densifier, пост-обработочные проходы). Совсем сверху находится Densification в виде тройного переключателя Classic | MCMC | Hybrid. SfM-бэкенд теперь не здесь, а в отдельном разделе Камеры и съёмка (I12, I13). Три строки MCMC («MCMC Quality», «Auto-scale by scene» и «Max Gaussians») больше не исчезают в режиме Classic, а остаются видимыми и становятся серыми; под ними расположена строка со значком замка, поясняющая, что нужно изменить («Only used by the MCMC and Hybrid densifiers — switch Densification above to change these.»). Отдельный блок ниже собирает строки, действующие при любом Densifier: Depth-Priority Scatter, Full-Resolution Training, связанная пара Max Iterations / Densify Until, а также регуляторы SSIM Weight и Render Scale.

I12Пикер Camera Alignment

ГДЕ

Inspector → Камеры и съёмка → Camera Alignment (всплывающее меню под пикером Projection).

ТЕХНИЧЕСКИ

Всплывающее меню, а не сегментированный пикер — метки не помещаются в узкую колонку Inspector. Какие пункты появляются, зависит от сборки: версия из App Store в песочнице предлагает Apple Photogrammetry и Native, а dev-/DMG-сборки дополнительно COLMAP. Причина: COLMAP — внешняя программа командной строки, а приложениям в песочнице запрещено запускать сторонние бинарники (правило App Review 2.5.2) — поэтому пункт бэкенда вместе с пикером Mapper и путём к бинарнику отсутствует в Store-сборке полностью, а не просто перманентно затемнён: строка, которая никогда не может загореться — это не подсказка, а шум. Не путать: импорт и экспорт COLMAP-Workspace — это чистый разбор Swift-файлов, не требующий установки COLMAP, и работает в любой сборке (Глава 1, M5). Приписка «(Beta)» у пункта Native исчезла — начиная с v1.5.2 Native больше не бета. Выбор определяет SfM-бэкенд следующего запуска и одновременно управляет тем, какие строки ниже доступны для управления (I13, High-Quality, Native SfM Recipe). Сноска в UI: при неотсортированном наборе фото пайплайн всегда выравнивает через Native, независимо от того, что показывает пикер — этот рецепт есть только там. При этом пикер намеренно не блокируется (значение не недоступно, его просто перебивают); вместо этого появляется подсказка со значком ветвления.

I13Поле FOV Override (Native SfM)

ГДЕ

Inspector → Камеры и съёмка → FOV Override (всегда видно, доступно только при Camera Alignment = Native).

ТЕХНИЧЕСКИ

Числовое текстовое поле (диапазон 0–170°), значение по умолчанию 0 = автоматическое определение по EXIF или эвристике. Ручной ввод необходим, если исходные изображения извлечены из видео, не содержащего метаданных о фокусном расстоянии. Типичные значения: iPhone Wide ≈ 73°, DJI Mavic Wide-Crop ≈ 70°, дрон с полнокадровым сенсором ≈ 84°. Значение обрезается до диапазона [0, 170] — значения за пределами сразу возвращаются в него. Влияет только на нативный SfM-конвейер (Q4/Q5); Apple Photogrammetry полностью игнорирует это значение. С 2026-07-18: при других бэкендах поле больше не скрывается, а затемняется — вместе с «High-Quality» и «Native SfM Recipe» и строкой со значком замка («These configure the Native aligner — choose Native under Camera Alignment to change them.»). Прежнее скрытие умалчивало о самом существовании этих регуляторов. Условие зависит от выбранного бэкенда, а не от фактически используемого — о перенаправлении неотсортированных наборов фото на Native сообщает вместо этого подсказка у I12. Строка «Native SfM Recipe» дополнительно требует неотсортированный набор фото и в остальных случаях снабжена собственной пояснительной строкой.

I15Пикер Densification

ГДЕ

Inspector → Конфигурация обучения → Densification (сегментированный пикер, всегда виден).

ТЕХНИЧЕСКИ

Переключает между двумя стратегиями Densification: Classic (оригинальный метод 3DGS с Clone/Split/Prune и порогом градиента) и MCMC (Stochastic Gradient Langevin Dynamics с Relocation, NeurIPS 2024). При переключении с Classic на MCMC приложение автоматически устанавливает специфичные для MCMC поля на проверенные значения по умолчанию (Reg-Weights = 0, MCMC Cap Multiplier 3.0, расписание Sample/Noise). Без этой автоматической инициализации сессии со старыми пресетами страдали от бага коллапса MCMC версии 1.4.4 (460K→5 Gaussians, аварийное завершение watchdog). Выбор в пикере дополнительно определяет, какие элементы Inspector видны — при MCMC появляются I16/I17. Подробное влияние полей описано в Главе 6, T11–T16 (Classic) и T61–T73 (MCMC).

I16Переключатель MCMC Quality

ГДЕ

Inspector → Обучение → MCMC Quality (всегда виден, доступен при Densification = MCMC или Hybrid).

ТЕХНИЧЕСКИ

Переключает накопление градиентов на 2 шага (включено) или 1 шаг (выключено). Накапливает градиенты из двух последовательных ракурсов камеры перед выполнением шага оптимизатора. Это сглаживает путь оптимизации и слегка, но заметно улучшает конечный результат. Цена: удвоенное время обучения. При очень длительных обучениях (200K итераций) это приводит к дополнительным 10+ минутам ожидания — то есть оправдано только тогда, когда действительно нужны последние проценты качества. Влияет только на обучение, не на формат экспорта или отображение во Viewport. Действует и для Hybrid, который использует ту же машинерию MCMC. С 2026-07-18: при Classic строка больше не исчезает, а затемняется вместе с I17 и «Max Gaussians» (становится серой); под ними находится строка «Only used by the MCMC and Hybrid densifiers — switch Densification above to change these.»

I17Переключатель Auto-scale by scene

ГДЕ

Inspector → Обучение → Auto-scale by scene (всегда виден, доступен при Densification = MCMC или Hybrid).

ТЕХНИЧЕСКИ

Если включено, эффективный верхний предел Max Gaussians масштабируется как количество начальных точек SfM × MCMC Cap Multiplier (по умолчанию 3.0). Пример: SfM даёт 250K начальных точек, базовый предел = 150K, множитель 3.0 → эффективный предел = max(150K, 750K) = 750K. Если выключено, действует строго только базовое значение. Само базовое значение задаётся в строке Max Gaussians прямо ниже (с версии 1.8, по умолчанию 150 000, ввод обрезается до диапазона 10 000–30 000 000). Если эффективный предел превышает базовый, приложение отображает его открытым текстом («Effective cap for this scene: …») — вместе с предупреждением о памяти, если предел получается слишком высоким. Было введено для v1.4.5, потому что большие уличные съёмки с более чем 1000 кадрами и соответственно высокой плотностью точек SfM «морили голодом» Densification при жёстком дефолтном пределе 150K — лишние точки оставались, новые не могли появиться. По умолчанию выключено в пользовательских пресетах, включено во встроенных пресетах MCMC. Действует только во время обучения, не при экспорте. С 2026-07-18: при Classic строка затемняется вместо того, чтобы скрываться (с той же пояснительной строкой, что и I16); открытое отображение значения и предупреждение о памяти там намеренно не появляются, потому что Classic вообще не применяет верхний предел.

I18Степпер Max Iterations

ГДЕ

Inspector → Конфигурация обучения → GroupBox → Max Iterations.

ТЕХНИЧЕСКИ

Степпер с диапазоном 1 000–100 000, шаг 1 000. Определяет общее число итераций оптимизатора. Линейно коррелирует со временем обучения (уменьшение вдвое = примерно 50% времени). Проверенные значения: 20K (Classic Balanced), 40K (Classic Quality) и 200K (MCMC Full). Свыше 40K Classic почти не даёт улучшения — отдача выходит на плато. При изменении, если включена функция связывания (I19), значение Densify Until пропорционально подтягивается вместе (соотношение по умолчанию: 0.5, то есть Densify Until = Max/2).

I19Кнопка Link/Unlink (Densify ↔ Iterations)

ГДЕ

Inspector → Конфигурация обучения → GroupBox → небольшая кнопка-звено между Max Iterations и Densify Until.

ТЕХНИЧЕСКИ

Кнопка-переключатель, замораживающая соотношение между Densify Until и Max Iterations. Во включённом состоянии (значок звена подсвечен) при каждом изменении Max Iterations значение Densify Until пропорционально подтягивается вместе. При разрыве связи (значок звена с плюсом) значения остаются независимыми. По умолчанию связано, потому что это отражает типичную корреляцию — если ты увеличиваешь обучение до вдвое большего числа итераций, обычно ты хочешь, чтобы и фаза Densification длилась пропорционально дольше. Соотношение вычисляется из текущего значения в момент установки кнопки связи; типичное соотношение — 0.5 (Densify Until = половина числа итераций).

I20Степпер Densify Until

ГДЕ

Inspector → Конфигурация обучения → GroupBox → Densify Until.

ТЕХНИЧЕСКИ

Степпер с диапазоном 500–50 000, шаг 500. Определяет индекс итерации, начиная с которого новые Gaussians больше не добавляются через Clone/Split (Classic) или Relocation (MCMC). После достижения этого порога уточняются только позиция и цвет. Более высокие значения = больше Gaussians = больший размер файла, больше времени на итерацию (+30–60% GPU-времени на шаг). Типичные значения: 15K (для 30K Max-Iter), 20K (для 40K), 100K (для 200K MCMC). При активной связи (I19) масштабируется автоматически. Действует по-разному для Classic и MCMC: Classic полностью останавливает рост, MCMC останавливает логику Relocation, но адаптация Sample/Noise продолжается.

I21Регулятор SSIM Weight

ГДЕ

Inspector → Конфигурация обучения → GroupBox → SSIM Weight.

ТЕХНИЧЕСКИ

Регулятор 0.0–1.0 с шагом 0.05, отображается как «0.20». Смешивает потерю L1 (0.0) и потерю SSIM (1.0). L1 подтягивает яркость попиксельно, SSIM — структурное сходство (края, локальная статистика). Значение по умолчанию 0.2 взято из оригинальной статьи 3DGS (Kerbl 2023) и является устойчивым компромиссом почти для любой сцены. Более высокие значения (0.5+) отдают предпочтение сохранению деталей, но могут игнорировать локальные ошибки яркости. Более низкие значения (< 0.1) приводят к потере деталей на резких краях. Вычисление SSIM происходит в шейдере с окном Gaussian 11×11. Производительность: при 0.0 (только L1) обучение примерно на 8–12% быстрее, так как вычисление SSIM в шейдере пропускается.

I22Регулятор Render Scale

ГДЕ

Inspector → Конфигурация обучения → GroupBox → Render Scale.

ТЕХНИЧЕСКИ

Регулятор 0.25–1.0 с шагом 0.25, отображается как «100%». Масштабирует разрешение рендеринга при обучении относительно размера исходного изображения. Самый мощный рычаг влияния на производительность: 50% сокращает время GPU примерно на 75% (так как пикселей в 4 раза меньше), 25% — примерно на 94%. Порог градиента масштабируется автоматически вместе с этим. Под регулятором появляется отображение текущего разрешения в мегапикселях в реальном времени (например, «2304×1296 (3.0 MP)»). Если текущее значение отличается от рекомендованного, оранжевым текстом появляется «— recommended: 50%». Рекомендация нацелена на эффективное разрешение около 3 MP — диапазон, наиболее эффективно обрабатываемый GPU Apple Silicon. Например, для 4K-исходников автоматически рекомендуется 25%, для FullHD-изображений — 100%. Изменение дополнительно запускает перераспределение буферов.

Группы Enhancements (в секции Training, I26–I29, I42–I44)

Обрезка строк Enhancements, сегодня в конце секции Training — сверху регулятор Perceptual Loss полностью слева на «Off», под ним группа Outdoor с четырьмя выключенными переключателями Sky Masking, Person Masking, Floater Cleanup и Reconstruct Sky Dome, затем свёрнутая строка «Advanced Densifier (Expert)» с предупреждающим треугольником, в конце группа «Runs automatically at the end of training» с Post-Training Compactification (вкл) и Remove Needle/Disc Floaters. Каждая строка имеет собственную пояснительную строку
Обрезка строк Enhancements, сегодня в конце секции Training — сверху регулятор Perceptual Loss полностью слева на «Off», под ним группа Outdoor с четырьмя выключенными переключателями Sky Masking, Person Masking, Floater Cleanup и Reconstruct Sky Dome, затем свёрнутая строка «Advanced Densifier (Expert)» с предупреждающим треугольником, в конце группа «Runs automatically at the end of training» с Post-Training Compactification (вкл) и Remove Needle/Disc Floaters. Каждая строка имеет собственную пояснительную строку

Эти группы объединяют функции, которые улучшают качество изображения, не меняя при этом сам основной цикл обучения. До 2026-07-18 они образовывали отдельную секцию Inspector под названием Enhancements; после реорганизации по доменам они находятся внизу секции Training. Прежний пикер Viewport-Scaling (Off/MetalFX/Lanczos) исчез без замены: он никогда ни на что не влиял — решение о blit во Viewport чисто геометрическое — а его подпись к тому же обещала масштабирование вверх, тогда как реальный проход Lanczos представляет собой антиалиасинг с уменьшением разрешения передискретизированного изображения. Соответственно индикация во Viewport теперь называется «Sampling» вместо «Scaling» (глава 4); нигде в приложении MetalFX не используется для масштабирования вверх. Perceptual Loss (I29), несмотря на своё место в группе, относится к обучению — он активируется во время обучения как дополнительный член функции потерь; он расположен совсем сверху, с пояснительной строкой «Multi-scale blur feature matching for structural similarity». Ниже идёт группа Outdoor с четырьмя переключателями — Sky Masking, Person Masking, Floater Cleanup и Reconstruct Sky Dome (I42–I44) —, опциями обучения против «плавающих» артефактов в небе, которые раньше находились в окне настроек, а теперь расположены здесь для каждого проекта отдельно. Далее следует свёрнутая строка «Advanced Densifier (Expert)» с предупреждающим треугольником, потому что за ней скрываются регуляторы, способные развалить обучение. Завершает список группа «Runs automatically at the end of training» с Post-Training Compactification (I26) и переключателем «Remove Needle/Disc Floaters».

I26Переключатель Post-Training Compactification

ГДЕ

Inspector → Training → группа «Runs automatically at the end of training» → Post-Training Compactification.

ТЕХНИЧЕСКИ

Активирует проход очистки в конце: после завершения итераций обучения удаляются Gaussians с opacity ниже 0.01 (1% видимости). Это обычно уменьшает размер файла примерно вдвое без заметной потери качества — потому что эти Gaussians и без того визуально ничего не привносят. Compactification выполняется как GPU-compact-проход и занимает от долей секунды до нескольких секунд в зависимости от числа Gaussians. На производительность обучения не влияет. Если этот переключатель выключен, невидимые Gaussians тоже экспортируются — это имеет смысл только тогда, когда тебе нужен формат для ещё одного этапа обучения (Continue Training), в остальных случаях это лишняя трата памяти.

I29Слайдер Perceptual Loss

ГДЕ

Inspector → Training → Perceptual Loss.

ТЕХНИЧЕСКИ

Слайдер 0.0–0.2 с шагом 0.01, отображение при 0.0 как «Off», иначе как «0.05» и т. д. Активирует дополнительный член функции потерь, который сравнивает многомасштабное гауссово размытие рендера с эталонным изображением (3 масштаба размытия). Улавливает структурные различия, которые L1+SSIM сам по себе не распознаёт. Значения между 0.05 и 0.1 заметно улучшают тонкие структуры и при этом стоят лишь немного времени обучения — около 5% (дополнительный forward-проход через ядра размытия). Свыше 0.15 обучение становится нестабильным, и качество снова снижается, потому что этот член потерь начинает доминировать в оптимизации. Действует во время обучения, а не в постобработке — несмотря на своё положение среди строк Enhancement в конце секции Training, это не чисто постфактум-улучшение.

I42Sky Masking

ГДЕ

Inspector → Training (группа Outdoor) → переключатель «Sky Masking». Сохраняется отдельно для каждого проекта; по умолчанию: выключено.

ТЕХНИЧЕСКИ

Активирует основанную на Apple Vision сегментацию пикселей неба перед обучением. Перед началом обучения для каждой входной камеры область неба извлекается через Apple-Vision-Foreground-Mask (небо = фон) и присваивается как попиксельная маска соответствующей камере. Во время обучения вклад loss на пиксель умножается на дополнение маски неба — пиксели неба вносят 0 в градиент, так что Gaussians, проецируемые в небо, не получают сигналов оптимизации и потому не становятся «плотнее» или «ярче». Значительно уменьшает floater'ы (тёмные комочки в небе) в outdoor-/дрон-сценах. Стоит примерно 3% регрессии L1 при классическом обучении на 40K. Имеет смысл только в outdoor-сценах с явно различимым небом; в интерьерных сценах или с белым фоном сегментация неба определяет неверные области и блокирует валидные сигналы loss. Значение сохраняется отдельно для каждого проекта (больше не глобально для приложения) и следует пресету или файлу сцены.

I43Floater Cleanup

ГДЕ

Inspector → Training (группа Outdoor) → переключатель «Floater Cleanup» (подзаголовок «Remove Gaussians outside all camera views»). Сохраняется отдельно для каждого проекта; по умолчанию: выключено.

ТЕХНИЧЕСКИ

Переключатель управляет двумя эффектами с разными условиями; оба выводятся при старте в локальную для сеанса конфигурацию, но не записываются в сохранённую конфигурацию (иначе они застряли бы как одноразовая фиксация). (1) Frustum-union-cull в конце обучения — Gaussians за пределами объединения всех камерных frusta удаляются («никогда не наблюдался» = «никогда не ограничивался», а именно это и есть большинство floater'ов). Эта часть не имеет условия по стратегии и работает одинаково при Classic, MCMC и Hybrid — по ней и назван переключатель. (2) Два дополнительных прохода density-control в середине обучения — только для Classic и только начиная с 30 000 итераций, установлены на 55% и 85% длины прогона (при 35–40K это примерно 20K и 30K). Оба прохода ищут Gaussians с очень низкой opacity, крошечным размером в screen-space и без вклада в loss, и удаляют их. Эффект: примерно на 5–15% меньше Gaussians в конце, заметно меньше тёмных комочков в небе в дрон-/outdoor-сценах. Стоит примерно 1–3% регрессии L1 в close-up-интерьерных сценах, поэтому не активирован по умолчанию. Значение сохраняется для каждого проекта и следует пресету или файлу сцены. Исправление по сравнению с предыдущими изданиями: переключатель больше не ограничен Classic-денсификатором и больше не блокируется в серый цвет при MCMC/Hybrid — раньше это как раз лишало пользователей MCMC и Hybrid того самого cull, который у них работает. При коротких прогонах (например, P2 Preview 5K) просто отпадает часть посреди прогона.

I44Reconstruct Sky Dome

ГДЕ

Inspector → Training (группа Outdoor) → переключатель «Reconstruct Sky Dome». Сохраняется отдельно для каждого проекта; по умолчанию: выключено.

ТЕХНИЧЕСКИ

Активирует проекцию sky dome перед обучением. После SfM и перед началом обучения для каждой входной камеры извлекается из изображения совместно используемая в S7 Apple-Vision-маска неба, пиксели неба обратно проецируются с помощью интринсиков камеры на виртуальную сферическую поверхность (радиус по умолчанию 8× радиуса сцены). На этой сфере инициализируется около 5000 новых Gaussians со средними цветами из спроецированных пикселей неба, очень большим масштабом (1.0 в единицах сцены) и начальной opacity 0.95. Эти 5000 Gaussians не являются sky mask в классическом смысле — они обучаются как и все остальные, но благодаря высокой начальной opacity остаются в тонкой оболочке. Результат: при 360°-novel-views в outdoor-/дрон-сценах вместо тёмных комков-конфетти появляются реальные цвета неба и структуры облаков. Значение запоминается при перезапусках. Имеет смысл только в outdoor-сценах с хотя бы 360°-охватом камер; при чистых object-captures без обзора неба эффекта нет. Статус: экспериментальный, более широкая A/B-валидация на других outdoor-наборах данных ещё предстоит.

Секция метрик (I30–I37)

Кроп группы „Training Metrics” после завершённого обучения — восемь строк: Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29
Кроп группы „Training Metrics" после завершённого обучения — восемь строк: Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29

Пока идёт обучение, группа метрик („Training Metrics", одна из двух сворачиваемых групп в секции Прогресс) показывает восемь актуальных значений из тренировочного цикла. До начала обучения она пуста („Start training to see live metrics"). Все значения обновляются каждые ~30 итераций (частота обновления живых метрик). Секция доступна только для чтения — ни один элемент не кликабелен и не изменяем. Для более глубокого анализа стоит обратиться к JSONL-логам обучения по пути ~/Documents/RadianceKit/Logs/.

I30Iteration

ГДЕ

Inspector → Прогресс → Training Metrics → Iteration. Только для чтения.

ТЕХНИЧЕСКИ

Отображение в формате „4523 / 40000" — текущая итерация относительно общего запланированного количества итераций. Считается синхронно с тренировочным циклом, который отправляет значения каждые ~30 итераций. Второе число соответствует значению Max Iterations на момент старта; оно больше не меняется, даже если пользователь потом изменит степпер — текущий запуск использует собственную копию-снимок. Если приложение через меню Training добавляет итерации (Continue Training +5K/+10K/+20K), знаменатель увеличивается.

I31Loss

ГДЕ

Inspector → Прогресс → Training Metrics → Loss. Только для чтения.

ТЕХНИЧЕСКИ

Значение с плавающей точкой с шестью знаками после запятой (например, „0.024385"). Измеряет комбинированный L1+SSIM-loss (соотношение контролируется через I21 SSIM Weight) плюс опционально Perceptual Loss (I29) и другие регуляризаторы. Шкала не абсолютна, а зависит от сцены — для большинства сравнений требуется один и тот же датасет. Типичные конечные значения при хороших конфигурациях: - Classic Quality 40K iters: 0.022–0.025 (Horse, Truck, Garden) - MCMC Full 200K iters: 0.024–0.028 - Outdoor-дрон 30K: 0.030–0.060 (хуже из-за геометрии сцены) - Indoor Apartments: 0.018–0.025

Значения выше 0.10 после 5K итераций указывают на проблемы SfM (плохие позы камер) — стоит прервать и пересчитать SfM.

I32Learning Rate

ГДЕ

Inspector → Прогресс → Training Metrics → Learning Rate. Только для чтения.

ТЕХНИЧЕСКИ

Отображение в научной нотации (например, „1.60e-04"). Текущая скорость обучения для параметров позиции (3DGS имеет шесть независимых learning rate для позиции, SH-DC, SH-Rest, Opacity, Scale, Rotation — здесь отображается LR позиции как репрезентативная величина). Начальное значение по умолчанию 1.6e-4, которое убывает по экспоненциальному закону до ~1.6e-6 к концу обучения. Скорость затухания настраивается через поле LR Schedule в конфигурации обучения (поле T в главе 6). Если LR остаётся необычно высоким (например, 1e-3 или больше после 10K итераций), это может указывать на некорректно загруженную конфигурацию.

I33SH Degree

ГДЕ

Inspector → Прогресс → Training Metrics → SH Degree. Только для чтения.

ТЕХНИЧЕСКИ

Целое число 0-3. Степень сферических гармоник для представления цвета. Начинается с 0 (только DC-компонента, т.е. цвет для каждого гауссиана, не зависящий от направления — то есть просто одна RGB-константа) и постепенно возрастает по ходу обучения до 3. Стандартное расписание повышает степень на 1 при итерациях 1000/2000/3000. SH-3 соответствует 48 цветовым коэффициентам на гауссиан (3 RGB-канала × 16 базисных функций SH). Более высокая степень SH означает больше зависящего от направления отражения (глянцевые поверхности выглядят корректно по-разному под разными углами обзора), но также больше памяти и более медленное обучение.

I34Gaussians

ГДЕ

Inspector → Прогресс → Training Metrics → Gaussians. Только для чтения.

ТЕХНИЧЕСКИ

Текущее количество гауссианов в модели, отформатированное с разделителем локали (например, „524.318"). Рост: - Classic: начинается с инициализационных точек SfM (обычно 50K-300K), растёт через Clone/Split почти до Densify Until, затем остаётся статичным до конца обучения (с поправкой на pruning) - MCMC: точки-сэмплы добавляются до достижения MCMC-cap, затем происходит только Relocation

Здоровые конечные значения: - Classic Quality: 400K-700K (Horse 524K, Garden 800K) - MCMC Full: точно на уровне cap (по умолчанию 150K, с множителем Auto-Scale × количество SfM-точек в зависимости от сцены 500K-1.5M)

При MCMC падение числа до < 60% от cap → аномалия (индикатор коллапса, указывает на слишком агрессивные регуляризаторы).

I35GPU Memory

ГДЕ

Inspector → Прогресс → Training Metrics → GPU Memory. Только для чтения.

ТЕХНИЧЕСКИ

Оценка потребления памяти буфером гауссианов как количество гауссианов × 616 байт (отформатировано в стиле памяти). 616 байт — размер полностью укомплектованного гауссиана (позиция, масштаб, вращение, opacity, коэффициенты SH степени 3, аккумулятор градиента). Это отображение не учитывает накладные расходы рендерера (tile-буфер, sort-буфер, backward-буфер) — реальная потребность в GPU- памяти обычно в 2-3 раза выше этого значения. При 500K гауссианов: отображается ~290 MB, реально ~700 MB. При 1.5M гауссианов: отображается ~880 MB, реально ~2.5 GB. На M3 Max с 64+ GB Unified Memory некритично, на M3 Pro с 18 GB это уже предел.

I36Speed

ГДЕ

Inspector → Прогресс → Training Metrics → Speed. Только для чтения.

ТЕХНИЧЕСКИ

Итераций в секунду с одним знаком после запятой („24.3 it/s"). Вычисляется тренером как скользящее среднее по последним ~100 итерациям. Типичные значения: - Quick Preset (1K iters): 80-120 it/s (коротко, не устоявшееся состояние) - Classic 20K @ 1.0 Render Scale (сцена Truck, M3 Max): 25-35 it/s - Classic 20K @ 0.5 Render Scale: 80-120 it/s - MCMC 200K @ 0.5 Render Scale: 25-50 it/s (медленнее из-за Relocation) - При 1M+ гауссианов и полном разрешении: < 10 it/s

Снижение скорости по ходу обучения нормально — больше гауссианов = больше вычислений на итерацию. Резкие падения (например, с 30 → 5 it/s) указывают на термальный троттлинг GPU или конкурирующие приложения.

I37Elapsed

ГДЕ

Inspector → Прогресс → Training Metrics → Elapsed. Только для чтения.

ТЕХНИЧЕСКИ

Уже прошедшее время в формате „4:23" (m:ss) или „1:23:45" (h:mm:ss). Переключение формата после 1 часа. Измеряет только чистое время обучения, а не предшествующие фазы (вычисление SfM, импорт изображений). При Pause/Resume часы продолжают идти — это астрономическое время, а не процессорное.

Секция диаграммы потерь (I39–I41)

Кроп группы «Loss History» после завершённого обучения — Current: 0.0075, справа зелёным Min: 0.0051, синяя кривая примерно от 0.14 круто вниз, затем неровно снижающаяся до 20K, ось слева 0.14 / 0.071 / 0.0051; ниже оранжевая диаграмма «Gaussian Count» с осью от 16K до 9K и конечным значением 9,660
Кроп группы „Loss History" после завершённого обучения — Current: 0.0075, справа зелёным Min: 0.0051, синяя кривая примерно от 0.14 круто вниз, затем неровно снижающаяся до 20K, ось слева 0.14 / 0.071 / 0.0051; ниже оранжевая диаграмма „Gaussian Count" с осью от 16K до 9K и конечным значением 9,660

Группа диаграммы потерь („Loss History", вторая сворачиваемая группа в секции Прогресс) визуализирует ход обучения во времени. Она состоит из двух диаграмм: диаграммы кривой потерь (большая, сверху, синяя) и диаграммы количества гауссианов (меньше, снизу, оранжевая). Обе строятся в реальном времени во время обучения и сохраняются до следующего запуска обучения. До первого обучения область пуста („Loss curve will appear during training"). Диаграммы представляют собой чистые SwiftUI-Path-отрисовки (без фреймворка Swift Charts), чтобы они и при 100K+ точках рендерились плавно.

I39Current Loss (индикатор)

ГДЕ

Inspector → Прогресс → Loss History → левая область метки „Current: 0.0075". Только для чтения.

ТЕХНИЧЕСКИ

Float-значение последней точки-сэмпла потерь, отформатированное с четырьмя знаками после запятой. Идентично I31 (Loss в секции метрик), только здесь форматировано компактнее. Источник — история потерь — список, в котором каждые ~30 итераций появляется запись. Только конечные значения попадают в список — NaN/Infinity (очень редко, в случае бага взрыва градиента) отфильтровываются.

I40Min Loss (индикатор)

ГДЕ

Inspector → Прогресс → Loss History → правая область метки „Min: 0.0051" (зелёным). Только для чтения.

ТЕХНИЧЕСКИ

Минимум всех когда-либо увиденных значений потерь текущего запуска обучения. Пересчитывается в реальном времени из истории потерь — отдельного сохранения нет. Отображается зелёным шрифтом, потому что „Min" = „лучший результат на данный момент". Пунктирная зелёная линия у нижнего края диаграммы визуально отмечает эту Y-позицию. При сессиях Continue Training отслеживание минимума начинается заново — старая история в UI заменяется новой (а не дополняется). Если текущее обучение идёт хуже, чем предыдущее, индикатор Min может оказаться больше, чем предыдущий итоговый результат.

I41Диаграмма количества гауссианов

ГДЕ

Inspector → Прогресс → Loss History → вторая диаграмма под ней (оранжевая). Только для чтения.

ТЕХНИЧЕСКИ

Линейная диаграмма количества гауссианов по итерациям обучения. Источник: история количества гауссианов (список пар (Iter, Count), заполняемый тренером каждые ~30 итераций). Y-шкала динамическая между минимумом и максимумом истории. При стратегии Classic кривая обычно выглядит так: устойчиво растёт до Densify Until, затем плоская (с небольшими колебаниями из-за прунинга). При MCMC: крутой подъём до предела (Cap), затем горизонтальная линия (Relocation удерживает число постоянным). Снижение в самом конце — это нормально — на изображении выше кривая падает примерно с 16K до 9.660, потому что проходы по очистке срабатывают после последней итерации (I26). Тревожным является только провал в середине хода: тогда денсификация прунит слишком агрессивно — признак неверных значений по умолчанию или известного бага коллапса MCMC (тема хотфикса v1.4.4).

Как читать кривую потерь?

Диаграмма потерь — важнейший инструмент диагностики в Inspector — ни один другой индикатор так напрямую не показывает, продвигается ли обучение полезно или застряло. Типичная здоровая форма — это быстрое падение в первые 1000-3000 итераций (с ~0.15 до ~0.05), за которым следует медленное, равномерное снижение до конца обучения (до 0.020-0.030). В логарифмическом масштабе кривая при этом выглядит как гладкая диагональ.

Что означает плато в потерях? Если кривая остаётся плоской в течение нескольких тысяч итераций, есть два возможных объяснения: (a) обучение „сошлось" — потери больше не могут заметно снижаться, потому что модель настолько хороша, насколько это возможно при данных данных и настройках. Это желательный результат; это „готово". (b) обучение „застряло" — потери на самом деле ещё могут снижаться, но оптимизация стагнирует (локальный минимум, слишком маленькая скорость обучения, денсификация выключена). Как различить: если значение потерь находится в типично хорошем диапазоне (0.020-0.030 для интерьера/объекта, 0.040-0.060 для экстерьера) и кривая уже 5K итераций плоская — это сходимость. Если значение заметно выше, чем у сопоставимых сцен (например, 0.08) — это застревание.

Внимание: плато гауссианов ≠ плато потерь. Плато в количестве гауссианов не означает „обучение завершено". Оно означает лишь, что денсификация перестала добавлять новые точки — либо потому что достигнут предел (Classic), либо потому что заполнен предел MCMC. Обучение после этого продолжается и лишь дорабатывает существующие точки. Настоящий сигнал „готово" ты видишь по кривой потерь и по индикатору итераций (I30), а не здесь.

Правило для прерывания: Если кривая потерь после 5000+ итераций находится выше 0.08 и почти не снижается, с высокой вероятностью реконструкция SfM выполнена неверно. Прерви обучение, посмотри в главе 9, подходит ли выбранный бэкенд SfM для этой сцены, при необходимости переключись на COLMAP/Native, затем запусти заново. Лучше потратить 10 минут на улучшение SfM, чем 2 часа на обучение с плохой привязкой камер.

Когда обращаться к Инспектору?

Быстрый справочник: какая секция и какие элементы управления нужны для типичной задачи?

Типичная задачаСекцияID контролов
Убрать насыщенность цветов готового сплатаLookL1 (Saturation)
Скруглить игольчатые/конфетти-сплатыLookL2 (Splat length)
Заполнить дырявое облако / увеличить сплатыLookL3 (Splat size)
Скрыть дальнее «конфетти» при облётахLookL4 (Fade far region)
Отменить настройки LookLookL5 (Reset finishing)
Загрузить готовую конфигурациюPresetsI7 (клик по строке)
Сохранить собственную конфигурациюPresetsI1 → I2 → I4
Поделиться конфигурацией с коллегамиPresetsI5 (Export) или I6 (Import)
Сменить SfM-бэкенд (например, если Apple-PG слишком нестабилен)Kameras & AufnahmeI12 (см. гл. 9)
Обработать видео-кадры без EXIF-фокусного расстоянияKameras & AufnahmeI13 (FOV Override)
Производительность COLMAP: GLOMAP вместо классическогоKameras & AufnahmeI14 — только в builds для разработчиков, в App-Store-сборке COLMAP как бэкенд отсутствует
Переключиться с Classic на MCMCTrainingskonfigurationI15
Дать тренировке работать дольшеTrainingskonfigurationI18 (Max Iter) + I20 (Densify Until) — связаны через I19
Сократить время GPU вдвоеTrainingskonfigurationI22 (Render Scale на 50%)
Качество тренировки +6% (MCMC)TrainingskonfigurationI16 (MCMC Quality)
Уличная сцена с большим числом SfM-точекTrainingskonfigurationI17 (Auto-scale by scene)
Настроить / сменить путь к COLMAPKameras & AufnahmeI23 / I24 / I25 — только в builds для разработчиков
Уменьшить размер экспортируемых файловTrainingI26 (всегда держать включённым)
Выжать последнюю каплю деталей на тонких структурахTrainingI29 (Perceptual Loss 0.05-0.1)
Наблюдать за тренировкойFortschritt ▸ Training MetricsI30 (Прогресс), I36 (Темп) — оставшееся время указано в полосе транспорта под Viewport
Оценить качество на ранней стадииFortschritt ▸ Training MetricsI31 (Loss < 0.05 после 5K = хорошо)
Подозрение на проблему SfMFortschritt (обе группы)I31 + I39 (Loss > 0.08 после 5K → пересчитать SfM)
Отличить сходимость от застреванияFortschritt ▸ Loss HistoryI39 + I40 (чтение плато Loss)
Обнаружить проблему DensificationFortschritt ▸ Loss HistoryI41 (кривая Gaussian падает → баг)