3D Gaussian Splatting for Real-Time Radiance Field Rendering 논문 리뷰 후 코드 리뷰를 진행하였듯이, Dream Gaussian의 코드에 대한 글을 작성해보면 어떨까 싶어 작성하게 되었다.
Dream Gaussian arxiv: https://arxiv.org/abs/2309.16653:
Github 코드 가이드: https://github.com/dreamgaussian/dreamgaussian
이번 글은 위의 두 사이트를 참조하였다.

Github에 따르면 다음과 같은 환경에서 코드를 진행하였다고 나와있다.
저는 windows11에서 CUDA 12.1과 torch2.1을 사용해서 설치했습니다.
또한 Github에 따르면 GPU 8G RAM으로 충분하다고 되어 있습니다.
저는 8GB RAM을 가진 Rtx 4060을 사용했습니다.
conda create -n dreamgaussian python=3.9
conda activate dreamgaussian
git clone https://github.com/dreamgaussian/dreamgaussian.git
cd dreamgaussian
pip install -r requirements.txt
git clone --recursive https://github.com/ashawkey/diff-gaussian-rasterization
pip install ./diff-gaussian-rasterization
# simple-knn
pip install ./simple-knn
# nvdiffrast
pip install git+https://github.com/NVlabs/nvdiffrast/
# kiuikit
pip install git+https://github.com/ashawkey/kiuikit
# background removal and recentering, save rgba at 256x256
python process.py data/name.jpg
# save at a larger resolution
python process.py data/name.jpg --size 512
# process all jpg images under a dir
python process.py data
# train 500 iters (~1min) and export ckpt & coarse_mesh to logs
python main.py --config configs/image.yaml input=data/name_rgba.png save_path=name
# gui mode (supports visualizing training)
python main.py --config configs/image.yaml input=data/name_rgba.png save_path=name gui=True
# load and visualize a saved ckpt
python main.py --config configs/image.yaml load=logs/name_model.ply gui=True
# auto load coarse_mesh and refine 50 iters (~1min), export fine_mesh to logs
python main2.py --config configs/image.yaml input=data/name_rgba.png save_path=name
# specify coarse mesh path explicity
python main2.py --config configs/image.yaml input=data/name_rgba.png save_path=name mesh=logs/name_mesh.obj
학습 시키는 image를 data폴더에 name.jpg 위치시킵니다.
python process.py data/name.jpg --size 512
python main.py --config configs/image.yaml input=data/name_rgba.png save_path=name
python main2.py --config configs/image.yaml input=data/name_rgba.png save_path=name mesh=logs/name_mesh.obj
실행 결과
Input Image

Result

Input Image

Result

Training한 결과, 모습들이 기괴하게 나왔다..
python main.py --config configs/text.yaml prompt="an icecream" save_path=icecream
python main2.py --config configs/text.yaml prompt="an icecream" save_path=icecream
실행 결과

"an icecream"

"a bicycle with a basket"