第2章 — Inspector (エキスパートビュー)

インポート前の空の Inspector: 左サイドバーには Images カウンター 0 と、 ドロップヒント「Drop images here / or tap + to import」が表示されます。右の Inspector は完全に機能しますが、プリセットは情報提供のみ (アクティブな トレーニングはありません)。デフォルトプリセット「Preview」(5K 反復) が マークされています。Camera-Alignment は Apple Photogrammetry、Densification は Classic、SSIM Weight 0.20、Render Scale 50 %。Training Metrics の空状態 (「Start training to see live metrics」) と Loss History (「Loss curve will appear during training」) も表示されます。

インポート後の Inspector: ヘッダーステータス「60 images ready」。 Image サイドバーにインポートされた 60 枚のフレームすべて (frame_0001.jpg から frame_0945.jpg まで、960 カメラのブーケデータセットから 16 フレームごとの サブセットを高速反復用にしたもの) がリストされます。Auto-Render-Scale ロジックは 画像解像度 (1536×2048 = 3.1 MP) を確認し、それに応じて Render Scale を調整します。 Play ボタン (緑色、左下) はアクティブになり、アクティブなプリセットで トレーニングを開始します。

トレーニング中の Inspector: タイトルバーには全体進捗 「RadianceKit — Training NN %」が表示されます。Viewport は実行中の Gaussian 再構築をリアルタイムでレンダリングします (50 反復ごとに更新 — Live Preview 間隔は Settings → General → Training → Live Preview で調整可能)。Viewport の 下のメトリックバー: 現在の Loss、Learning Rate、Gaussian カウント、反復カウンター (例えば Preview プリセットで 1,600/5,000)。Inspector プリセットカード「Preview」は、 組み込みデフォルトからパラメータが逸脱するとすぐに「Modified」バッジが付きます。 サイドバー「Log」は SfM とトレーニングステージのイベントを収集します。

トレーニング後の Inspector: タイトルバーには最終 Gaussian 数 (ここでは 2 991 — 非常にコンパクト。合成 Blender ブーケシーンが明るい背景上の単純な 形状を持つため) が表示されます。Viewport は完成した点群を表示します — オービット型ドラッグナビゲーションがアクティブです (シーン中心の周りに回転)。 Training Metrics セクションは最終値で満たされ、Loss History チャートは 5 000 反復全体の経過を示します。下のエクスポートセクションがアクティブになります (すべての形式ボタンが有効化)。
Inspector はエキスパートモード (⌘2) の右サイドバーです。すべての トレーニング関連パラメータを 5 つの折りたたみ可能なセクションにまとめます: Presets、トレーニング構成、Enhancements、メトリック、Loss チャート。各セクションは ヘッダーをクリックして折りたたみ、順序はドラッグ&ドロップで並べ替え可能です (InspectorView.swift:81-97)。デフォルトではすべてのセクションが表示され、 アプリ状態は折りたたみと順序の設定をアプリ起動を超えて保存します。
Inspector の操作要素の一部は、設定 (第 3 章) にもほぼ同じ形で表示されます — 典型的には SfM バックエンド、Sky-Masking、および同様のデフォルトです。分離は 意図的です: 設定は新しいプロジェクト用のアプリ全体テンプレートを提供し、Inspector は 現在開いているプロジェクトのこれらの値を上書きします。一度どちらかの操作ロジックを 知れば、もう一方は目をつぶって使えます。
エキスパートモードの左カラム — Project Navigator — は Inspector の一部では ありませんが、その直接の隣にあります。そこではインポートされた画像をクリックで 選択し、スペースキーでクイックルックで表示し、マイナスボタンまたは Delete キーで 削除 (Cmd-Z で取り消し可能) できます。Inspector は現在のサイドバー選択に従って コンテキスト固有の詳細情報を表示しますが、5 つのメインセクションは常に表示 されたままです。
Presets セクション (I1〜I11)
Presets セクションは、テストされた構成を適用する最も速い方法です。組み込み プリセット (Classic、MCMC、Scene-Class) は、560+ の文書化された実験から再現可能な 開始点を提供します。独自のプリセットは保存、エクスポート、インポート、共有が 可能です。リストはカテゴリ別 (Classic、MCMC、SceneClass、Custom) にグループ化され、 複数のカテゴリを同時に展開できます。コンテキストメニュー機構 (行を右クリック) を 介して、Export、Duplicate、— 独自プリセットの場合 — Delete にアクセスできます。
I1Save…ボタン
場所
Inspector → Presets セクション → Save…ボタン (下のアクションバー)。
技術詳細
テキストフィールドと Save/Cancel ボタンを持つポップオーバーを開きます。 現在の TrainingConfig 状態が新しいユーザー定義プリセットとして永続化されます (JSON エンコード、アプリ全体に保存)。Save 操作は、現在の Densification 戦略を 含む 81 のトレーニングパラメータすべてをコピーします。プリセットは、派生元の 組み込みプリセットに関係なく、自動的に Custom カテゴリに配置されます。空の名前と 純粋な空白入力は破棄されます。すでに存在する名前は拒否されません — 各プリセットには独自の内部 ID があり、重複名は技術的に許可されていますが、 実際には混乱を招きます。
I2Preset Name テキストフィールド
場所
Save ポップオーバー → テキストフィールド「Preset Name」。
技術詳細
角丸境界線を持つシンプルなテキストフィールド、幅広い形状。値は Save ボタンクリック時にプリセット名として引き継がれます。UI には長さ制限は ありませんが、保存される名前は JSON エンコード可能で、UI リストで表示可能で ある必要があります — 絵文字とウムラウトは機能します。コンテンツは ポップオーバーが開かれるときに自動的に空の文字列にリセットされます。Save ボタンは、 トリム後にフィールドが空である限り無効です。自動候補もアクティブなプリセット名の 事前入力もありません。
I3Cancel ボタン (Save ダイアログ)
場所
Save ポップオーバー → Cancel ボタン (左)。
技術詳細
保存せずにポップオーバーを閉じます。テキストフィールドのコンテンツを 破棄します — 次回開くと、Save…ボタンロジック (I1) で再び空にリセットされます。 標準ボタンスタイル、確認ダイアログなし、ホットキーなし。Save パスが実行 されなかったため、現在の TrainingConfig は変更されません。
I4Save ボタン (Save ダイアログ)
場所
Save ポップオーバー → Save ボタン (右、目立つスタイル)。
技術詳細
実際の永続化をトリガーします。空でない名前を再度検証 (防御的チェック) してから、現在の TrainingConfig を JSON としてアプリストレージに書き込みます。 その後ポップオーバーを閉じます。青で強調表示され、テキストフィールドが空である 限りグレーアウトされます。保存が失敗した場合 (例えばアプリストレージが いっぱい — 非常にまれ)、現在表示されるエラーダイアログはありません。 プリセットは次回アプリ起動時に単に表示されなくなります。
I5Export…ボタン
場所
Inspector → Presets セクション → アクションバー → Export…ボタン。
技術詳細
現在選択されているプリセットを .radiancepreset ファイル (内部 JSON) として エクスポートします。プリセットが選択されていない場合は無効化されます。クリック すると、アプリは事前指定ファイル名 (プリセット名 + .radiancepreset 拡張子) を 持つ Save ダイアログを開きます。保存される形式には、完全な TrainingConfig と メタデータ (名前、カテゴリ、ID、組み込みフラグ) が含まれます。Finder で ダブルクリックするとアプリが開きますが、自動的にインポートは しません。 ユーザーは Import ボタン (I6) を使用する必要があります。
I6Import…ボタン
場所
Inspector → Presets セクション → アクションバー → Import…ボタン。
技術詳細
.radiancepreset ファイルのみを許可するファイルダイアログを開きます (複数選択無効)。選択時、JSON ファイルが読み込まれ、検証され、Custom カテゴリに 新しい内部 ID で挿入されます — 組み込みとの衝突を防ぐためです。インポートは、 エクスポートされたプリセットが元々組み込みであった場合でも、カテゴリを 自動的に Custom に設定します。破損したファイル、または古いスキーマバージョンと 互換性のないファイルは、エラーダイアログなしで暗黙的に拒否されます (ただし コンソールログには情報が表示されます)。
I7プリセット行 (クリックアクティブ化)
場所
Inspector → Presets セクション → 各カテゴリの各プリセット行。
技術詳細
プリセット行をクリックすると、TrainingConfig のすべてのフィールドが プリセットの値で置き換えられ、アクティブなプリセットの ID が記憶され、Modified ステータスがリセットされます。行の前のアクティブチェックマークは、プリセットが 選択されており、変更されていない場合にのみ表示されます。他の Inspector セクションの TrainingConfig の値 (スライダー、ステッパー、トグル) が変更されるとすぐに、 名前の後にオレンジの「Modified」バッジが表示されます。組み込みプリセットは 上書きできません — 変更の場合は Save ボタン (I1) で独自のコピーを作成する 必要があります。
I8コンテキストメニュー「Export…」
場所
各プリセット行を右クリック → 最初のエントリ「Export…」。
技術詳細
I5 (Export…ボタン) と同じ機能ですが、より便利にアクセスできます — プリセットを事前に選択する必要はありません。行で直接クリックされたプリセットを エクスポートします。すべてのプリセットカテゴリ (組み込みまたは Custom) で 同じように機能し、制限はありません。エクスポートには組み込みフラグと元の カテゴリが含まれますが、再インポート時には I6 で説明したようにカテゴリは Custom にマッピングされます。
I9コンテキストメニュー「Duplicate」
場所
各プリセット行を右クリック → 2 番目のエントリ「Duplicate」。
技術詳細
プリセットを Custom カテゴリに複製します。新しい内部 ID を生成し、 名前に「 Copy」を追加し、コピーを保存します。組み込みプリセットでも機能します — クローンは編集可能になります。オリジナルはそのままです。TrainingConfig は値ごとに コピーされ (JSON ラウンドトリップ)、オリジナルとコピー間に参照バインディングは 存在しません。
I10コンテキストメニュー「Delete」
場所
独自プリセット行を右クリック → 最後のエントリ「Delete」 (赤、破壊的)。
技術詳細
Custom プリセットでのみ表示されます。組み込みは削除できません。 エントリは破壊的とマークされ、コンテキストメニューに赤で表示され、誤って クリックしないように区切り線の後に配置されています。確認ダイアログは ありません — クリックでプリセットがすぐに削除されます。削除された プリセットは復元できません (Cmd-Z はここでは機能しません — 現在のビルドでは Undo は画像リストでのみ機能し、プリセット操作では機能しません)。削除された プリセットが現在アクティブだった場合、現在の TrainingConfig は変更されず、 アクティブなプリセット選択のみがクリアされます。
I11カテゴリヘッダー (展開/折りたたみ)
場所
Inspector → Presets セクション → 各カテゴリヘッダー (Classic、MCMC、SceneClass、Custom)。
技術詳細
異なるデフォルトを持つカテゴリごとの折りたたみ状態: Classic は 展開 で開始し、MCMC、SceneClass、Custom は 折りたたみ で 開始します。状態は永続化されません — アプリ再起動時にすべてのカテゴリは デフォルト状態に戻ります。Chevron 矢印はアニメーション付きで回転します。 ヘッダーの右側の数字は、このカテゴリのプリセットの数を示します。クリック ヒット領域はヘッダー全体に及びます。
トレーニング構成セクション (I12〜I22)

ここに中心的な制御要素があります: どの SfM バックエンドが計算するか、Densification の 動作、反復数、SSIM 重みです。MCMC 戦略では、Classic モードで非表示になる 2 つの追加トグル (「MCMC Quality」と「Auto-scale by scene」) が表示されます。 Native SfM バックエンドでは、EXIF 焦点距離のないビデオフレーム用の FOV オーバーライド フィールドが追加されます。
I12Camera Alignment ピッカー
場所
Inspector → トレーニング構成 → Camera Alignment (上部のセグメンテッドピッカー)。
技術詳細
2 つのオプションを持つセグメンテッドピッカー: Apple Photogrammetry と Native (Beta)。選択は次のカメラ再構築で使用される SfM バックエンドを決定します。 同時に、他のどの Inspector 要素が表示されるかにも影響します: Native は、EXIF の ないビデオフレームでのみ必要な FOV オーバーライド (I13) を追加で表示します。 ヒント: 非常に大きな屋外撮影では、外部ツール (Metashape または COLMAP) の結果を Workspace インポート経由で読み込めます — 第 1 章 (M5) と第 9 章 (Q3、Q6) 参照。
I13FOV Override フィールド (Native SfM)
場所
Inspector → トレーニング構成 → FOV Override (Camera Alignment = Native の場合にのみ表示)。
技術詳細
数値テキストフィールド (Range 0-170°)、デフォルト 0 = EXIF または ヒューリスティックからの自動決定。手動入力は、焦点距離メタデータを含まない ビデオから抽出された入力画像の場合に必要です。典型値: iPhone Wide ≈ 73°、 DJI Mavic Wide-Crop ≈ 70°、フルフォーマットセンサー付きドローン ≈ 84°。値は [0, 170] にクランプされます — 範囲外の値は直接戻されます。ネイティブ SfM パイプライン (Q4/Q5) のみに影響します。Apple Photogrammetry はこの値を完全に 無視します。
I15Densification ピッカー
場所
Inspector → トレーニング構成 → Densification (セグメンテッドピッカー、常に表示)。
技術詳細
2 つの Densification 戦略間で切り替えます: Classic (オリジナル 3DGS プロシージャ、Clone/Split/Prune と勾配閾値付き) と MCMC (Stochastic Gradient Langevin Dynamics with Relocation、NeurIPS 2024)。Classic から MCMC への切り替え時、 アプリは MCMC 固有のフィールドを自動的にテスト済みのデフォルト値 (Reg-Weights = 0、 MCMC-Cap-Multiplier 3.0、Sample/Noise スケジュール) に設定します。この自動初期化なし では、古いプリセットのセッションが 1.4.4 MCMC-Collapse バグ (460K → 5 Gaussian、 ウォッチドッグキル) に苦しみました。ピッカーの選択は、表示される Inspector 要素も 追加で決定します — MCMC では I16/I17 が表示されます。詳細なフィールド効果は 第 6 章 T11〜T16 (Classic) と T61〜T73 (MCMC)。
I16MCMC Quality トグル
場所
Inspector → トレーニング構成 → MCMC Quality (Densification = MCMC の場合のみ)。
技術詳細
勾配累積を 2 ステップ (アクティブ) または 1 ステップ (非アクティブ) に 切り替えます。Optimizer ステップが実行される前に、連続する 2 つのカメラビューからの 勾配を累積します。経験的に (Session 33、V544a)、最終 L1 エラーが約 6% 減少します (Horse-Full-MCMC の 3 試行平均で Quality 付き 0.0246 vs Quality なし 0.0261)。 コスト: 倍のトレーニング時間。非常に長いトレーニング (200K 反復) では、これにより 10+ 分の追加待ち時間が発生します — 最後の数パーセントの品質が本当に必要な場合に のみ価値があります。トレーニングのみに影響し、エクスポート形式や Viewport 表示には 影響しません。
I17Auto-scale by scene トグル
場所
Inspector → トレーニング構成 → Auto-scale by scene (MCMC の場合のみ)。
技術詳細
アクティブな場合、実効最大 Gaussian 上限は SfM 初期点数 × MCMC-Cap Multiplier (デフォルト 3.0) でスケーリングされます。例: SfM は 250K 初期点を 提供し、基本上限 = 150K、Multiplier 3.0 → 実効上限 = max(150K、750K) = 750K。 非アクティブの場合、基本のみが厳密に適用されます。1000 フレーム以上で対応する高い SfM 点密度を持つ大規模な屋外撮影が、固定 150K キャップデフォルトで Densification を 飢えさせていたため、v1.4.5 で導入されました — 余分な点が残り、新しい点は発生 できませんでした。Custom プリセットでデフォルト OFF、MCMC 組み込みで ON。 トレーニング時にのみ影響し、エクスポートには影響しません。
I18Max Iterations ステッパー
場所
Inspector → トレーニング構成 → GroupBox → Max Iterations。
技術詳細
Range 1 000〜100 000、ステップ幅 1 000 のステッパー。Optimizer 反復の 総数を決定します。トレーニング時間と線形に相関 (半減 = 約 50% 時間)。経験的 スイートスポット: 20K (Classic Balanced、L1≈0.028)、40K (Classic Quality、 L1≈0.023)、200K (MCMC Full、L1≈0.0246)。40K を超える Classic は平均してほとんど 改善をもたらしません — 収益逓減。変更時、Link 機能 (I19) がアクティブな場合、 Densify Until が比例して引き寄せられます (デフォルト比: 0.5、つまり Densify-Until = Max/2)。
I19Link/Unlink ボタン (Densify ↔ Iterations)
場所
Inspector → トレーニング構成 → GroupBox → Max Iterations と Densify Until の間の小さな Link ボタン。
技術詳細
Densify Until と Max Iterations の比率を固定するトグルボタン。アクティブ (Link アイコンが強調表示) では、Max Iterations の変更ごとに Densify Until が 比例して引き寄せられます。Unlink (Link-Plus アイコン) では、値は独立したままです。 これが典型的な相関を反映するため、デフォルトはリンクされています — 反復を倍に すると、通常 Densification も比例して長く実行したいです。比率は Link ボタンの 設定時に現在の値から計算されます。典型的な比率は 0.5 (Densify-Until = 反復数の半分) です。
I20Densify Until ステッパー
場所
Inspector → トレーニング構成 → GroupBox → Densify Until。
技術詳細
Range 500〜50 000、ステップ幅 500 のステッパー。Clone/Split (Classic) や Relocation (MCMC) を介して新しい Gaussian が追加されなくなる反復インデックスを 決定します。到達後、位置と色のみが洗練されます。高い値 = より多くの Gaussian = より大きなファイル、長い反復あたりの時間 (ステップあたり +30〜60% GPU 時間)。 典型値: 15K (30K Max-Iter の場合)、20K (40K の場合)、100K (200K MCMC の場合)。 アクティブな Link (I19) では自動的にスケーリングされます。Classic vs MCMC で 異なる効果: Classic は成長を完全に停止し、MCMC は Relocation ロジックを停止 しますが、Sample/Noise 適応は続行されます。
I21SSIM Weight スライダー
場所
Inspector → トレーニング構成 → GroupBox → SSIM Weight。
技術詳細
スライダー 0.0〜1.0、0.05 ステップ、「0.20」として表示。L1 Loss (0.0) と SSIM Loss (1.0) をミックスします。L1 はピクセルごとの明るさを引き締め、SSIM は 構造的類似性 (エッジ、ローカル統計) を引き締めます。デフォルト 0.2 はオリジナル 3DGS 論文 (Kerbl 2023) の値で、多くのセッションで堅牢な妥協点としてリバース エンジニアリングされました。高い値 (0.5+) は詳細保持を優先しますが、ローカルの 明るさエラーを無視する可能性があります。低い値 (< 0.1) は鋭いエッジでの詳細 損失を引き起こします。SSIM 計算はシェーダーで 11×11 ガウシアンウィンドウで実行 されます。パフォーマンス: 0.0 (L1 のみ) では、SSIM 計算がシェーダーでスキップ されるため、トレーニングは約 8〜12% 高速になります。
I22Render Scale スライダー
場所
Inspector → トレーニング構成 → GroupBox → Render Scale。
技術詳細
スライダー 0.25〜1.0、0.25 ステップ、「100%」として表示。ソース画像 サイズに対するトレーニングレンダリング解像度をスケーリングします。パフォーマンス への最大のレバー: 50% は GPU 時間を約 75% 削減し (ピクセルが 4 倍少ないため)、 25% は約 94% 削減します。Gradient Threshold は自動的にスケーリングされます。 スライダーの下に、ライブ解像度表示が MP で表示されます (例えば 「2304×1296 (3.0 MP)」)。現在の値が推奨値から逸脱している場合、オレンジの文字で 「— recommended: 50%」が表示されます。推奨は ~3 MP の実効解像度を目指します — Apple Silicon GPU が最も効率的に処理できる領域です。例えば、4K ソース画像には 自動的に 25% が推奨され、FullHD 画像には 100% が推奨されます。変更により Buffer の 再割り当てもトリガーされます。
Enhancements セクション (I26〜I29)

Enhancements セクションは、コアトレーニングループ自体を変更することなく画像品質を 改善する 4 つの機能をグループ化します。最初の 3 つ (I26-I28) は ポスト トレーニング または ビューポートステージ です: Compactification は トレーニング終了後にクリーンアップし、MetalFX と MPS Lanczos は実行中のトレーニングに 影響しない純粋なビューポートレンダラーです。Perceptual Loss (I29) はセクション所属 にもかかわらずトレーニングコンポーネントです — トレーニング中に追加の Loss 項として 有効化されるため、ビューポートトグルとは区切り線で分離されています。
I26Post-Training Compactification トグル
場所
Inspector → Enhancements → Post-Training Compactification。
技術詳細
V443 ポスト処理を有効化します: トレーニング反復完了後、Opacity が 0.01 (1% 可視性) 未満の Gaussian は削除されます。経験的に、ファイルサイズが ~55-58% 削減され、視覚的品質損失はゼロです — これらの Gaussian は視覚的にとにかく寄与 しないからです。Compactification は GPU Compact パスとして実行され、Gaussian カウントに 応じて秒の何分の 1 か、または数秒かかります。トレーニングパフォーマンスには 影響しません。このトグルがオフの場合、非表示の Gaussian もエクスポートされます — 形式を別のトレーニングステージ (Continue Training) で使用したい場合にのみ関連します。 そうでなければストレージの無駄です。
I27MetalFX Spatial Upscaling トグル
場所
Inspector → Enhancements → MetalFX Spatial Upscaling。
技術詳細
Viewport レンダラーで Apple の MetalFX Spatial Upscaler を有効化します。 トレーニング解像度 (I22 Render Scale 経由) がビューポートサイズより低い場合、 MetalFX はレンダリングされたフレームを ML ベースで表示サイズにスケーリングします。 ML Upscaler モデルが鋭いエッジ用に最適化されているため、すべてのスケーリングオプションの 中で最も鋭い結果を提供します。レンダラーパイプラインは切り替え時にライブで再構成 されます — 再起動なしですぐに表示されます。MPS Lanczos (I28) より優先されます: 両方がアクティブな場合、MetalFX が勝ちます。M3 GPU でフレームあたり約 1〜2 ms の パフォーマンスオーバーヘッド。ライブビューポートにのみ影響し、レンダリングされた エクスポート (Orbit ビデオ、スクリーンショット) には影響しません — これらは フルソース解像度でレンダリングされます。
I28MPS Lanczos Scaling トグル
場所
Inspector → Enhancements → MPS Lanczos Scaling。
技術詳細
Apple の Metal Performance Shaders を Lanczos リサンプリングとともに Viewport Upscaler として有効化します。Lanczos は 8 タップ Sinc フィルターを持つ 古典的なリサンプリング — Bilinear より鋭く、ML なしの古典的なアルゴリズム。 レンダラーパイプラインは切り替え時にライブで再構成されます。MetalFX (I27) も アクティブな場合、無視されます。最小オーバーヘッド (フレームあたり <0.5ms) ですが、 品質は MetalFX を下回ります。アプリケーション: MetalFX がアーティファクトを生成する シーンのフォールバック (例えば、ML Upscaler が時々「平滑化」する強力な線構造)。 I27 と同様にライブビューポートにのみ影響し、エクスポートには影響しません。
I29Perceptual Loss スライダー
場所
Inspector → Enhancements → Perceptual Loss。
技術詳細
スライダー 0.0〜0.2、0.01 ステップ、0.0 で「Off」として表示、それ以外は 「0.05」などとして表示。レンダリングのマルチスケールガウシアンブラーを Ground Truth 画像と比較する追加の Loss 項を有効化します (3 ブラースケール)。L1+SSIM だけでは 認識できない構造的差異をキャプチャします。V460 実装。経験的に、0.05〜0.1 の値は セッションで L1 スコアを数パーセント改善しますが、~5% のトレーニング時間 (ブラー カーネルを通る追加の順方向パス) を消費します。0.15 を超えると、トレーニングが 不安定になり、L1 が再び悪化します (Loss 項が最適化を支配)。「Enhancements」 セクション内の位置にもかかわらず、トレーニング 中 に効果があり、 後処理では効きません — 純粋な事後アップグレードではありません。
メトリックセクション (I30〜I38)

トレーニングが実行されている間、メトリックセクションはトレーニングループから 9 つのライブ値を表示します。トレーニングの開始前、セクションは空です (「Start training to see live metrics」)。すべての値は ~30 反復ごとに更新 されます (ストリームの更新頻度)。セクションは読み取り専用です — 要素は クリック可能でも変更可能でもありません。より深い分析には、 ~/Documents/RadianceKit/Logs/ の JSONL トレーニングログを使用してください (スクリプト python3 scripts/analyze_logs.py best 5)。
I30Iteration
場所
Inspector → メトリック → Iteration。読み取り専用。
技術詳細
「4523 / 40000」形式の表示 — 計画された総反復に対する現在の反復。 値を ~30 反復ごとにプッシュするトレーニングループと同期してカウントします。 2 番目の数字は、開始時の Max-Iterations 値に対応します。ユーザーが後でステッパーを 調整しても変更されません — 実行中の実行は独自のスナップショットコピーを使用 します。アプリが Training メニュー経由で反復を追加する場合 (Continue Training +5K/+10K/+20K)、分母が増加します。
I31Loss
場所
Inspector → メトリック → Loss。読み取り専用。
技術詳細
小数点以下 6 桁の Float 値 (例えば「0.024385」)。結合 L1+SSIM Loss (I21 SSIM Weight で制御されるミックス) と、オプションで Perceptual Loss (I29) と 他の正則化を測定します。スケールは絶対的ではなく、シーン依存 — ほとんどの比較に 同じデータセットが必要です。良好な構成での典型的な終値: - Classic Quality 40K 反復: 0.022〜0.025 (Horse、Truck、Garden) - MCMC Full 200K 反復: 0.024〜0.028 - Outdoor ドローン 30K: 0.030〜0.060 (幾何学的理由で悪い) - Indoor アパート: 0.018〜0.025
5K 反復後の 0.10 を超える値は SfM 問題 (悪いカメラポーズ) を示します — 中止して SfM を再計算してください。
I32Learning Rate
場所
Inspector → メトリック → Learning Rate。読み取り専用。
技術詳細
科学表記表示 (例えば「1.60e-04」)。Position パラメータの現在の学習率 (3DGS には Position、SH-DC、SH-Rest、Opacity、Scale、Rotation の 6 つの独立した LR があります — ここでは代表値として Position LR が表示されます)。デフォルトの 開始値 1.6e-4 で、Exponential Decay を介してトレーニング終了時に ~1.6e-6 まで 減少します。減衰はトレーニング構成の LR-Schedule フィールド (第 6 章の T フィールド) で 調整可能です。LR が異常に高いままの場合 (例えば 10K 反復後の 1e-3 以上)、これは 誤って読み込まれた構成を示す可能性があります。
I33SH Degree
場所
Inspector → メトリック → SH Degree。読み取り専用。
技術詳細
0〜3 の整数。色表現の球面調和次数。0 (DC コンポーネントのみ、つまり Gaussian ごとに方向に依存しない色 — 単一の RGB 定数) で開始し、トレーニング中に 段階的に 3 まで上昇します。標準スケジュールは、1000/2000/3000 反復で次数を 1 ずつ 上げます。SH-3 は Gaussian あたり 48 の色係数 (3 RGB チャンネル × 16 SH 基底関数) に 対応します。より高い SH 次数 = より多くの方向依存反射 (光沢のある表面が異なる 視点から正しく異なる外観) ですが、より多くのメモリと遅いトレーニング。
I34Gaussians
場所
Inspector → メトリック → Gaussians。読み取り専用。
技術詳細
モデル内の Gaussian の現在の数、ロケール区切り文字でフォーマット (例えば「524.318」)。成長: - Classic: SfM 初期点 (通常 50K-300K) で開始し、 Densify Until 直前まで Clone/Split を通じて成長し、その後トレーニング終了まで 静的 (Pruning を除く) - MCMC: Sample 点が MCMC キャップまで追加され、その後 Relocation のみ
健全な終値: - Classic Quality: 400K-700K (Horse 524K、Garden 800K) - MCMC Full: キャップで正確に (デフォルト 150K、Auto-Scale Multiplier × SfM-Count でシーンに 応じて 500K-1.5M)
MCMC で数がキャップの < 60% まで落ちる → 異常 (Collapse インジケータ、過度に 積極的な正則化を示唆)。
I35GPU Memory
場所
Inspector → メトリック → GPU Memory。読み取り専用。
技術詳細
Gaussian バッファメモリ消費量の推定値、Gaussian カウント × 616 バイト (Memory スタイルでフォーマット) として。616 バイトは、完全装備の Gaussian (位置、 スケーリング、回転、Opacity、SH 係数次数 3、Gradient Accumulator) の経験的サイズです。 表示にはレンダラーのオーバーヘッド (Tile バッファ、Sort バッファ、Backward バッファ) は 含まれません — 実際の GPU メモリ需要は通常この値の 2-3 倍です。500K Gaussian で: 表示 ~290 MB、実際 ~700 MB。1.5M Gaussian で: 表示 ~880 MB、実際 ~2.5 GB。M3 Max では 64+ GB Unified Memory で問題ありませんが、M3 Pro では 18 GB で すでに制限です。
I36Speed
場所
Inspector → メトリック → Speed。読み取り専用。
技術詳細
小数点以下 1 桁の秒あたり反復 (「24.3 it/s」)。直近 ~100 反復にわたる 移動平均としてトレーナーによって計算されます。典型値: - Quick プリセット (1K 反復): 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+ Gaussian とフル解像度で: < 10 it/s
トレーニング中の Speed の減少は正常です — より多くの Gaussian = 反復あたりより 多くの計算。突然の落ち込み (例えば 30 → 5 it/s) は GPU 熱スロットリングまたは 競合アプリを示します。
I37Elapsed
場所
Inspector → メトリック → Elapsed。読み取り専用。
技術詳細
「4:23」(m:ss) または「1:23:45」(h:mm:ss) としての経過時間。1 時間から 形式が切り替わります。純粋なトレーニング時間のみを測定し、前置段階 (SfM 計算、 画像インポート) は含まれません。Pause/Resume では時計が続行されます — つまり Wall-Clock であり、CPU 時間ではありません。
I38ETA
場所
Inspector → メトリック → ETA。読み取り専用。
技術詳細
「17:42」または「1:12:35」としての推定残り時間。計算: (Max Iterations − 現在の反復) / 秒あたりの反復。Speed がちょうどゼロの場合 (最初または Pause) は 「–」を表示します。推定は、トレーニング終了に向けた典型的な減速に 適応されません — 特に MCMC と Densify-Until 値の大きい Classic では、 より多くの Gaussian が画像に入るため、トレーニングは遅くなる傾向があります。実際には、 通常初期 ETA より 10-20% 上に留まります。
Loss チャートセクション (I39〜I41)

Loss チャートセクションは、時間にわたるトレーニングの進行を可視化します。2 つの チャートで構成されます: Loss Curve チャート (大、上、青) と Gaussian Count チャート (小、下、オレンジ)。両方ともトレーニング中にライブで構築され、次のトレーニング 開始まで永続します。最初のトレーニング前、領域は空です (「Loss curve will appear during training」)。チャートは純粋な SwiftUI Path 描画です (Swift Charts フレームワークなし) — 100K+ ポイントでもスムーズにレンダリングします。
I39Current Loss (表示)
場所
Inspector → Loss チャート → 左ラベル領域「Current: 0.0287」。 読み取り専用。
技術詳細
最後の Loss サンプルポイントの Float 値、小数点以下 4 桁でフォーマット。 I31 (Metrics セクションの Loss) と同じ、ここではよりコンパクトにフォーマット されているだけ。ソースは Loss History — ~30 反復ごとに 1 エントリを取得する リスト。有限値のみがリストに追加されます — NaN/Infinity (非常にまれ、 Gradient-Explosion バグの場合) はフィルタリングされます。
I40Min Loss (表示)
場所
Inspector → Loss チャート → 右ラベル領域「Min: 0.0245」(緑)。 読み取り専用。
技術詳細
現在のトレーニング実行のこれまでに見られたすべての Loss 値の最小値。 Loss History からライブで再計算されます — 別の永続性なし。緑のフォントで表示 されます。「Min」=「これまでで最高」だからです。チャート下部の緑の破線は、この Y 位置を視覚的にマークします。Continue Training セッションでは、最小追跡が新規 開始されます — 古い履歴は UI で新しいものに置き換えられます (追加されません)。 現在のトレーニングが前のものより悪く実行されている場合、Min 表示は前の最終結果 よりも大きい可能性があります。
I41Gaussian Count チャート
場所
Inspector → Loss チャート → その下の 2 番目のチャート (オレンジ)。 読み取り専用。
技術詳細
トレーニング反復にわたる Gaussian カウントの線グラフ。ソース: Gaussian Count 履歴 (トレーナーから ~30 反復ごとに埋められる (Iter、Count) ペアのリスト)。 Y スケールは履歴の最小値と最大値の間で動的。Classic 戦略では、曲線は通常次のように 見えます: Densify Until まで安定的に上昇、その後フラット (小さな Pruning 変動付き)。 MCMC では: キャップまでの急上昇、その後水平線 (Relocation が数を一定に保つ)。 アクティブなトレーニングにもかかわらず曲線が 落ちる 場合、Densification が 過度に積極的に Pruning しています — 誤ったデフォルトまたは既知の MCMC-Collapse バグ (v1.4.4 ホットフィックステーマ) の指標。
Loss 曲線の読み方
Loss チャートは Inspector の最も重要な診断ツールです — トレーニングが有用に 進んでいるか停止しているかを、これほど直接示す他のインジケータはありません。 典型的な健康的な形状は、最初の 1000〜3000 反復での速い低下 (~0.15 から ~0.05 へ)、 続いてトレーニング終了までの遅く均一な低下 (0.020〜0.030 へ) です。対数的には、 曲線はスムーズな対角線のように見えます。
Loss のプラトーは何を意味するか? 曲線が数千の反復にわたってフラットな ままの場合、2 つの可能な解釈があります: (a) トレーニングが「収束」した — モデルが与えられたデータと設定でなれる限り良いため、Loss はもはや有意に低下できません。 これは望ましいです。これが「完了」です。(b) トレーニングが「停止」している — Loss は実際にはまだ低下できますが、最適化が停滞しています (ローカル最小値、学習率が 小さすぎる、Densification オフ)。区別: Loss 値が典型的に良い範囲 (Indoor/Object で 0.020〜0.030、Outdoor で 0.040〜0.060) にあり、曲線が 5K 反復から平坦である場合、 収束しています。値が同等のシーンより大幅に高い場合 (例えば 0.08)、停止しています。
注意 Gaussian プラトー ≠ Loss プラトー。 Gaussian カウントのプラトーは 「トレーニングが完了」を意味 しません。Densification が新しい点の追加を 停止したことを意味するだけです — (Classic で) に達したため、または MCMC キャップが いっぱいになったためです。トレーニングはその後も継続し、既存の点のみを洗練します。 実際の「完了」信号は、ここではなく Loss 曲線と Iteration 表示 (I30) で読みます。
中止の経験則: Loss 曲線が 5000+ 反復後に 0.08 を超え、もはやほとんど 低下しない場合、高い確率で SfM 再構築が間違っています。トレーニングを中止し、 第 9 章で選択された SfM バックエンドがシーンに合っているか確認し、必要に応じて COLMAP/Native に切り替えてから、再起動してください。悪いカメラ整列で 2 時間の トレーニングよりも、より良い SfM に 10 分投資する方がよいです。
いつ Inspector を使うか?
クイックリファレンス: 各典型的なユースケースにどのセクションとコントロール?
| 共通タスク | セクション | コントロール ID |
|---|---|---|
| 事前準備されたセットアップのロード | Presets | I7 (行をクリック) |
| 独自セットアップの保存 | Presets | I1 → I2 → I4 |
| 同僚とセットアップを共有 | Presets | I5 (Export) または I6 (Import) |
| SfM バックエンドの変更 (例えば Apple-PG が 不安定すぎる) | トレーニング構成 | I12 (第 9 章参照) |
| EXIF 焦点距離なしのビデオフレーム 処理 | トレーニング構成 | I13 (FOV Override) |
| COLMAP パフォーマンス: 古典の代わりに GLOMAP | トレーニング構成 | I14 |
| Classic から MCMC への切り替え | トレーニング構成 | I15 |
| トレーニングを長く実行 | トレーニング構成 | I18 (Max Iter) + I20 (Densify Until) — I19 でリンク |
| GPU 時間を半分にする | トレーニング構成 | I22 (Render Scale を 50%) |
| トレーニング品質 +6% (MCMC) | トレーニング構成 | I16 (MCMC Quality) |
| SfM 点が多い屋外 シーン | トレーニング構成 | I17 (Auto-scale by scene) |
| COLMAP パスの設定/変更 | トレーニング構成 | I23 / I24 / I25 |
| エクスポートファイルを小さくする | Enhancements | I26 (常にオン のまま) |
| トレーニング時間を増やさず Viewport を鮮明にする | Enhancements | I27 (MetalFX) |
| MetalFX が過度に平滑化 → 代替 | Enhancements | I28 (MPS Lanczos) |
| 細かい構造での最後の詳細の 一滴 | Enhancements | I29 (Perceptual Loss 0.05-0.1) |
| トレーニングを監視 | メトリック | I30 (進捗)、I36 (速度)、 I38 (残り時間) |
| 品質の早期評価 | メトリック | I31 (5K 後 Loss < 0.05 = 良好) |
| SfM 問題の疑い | メトリック + Loss チャート | I31 + I39 (5K 後 Loss > 0.08 → SfM 再計算) |
| 収束 vs 停止の区別 | Loss チャート | I39 + I40 (Loss プラトーを読む) |
| Densification 問題の認識 | Loss チャート | I41 (Gaussian 曲線が落ちる → バグ) |