Slide 1

Slide 1 text

SpotLessSplats: Ignoring Distractors in 3D Gaussian Splatting (Sabour+, ECCV2024 Workshop) 2024/11/27 株式会社サイバーエージェント 大隣 嵩

Slide 2

Slide 2 text

概要 What: Casualに撮影された画像群から、一時的に映る物体(Distractor)を排除し、    Novel View Synthesis(3DGS空間構築) Why: オリジナルの3DGSだと、DistractorがFloaterとして学習される How: 学習中のロスと画像特徴量を組み合わせてDistractorのマスクを作成し、    3DGSの学習から除外 入力 出力 画像特徴量によりDistractor(風船) のマスクを作成 2 3DGS

Slide 3

Slide 3 text

Distractorの消し方 NeRF・3DGSではピクセル単位でロスを計算する → Distractorに関するpixel-wise maskを作成し、Distractorを学習から除外すれば良い 3

Slide 4

Slide 4 text

先行研究: RobustNeRF [Sabour+, CVPR2023]の発想 Distractorはマルチビュー一貫性が取れないため、レンダリング誤差が大きくなる 4 Train View Distractors レンダリング誤差

Slide 5

Slide 5 text

先行研究: RobustNeRFの発想 Distractorはマルチビュー一貫性が取れないため、レンダリング誤差が大きくなる ⚠ ピクセルごとの誤差だけだと、高周波領域も誤って除去してしまう 5 Train View Distractors レンダリング誤差

Slide 6

Slide 6 text

先行研究: RobustNeRFの発想 Distractorはマルチビュー一貫性が取れないため、レンダリング誤差が大きくなる ⚠ ピクセルごとの誤差だけだと、高周波領域も誤って除去してしまう → レンダリング誤差の空間的な広がりを考慮したマスキング 6 Train View Distractors レンダリング誤差 マスク

Slide 7

Slide 7 text

先行研究: RobustNeRFでのマスク計算式 7 1. 閾値よりレンダリング誤差が大きいピクセルを0、小さいピクセルを1に(二値化) レンダリング誤差 二値化の割合 (ハイパーパラメータ) 2. 3x3ボックスカーネルを用いて、Distractorの空間的な広がりを捉える  (1.で計算した重みが3x3カーネル内で半分以上1の時1、そうでない時0) 3x3ボックスカーネル (全ての値が 1/9)

Slide 8

Slide 8 text

SpotLessSplats: RobustNeRFの問題に対する解決策 RobustNeRFはただレンダリング誤差に固定サイズのカーネルをかけただけ → 画像の意味情報を考慮して、より賢くDistractorを検出する → Stable Diffusionの画像特徴を使用 8 RobustNeRF

Slide 9

Slide 9 text

SpotLessSplats: 手法 RobustNeRFはただレンダリング誤差に固定サイズのカーネルをかけただけ → 画像の意味情報を考慮して、より賢くDistractorを検出する → Stable Diffusionの画像特徴を使用 画像特徴を活用してDistractorを検出する2つのアプローチを提案 1. SLS-agg (agglomerative)  画像特徴を用いて構成したクラスタにより、似た画像特徴を持つもの同士で誤差集約  画像内の空間的な情報 を扱える 2. SLS-mlp  MLP分類器により、画像特徴を入力としたDistractor分類器を  3DGSの学習と並行して最適化・推論  画像内に加えて、画像間も含めた時空間的な情報 を扱える 9

Slide 10

Slide 10 text

SpotLessSplats: SLS-agg 1. 3DGSの学習用画像に対してStable Diffusionを使って画像特徴を計算する  (サイズ50x50) 2. 8近傍を初期値として、空間的な繋がりを考慮し、100クラスタにクラスタリング  (scikit-learnのAgglomerativeClusteringを使う) 3. 最近傍によりクラスタ結果を元の解像度にアップサンプリング 4. クラスタごとにRobustNeRFのマスク値(式9)を平均化し、新たなマスクを作成  (3x3ボックスカーネルにより、誤差の空間的な広がりを考慮したマスク) 10

Slide 11

Slide 11 text

SpotLessSplats: SLS-mlp 画像特徴を入力し、ピクセルごとにDistractorかどうかを判定するMLP分類器を学習 Distractor分類器の最適化は3DGSの学習と交互に行う RobustNeRFの重みの中で自身のあるラベルのみ学習に用いる 11 MLPの出力 非Distractorの自身があるピクセル Distractorの自身があるピクセル

Slide 12

Slide 12 text

SpotLessSplats: SLS-agg、SLS-mlpの違い 12 RobustFilter(RobustNeRF)と比較して、細かいマスクが減っている

Slide 13

Slide 13 text

SpotLessSplats: SLS-agg、SLS-mlpの違い 13 SLS-aggとSLS-mlpでは性能にはほとんど差がない

Slide 14

Slide 14 text

SpotLessSplats: 学習初期の不安定なマスクに対する解決策 問題点 学習初期は誤差がランダムに近い → 正確なマスキングが難しい 不正確なマスキングで学習させると誤った方向に学習が進む危険性がある 解決策 最初は全てのピクセルを学習しつつ、徐々にマスクを適用していく → ベルヌーイ分布によるマスクのサンプリング 14 ベルヌーイ分布 指数スケジューラ 計算したDistractorマスク (SLS-agg or SLS-mlp) ステップ数 : t

Slide 15

Slide 15 text

SpotLessSplats: Distractorの割合の決め方 問題点 3DGSは1バッチ1枚で学習するが、画像ごとにDistractorの割合は異なる → 画像によりDistractorの偏りがあるため、RobustNeRFの誤差二値化の計算で、   正確な閾値を与えることが難しい 解決策 過去のバッチも考慮して、Distractorの閾値を決定する 過去のレンダリング誤差の情報をヒストグラム により効率的に保持する 手順 1. 誤差を10000個のbinに分割したヒストグラムを用意する 2. 新バッチのヒストグラム(重み0.05)と過去のヒストグラム(重み0.95)で  重み付き平均を計算し、ヒストグラムを更新 3. 更新したヒストグラムを使って分位点(誤差二値化の閾値)を計算 15

Slide 16

Slide 16 text

SpotLessSplats: Opacity Resetの課題 問題点 3DGSでは、カメラ近くのFloatersや不必要なガウシアンを減らすために、 定期的に不透明度を0にするOpacity Resetを採用 → Opacity Resetは誤差分布の追跡を不安定にする → 一方で、単にOpacity Resetを無効にすると、最適化が困難になる 解決策 Utilization-Based Pruning (UBP)を提案 UBP: 各GSのレンダリング寄与度(利用率)を計算し、利用率の低いガウシアンを削除 画像投影位置に対する色の変化率が大きいGSは重要度が高い(Distractorは除外) * 100ステップごとに100枚の画像を元に計算した利用率で不要なガウシアンの削除 16 マスク 画像の投影位置に対する色の変化率

Slide 17

Slide 17 text

SpotLessSplats: UBPの効果 17 Opacity Reset 何もしない UBPを使う UBPにより、Opacity Resetや何もしない場合に存在するフローターが消える

Slide 18

Slide 18 text

評価データセット RobustNeRF Dataset NeRF on-the-go Dataset Android Crab Statue Yoda 18 Fountain Corner Spot Mountain Patio Patio Low Medium High

Slide 19

Slide 19 text

SpotLessSplats: 結果(RobustNeRF Dataset) Qualitative ・SLS > 3DGS ・SLS > NeRF-HuGS  (over-masking) Quantitative: ・SOTA

Slide 20

Slide 20 text

SpotLessSplats: 結果(NeRF on-the-go Dataset) 20 Qualitative ・3DGS < SLS ・NeRF on-the-go  ≒ SLS Quantitative: ・SOTA

Slide 21

Slide 21 text

SpotLessSplats: 影・透明物体 21 影 透明物体 影・透明物体も検出・除去できている

Slide 22

Slide 22 text

Limitations: 薄い物体の検出 低解像度(50x50)の画像特徴を用いるため、薄い物体や細部の検出に弱い 22 失敗例 (風船の紐を検出できない)

Slide 23

Slide 23 text

Limitations: 同一クラスの識別 同一クラスの物体でDistractor、非Distractorが近接すると、識別が難しくなる * 特徴空間が意味情報だけでなく、見た目や位置情報もエンコードしているため 23 成功例 (遠く離れている場合) 失敗例 (近接している場合)

Slide 24

Slide 24 text

まとめ 背景 実世界のキャプチャーは、動く物体、照明変化が存在する 従来の3DGS手法は一時的に映る物体(Distractor)を含むシーンへの適用が困難 目的 Distractorを検出しマスクを作成することで、実世界でも高品質な3D再構築を目指す 手法 レンダリング誤差と事前学習された画像特徴を活用してDistractorを検出 クラスタリング(SLS-agg)とMLP(SLS-mlp)を用い効率的に排除 結果 提案手法は、定性的・定量的に従来手法を上回る性能を達成 画像特徴の解像度や特性に起因する制限あり(細い物体、似た物体の取り扱い) 24