Dream Gaussian의 code

류동훈·2025년 2월 1일
0

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에 따르면 다음과 같은 환경에서 코드를 진행하였다고 나와있다.

  • Ubuntu 22 with torch 1.12 & CUDA 11.6 on a V100.
  • Windows 10 with torch 2.1 & CUDA 12.1 on a 3070.

저는 windows11에서 CUDA 12.1torch2.1을 사용해서 설치했습니다.
또한 Github에 따르면 GPU 8G RAM으로 충분하다고 되어 있습니다.
저는 8GB RAM을 가진 Rtx 4060을 사용했습니다.

code 진행

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  

Image-to-3D 실행

Process

# 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

training gaussian stage

# 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

training mesh stage

# 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한 결과, 모습들이 기괴하게 나왔다..

Text to 3D 실행

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"

profile
AI를 좋아하고 공부하는 대학생

0개의 댓글