ユーザーガイド

第9章 — SfM バックエンド

Inspector の Camera Alignment ピッカー付きエキスパートモード (Apple Photogrammetry / Native (Beta))
Inspector の Camera Alignment ピッカー付きエキスパートモード (Apple Photogrammetry / Native (Beta))
Native (Beta) がアクティブな Inspector — Camera Alignment ピッカーで 2 番目のオプションが選択され、他のトレーニング構成パラメータはすべて変更なし
Native (Beta) がアクティブな Inspector — Camera Alignment ピッカーで 2 番目のオプションが選択され、他のトレーニング構成パラメータは すべて変更なし

Inspector の Camera Alignment ピッカーは、2 つのオプションを持つセグメンテッドコントロールです — Apple Photogrammetry (App Store ビルドのデフォルト、完全に Sandbox 準拠) と Native (Beta) (RadianceKit 独自の FAST+BRIEF+GLOMAP パイプラインバックエンド、 Phase 3.8/3.9 で開発、2026-05 時点)。Native (Beta) はオービット専用に検証され、 ≥1 000 フレームで Apple Photogrammetry より高速ですが、Phase 3 §5 品質ゲート (finalLoss ≤ 0.0115) はまだ満たしていません — そのため Beta タグが付いています。 Metashape、COLMAP、または他のフォトグラメトリーソフトウェアからの外部 SfM 結果は、 追加で File メニュー (Q3 COLMAP テキスト形式、Q6 Workspace インポート) から インポートできます — ピッカーは切り替わりませんが、インポートされたポーズが SfM 結果を置き換えます。

SfM は Structure from Motion の略です。重複する写真群から、ソフトウェアは 各画像について、共有の 3D 座標系内のカメラの位置と視線方向を再構築します。 その過程で粗い 3D 点群が生成され、これが Gaussian Splatting のトレーニングを 初期化します。SfM 結果は実際のトレーニングの入力であり、後の画像品質を 決定的に左右します。

RadianceKit は 5 つの SfM 経路を提供します: アプリに組み込まれた 2 つのバックエンド (Q1 Apple Photogrammetry、Q4/Q5 Native)、外部ツールからの 2 つのインポート経路 (Q3 COLMAP テキスト形式、Q6 バイナリ Workspace インポート)、および Q2 COLMAP バイナリ (App Store 外の Developer ビルドでのみ利用可能)。どれが正しいかは シーンタイプ (オブジェクトの周りのオービット、室内、ドローン飛行) と、外部 ソフトウェアがすでに再構築を提供しているかどうかによって異なります。

Q1 — Apple Photogrammetry

場所

Expert View → Inspector → トレーニング構成 → Camera Alignment ピッカー、項目「Apple Photogrammetry」。

技術詳細

もともと Object Capture 用に開発された Apple の組み込み フォトグラメトリーフレームワークをラップします。Apple は内部的に独自パイプライン (手順は公開されていません) で特徴を抽出し、マルチビューマッチングで検証し、 Apple Silicon Neural Engine + GPU 上でバンドル調整を解きます。バックエンドは 完全に App Store 準拠 (外部バイナリなし、Sandbox=true、オンデバイス) ですが、 カメラポーズと粗い点群のみを提供します — トラック長や再投影誤差などの診断 メトリックはありません。Apple の推奨に従って数百枚の画像までスケーリングします。 直線的なドローン飛行や大規模な屋外シーンで ~500 フレームを超えると、再現性のある クラッシュや個々のカメラの静かな破棄が観察されています。

Q3 — COLMAP テキスト形式 (Metashape / ETH3D)

場所

メニュー「File → Import COLMAP / Metashape Workspace…」 (Cmd+⇧+I) または sparse/0/cameras.txt を含むフォルダのドラッグ&ドロップ。

技術詳細

標準化された COLMAP テキストエクスポートを読み込みます — sparse/0/ サブフォルダ内の 3 つのテキストファイル cameras.txtimages.txtpoints3D.txt — そして内部の SfM 結果モデルに変換します。COLMAP バイナリ エクスポートと同じ形式定義で、バイナリの代わりに ASCII で記述されています。 Agisoft Metashape、RealityCapture、PolyCam、ETH3D ベンチマークがまさにこの レイアウトで出力します。パーサーはバイナリパーサーとカメラモデル検出を共有します (すべての一般的なモデル: SIMPLE_PINHOLE、PINHOLE、OPENCV、OPENCV_FISHEYE、 FULL_OPENCV)。コメント行と空行に対して堅牢。テストで ~1 400 カメラ (ETH3D Tunnel) まで問題なくスケーリングします。

Q4 — Native SfM (インクリメンタル)

場所

Expert View → Inspector → トレーニング構成 → Camera Alignment ピッカー、項目「Native (Beta)」。インクリメンタルがこのバックエンドの デフォルトモード — Inspector には別のマッパーピッカーはありません。CLI 経由で モードを明示的に設定するには –native-sfm または –sfm-mapper incremental を 使用します。

技術詳細

GPU 加速された SfM パイプライン全体の独自実装: FAST+BRIEF 特徴量、または CoreML 経由の SuperPoint+LightGlue (–coreml-features 付き)、続いて Hamming-KNN マッチング、RANSAC 基礎行列、 トラック構築、初期ペア選択、2 視点ブートストラップ (F→E プラス DLT)、PnP 登録と マルチビュー三角測量を用いる greedy インクリメンタルマッパー、最後に Huber Loss と 解析的ヤコビアンを Cholesky Solve で用いる Schur 簡約 Levenberg-Marquardt による バンドル調整。完全に App Store 準拠: 外部バイナリなし、Sandbox=true。Phase 3.10 で 提供された R2 崩壊検出器付き: アプリが入力フレームの 60 % 未満しか登録しない、 またはカメラあたりの点数が 13 を下回ると、自動的にグローバルマッパー (Q5) に フォールバックします。経験的にオービット/ターンテーブルシーンでクリーン。より 一般的な動き (ドローン飛行、複雑な形状の室内空間) では成功率は低くなります — ただし、検出器がこれらのケースをキャッチします。~200 カメラまで確実にスケーリングし、 それ以上は実行時間が大幅に長くなります。

Q5 — Native SfM (グローバル)

場所

インクリメンタルマッパー (Q4) が崩壊検出器をトリガーした場合 (入力フレームの 60 % 未満が登録される、またはカメラあたりの点数が 13 を下回る)、 自動的に呼び出されます。CLI –sfm-mapper global 経由でのみ手動で強制可能。 Inspector では、グローバル手法は別のピッカーからアクセスできません — アプリが切り替えるタイミングを自分で決定します。

技術詳細

ネイティブパイプラインのグローバルバリアント。まず Q4 と同じく 特徴抽出 + マッチング、続いてすべての検証済みペアの相対ポーズ推定、その後 回転平均化 (世界座標系内のすべてのカメラ回転を同期) と平行移動平均化 (大きなカメラ数での整数オーバーフローを避けるため、行列フリーのスパース 定式化に基づく LSQR)。原則として ~5 000 カメラまでスケーリングしますが、 実際には数百カメラを超えると品質が低下します — K-1351 での Phase 3.8 §5 受け入れゲート測定では、目標の 0.0115 ではなく finalLoss 0.07 が得られました。 「フォールバックティア」として扱われます: インクリメンタルマッパーが退化したときに 登場しますが、それ自体は品質を再チェックされません。

Q6 — Metashape / COLMAP テキスト Workspace インポート (Phase Q7)

場所

File メニュー → 「Import COLMAP / Metashape Workspace…」 (Cmd+⇧+I)。sparse/0/cameras.{bin,txt}images/ を含むフォルダの ドラッグ&ドロップ。

技術詳細

ドラッグ&ドロップまたは Open パネルで選択されたフォルダが、 3 つの COLMAP Workspace レイアウト (sparse/0/sparse/、またはルート) の いずれかに一致するかどうか、および再構築がバイナリ (cameras.bin) かテキスト (cameras.txt) かを自動検出します。バイナリパスは COLMAP バイナリパーサーを 使用し、テキストパスは ETH3D ローダーを使用します — どちらも同じ SfM 結果 モデルを生成し、パイプラインの残り (画像をインポートし、MCMC トレーニングを開始) は ソースに依存しません。画像はアプリ Sandbox ブックマークシステム経由で セキュリティスコープで開かれるため、インポートは App Store バージョンでも 動作します。特に「Metashape エクスポートを再構築なしで再計算」のケースを 意図しています。File メニュー項目で言及されている検出は、選択されたフォルダが 認識可能な Workspace でない場合、アプリログで警告します。

どのバックエンドをいつ?

シナリオ推奨バックエンド
オブジェクトスキャン、50–200 枚Q1 Apple Photogrammetry
大規模屋外 / ドローン / >500 枚Q6 Workspace インポート (Metashape または COLMAP で計算してから読み込み)
Metashape/RealityCapture エクスポートありQ6 インポート (SfM 不要)
ETH3D / 学術 COLMAP テキストセットQ3 COLMAP テキストインポート
厳密な App Store 準拠 + オービットシーンQ4 Native インクリメンタル
Q4 が失敗Q5 Native グローバル (自動)
ETH3D ベンチマークデータQ3 (autotest precomputed)

クイック比較

バックエンドApp StoreSandbox外部 バイナリ最適用途最大 ~Cams
Q1 Apple PGOrbit-Object~300
Q2 COLMAP Binary❌ (Developer ビルドのみ)colmap/glomapOutdoor large~5 000
Q3 COLMAP テキストインポートBench rigs~1 500
Q4 Native インクリメンタルOrbit-Object~200
Q5 Native グローバルQ4 フォールバック~1 351
Q6 Workspace インポートMetashape 再利用ソース 毎