はじめに
Gaussian Spattingという技術が3D空間の再現技術として注目を浴びているそうです。実際に以下URLを見て頂ければわかると思いますが、これ、動画から静止画を切り抜きして作られたものです。Street Viewのように3D空間っぽく見せるものがありますが、これは本当に動画から3次元座標を特定し、その上に色を良い感じで保管して3Dにするという代物のようです。NeRFという技術がこの前にあったそうですが、質感が一気に上がったというところとレンダリングのスペックが不要というのが良い点だそうです。
人やモノの3Dモデル作成や3D空間の作成、ホログラム映像など幅広い範囲で応用できそうな気がしています。
専門家ではありませんが、面白そうなので記事を見ながら実装してみました。最初はanaconda(windows)で実装されてる方が多かったのですが、文字コードあたりのエラーがどうしても取れず、面倒になったので、Ubuntuで実装してみました。しかし、その後でviewerをUbuntu上でエラーが出たので、viewerはwindowsで動かしています。騙し騙しで動かしてみました。
環境
- windows 11のWSL
- Ubuntu 22.04.01 LTS
- 12th Gen Intel(R) Core(TM) i7-12700F 2.10 GHz
- Geforce RTX 3060Ti
実装
AWSのubuntuで実装する手順がありますので、これを参考に実装します。私が使ってるのはWSL2です。
Gaussian Spattingに対応したcudaのバージョンで実装しないとエラーになる可能性があります。2023.12.12時点では、version 11.8です。
CUDA 11.8のインストール
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-11-8
$ 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
$ echo export CUDA_PATH="/usr/local/cuda-11.8/" >> ~/.bashrc
$ source ~/.bashrc
COLMAPの依存ライブラリのインストール
$ sudo apt-get -y install git cmake ninja-build build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libeigen3-dev libflann-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgtest-dev libsqlite3-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libceres-dev gcc-10 g++-10 imagemagick
COLMAPのビルドとインストール
$ git clone https://github.com/colmap/colmap.git
$ cd colmap
$ mkdir build
$ cd build
$ export CC=/usr/bin/gcc-10
$ export CXX=/usr/bin/g++-10
$ export CUDAHOSTCXX=/usr/bin/g++-10
$ cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES=86
$ ninja
$ sudo ninja install
Anacondaのインストール
$ wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
$ bash Anaconda3-2023.09-0-Linux-x86_64.sh # Enter, accept -> yes, Enter, auto initialize -> no
$ echo source ~/anaconda3/etc/profile.d/conda.sh >> ~/.bashrc
$ source ~/.bashrc
Gaussian SplattingのPython環境構築
$ git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
$ cd gaussian-splatting
$ conda env create --file environment.yml
ここまででエラーが出なければ環境のインストールは成功しています。
データ作成
動画を撮影します。