[CVPR2025] Feat2GS: Probing Visual Foundation Models with Gaussian Splatting
See the codeYue Chen, Xingyu Chen, Anpei Chen, Gerard Pons-Moll, Yuliang Xiu
https://github.com/user-attachments/assets/07ebb8e1-6001-47bf-bf74-984b0032cc17
git clone https://github.com/fanegg/Feat2GS.git
cd Feat2GS/submodules/mast3r/
mkdir -p checkpoints/
wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth -P checkpoints/
wget https://download.europe.naverlabs.com/ComputerVision/MASt3R/MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric.pth -P checkpoints/
cd ../../
conda create -n feat2gs python=3.11 cmake=3.14.0
conda activate feat2gs
pip install "torch==2.5.1" "torchvision==0.20.1" "numpy<2" --index-url https://download.pytorch.org/whl/cu121 # use the correct version of cuda for your system
cd Feat2GS/
pip install -r requirements.txt
pip install submodules/simple-knn
# DUST3R relies on RoPE positional embeddings for which you can compile some cuda kernels for faster runtime.
cd submodules/mast3r/dust3r/croco/models/curope/
python setup.py build_ext --inplace
cd ../../../../../../
cd <data_root>/Feat2GS/
If you want to build custom datasets, please follow and edit:
build_dataset/0_create_json.py ## create dataset_split.json to split train/test set build_dataset/1_create_feat2gs_dataset.py ## use dataset_split.json to create dataset
| Step | Description (link to command) |
|---|---|
| (1) | DUSt3R initialization & Feature extraction |
| (2) | Readout 3DGS from features & Jointly optimize pose |
| (3) | Test pose initialization |
| (4) | Render test view for evaluation |
| (5) | Metric |
| (Optional) | Render video with generated trajectory |
# Run evaluation for all datasets, all VFM features, all probing modes
bash scripts/run_feat2gs_eval_parallel.sh
# (Example) Run evaluation for a single scene, DINO feature, Geometry mode
bash scripts/run_feat2gs_eval.sh
[!NOTE] To run experiments in parallel, we added a GPU lock feature to ensure only one evaluation experiment runs per GPU. Once an experiment finishes, the GPU is automatically unlocked. If interrupted by
Ctrl+C, the GPU won’t be unlocked automatically. To fix this, manually delete the.lockfiles in yourLOCK_DIR. To disable this feature, comment out these lines in the script: L4-L5, L9-L22, L223-L233, L330-L331.
| Config | Operation |
|---|---|
| GPU | Edit in <AVAILABLE_GPUS> |
| Dataset | Edit in <SCENES[$Dataset]> |
| Scene | Edit in <SCENES_$Dataset> |
| Visual Foundation Model | Edit in <FEATURES> |
| Probing Mode | Edit in <MODELS> |
| Inference-only Mode | Comment out STEP (3)(4)(5) in execute_command |
# Evaluate Visual Foundation Models on DTU dataset
bash scripts/run_feat2gs_eval_dtu_parallel.sh
# Run InstantSplat for evaluation
bash scripts/run_instantsplat_eval_parallel.sh
# If render depth/normal, set RENDER_DEPTH_NORMAL=true
# Set type of generated trjectory by editing <TRAJ_SCENES>
bash scripts/run_video_render.sh
# Render video on DTU dataset
bash scripts/run_video_render_dtu.sh
gradio demo.py
This work is built on many amazing research works and open-source projects, thanks a lot to all the authors for sharing!
If you find our work useful in your research, please consider giving a star :star: and citing the following paper :pencil:.
@inproceedings{chen2025feat2gs,
title={Feat2gs: Probing visual foundation models with gaussian splatting},
author={Chen, Yue and Chen, Xingyu and Chen, Anpei and Pons-Moll, Gerard and Xiu, Yuliang},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={6348--6361},
year={2025}
}
For feedback, questions, or press inquiries please contact Yue Chen and Xingyu Chen.
22 commits
1 commits
Python
96.0%
Shell
2.6%
[CVPR2025] Feat2GS: Probing Visual Foundation Models with Gaussian Splatting
See the codeYue Chen, Xingyu Chen, Anpei Chen, Gerard Pons-Moll, Yuliang Xiu
https://github.com/user-attachments/assets/07ebb8e1-6001-47bf-bf74-984b0032cc17
git clone https://github.com/fanegg/Feat2GS.git
cd Feat2GS/submodules/mast3r/
mkdir -p checkpoints/
wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth -P checkpoints/
wget https://download.europe.naverlabs.com/ComputerVision/MASt3R/MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric.pth -P checkpoints/
cd ../../
conda create -n feat2gs python=3.11 cmake=3.14.0
conda activate feat2gs
pip install "torch==2.5.1" "torchvision==0.20.1" "numpy<2" --index-url https://download.pytorch.org/whl/cu121 # use the correct version of cuda for your system
cd Feat2GS/
pip install -r requirements.txt
pip install submodules/simple-knn
# DUST3R relies on RoPE positional embeddings for which you can compile some cuda kernels for faster runtime.
cd submodules/mast3r/dust3r/croco/models/curope/
python setup.py build_ext --inplace
cd ../../../../../../
cd <data_root>/Feat2GS/
If you want to build custom datasets, please follow and edit:
build_dataset/0_create_json.py ## create dataset_split.json to split train/test set build_dataset/1_create_feat2gs_dataset.py ## use dataset_split.json to create dataset
| Step | Description (link to command) |
|---|---|
| (1) | DUSt3R initialization & Feature extraction |
| (2) | Readout 3DGS from features & Jointly optimize pose |
| (3) | Test pose initialization |
| (4) | Render test view for evaluation |
| (5) | Metric |
| (Optional) | Render video with generated trajectory |
# Run evaluation for all datasets, all VFM features, all probing modes
bash scripts/run_feat2gs_eval_parallel.sh
# (Example) Run evaluation for a single scene, DINO feature, Geometry mode
bash scripts/run_feat2gs_eval.sh
[!NOTE] To run experiments in parallel, we added a GPU lock feature to ensure only one evaluation experiment runs per GPU. Once an experiment finishes, the GPU is automatically unlocked. If interrupted by
Ctrl+C, the GPU won’t be unlocked automatically. To fix this, manually delete the.lockfiles in yourLOCK_DIR. To disable this feature, comment out these lines in the script: L4-L5, L9-L22, L223-L233, L330-L331.
| Config | Operation |
|---|---|
| GPU | Edit in <AVAILABLE_GPUS> |
| Dataset | Edit in <SCENES[$Dataset]> |
| Scene | Edit in <SCENES_$Dataset> |
| Visual Foundation Model | Edit in <FEATURES> |
| Probing Mode | Edit in <MODELS> |
| Inference-only Mode | Comment out STEP (3)(4)(5) in execute_command |
# Evaluate Visual Foundation Models on DTU dataset
bash scripts/run_feat2gs_eval_dtu_parallel.sh
# Run InstantSplat for evaluation
bash scripts/run_instantsplat_eval_parallel.sh
# If render depth/normal, set RENDER_DEPTH_NORMAL=true
# Set type of generated trjectory by editing <TRAJ_SCENES>
bash scripts/run_video_render.sh
# Render video on DTU dataset
bash scripts/run_video_render_dtu.sh
gradio demo.py
This work is built on many amazing research works and open-source projects, thanks a lot to all the authors for sharing!
If you find our work useful in your research, please consider giving a star :star: and citing the following paper :pencil:.
@inproceedings{chen2025feat2gs,
title={Feat2gs: Probing visual foundation models with gaussian splatting},
author={Chen, Yue and Chen, Xingyu and Chen, Anpei and Pons-Moll, Gerard and Xiu, Yuliang},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={6348--6361},
year={2025}
}
For feedback, questions, or press inquiries please contact Yue Chen and Xingyu Chen.
22 commits
1 commits
Python
96.0%
Shell
2.6%