Preparation
This is the official implementation of LucidFusion: Generating 3D Gaussians with Arbitrary Unposed Images.
Install
# Xformers is required! please refer to https://github.com/facebookresearch/xformers for details.
# For example, we use torch 2.3.1 + cuda 11.8
conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidia
# [linux only] cuda 11.8 version
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu118
# For 3D Gaussian Splatting, we use the official installation. Please refer to https://github.com/graphdeco-inria/gaussian-splatting for details
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
pip install ./diff-gaussian-rasterization
# Other dependencies
conda env create -f environment.yml
conda activate LucidFusion
Pretrained Weights
Our pre-trained weights will be released soon, please check back! Our current model loads pre-trained diffusion model weights ([Stable Diffusion 2.1] (https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main) in default) for training purposes.
Inference
A shell script is provided with example files. To run, you first need to setup the pretrained weights as follows:
cd LucidFusion
mkdir output/demo
# Download the pretrained weights and name it as best.ckpt
# Place the pretrained weights in LucidFusion/output/demo/best.ckpt
# The result will be saved in the LucidFusion/output/demo/<obj name>/
bash scripts/demo.sh
More example files will be released soon
You can also try your own example! To do that:
First obtain images and place them in the examples folder
LucidFusion
βββ examples/
| βββ "your obj name"/
| | βββ "image_01.png"
| | βββ "image_02.png"
| | βββ ...
Then you need to run preprocess.py to extract recentered image and its mask:
# Run the following will create two folders (images, masks) in "your obj name" folder.
# You can check to see if the extract mask is corrected.
python preprocess.py "examples/"you obj name" --outdir examples/"your obj name"
# Modify demo.sh to DEMO='examples/"you obj name" ' then run the file
bash scripts/demo.sh