フォトグラメトリー編-02・3D Gaussian Splattingの環境構築

前回colmapというソフトを動かせるようになりました。今回はそのcolmapを活用して画像から3Dモデルの生成を行う
"3D Gaussian Splatting for Real-Time Radiance Field Rendering"
というソフトを試していきたいと思います。
いくつか参考にさせて頂いたページではWindows環境での実行方法しか記載がなかったため、なんとかJetson AGX Orinで3Dモデルの生成まではできるようにしていきたいと思っています。
Viewer最悪Windowsでもいいよね。見るだけならVRAMそんなにいらないみたいだし。
目次

①今日のコンセプト

3D Gaussian Splatting の3Dモデル生成(トレーニング)をJetson AGX Orin上で行えるようにする。
Viewerは最悪Windows上でも見れればよし

また、今回は以下のページを参考にさせて頂きました。

3D Gaussian Splattingの使い方 (Windows環境構築)
3D Gaussian SplattingのWindows環境構築手順を解説
3D Gaussian Splattingのインストールと使い方
3D Gaussian Splatting for Real-Time Radiance Field Rendering (Gitのページ)

②構築開始

まずはちゃんと公式の言うことを確認しようということでGitのREADMEを読んでみました。

Software Requirements
・Conda (recommended for easy setup)
・C++ Compiler for PyTorch extensions (we used Visual Studio 2019 for Windows)
・CUDA SDK 11 for PyTorch extensions, install after Visual Studio (we used 11.8, known issues with 11.6)
・C++ Compiler and CUDA SDK must be compatible

これらのソフトウェアがいるみたい。勘違いがあると嫌なので日本語のページも見ておきました。
とりあえずAnacondaがいるのは確定の模様。Pythonの仮想環境?ぐらいにしか知らない。。

Anacondaを使った仮想環境の構築は失敗してやめます
結局直接インストールしました。

②-01. Anacondaのインストール(やめるけど)

まずはインストール用のファイルをこちらからダウンロードしてきます。
pipで入れると思ったら別口らしいです。
ダウンロードが終わったらコマンドでDownloadsフォルダに行き、以下を実行します。
bash Anaconda3-2023.07-2-Linux-aarch64.sh

②-02. 仮想環境構築(失敗するけど)

インストールが終わったらディレクトリを移動します。
自分は3Dというフォルダの中にcolmapを入れていたのでその並びに置くことにしました。
「~/3d/gaussian-splatting」
gaussian-splattingフォルダ内に移動すると、environment.ymlというファイルがあります。
これに仮想環境内でインストールされるものが書かれています。

仮想環境を構築

conda env create --file environment.yml

できませんでした。。
torchaudioのあとの数字でバージョンを指定するのですが、軽く調べて数字をいじってもインストールできず、、、
Anacondaやめようと決心しました。
やめる決心をする前にいろいろ調べて、正しいかはわからないのですが、、、
arm64版のパッケージがうまく見つかってないのかなー?と思いました。
jetsonはNVIDIAの出しているJetPack内にarm64かつCUDA対応のファイルが入っているため、conda環境では見つからないっぽい?
※個人の感想であり実際の状況と異なる可能性が高いです

②-03. 直接インストールに切り替える

切り替えていこう。
こちらのページでAnacondaを使わずに環境を構築されている方がいました。これを参考にさせていただきます。

②-04. g++のインストール

C++のコンパイラが必要みたいです。
WindowsだとVisual Studio2019を皆さん使われています。
困ったなと言うことでUbuntuで動くものを探すと「g++」というものがあるようです。
早速入れていきます。
sudo apt install g++

②-05. 3D Gaussian Splattingのインストール

requirements.txtを用意します。
nano requirements.txt
tqdm
submodules/diff-gaussian-rasterization
submodules/simple-knn
参考のサイトだと「plyfile」の記述がありますが、こちらの環境だとインストールが失敗するのでその行を消し、後から個別にインストールを行いました。
pip3 install -r requirements.txt
pip3 install plyfile
このやり方にたどり着くまでもかなりエラーに遭遇しました。。。

③3Dデータの生成

③-01. 学習用データの準備

今回は家にあったタチ◯マを使うことにしました。適当に周囲をグルッと回りながら10枚程度写真を取っていきました。これを使っていきます。
まずはお試しということであっさりめにしておきたいと思います。画像の枚数が増えたりするほどいい感じになっていくようです。
スクロールできます

③-02. 学習用データの補正

この作業からcolmapを呼び出して使っているみたいです。
まずは画像の歪み(魚眼っぽくなっているものなど)を補正する作業を行います。
画像を置いておくフォルダはgaussian-splattingフォルダの並びにします。
さらに中に以下のフォルダを作成します。
・input:生成のもとになる画像を入れるフォルダ
・output:次の3Dモデルの生成工程で出力先となるフォルダ
・images:学習用データの補正後の画像が出力されるフォルダ

imagesフォルダを作成しないとエラーで止まります。
勝手に作ってくれよと思いますがマジで止まります。
これが分からなくて3時間ぐらい無駄にしました。

実行方法はgaussian-splattingフォルダ内にあるconvert.pyに入力ファイルを指定してあげて呼び出す感じです。
target/inputフォルダにタチコマを入れてあげて準備は完了です。
自分な場合は以下のコマンドで実行しました。
python3 convert.py -s /home/hosol-jetson/3d/target/
ややあって実行完了です。
これはそこまで時間はかかりませんでした。
そして出力された画像がこちらです。
スクロールできます
ぶっちゃけ何が変わったのかよくわからないです。。。

③-03. 3Dモデルの生成

続いて、補正したデータをもとに3Dモデルを生成します。
今度はtrain.pyを実行するのですが、元となるデータと出力先を指定します。
python3 train.py -s /home/hosol-jetson/3d/target -m /home/hosol-jetson/3d/target/output
-s の後に入力用画像のフォルダを、 -m の後に生成したデータを格納するフォルダを指定します。
実行すると以下のような画面になり、進行状況が表示されます。
そんなに掛かると思ってなかったんですが、4時間半もかかるみたいなんですよ。。。
ということでしばらく放置しました。
※windowsからSSHしてwindowsターミナルで実行してたのですが、windowsをスリープにしたらコマンドもキャンセルされてしまい、実行できてませんでした。。。痛恨のミス。。。
Linuxの画面から実行して無事完了!
多分できているはず!!
すぐに確かめたいところですがViewerがまだ入っていない!
完了後のoutputフォルダの中はこんな感じになっていました。

④Viewerの実行

今すぐに生成がちゃんとできているのか確かめたい!
なので今回はWindows上でViewerを動かして見てみます。
GitからWindows用のファイルを落としてきます。
後はコマンドでoutputフォルダを指定して「viewers\bin\SIBR_gaussianViewer_app.exe」を実行するだけです。
./SIBR_gaussianViewer_app.exe -m C:\3dgs\output
すごい!ちゃんと見れて、、、
ちょっとでも動くとガビガビやーーーー!!!!
ある程度動かしたら「P」を押すときれいな位置まで移動してくれます。

そしてまたちょっとでも動かすと、、、

ガビってる、、、
でも動くことがわかっただけでも大きな成果です!

⑤まとめ

画像の枚数を増やして精度を高めてみたいと思います。
また、今回は周囲から10枚撮影した画像で生成しましたが、次は動画で撮影したものを何フレーム化ごとに切り出してくれるソフトも使って見たいと思います。
結構苦労しましたが動いてくれてほんとに良かった!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIにボクの分も働いてもらいたい

コメント

コメントする

目次