Official implementation of "Lotus: Diffusion-based Visual Foundation Model for High-quality Dense Prediction"
See the codeJing He1✱,
Haodong Li1✱,
Wei Yin2,
Yixun Liang1,
Leheng Li1,
Kaiqiang Zhou3,
Hongbo Zhang3,
Bingbing Liu3,
Ying-Cong Chen1,4✉
🔥🔥🔥 Please also check our latest Lotus-2! Useful links: Project Page, Github Repo. 🔥🔥🔥

We present Lotus, a diffusion-based visual foundation model for dense geometry prediction. With minimal training data, Lotus achieves SoTA performance in two key geometry perception tasks, i.e., zero-shot depth and normal estimation. "Avg. Rank" indicates the average ranking across all metrics, where lower values are better. Bar length represents the amount of training data used.
This installation was tested on: Ubuntu 20.04 LTS, Python 3.10, CUDA 12.3, NVIDIA A800-SXM4-80GB.
git clone https://github.com/EnVision-Research/Lotus.git
cd Lotus
conda create -n lotus python=3.10 -y
conda activate lotus
pip install -r requirements.txt
python app.py depth
python app.py normal
Initialize your Accelerate environment with:
accelerate config --config_file=$PATH_TO_ACCELERATE_CONFIG_FILE
Please make sure you have installed the accelerate package. We have tested our training scripts with the accelerate version 0.29.3.
Prepare your training data:
$PATH_TO_RAW_HYPERSIM_DATA directory for data downloading.cd $PATH_TO_RAW_HYPERSIM_DATA
# Download the tone-mapped images
python ./download.py --contains scene_cam_ --contains final_preview --contains tonemap.jpg --silent
# Download the depth maps
python ./download.py --contains scene_cam_ --contains geometry_hdf5 --contains depth_meters --silent
# Download the normal maps
python ./download.py --contains scene_cam_ --contains geometry_hdf5 --contains normal --silent
$PATH_TO_RAW_HYPERSIM_DATA directory.bash utils/process_hypersim.sh.$PATH_TO_VKITTI_DATA directory and unzip them.SceneX/Y/frames/rgb/Camera_Z/rgb_%05d.jpg
SceneX/Y/frames/depth/Camera_Z/depth_%05d.png
SceneX/Y/colors.txt
SceneX/Y/extrinsic.txt
SceneX/Y/intrinsic.txt
SceneX/Y/info.txt
SceneX/Y/bbox.txt
SceneX/Y/pose.txt
where $X \in \{01, 02, 06, 18, 20\}$ and represent one of 5 different locations.
$Y \in \{\texttt{15-deg-left}, \texttt{15-deg-right}, \texttt{30-deg-left}, \texttt{30-deg-right}, \texttt{clone}, \texttt{fog}, \texttt{morning}, \texttt{overcast}, \texttt{rain}, \texttt{sunset}\}$ and represent the different variations.
$Z \in [0, 1]$ and represent the left or right camera.
Note that the indexes always start from 0.bash utils/depth2normal.sh.bash train_scripts/train_lotus_g_{$TASK}.sh for training Lotus Generative models;bash train_scripts/train_lotus_d_{$TASK}.sh for training Lotus Discriminative models.assets/in-the-wild_example (where we have prepared several examples).bash infer.sh.cd datasets/eval/depth/
wget -r -np -nH --cut-dirs=4 -R "index.html*" -P . https://share.phys.ethz.ch/~pf/bingkedata/marigold/evaluation_dataset/
dsine_eval.zip) into the path datasets/eval/normal/ and unzip it (referred to DSINE).Run the evaluation command: bash eval_scripts/eval-[task]-[mode].sh, where [task] represents the task name (depth or normal) and [mode] refers to the mode name (g or d).
(Optional) To reproduce the results presented in our paper, you can set the --rng_state_path option in the evaluation command. The RNG state files are available at ./rng_states/.
Below are the released models and their corresponding configurations:
| CHECKPOINT_DIR | TASK_NAME | MODE |
|---|---|---|
jingheya/lotus-depth-g-v1-0 | depth | generation |
jingheya/lotus-depth-d-v1-0 | depth | regression |
jingheya/lotus-depth-g-v2-1-disparity | depth (disparity) | generation |
jingheya/lotus-depth-d-v2-0-disparity | depth (disparity) | regression |
jingheya/lotus-normal-g-v1-1 | normal | generation |
jingheya/lotus-normal-d-v1-1 | normal | regression |
If you find our work useful in your research, please consider citing our paper:
@article{he2024lotus,
title={Lotus: Diffusion-based Visual Foundation Model for High-quality Dense Prediction},
author={He, Jing and Li, Haodong and Yin, Wei and Liang, Yixun and Li, Leheng and Zhou, Kaiqiang and Liu, Hongbo and Liu, Bingbing and Chen, Ying-Cong},
journal={arXiv preprint arXiv:2409.18124},
year={2024}
}
380 followers · starred Oct 2024
121 followers · starred Oct 2024
121 followers · starred Jan 2025
192 followers · starred Jul 2026
Official implementation of "Lotus: Diffusion-based Visual Foundation Model for High-quality Dense Prediction"
See the codeJing He1✱,
Haodong Li1✱,
Wei Yin2,
Yixun Liang1,
Leheng Li1,
Kaiqiang Zhou3,
Hongbo Zhang3,
Bingbing Liu3,
Ying-Cong Chen1,4✉
🔥🔥🔥 Please also check our latest Lotus-2! Useful links: Project Page, Github Repo. 🔥🔥🔥

We present Lotus, a diffusion-based visual foundation model for dense geometry prediction. With minimal training data, Lotus achieves SoTA performance in two key geometry perception tasks, i.e., zero-shot depth and normal estimation. "Avg. Rank" indicates the average ranking across all metrics, where lower values are better. Bar length represents the amount of training data used.
This installation was tested on: Ubuntu 20.04 LTS, Python 3.10, CUDA 12.3, NVIDIA A800-SXM4-80GB.
git clone https://github.com/EnVision-Research/Lotus.git
cd Lotus
conda create -n lotus python=3.10 -y
conda activate lotus
pip install -r requirements.txt
python app.py depth
python app.py normal
Initialize your Accelerate environment with:
accelerate config --config_file=$PATH_TO_ACCELERATE_CONFIG_FILE
Please make sure you have installed the accelerate package. We have tested our training scripts with the accelerate version 0.29.3.
Prepare your training data:
$PATH_TO_RAW_HYPERSIM_DATA directory for data downloading.cd $PATH_TO_RAW_HYPERSIM_DATA
# Download the tone-mapped images
python ./download.py --contains scene_cam_ --contains final_preview --contains tonemap.jpg --silent
# Download the depth maps
python ./download.py --contains scene_cam_ --contains geometry_hdf5 --contains depth_meters --silent
# Download the normal maps
python ./download.py --contains scene_cam_ --contains geometry_hdf5 --contains normal --silent
$PATH_TO_RAW_HYPERSIM_DATA directory.bash utils/process_hypersim.sh.$PATH_TO_VKITTI_DATA directory and unzip them.SceneX/Y/frames/rgb/Camera_Z/rgb_%05d.jpg
SceneX/Y/frames/depth/Camera_Z/depth_%05d.png
SceneX/Y/colors.txt
SceneX/Y/extrinsic.txt
SceneX/Y/intrinsic.txt
SceneX/Y/info.txt
SceneX/Y/bbox.txt
SceneX/Y/pose.txt
where $X \in \{01, 02, 06, 18, 20\}$ and represent one of 5 different locations.
$Y \in \{\texttt{15-deg-left}, \texttt{15-deg-right}, \texttt{30-deg-left}, \texttt{30-deg-right}, \texttt{clone}, \texttt{fog}, \texttt{morning}, \texttt{overcast}, \texttt{rain}, \texttt{sunset}\}$ and represent the different variations.
$Z \in [0, 1]$ and represent the left or right camera.
Note that the indexes always start from 0.bash utils/depth2normal.sh.bash train_scripts/train_lotus_g_{$TASK}.sh for training Lotus Generative models;bash train_scripts/train_lotus_d_{$TASK}.sh for training Lotus Discriminative models.assets/in-the-wild_example (where we have prepared several examples).bash infer.sh.cd datasets/eval/depth/
wget -r -np -nH --cut-dirs=4 -R "index.html*" -P . https://share.phys.ethz.ch/~pf/bingkedata/marigold/evaluation_dataset/
dsine_eval.zip) into the path datasets/eval/normal/ and unzip it (referred to DSINE).Run the evaluation command: bash eval_scripts/eval-[task]-[mode].sh, where [task] represents the task name (depth or normal) and [mode] refers to the mode name (g or d).
(Optional) To reproduce the results presented in our paper, you can set the --rng_state_path option in the evaluation command. The RNG state files are available at ./rng_states/.
Below are the released models and their corresponding configurations:
| CHECKPOINT_DIR | TASK_NAME | MODE |
|---|---|---|
jingheya/lotus-depth-g-v1-0 | depth | generation |
jingheya/lotus-depth-d-v1-0 | depth | regression |
jingheya/lotus-depth-g-v2-1-disparity | depth (disparity) | generation |
jingheya/lotus-depth-d-v2-0-disparity | depth (disparity) | regression |
jingheya/lotus-normal-g-v1-1 | normal | generation |
jingheya/lotus-normal-d-v1-1 | normal | regression |
If you find our work useful in your research, please consider citing our paper:
@article{he2024lotus,
title={Lotus: Diffusion-based Visual Foundation Model for High-quality Dense Prediction},
author={He, Jing and Li, Haodong and Yin, Wei and Liang, Yixun and Li, Leheng and Zhou, Kaiqiang and Liu, Hongbo and Liu, Bingbing and Chen, Ying-Cong},
journal={arXiv preprint arXiv:2409.18124},
year={2024}
}
380 followers · starred Oct 2024
121 followers · starred Oct 2024
121 followers · starred Jan 2025
192 followers · starred Jul 2026