ある日TwitterもといXを眺めていたところ突然こんなものが流れてきました。
なんかよくわからないけどすごい!画像を撮るだけで3Dが作れちゃうなんて! と思ったのです。メタバースが来る来る言われてても全然来ないですがこのぐらい簡単に?(※画像を撮るだけで)作れちゃうなんて、未来が来るのか?と思ったのです。 そもそも3D界隈に詳しくないので、早速これが何なのかいろいろ調べて触ってみました。
目次
①今日のコンセプトとか前情報とか
①-01. 3D Gaussian Splattingとか3D系のこと
記事を見てみた感じ、こちらの技術は3D Gaussian Splattingというものらしいぞと、、、 詳しくないので詳細は省きますが、今3Dモデルの生成をするとなると以下が有名?なようです。
- NeRF
- 3D Gaussian Splatting
やはりパッと調べた情報になってしまいますが、どうもこれらはCUDAとか大きなメモリ容量があるグラフィックボードなどで3Dデータを作り出すようです。 また、どちらもcolmapというソフトで撮影時のカメラの画像を解析?することでどの部分に該当する撮影データであるのかを反映していくようです。最初はこのcolmapというのが3Dモデルを生成しているのかと思っていました。 一旦やり方などを調べてみるかということでこちらのページに辿り着きました。 書かれている情報としてはWindowsでの実行方法と環境構築についてです。 ただ、残念ながらトレーニングにVRAM24GBもの容量が必要ということで私の環境で実行するのは難しそうです。。。 個人向けのゲーム用グラフィックボードですとRTX4090といった最上位グラフィックボードでようやくその容量です。お値段なんと24万円(一番安いので)。そうそう買えるものではありません。。。 大容量のVRAMなんてそんなどこにでもあるわけ無いやろ、、、 ・・・・・・ ・・・・ ・・
あったわ。 過去記事で言ったようにJetson AGX Orinは32GBのVRAM(共用メモリですが)も持っており、NVIDIA製ということもあってCUDAコアも持っています。完璧にハマったわ。 そんなふうに思っていた時期が私にもありました。。。
①-02. 今日のコンセプト
NeRFも3D Gaussian Splattingも、3Dの学習データを作り出すのはcolmapというソフトを使うようです。 Jetsonにcolmapをインストールすることを目標にします。 正直3Dデータの生成まですぐ行けると思ってましたが苦戦に次ぐ苦戦だったので一旦はね、、、
②インストールの手順
正解の手順を書いていきます。失敗した箇所はページ下部にまとめておき、リンクを貼っていくようにしたいと思います。
②-01. データのダウンロード
colmapを、別の機種ですがJetson上で動作させているGitが見つかったのでそちらをベースに進めました。 が、そのまま進めようとすると失敗してしまいます。 ③-01. colmapの公式ドキュメントを信じたらインストールできなかった いろいろインストールしたら「ceres-solver」をインストール、次いでcolmapのインストールを進めます。 ですが、まず手始めにcolmapのインストール用データをダウンロードします。 こちらのページにアクセスし、以下のデータを落とします。
ページの下部までスクロールし、「colmap_3.7.orig.tar.gz」のデータをダウンロードし解凍します。解凍後のデータは「Home>3D」に置きました。 ※後撮りなのでceres-solverがいますが、このあとインストールするので気にしないでください。。。 ※colmap-devのフォルダはversion3.6でやって動かなかったやつです、気にしないでください。
②-02. apt-getでインストール
必要となるものをインストールしていきます。
sudo apt-get install
cmake
build-essential
libboost-all-dev
libeigen3-dev
libsuitesparse-dev
libfreeimage-dev
libgoogle-glog-dev
libgflags-dev
libglew-dev
qtbase5-dev
libqt5opengl5-dev
②-03. ceres-solverをインストール
必要となるものをインストールしていきます。 ceres-solverはcolmap-devと同じディレクトリに置くことにしました。 そしていざインストール。
sudo apt-get install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
mkdir build
cd build
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make
sudo make install
※実はここ、なにか失敗して対策をしたのは覚えているのですが、日を跨いでしまったためやったことを忘れてしまいました。。。
②-04. colmapをコンパイル
そしていよいよcolmapです。 ここでは2点失敗談があります。 ③-02. colmapをCMakeできない ③-03. colmapをmakeできない というわけで先に「Qt5」をインストールします。
sudo apt install -y qt5-default
そしてCMakeList.txtを修正します。 CMakeList.txtの中に「set(CMAKE_CXX_STANDARD 14)」を追加します。
nano ../CMakeLists.txt
その後、以下を実行しました。
cd ~/3d/colmap-dev
mkdir build
cd build
cmake ..
make
sudo make install
Run COLMAP:
colmap -h
colmap gui
make実行後はけっこう時間がかかりました。 「sudo make install」実行後、「colmap gui」を実行したところちゃんと動いてくれました!
③失敗したところ
③-01. colmapの公式ドキュメントを信じたらインストールできなかった
colmapの公式ドキュメントをみてLinuxのインストール手順を発見。これでできるじゃんと思ったのですが、CMakeがうまく通らず断念。。。 いろいろ探した結果、colmapの公式っぽいGitを発見。その中にLinuxのダウンロードの記述がありました。
開いた先のページでversion3.7の記載が!
Ubuntu20.04と記載されているため、version3.6を落としたくなると思いますがNGです。エラーが出て進まなくなります。。。
そして赤いボタンを押した先で関連パッケージごとインストールできるデータを見つけたのです。。。
③-02. colmapをCMakeできない
CMakeを実行したところ、以下のようなエラーが出てしまいました。内容を見た感じ「Qt5」が見つからないのかな?と思いググりました。
そして見つけたのがこちらのページでインストール方法があったため、参考にさせて頂きインストールを行ってから再度CMakeを実行すると今度はちゃんと通りました。
③-03. colmapをmakeできない
今度はCMakeが終わったあとにmakeを実行したら結構な時間がかかったあとにエラーが出て止まってしまいました。。。
エラー内容でググったらこちらのページに答えがありました。
CMakeLists.txtを編集します。中に「set(CMAKE_CXX_STANDARD 14)」を追加するだけです。
nano ../CMakeLists.txt
これでmakeがちゃんと通るようになります。
③-04. colmap ver3.6ではエラーが発生する
次の記事に書くつもりで3D Gaussian Splattingのデータを作成しようとしたところエラーが発生、、、 バージョンを3.7に変更する羽目に、、、 ubuntu22.04用のような表記になっていましたが、AGX orinの20.04環境でも動いてくれてます。
⑤まとめ
colmap単体で動作させ、ちゃんと動いてくれることは確認できました。 ubuntuでも動きそうなことをGitにも書いてくれていたので諦めずにすみました。何回か心折れそうになりましたが、日をまたぐとすんなりできちゃうことが間々あるので不思議なものです。 インストール作業にだいぶ時間をかけてしまい、3Dデータの生成に使う時間が無くなってしまいました。。 次回に続く~
コメント