pointdit README

The project's README from github.com/google-research/pointdit. As one markdown file: README.md.

PointDiT: Pixel-Space Diffusion for Monocular Geometry Estimation

Haofei Xu1,2,3 · Rundi Wu1 · Philipp Henzler1 · Nikolai Kalischek1 · Michael Oechsle1
Fabian Manhardt1 · Marc Pollefeys2,4 · Andreas Geiger3,5 · Federico Tombari1,6 · Michael Niemeyer1

1Google   2ETH Zurich   3University of Tübingen, Tübingen AI Center   4Microsoft   5KE:SAI   6TUM

ICML 2026

Paper | Project Page | Models

PointDiT teaser

PointDiT is a minimalist pixel-space Diffusion Transformer for monocular geometry estimation. It is a plain ViT that denoises raw 3D point map patches directly, conditioned on image tokens from a frozen pre-trained DINOv3: no point map tokenizer, no latent diffusion, no hybrid architecture, and no intricate loss formulation.

Installation

This codebase is developed with Python 3.12, PyTorch 2.7.0, and CUDA 12.8.

We recommend setting up a virtual environment (e.g., conda or venv) before installation:

# conda
conda create -y -n pointdit python=3.12
conda activate pointdit

# or venv
# python -m venv /path/to/venv/pointdit
# source /path/to/venv/pointdit/bin/activate

# torch 2.7.0, cuda 12.8
pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128

pip install -r requirements.txt

# DINOv3 encoder code (not vendored; built with torch.hub from a local checkout)
git clone https://github.com/facebookresearch/dinov3.git third_party/dinov3

All commands are run from the repository root, and the launch scripts in scripts/.

The DINOv3 weights are gated and cannot be redistributed, so they are not part of the released checkpoints. Request access on the official DINOv3 repository and place the weights under pretrained/dinov3/ with their exact upstream filenames, or point DINOV3_WEIGHTS_DIR at the directory holding them. They are needed for evaluation and the demo as well as for training; see MODELS.md for the file list.

Model Zoo

Pre-trained models are available in the Model Zoo, at 256×256 and 512×512 for each of PointDiT-B / L / H. All weights are hosted on Hugging Face.

Download the weights and place (or symlink) them in the pretrained directory:

ln -s YOUR_MODEL_PATH pretrained

The checkpoints ship without the frozen DINOv3 encoder, which is downloaded separately (see Installation).

Demo

Check scripts/demo_l_512.sh for running our pre-trained models on your own images, with no ground truth and no camera intrinsics required. Set IMAGE_DIR at the top of the script and run it:

bash scripts/demo_l_512.sh

Any .jpg/.png files work, and nested folders are fine, since the loader globs recursively. Results are written to generation/.

Dataset Preparation

See DATASETS.md for detailed instructions on preparing the 12 training datasets and the 7 zero-shot evaluation datasets. We have provided the download link for the 7 evaluation datasets in DATASETS.md.

Symlink the prepared datasets to the datasets directory:

ln -s YOUR_DATASET_PATH datasets

Point clouds are never stored on disk: the training loader reads (RGB, depth, intrinsics) and back-projects on the fly.

Evaluation

Evaluation scripts are also provided in scripts/ for reproducing the results in our paper:

bash scripts/eval_l_512.sh

Swap l for b or h, and 512 for 256. Each script's header comment lists the numbers it should reproduce.

Training

PointDiT is trained in two stages: (1) 256×256 pre-training on SceneNet-RGBD and (2) 512×512 fine-tuning on the 11-dataset mixture.

bash scripts/train_stage1_256_b.sh
bash scripts/train_stage2_512_b.sh

The training scripts in scripts/ contain the exact commands and hyperparameters used for the experiments in our paper. Please refer to them for detailed configurations. Before training, you need to download the DINOv3 weights (see Installation) and prepare the datasets per DATASETS.md.

License

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This codebase is released under the Apache License 2.0 (see the LICENSE file at the root of the repository). It also contains code derived from other open-source projects, which remains under its original licenses; see THIRD_PARTY_NOTICES for the full list and notices.

Citation

If you find this work useful, please consider citing:

@inproceedings{xu2026pointdit,
  title={PointDiT: Pixel-Space Diffusion for Monocular Geometry Estimation},
  author={Xu, Haofei and Wu, Rundi and Henzler, Philipp and Kalischek, Nikolai and Oechsle, Michael and Manhardt, Fabian and Pollefeys, Marc and Geiger, Andreas and Tombari, Federico and Niemeyer, Michael},
  booktitle={ICML},
  year={2026}
}

Acknowledgements

Our codebase builds upon several excellent open-source projects: JiT, DINOv3, MoGe, Depth Pro and utils3d. We thank all the authors for their great work.

pointdit (google-research/pointdit)

Searching Database…

Что это?PointDiT — исследовательский код минималистичного Diffusion Transformer, работающего в пиксельном пространстве: он оценивает 3D-геометрию (карты точек) по одному монокулярному изображению.
Это особая архитектура или гибридная система?Это обычный Vision Transformer, который деноизирует сырые патчи 3D-карт точек прямо в пиксельном пространстве, используя в качестве условия image-токены от замороженного предобученного энкодера DINOv3 — без токенизатора карт точек, без латентной диффузии, без гибридной архитектуры.
Как запустить его на своих изображениях?Задайте IMAGEDIR в начале scripts/demo_l512.sh и запустите его; загрузчик рекурсивно подхватывает файлы .jpg/.png (вложенные папки допустимы), а результаты сохраняются в generation/. Ground truth и внутренние параметры камеры не нужны.
Что нужно установить перед началом?Python 3.12, PyTorch 2.7.0 и CUDA 12.8, плюс закрытые (gated) веса DINOv3, которые нужно отдельно запросить в официальном репозитории DINOv3 и положить в pretrained/dinov3/.
Включают ли выпущенные чекпоинты всё необходимое для запуска модели?Нет — веса энкодера DINOv3 закрыты и не подлежат распространению, поэтому исключены из выпущенных чекпоинтов; их нужно отдельно запросить и вручную положить на место перед оценкой, демо или обучением.
Нужна ли видеокарта с CUDA?Да, код собран под CUDA 12.8 и PyTorch 2.7.0, поэтому требуется видеокарта с поддержкой CUDA.
Какие размеры модели доступны?PointDiT-B, L и H, каждая выпущена в разрешениях 256x256 и 512x512, все веса размещены на Hugging Face.
Как обучается модель?Обучение идёт в два этапа: предобучение на 256x256 на SceneNet-RGBD, затем дообучение на 512x512 на смеси из 11 датасетов.
Хранит ли он облака точек на диске во время обучения?Нет — обучающий загрузчик читает RGB, глубину и внутренние параметры камеры и проецирует их в 3D на лету, так что облака точек никогда не сохраняются на диск.
Size
3.6 MB
Stars
233
Updated
CommitSep 06
Age
2mo
Commits · 90 Days