3D Gaussian Splattingを使ってみる その1(環境構築、WSL2 Ubuntu 20.04)

はじめに

 今回は3D Gaussian Splattingを利用するために、環境構築を行いました。

 スマートフォンのアプリとして提供されているScaniverseで3Dスキャンをして3Dモデルを作成していたのですが、その技術として3D Gaussian Splattingが利用されています。

▼NVIDIAのPhysical AIの発表でも3D Gaussian Splattingが取り上げられていました。

 私が普段使っているiPhone 8ではScaniverseを利用できないので、PCで実行したいなと思っています。

▼以前の記事はこちら

Unreal Engine 5を使ってみる その10(Scaniverse、点群データの取り込み)

はじめに  今回はiPhone 15 ProでScaniverseというアプリを使って3Dスキャンしたデータを、Unreal Engine 5(UE5)に取り込んでみました。  データを取り込むにあたって…

Unreal Engine 5を使ってみる その15(Scaniverseのデータ取り込み2回目、SuperSplat)

はじめに  今回はScaniverseで3DスキャンしたデータのUnreal Engine 5 (UE5)への取り込みについて、再び試してみました。  以前の取り込み方だとScaniverseでの見た目と…

環境を構築する

CUDAのバージョンの変更

 環境を構築するにあたってCUDAなどの依存があり、今回はWSL2のUbuntu環境で色々試して構築しました。

▼WSL2のUbuntu 20.04は以下の記事でダウンロードしています。

WSL2を使ってみる その3(Ubuntu 20.04、ROS Noetic、Open Manipulator)

はじめに  今回はWSL2のUbuntu 20.04に、ROSをインストールしてみました。  前回構築したのはWSL2のUbuntu 22.04です。WSL2で複数のバージョンのUbuntu環境をインストー…

 READMEにはCUDA 11.8で確認しているとのことだったので、CUDA 11.8に切り替えます。

▼GitHubのリポジトリはこちら

https://github.com/graphdeco-inria/gaussian-splatting

▼予めnvidia-smiで確認すると、CUDA 12.6がインストールされていました。

 nvidia-smiで確認できるのはWindows側のCUDAのバージョンで、WSL2環境のCUDAのバージョンはnvcc --versionで確認できるようです。

▼異なるバージョンが入っていたりします。

 CUDAのupdate-alternativesを利用する方法が良さそうだったのですが、今回は試していません。CUDAのバージョン切り替えは今後必要になりそうなので、別の機会にしっかり検証したいなと思っています。

▼以下の記事が参考になりそうでした。

update-alternativesの使い方 - gggggraziegrazie

update-alternativesとは Linuxを使う時、シンボリックリンクを使う時があります。例えばgccでは、生成したバイナリを動かす環境に応じて、バージョンを使い分ける必要が…

https://note.com/kmykpurin/n/n2bf91dc63f16

 ChatGPTに相談しながらコマンドを実行していきました。

 まず元々入っていたものを削除します。

sudo apt-get --purge remove "cuda*"
sudo apt-get --purge remove "nvidia*"
sudo apt autoremove -y

 Ubuntu 20.04、CUDA 11.8用のパッケージをインストールしていきます。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

 最後に.bashrcに環境変数を追加して、ターミナルが起動したときに反映されるようにします。

echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

 nvcc -Vまたはnvcc --versionでCUDAのバージョンを確認しました。

▼11.8になっていました。

Minicondaのインストール

 condaコマンドを実行するようだったので、今回はMinicondaをインストールしました。

▼インストール方法は以下のページに書かれています。

https://www.anaconda.com/docs/getting-started/miniconda/install#macos-linux-installation

 Linuxのx86用のコマンドでインストールを行いました。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ~/Miniconda3-latest-Linux-x86_64.sh
source .bashrc

▼condaの環境が有効化されています。

Gaussian Splattingのインストール

 Gaussian Splattingのリポジトリをダウンロードし、conda環境を作成して有効化します。

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
cd gaussian-splatting
conda env create --file environment.yml
conda activate gaussian_splatting

▼再度ターミナルを開いたときは、最後のコマンドを実行するとアクティベートされます。

サンプルを実行する

 用意されていたCOLMAPを利用して、3Dモデルの再構築を試してみました。

 READMEの最初にリンクが載せられている、T&T+DB COLMAP (650MB)をダウンロードしました。

▼画像の上のところにリンクがあります。

https://github.com/graphdeco-inria/gaussian-splatting

 実行ディレクトリにダウンロードしたフォルダを追加して、コマンドを実行しました。

python train.py -s tandt_db/tandt/train/

▼処理が始まりました。7000と30000があるようです。

 処理が終了後、outputフォルダに結果が保存されていました。

▼plyファイルが3Dモデルです。

 ブラウザで3D Gaussian Splatting形式のplyファイルを編集できる、SuperSplatを利用して確認しました。

▼SuperSplatはこちら

https://superspl.at/editor

▼iteration_7000の結果はこちら

▼iteration_30000の結果はこちら

 見た感じでは、7000と30000でどこが違うのか分からないような感じでした。それよりも周りの靄が目立つという印象です。

最後に

 3D Gaussian SplattingをPCで実行できるようになったので、Scaniverseでスキャンしたときよりも広い環境に対して3Dモデルを再構築できるのか気になるところです。Scaniverseは注視していないところのトリミングが楽で手軽だったのですが、PCでもこのあたりを改善しているツールはあるのでしょうか。

 サンプルは実行できたので、画像や動画に対する3Dモデルの再構築を試そうと思っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です