前回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上でも見れればよし また、今回は以下のページを参考にさせて頂きました。
②構築開始
まずはちゃんと公式の言うことを確認しようということで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:学習用データの補正後の画像が出力されるフォルダ
実行方法は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枚撮影した画像で生成しましたが、次は動画で撮影したものを何フレーム化ごとに切り出してくれるソフトも使って見たいと思います。 結構苦労しましたが動いてくれてほんとに良かった!
コメント