ユーザーガイド

第9章 — SfMバックエンド

Der Inspector im Expert-Modus mit den sechs Abschnitten Presets, Cameras & Capture, Training, Progress, Look und Export — jeder mit einer Unterzeile, wann er wirkt
エキスパートモードのInspector。6つのセクション— Presets、Cameras & Capture、Training、Progress、Look、Export— に分かれており、それぞれにその設定がいつ効くかを示すサブ行が付いている。 SfM手法の選択は「Cameras & Capture」セクションにある。
Das aufgeklappte Camera-Alignment-Menü mit genau zwei Einträgen: Apple Photogrammetry und Native
出荷版で開いた状態のCamera Alignmentメニュー: 項目はちょうど2つ—Apple PhotogrammetryとNative。COLMAPは ここには表示されず、「Native」にはもうBeta表記が付いていない。

Camera Alignment のピッカーはInspectorの「Cameras & Capture」セクションにあり、Segmented Controlではなくプルダウンメニューだ(バックエンド名がセグメントには長すぎ、幅の狭いInspectorカラムに収まらない)。 項目数はビルドによって異なる:App Store版はちょうど2つ—Apple Photogrammetry(デフォルト)とNative—を表示する。COLMAPはそこではバックエンドとして 完全に存在せず、開発者版・DMGビルドでのみ3番目の項目として現れる(Q2参照)。ネイティブの項目は単に「Native」と表記され、 以前の「(experimental)」や「(Beta)」という付記は削除されている—Native はもはや試験的な経路ではなく、品質重視の経路だ。地上近くでのオービット撮影や写真撮影シーンには強いが、現時点では 空撮・ドローンマッピング(点群が薄すぎる)では弱い。Apple Photogrammetryは 引き続き安全な既定選択肢だ。撮影タイプとして順序のない写真セットが選ばれている場合、アプリは 常にNativeで位置合わせを行う。ピッカーの表示内容にかかわらずだ—ピッカーの下にある注意書きが このことを明示しており、ピッカー自体は操作可能なままだ。値が使用不可になっているのではなく、単に上書きされているだけだからだ。Metashape、COLMAP、その他の 写真測量ソフトからの外部SfM結果は、File メニューから追加でインポートできる(Q3のCOLMAPテキスト形式、 Q6のWorkspaceインポート)—ピッカーは切り替わらないが、インポートされたポーズがSfM結果を 置き換える。このインポートはCOLMAPバックエンドの問題とは無関係で、どのビルドでも動作する。

SfMはStructure from Motionの略だ。重なり合う多数の写真から、 ソフトウェアは各画像についてカメラの位置と向きを共通の3D座標系内で再構成する。 その過程で粗い3D点群が生成され、これがGaussian Splattingによる トレーニングの初期化に使われる。SfMの結果はトレーニング本体への入力であり、 その後の画質を大きく左右する。

RadianceKitは5つのSfM経路を提供する:アプリに組み込まれた2つのバックエンド (Q1 Apple Photogrammetry、Q4/Q5 Native)、外部ツールからの2つのインポート経路 (Q3 COLMAPテキスト形式、Q6 バイナリWorkspaceインポート)、そしてApp Store外の 開発者ビルドでのみ利用可能なQ2 COLMAPバイナリだ。どれが適切かはシーンの種類 (物体を囲むオービット、室内、ドローン飛行)と、外部ソフトウェアがすでに 再構成結果を提供しているかどうかによって決まる。

Q1 — Apple Photogrammetry

場所

Expert View → Inspector → 「Cameras & Capture」セクション → Camera Alignmentピッカー、「Apple Photogrammetry」の項目。すべてのビルドでの 既定設定。

技術詳細

元々Object Capture向けに開発された、Appleの組み込み Photogrammetryフレームワークをラップしている。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ベンチマークがこの レイアウトでちょうど出力する。このパーサーはカメラモデル認識を バイナリパーサーと共有しており、COLMAPの11個の標準カメラモデル— SIMPLE_PINHOLEやPINHOLEから、SIMPLE_RADIAL(COLMAP自身の既定値)、 OPENCV、さらに魚眼バリエーションまで—をすべて把握している。コメント行や 空行にも堅牢だ。テストでは~1400台のカメラ(ETH3D Tunnel)まで 問題なくスケールする。

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

場所

Expert View → Inspector → 「Cameras & Capture」セクション → Camera Alignmentピッカー、「Native」の項目(以前あった 「(experimental)」の付記なし)。インクリメンタルはこのバックエンドの デフォルトモードで、Nativeに関してはMapperの選択肢はない。その下の 「Mapper」行はCOLMAP専用のものだ:開発者ビルドではNativeが選ばれている間、 表示はされるがグレーアウトされ、App Store版では完全に表示されない。真にネイティブの 行—「FOV Override」、「High-Quality」、「Native SfM Recipe」—は 他のバックエンドを選んでも姿を消すことはなく、グレーアウトされたまま残り、 その下の行で再び有効化するために何を変更すべきかを示す。インクリメンタル法と グローバル法の間を自分で切り替えることはできない:インクリメンタルが固定の 既定であり、グローバル法にはアプリが自動的に切り替える場合のみ移行する (Q5参照)。

技術詳細

SfMパイプライン全体の独自GPUアクセラレーション実装:FAST+BRIEF特徴量、 または(「High-Quality」スイッチでオンになる、順序のない写真セットでは そもそもオンになる)CoreML経由のSuperPoint+LightGlueに続いて、 HammingベースのKNNマッチング、RANSACによる基礎行列推定、トラック構築、 初期ペア選択、2視点ブートストラップ(F→EおよびDLT)、PnP登録と マルチビュー三角測量を伴うグリーディなインクリメンタルMapper、そしてSchur補元 Levenberg-Marquardt法(Huber損失と、Cholesky分解による解析的ヤコビアン)による 最終バンドル調整。完全にApp Store準拠:外部バイナリなし、Sandbox=true。 組み込みのCollapse検出器付き:入力フレームの60%未満しか登録されなかった場合、 カメラあたりのポイント数が13を下回った場合、または点群がほぼ平坦な場合に、 結果を退化したものと判定する。その直後にすぐ手法を切り替えるわけではない— アプリはまずインクリメンタル実行を繰り返し(最初の異常のない結果を採用し、 なければ試行の中で最良のものを採用する)、その最良の試行でも退化したままの 場合にのみグローバルMapper(Q5)に切り替える。オービット/ターンテーブル シーンでは経験的にきれいに動作するが、より一般的な動き(ドローン飛行、 複雑な形状の室内)では成功率が低くなる—ただしこの検出器がそうしたケースを 拾い上げる。~200台のカメラまでは信頼性を持ってスケールし、それ以上でも 処理時間が大幅に伸びるが動作する。

Q5 — Native SfM(グローバル)

場所

インクリメンタルMapper(Q4)がCollapse検出器を 発動させたとき(入力フレームの60%未満しか登録されなかった、カメラあたりの ポイント数が13を下回った、または点群がほぼ平坦)に自動的に呼び出される— ただしそれは、インクリメンタル実行が繰り返され、最良の試行でも退化したままだった 場合に限られる。手動で要求することはできない:Inspectorにはそのための ピッカーはなく、他に切り替えスイッチもない—いつ切り替えるかはアプリ自身が 決定する。

技術詳細

ネイティブパイプラインのグローバル版。まずQ4と同様の 特徴抽出とマッチングを行い、次にすべての検証済みペアについて相対ポーズ推定を行い、 続いて回転平均化(すべてのカメラの回転をワールド座標系内で同期させる)と 並進平均化(大規模なカメラ集合での整数オーバーフローを避けるため、 行列フリーの疎行列定式化に基づくLSQR方式)を行う。原理上は~5000台の カメラまでスケールするが、実際には数百台を超えると品質が目に見えて低下する。 「フォールバック層」として扱われる:インクリメンタルMapperが繰り返し後も 退化したままの場合に使用され、それ自体が再度Collapse検出器にかけられることは ない—その結果が薄いままであれば、代わりにパイプライン全体の品質警告が 表示される。

Q6 — Metashape / COLMAPテキストWorkspaceインポート

場所

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トレーニング開始)はソースに対して不可知だ。画像はアプリの サンドボックスのブックマークシステムを通じてセキュリティスコープ付きで 開かれるため、App Store版でもインポートは機能する。特に「Metashapeの エクスポートを再構成し直さずに使う」ケース向けに考えられている。Fileメニュー 項目に記載された検出処理は、選択されたフォルダが認識可能なWorkspaceでない 場合、アプリのログに警告を出す。

Q7 — Nativeレシピ(Standard / Professional / E3 High-Accuracy)

場所

Expert View → Inspector → 「Cameras & Capture」セクション → 「Native SfM Recipe」行。この行が操作可能なのは、Camera Alignmentとして 「Native」が選ばれ、かつ撮影タイプとして順序のない写真セットが設定されている 場合のみだ—それ以外はグレーアウトされ、下に何を変更すべきかが示される (利用可能条件の詳細は第2章を参照)。

技術詳細

同一のネイティブバックエンドの3段階。アルゴリズム 自体を変えるのではなく、どれだけ入念に処理するかを変える:

Standard — 追加ステージなしの基本レシピ。

Professional — さらに2つのことを追加する:検出された AprilTagマーカーが剛体としてMappingとバンドル調整に組み込まれ、 完成したポーズに対して密な再三角測量が行われる(より密な初期点群)。 撮影にマーカーが含まれていない場合、検出器は何も見つけられず、 密な再三角測量のみが有効になる。

E3 High-Accuracy — Professionalの上に、さらに HQフロントエンド(3×3のSuperPointタイル分割、4096キーポイントの LightGlue、Covisibilityペア)と、全カメラにまたがる共同焦点距離 リファインメントを追加する。これにより最も鮮明なカメラポーズが得られるが、 マッチングの処理時間は最長になる。

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

シナリオ推奨バックエンド
深く考えずにまず結果が欲しいときQ1 Apple Photogrammetry (初期設定)
オブジェクトのスキャン、50〜200枚の写真Q1 Apple Photogrammetry
同じシーンで最高品質を求めるときプリセット「Maximum Quality (Native)」 — Q4 Native + Q7レシピ E3
印刷したAprilTagマーカーを使った撮影Q4 Native + Q7レシピ Professional
大規模な屋外撮影/ドローン/>500枚の画像Q6 Workspaceインポート( Metashapeまたは COLMAPで計算してから読み込む)
Metashape/RealityCaptureのエクスポートがすでにある場合Q6 インポート( SfM不要)
ETH3D/学術用 COLMAPテキストセットQ3 COLMAPテキストインポート
Q4 が破綻する場合Q5 Native global(自動的に切り替わる)

クイック比較

BackendApp-StoreSandbox外部 バイナリ最適な用途最大~カメラ数
Q1 Apple PG周回オブジェクト~300
Q2 COLMAP Binary❌(Developer-Buildのみ)colmap/glomap屋外・大規模~5 000
Q3 COLMAP-Text-Importベンチリグ~1 500
Q4 Native incremental周回オブジェクト~200
Q5 Native globalQ4-フォールバック~5 000
Q6 Workspace-ImportMetashape再利用ソース ごと