AI・機械学習
JuliaによるGaussian Splattingの改善
Better Gaussian Splatting in Julia (pxl-th.github.io)
要約
GaussianSplatting.jl 2.0がリリースされ、Juliaで書かれたこの3Dシーンレンダリングライブラリに多くの改善が加えられました。AMD、NVIDIA、Apple Silicon GPUを単一のカーネルでサポートし、UIを応答性高く保つためのマルチスレッド化、MCMC densification戦略、深度・ジオメトリ監視、空ドーム機能などが追加されています。
全文翻訳
WASD + マウスまたは画面をタップして歩き回ってください :) キエフ、ウクライナにある聖ミカエルのお守り(GaussianSplatting.jlで再構築、約600万ガウス)
GaussianSplatting.jl 2.0リリースは、生活の質を向上させる顕著な改善と新機能をもたらします。
同じコード、複数のGPUバックエンド
完全にJuliaで書かれており、以下のGPUバックエンドをサポートしています。
AMD GPU (AMDGPU.jl)
NVIDIA GPU (CUDA.jl)
MacBook GPU (Metal.jl)
これはKernelAbstractions.jlを使用して実現されており、単一のカーネルを特定のターゲットにコンパイルできます。
マルチスレッドUI
重い作業中(GPUカーネルのJITコンパイル、データセットのロードなど)にアプリがフリーズするのを避けるため、アプリは現在2つのスレッドに分割されています。
フロントエンド:UIを処理し、OpenGLレンダリングを実行し、バックエンドにコマンドをディスパッチします。
バックエンド:Gaussian Splattingレンダリング、トレーニング、データセットのロードなどを実行します。
これにより、UIは常に応答性を保ち、ユーザーはバックグラウンドで長時間実行されているジョブがあっても操作できます。以前のようにフリーズするのではなく、何か作業が行われていることを示すプログレスバーとヒントが表示されます。データセットのロードやトレーニングの最初のイテレーションのカーネルのJITコンパイル中に、スピナーがアニメーションし続けます。
UI/UX自体も大幅に更新され、トレーニング中にハイパーパラメータとともに損失プロットをライブで表示するようになりました。
Markov Chain Monte Carlo戦略
デフォルトのクローニングおよび分割 densification 戦略に加えて、MCMC(Markov Chain Monte Carloとしての3D Gaussian Splatting)densification 戦略もサポートするようになりました。これにより、シーン内のガウス数の正確な制御が可能になり、一般的に良好な初期化への依存度が低くなります。
ユーザーはデータセットのロード中またはコード内で次のようにMCMCを選択できます。
Trainer(
rasterizer,
gaussians,
dataset,
opt_params;
strategy=MCMCStrategy(; kwargs...),
)
深度とジオメトリの監視
再構築されたジオメトリを改善するために、既製の深度推定モデルを使用して深度の事前情報を(prior)提供できます。深度画像は、<dataset-root>/depths/<FILENAME>.png のパスの下にデータセットの一部である必要があります。
深度マップは、トレーニング中に監視を提供し、より良いジオメトリと浮遊物の削減につながります。深度はフレーム間で異なる場合があるため、すべての深度マップは、まず事前点群に対して同じスケールにリフィットされます。リフィットに失敗したものは破棄され、監視には使用されません。
ジオメトリと滑らかさをさらに改善するために、深度監視がその位置のみを制約するのに対し、ジオメトリ正規化を実行して表面の形状を制約できます。これはUIで有効にするか、OptimizationParams(; use_normal_loss=true) で有効にでき、2つのことを行います。
深度法線の一貫性:レンダリングされた深度マップから派生した法線は、ガウスごとの法線と一致する必要があります。
表面の平坦化:各ガウスをその最小軸に沿って平坦化します。
Sky Dome
空/遠い背景を分離し、浮遊物を減らすのを助けるために、GaussianSplatting.jlはSky Domeをサポートするようになりました。これは、大きな半径にあるガウスの凍結されたシェルであり、独自のパスでレンダリングされ、シーンの後ろに合成されます。
環境によっては(例:上記の噴水)、球体ではなく半球体を好む場合があります。完全な球体はジオメトリの一部を引き寄せてしまうため、地面が不透明でなくなります。半球体を使用すると、背景の下半分は黒くなり、ジオメトリに全く影響しません。
Sky Domeを使用して空をさらに分離するために、任意の既製の空セグメンテーションモデルから取得した空セグメンテーションマスクを使用できます。これは、<dataset-root>/sky/<FILENAME>.png のパスの下にデータセットの一部である必要があります。
カメラの視錐台
カメラの視錐台の可視化は、小さな生活の質アップデートを受け、実際のカメラが撮影した画像のミニチュア画像を表示するようになりました。
その他の便利な機能
その他の改善点のリスト(順不同):
自動チェックポインティング:選択したディレクトリにNステップごとにチェックポイントを保存します。
カスタムハイパーパラメータ設定(学習率、損失重み、正規化など)は、ハイパーパラメータ.tomlファイルを使用してデータセットロード中に提供できます(ロード...、保存...ボタンを使用)。後でこれらの値に満足した場合に保存することもでき、再現性に役立ちます。
キャプチャモードのカメラパスは、トレーニング実行間で正確に保存/ロードおよび再現できるようになりました。
UIは、アプリケーションが使用しているVRAMの量を示します。
これでGaussianSplatting.jl 2.0のアップデートは終了です。ぜひ試してみて、GitHubリポジトリにフィードバックを残してください。ありがとうございます!:)
謝辞
LichtFeld Studioにインスピレーションをいただきました!
JuliaGPUエコシステムで働く人々。
← 前へ