【論文紹介】Speedy-Splat:3D Gaussian Splattingを高速化し、モデルサイズを劇的に削減する新手法

「Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives」
https://arxiv.org/abs/2412.00578

はじめに:3D Gaussian Splatting(3D-GS)とは?

近年、3Dシーンのフォトリアルなレンダリング技術として、Neural Radiance Fields(NeRF)が登場し、大きな注目を集めました。しかし、NeRFは計算コストが高く、リアルタイムレンダリングには課題がありました。

そこで、3D Gaussian Splatting(3D-GS)という新しい技術が開発されました。これは、シーンを微分可能な3D Gaussiansの点群として表現することで、NeRFに比べて大幅なリアルタイムレンダリングを実現しました。

3D-GSは画期的な技術ですが、まだレンダリング速度とモデルサイズに課題を抱えています。特に、モバイルデバイスなどのリソースが限られた環境での利用には、さらなる改善が求められていました。

Speedy-Splatの目的と画期的な成果

今回ご紹介する「Speedy-Splat」は、この3D-GSの残された課題、すなわちレンダリング速度とモデルサイズの問題に正面から取り組んだ論文です。

著者らは、3D-GSのレンダリングパイプラインにおける2つの主要な非効率性を特定し、それを解消することで、レンダリング速度を大幅に向上させることに成功しました。

その結果、Speedy-Splatは平均でレンダリング速度を6.71倍加速し、モデルサイズを10.6倍削減、さらにトレーニング時間も1.47倍短縮するという驚異的な成果を達成しました。これらはすべて、元の3D-GSと同等の高い画像品質を維持しながら実現されています。

論文「Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives」から引用

キーとなる2つの主要技術:精密なタイル交差計算

3D-GSのレンダリングは、画像を小さなタイルに分割し、それぞれのタイルにどのGaussianが寄与するかを計算する「タイルベースレンダリング」という手法を採用しています。しかし、従来の3D-GSでは、Gaussianが画像を占める範囲を過大に評価していました。これにより、実際には寄与しない多くのタイルに対しても計算が発生し、非効率的でした。

Speedy-Splatは、この問題を解決するために2つの革新的なアルゴリズムを提案しています。

SnugBox:よりタイトなバウンディングボックス

まず「SnugBox」は、Gaussianの実際の透明度(opacity)を考慮した、より正確な楕円形の範囲に基づいて、タイトな軸に沿ったバウンディングボックスを計算します。これにより、Gaussianが占める領域を従来よりも精密に捉えることが可能になります。

AccuTile:さらに正確なタイル交差

次に「AccuTile」は、SnugBoxで計算されたタイトなバウンディングボックスをさらに拡張し、Gaussianが実際に交差する「正確なタイルセット」を特定します。これにより、レンダリング時に処理すべきGaussian-to-tileマッピングの数が大幅に減り、レンダリング速度が向上します。

これらの手法は、レンダリングの精度を損なうことなく、平均でレンダリング速度を1.99倍にまで加速させることに貢献しています。

論文「Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives」から引用

上の概念図は、Gaussianが画像を占める領域を正確に特定するAccuTileの仕組みを示しています。ピンクの楕円がGaussianの実際の広がりを表し、従来の過大評価された領域(図には示されていませんが、より大きな四角)に比べて、SnugBox(青いバウンディングボックス)やAccuTile(黄色のタイル)がいかに精密であるかがわかります。

キーとなる2つの主要技術:効率的なプルーニング(剪定)

もう一つの主要な非効率性は、3D-GSモデルが多くの冗長なGaussianを含む、つまり「過剰にパラメータ化されている」ことでした。モデル内のGaussianの数を減らせば、当然レンダリング速度は向上しますが、画質を維持しながら行うのは難しい課題です。

Speedy-Splatは、既存のプルーニング手法「PUP 3D-GS」をベースにしつつ、その課題を解決する「効率的なプルーニングスコア」と、2段階のプルーニング戦略を提案しています。

効率的なプルーニングスコア

PUP 3D-GSは、Gaussianの重要度を計算するために大量のメモリと複雑な勾配計算を必要としていました。Speedy-Splatは、この課題を解決するために、2D投影されたGaussianのピクセル値に対する勾配の二乗を利用する、新しい効率的なプルーニングスコアを提案しています。これにより、メモリ要件を36分の1に削減し、トレーニング中にリアルタイムで適用できるようになりました。

Soft Pruning:学習中のGaussians削減

「Soft Pruning」は、3D-GSのトレーニングパイプラインにおける「densification」というステージ中に適用されます。このステージではGaussianが複製・分割されるため、Speedy-Splatは不透明度(opacity)のリセット直前に、Gaussianの80%という高い比率で削減を行います。これにより、トレーニングの初期段階からモデルの軽量化を図ります。

Hard Pruning:学習後の最終調整

「Hard Pruning」は、densificationステージが完了した後に適用されます。トレーニングの最終段階で、モデルをさらに「洗練」させる目的で、定期的にGaussianの30%を削減します。これらのプルーニング戦略により、モデル全体のGaussianの数を平均で10.6倍削減することに成功しました。

Speedy-Splatの総合的な性能

SnugBoxとAccuTileによる精密なタイル交差計算、そしてSoft PruningとHard Pruningによる効率的なGaussian削減。これらすべての技術を組み合わせたSpeedy-Splatは、圧倒的な性能向上を実現しました。

平均でレンダリング速度が6.71倍に向上し、モデルサイズは10.6倍も小さくなりました。さらに、トレーニング時間も1.47倍短縮されるという、素晴らしい結果です。

以下の比較画像をご覧ください。

論文「Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives」から引用

まとめ

Speedy-Splatは、3D Gaussian Splattingのレンダリングパイプラインにおける2つの主要な非効率性(Gaussianの広がり過大評価と過剰なGaussian数)を効果的に解決しました。

SnugBoxとAccuTileによる「精密なタイル交差計算」と、Soft PruningおよびHard Pruningによる「効率的なプルーニング」を組み合わせることで、リアルタイムレンダリングの速度、モデルサイズ、トレーニング時間といった重要な指標を大幅に改善しています。

これにより、3D-GSの適用範囲をさらに広げ、リソースが限られたデバイスでの利用を可能にする画期的な進歩と言えるでしょう。