MLエンジニアへの道 #65 - ステレオマッチング

Last Edited: 7/4/2025

このブログ記事では、コンピュータビジョンにおけるステレオマッチングについて紹介します。

ML

前回の記事では、単視点計測の限界があるにもかかわらず、スケール・シフト不変損失、DPT、セマンティック支援、 および大量の高品質データを収集するためのデータエンジンを活用することで、単眼深度推定においてある程度の成功を収めた深層学習モデルについて議論しました。 自然な発展として、本記事では、エピポーラ幾何に対応する、2つの画像の対応する投影をマッチングして、 視差による深度推定を行うステレオマッチングへの深層学習アプローチについて議論します。

3D CNNs & ConvGRU

深層ステレオマッチングの有力なアプローチの一つは、4Dコストボリューム(C×D×H×WC \times D \times H \times W)を構築することです。 ここで、DDは対応するピクセルの視差または変位を表し、CCはチャネルまたはマッチングコスト(ピクセルペアをマッチングする強さ)を導出するために集約する潜在特徴を表します。 チャネル次元を集約・圧縮した後にargminまたはsoftmaxを取ることで(D×H×WD \times H \times W)、 すべてのピクセルに対して最小マッチングコストを持つ視差を決定し(1×H×W1 \times H \times W)、深度に反比例する視差マップを得ることができます。

最適なマッチングコスト推定のための最適な潜在特徴を得るために、4Dボリュームを3D CNNsで処理することができます。 3D CNNsでは、すべてのxxyyzz方向(HHWWDDに対応)にわたって2Dカーネルの代わりに3Dカーネルをスライドさせます。 局所性の仮定が視差(深度に反比例するピクセル変位)にも適用され、視差次元を操作しながらパラメータ数を削減できるため、 ここで3D CNNsを使用することは理にかなっています。3D CNNsは、ボリューメトリック医用画像(深度次元)やビデオ(時間次元)でも利用され、 PyTorchとTensorFlowの両方で実装されています。

ステレオマッチングアルゴリズムの最近の進歩は、主に4Dコストボリュームに対する3D CNNsと、 4Dコストボリュームとグローバルコンテキストを使用した視差マップの反復的改善のためのConvGRU(密結合層の代わりに畳み込みを使用するGRU)およびその他の再帰ユニットを活用する深層学習アプローチによって推進されていました。 また、ワークフローにViTを組み込む研究もいくつか行われていました。しかし、これらのすべての深層学習アプローチは、 他のセグメンテーションモデルや単眼深度推定モデルと同様に、実世界のアプリケーションにはファインチューニングが必要であり、 データ収集の問題に直面していました。

FoundationStereo

FoundationStereoは、ゼロショットステレオマッチングが可能な初のステレオマッチングアルゴリズムとなり、従来のファインチューニング手法と同等、 またはそれを上回る性能レベルを達成しました。これは、DepthAnythingV2を強力な単眼事前情報として活用し、 畳み込みとトランスフォーマーを用いたハイブリッドコストボリュームフィルタリングを採用し、CovGRUで結果を反復的に改良し、 モデル・イン・ザ・ループデータ収集を利用して高忠実度・高品質な合成データを生成することで実現されました。以下の可視化は、 FoundationStereoのモデルアーキテクチャを示しています。

FoundationStereo

サイドチューニングアダプター(STA)は、凍結されたDepthAnythingV2からの単眼事前情報を、マルチレベルCNNからの細粒度・高周波特徴と組み合わせることで、 ステレオマッチングタスクに適応させます。具体的には、STAはDepthAnythingV2からのダウンサンプリングされた特徴と同レベルの特徴マップを連結して、 左右画像の潜在特徴flf_lfrf_rC×H4×W4C \times \frac{H}{4} \times \frac{W}{4})を生成します。 また、ConvGRUの入力のためにCNNコンテキストネットワークを使用してコンテキスト特徴fcf_cを取得します。 左右の特徴埋め込みが得られると、後続処理のために4Dコストボリューム(C×D4×H4×W4C \times \frac{D}{4} \times \frac{H}{4} \times \frac{W}{4})が構築されます。

Vgwc(g,d,h,w)=f^lg(h,w)f^rg(h,wd)Vcat(d,h,w)=[Conv(fl)(h,w),Conv(fr)(h,wd)]Vc(d,h,w)=[Vgwc(d,h,w),Vcat(d,h,w)] V_{gwc}(g, d, h, w) = \hat{f}_{l g}(h, w) \cdot \hat{f}_{r g}(h, w-d) \\ V_{cat}(d, h, w) = [\text{Conv}(f_l)(h, w), \text{Conv}(f_r)(h, w-d)] \\ V_c(d, h, w) = [V_{gwc}(d, h, w), V_{cat}(d, h, w)]

新しい視差次元を導入するため、frf_rの幅をすべてのd{0...D}d \in \{0...D\}でシフトし、すべてのfr(h,wd)f_r(h, w-d)に対して操作を実行します。 これらの操作には、特徴を8つのグループに分割し、各グループと各視差に対して正規化された特徴f^l(h,w)\hat{f}_l(h, w)f^r(h,wd)\hat{f}_r(h, w-d)にドット積を適用するグループワイズ相関が含まれます。 また、fl(h,w)f_l(h, w)fr(h,wd)f_r(h, w-d)の両方が畳み込みを受けて連結される連結操作も実行されます。 結果として得られるコストボリュームVgwcV_{gwc}VcatV_{cat}は、それぞれ従来の類似度測定(マッチングコスト計算のためのドット積)と単眼特徴の保存に使用されます。 VgwcV_{gwc}VcatV_{cat}VcV_cに連結され、アテンション型ハイブリッドコストフィルタリング(AHCF)モジュールで処理されます。

名前が示すように、AHCFはハイブリッドアプローチを採用し、マルチレベルコストフィルタリングにはオートエンコーダの形をした3D CNNを、 長距離コンテキストコストフィルタリングにはトランスフォーマーを利用します。具体的には、 AHCFはアップサンプリングとダウンサンプリングの分離可能3D畳み込み(深度分離可能畳み込みはDATとの関連で簡単に議論されました)を利用して、 K×K×KK \times K \times K畳み込みをK×K×1K \times K \times 11×1×K1 \times 1 \times K畳み込みに分解し、 複数レベルにわたって空間と視差をそれぞれ解析します。また、コストボリュームを視差トークンにダウンサンプリングし、 出力を三線形補間を使用してVcV_cにアップサンプリングすることで、 Flash attention(ハードウェア対応の高性能アテンションメカニズム)を使用した視差トランスフォーマー(DT)として活用します。

フィルタリングされたコストボリュームVcV'_cにソフトマックス関数が適用され、結果に対応するddを掛けることで初期の期待視差d0d_0を得ます。 この視差マップは、VcV'_cVcatV_{cat}fcf_cを使用してConvGRUで反復的に改良され、dKd_Kまで処理されます。 モデルは、損失関数L=d0dˉsmooth+kγKkdkdˉL = |d_0 - \bar{d}|_{smooth} + \sum_k \gamma^{K-k}||d_k - \bar{d}||を用いて自己キュレーションされた合成データ(モデル・イン・ザ・ループアプローチを使用して生成)で訓練されます。 ここで、dˉ\bar{d}は真の視差、smooth||_{smooth}はL1損失、γ\gammaは0.9です。 この損失関数は、指数的に増加する損失で反復的な視差マップの改良を監督するように設計されています。 上記のような複数の(その多くが他のモデルで見られたもの)技術を意図的に組み合わせることで、 FoundationStereoはステレオカメラ(またはOpenCV関数を使用して校正された2台のカメラ)で撮影された任意の画像ペアに展開可能で、 従来のアプローチ、RGBDカメラ、およびメトリック深度推定用にファインチューニングされたDepthAnythingV2を上回る性能を発揮する、 初の高性能ゼロショットステレオマッチングアルゴリズムとしての地位を確立しました。

結論

この記事では、ステレオマッチングへの従来の深層学習アプローチとしての3D CNNとConvGRU、 および高性能ゼロショットステレオマッチングを達成したFoundationStereoについて説明しました。 その成果と分野の拡張により、FoundationStereoの論文はCVPR 2025の最優秀論文候補にノミネートされました(ただし、賞は受賞しませんでした)。 技術の詳細と定量的・定性的結果については、以下に引用されている原論文とGitHubプロジェクトページを確認することをお勧めします。

リソース