21.1K Views
November 10, 23
スライド概要
DL輪読会資料
4D Gaussian Splatting for Real-Time Dynamic Scene Rendering Naruya Kondo (落合研 D1) 1
書誌情報 ● 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering ○ Arxiv Submitted on 2023/10/12 (&既に引用3…!) ○ by Huazhong University, Huawei ● ひとことで言うと ○ 3D Gaussian Splatting を、画像/映像からの4D再構成タスクに応用、 高い再現度と高速なレンダリングを実現 ○ 3D空間を3枚の平面に圧縮する "Tri-Plane" の進化系 "HexPlane" (CVPR 2023) を、 うまく Gaussian Splatting の点の移動の記述に使ってる 2
プロジェクトページ https://guanjunwu.github.io/4dgs/ 3
ここからの内容 • 事前準備 – 3D Gaussian Splatting – Canonical Field と 変形の記述 – Tri-Plane / HexPlane (⇦ 本輪読会初??) • 提案手法 – Gaussian Deformation Field – 学習 • 結果 • まとめ・感想 4
3D Gaussian Splatting (3DGS) • 3D Gaussian Splatting for Real-Time Radiance Field Rendering (HP) – シーンの大量の撮影画像を使って3D再構成 – NeRF (Neural Radiance Field) の Neural ではなく Gaussian 版。 – 大量の Spherical Harmonics (SH) でシーンを表現 • 背景) PlenOxels (CVPR 2022) – – • Octree 形式 (立方体をN回8分割した8**N (+pruning)のSHで表現) 精度がいまひとつだったし、ハイパラチューニングが必要だった(体感) 3DGS は 点の増殖 (clone/split) と枝刈り (remove) を賢くやってる PlenOxels Spherical Harmonics 5
3D Gaussian Splatting (3DGS) • (超)参考: https://note.com/npaka/n/ncd4b84c1e2eb • • • > 最初に「SfM」(Structure from Motion) 法を使用して、一連の画像から点群を推定します。 > 次に、各点をガウスに変換します。~~ ただし、SfMデータから推定できるのは位置と色のみです。 > 学習には、ニューラル ネットワークに似た確率的勾配降下法を使用しますが、レイヤーは使用しません。 – 微分可能レンダリング + L1 Loss (+ SSIM Loss) – 自動化された高密度化とプルーニングを適用 • > 特定のガウスに対して勾配が大きい場合 (つまり、不正確すぎる場合) – > ガウスが小さい場合はクローンを作成 ⇦ 共分散が小さい – > ガウスが大きい場合は分割 ⇦ 共分散が大きい – > ガウスのアルファが低すぎる場合は削除 Differentiable surface splatting 6
3D Gaussian Splatting (3DGS) • ガウシアンの定義 (⇦ 厳密にはたぶんこう) ● ● χ == (x-μ) 分数は、 正規化定数 Σ: 分散共分散行列 • ただしΣは以下に分解して学習 ● 分解して学習する必要性はあ まりわからず... S: 対角行列, R: 回転行列 (R^(-1)=R^T) (3Dガウシアンの向きの軸をR、軸方向の広がりをSが表す。) 7
Canonical Field と 変形の記述 Nerfies など 4DGS Nerfies (ICCV 2021) (に限らず、Neural Volumes (SIGGRAPH 2019) / HyperNeRF (SIGGRAPH 2021)とかでも) • 「正規化空間」と、 「時刻 t の 点 x が正規化空間のどこにあるか」を学習して変形を再現 (a) – 今まで (NeRF) は、あるピクセルに相当する光線上の点の場所を調べれば、 その点の色と密度がわかった – 3DGS では、周辺の点の色と密度と広がり全部を調べないと、 その点の色と密度がわからない! • ⇨ 3DGS では、正規化空間のどこに時刻 t の 点 x があるのかを調べるのではなく、 時刻 t を再現するときは、先にすべての点群を移動させればいい! (b) 8
TriPlane / HexPlane EG3D HexPlane 9
TriPlane / HexPlane • Tri-Plane: 3D空間を3枚の平面の特徴量の寄せ集めで表現 – ある点の情報は、xy, yz, zx 平面の特徴で表現、+ MLP で色などを予測 – 3D再構成 / 3D生成 • HexPlanes or K-Planes (両方CVPR 2023) – 4次元に拡張。xy, zt, xz, yt, yz, zt の6枚の平面で表現 (⇦ canonical frame は不要) 10
4D Gaussian Splatting 11
Gaussian Deformation Field f_{voxel} • xyzt 空間の特徴マップを作り、デコードして点の動きを得る ⇦ それに、隣接する点は 似たように動くはず! – 4次元空間はデータサイズがやばい… ⇨ HexPlane (解像度は4段階) – HexPlane で、色と密度の場を学習するのではなく、点の動きを学習 • 位置だけではなく、サイズと回転の変化も推定 12
学習 • 先に無理やり1つの Canonical な 3DGS を学習、 その後でdeformation field を学習 • Loss は、L2誤差と TV Loss – TV Loss: 特徴空間 (今回は deformation field) を滑らかに • 各特徴平面 (xy, zt, xz, yt, yz, zt) の各要素と隣の要素との差を小さく 13
結果 14
結果 • inward-facing scene では 4DGS が良かった。一方、outward-facing では HexPlane / K-Plane の方が良かった…(あれ) – この表はどう PSNR の平均を取ったのだろう… • レンダリングはとても速い! モデルサイズもそこまで大きすぎない 15
Ablation • voxel (HexPlane) なしで直接 Δx 等を予測はだめ ⇨ HexPlane 使うの大事! • Canonical frame のみの強制学習のフェーズがないとだめ • SSIM Loss を入れると悪化 – 「deformation を学習するのが難しくなるから」 (⇦ 確かに…? • MLPを大きくするともっと綺麗になる (トレードオフ) • 7分くらいの学習でも結構いい感じ 16
まとめ・感想 • 4D Gaussian Splatting を提案、リアルタイムの動的シーンレンダリングを実現 • Canonical frame と deformation field の学習 – 光線上の点の移動ではなく、全体の点を移動させてレンダリング • 近い点の移動をHexPlaneで効率的に表現 • 3DGSを動的なシーンに拡張するには、点の移動を記述・保存しないといけない はずで、NeRF系よりかなり大変だろうと思ってたら一瞬で実現しててすごい… • Max 5 秒くらいのそんなに激しくない変形なので、どこまで使えるのか • シミュレーション系 (現在の状態が過去の状態に依存する) にもあっさり拡張されそう...? • 17