Skip to main content

Segment Anything in 3D Reconstruction Pipelines

SAM family は、3D Reconstruction の各段階で役立つ場面が多くあります。ここでは代表的な組み合わせを整理します。

Dynamic object 除去

通常の SfM / SLAM は static world を仮定します。歩行者や車のような moving object は outlier となり、camera pose 推定や map に悪影響を与えます。

SAM 2 / SAM 3 で moving object を mask し、それらを matching や reconstruction から除外することで、static scene の reconstruction が安定化します。

Object-level reconstruction

特定の object だけを 3D 化したい場合、まず SAM で object mask を取り、そこに reconstruction を絞ります。

これによって、背景の影響を受けずに object 単位の clean な 3D model を得られます。

NeRF / 3DGS の編集

NeRF や 3D Gaussian Splatting で reconstruct した scene を編集するときも、SAM が便利です。

  • 2D mask を多 view で取得
  • それを 3D primitive (Gaussian、voxel、ray) に lift
  • 該当領域を削除、移動、置換、recolor

特に SAM 3 の concept prompt と組み合わせれば、「全部の car を消す」「すべての椅子を 1m 上に移動」のような意味的編集が現実的になります。

Semantic 3D map

SLAM や SfM の map に、semantic label を付加する pipeline は古くから存在します。SAM 3 のような concept prompt 対応 model を使うと、

のように、open vocabulary な semantic 3D map を構築できます。

他 foundation model との連携

SAM は、他 vision foundation model と一緒に使うとさらに効果的です。

  • VGGT: camera と粗い 3D
  • Depth Anything: dense depth prior
  • SAM: object boundary

これらを統合することで、geometry の精度と semantic な編集性の両方を得られます。

数式で見る dynamic mask による reconstruction の安定化

Dynamic object を含む scene で SfM / MVS / NeRF / 3DGS を安定化させるとき、SAM 由来の mask Mdyn{0,1}H×WM_{\mathrm{dyn}}\in\{0,1\}^{H\times W} で動的領域の loss を抑えると有効です。Photometric loss は、static pixel だけに対して定義できます。

Lphoto=x(1Mdyn(x))ρ(I^(x)I(x))\mathcal{L}_{\mathrm{photo}} =\sum_{\mathbf{x}}(1-M_{\mathrm{dyn}}(\mathbf{x})) \,\rho\left(\hat{I}(\mathbf{x})-I(\mathbf{x})\right)

ここで、I^\hat{I} は rendering 結果、ρ\rho は L1 や Huber loss です。この式の気持ちは、「動く物体の pixel は static scene の仮定を破るので、reconstruction の loss に入れない」というものです。

NeRF / 3DGS の training では、さらに mask を sample 確率の補正にも使えます。

psample(x)1Mdyn(x)p_{\mathrm{sample}}(\mathbf{x})\propto 1-M_{\mathrm{dyn}}(\mathbf{x})

この式は、「学習で見る pixel そのものから動的領域を除く」ことで、reconstruction の geometry が dynamic object に引っ張られないようにします。

関連ページ

主なソース