3D Gaussian Splattingを使ってみる その5(GS2Meshの環境構築、WSL2 Ubuntu 22.04)
はじめに
今回は改めてGS2Meshの環境を構築してみました。
これまでの記事でWSL2のUbuntu 22.04を複数インストールできるようにして、CUDAのバージョンも切り替えできるようにしました。これを踏まえて、GS2Meshを実行するためだけの環境として構築してみます。
他にも3D Gaussian Splatting (3DGS) 系のソフトウェアは同じようなバージョンに対応していたりするので、色々検証したいと思っています。
▼以前の記事はこちら
GS2Meshの環境を構築する
前回3DGSの環境を構築したときはデスクトップPCだったのですが、今回はゲーミングノートPCで、GPUの性能は劣ります。
▼PCは10万円ぐらいで購入したゲーミングノートPCを利用しています。Windows 11の環境です。
▼新しくインストールした、WSL2 Ubuntu 22.04の環境で実行していきます。
▼CUDAのバージョンは、環境変数で11.8に変更済みです。
コマンドはこれまでの記事の内容をもとに実行していきます。まずはMinicondaをインストールします。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ~/Miniconda3-latest-Linux-x86_64.sh
source .bashrc今回はインストール時にInitializationをスキップしたのですが、コマンドでも環境を有効化できました。
▼pyenvのようにminiconda3/bin/activateを実行してみたら、conda環境が有効になりました。

GS2Meshの環境を有効化します。
git clone https://github.com/yanivw12/gs2mesh.git
cd gs2mesh
conda create --name gs2mesh python=3.8
conda activate gs2mesh
conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 cudatoolkit=11.8 colmap -c pytorch -c nvidia -c conda-forge
pip install -r requirements.txt他にも重みに関するものをダウンロードしておきました。
cd ~/gs2mesh/third_party/DLNR
mkdir pretrained
cd pretrained
wget https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network/releases/download/v1.0.0/DLNR_Middlebury.pth
wget https://github.com/David-Zhao-1997/High-frequency-Stereo-Matching-Network/releases/download/v1.0.0/DLNR_SceneFlow.pthcd ~/gs2mesh/third_party/segment-anything-2/checkpoints
wget https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.ptcd ~/gs2mesh/third_party/GroundingDINO
mkdir weights
cd weights
wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth動画ファイルから3Dモデルを生成する
今回もこれまでと同じく、私のハニワの動画ファイルをもとに3Dモデルを生成します。
▼こちらの30秒ほどの動画です。
gs2mesh/data/customフォルダにHaniwaフォルダを作成し、Haniwa.mp4を入れました。
cd ~/gs2mesh
mkdir ./data/custom -p▼WindowsではエクスプローラのLinuxのところから、WSL2環境のフォルダにアクセスできます。

以前の記事と同じく、以下のコマンドを実行してみました。
python run_single.py --colmap_name Haniwa --video_extension mp4 --GS_iterations 7000 --video_interval 6 --TSDF_voxel 4 --TSDF_sdf_trunc 0.08▼メッシュの出力までの処理は、問題なく実行されているようでした。

▼しかし、3DGSの出力ファイルをSuperSplatで確認してみると、処理に失敗しているようでした。


動画ファイルから抽出した画像などを確認すると、明らかに画像が少なくなっていました。
▼imagesフォルダに3枚しかありません。

▼images_rawフォルダには以前と同じく、156枚入っていました。

カメラ位置の推定時などに、不要な画像として省かれたのだと思います。--skip_maskingオプションを追加することで、この問題を回避できました。
最終的には、以下のコマンドで実行することができました。
python run_single.py --colmap_name Haniwa --video_extension mp4 --GS_iterations 7000 --video_interval 6 --skip_masking▼以前と同じ3DGSの出力が得られました。

メッシュ化したモデルも、問題なく出力されていました。
▼Windowsの3Dビューアーで確認できました。

▼MeshLabで取り込んでみたら、色付きで表示されていました。

最後に
これでWSL2のUbuntu環境ごと新しく構築して、実行することができました。今後も環境構築する際に役立てていこうと思っています。
GS2Meshが出力するメッシュモデルの形式はplyファイルで、Unreal Engineなどのゲームエンジンに取り込む際にはobjファイルやfbxファイルの方が都合がいいです。次は色も反映されたモデルのインポートについて試したいと思います。


