Evaluation
April 12, 2026 ยท View on GitHub
Datasets
Please follow MonST3R and Spann3R to download ScanNet, TUM-dynamics, 7scenes and Bonn datasets.
Please download and extract all datasets under data/ (for example, data/scannet, data/kitti).
ScanNet
To prepare the ScanNet dataset, execute:
python eval/datasets_preprocess/long_prepare_scannet.py # Run from repository root; you may need to change dataset paths
TUM-dynamics
To prepare the TUM-dynamics dataset, execute:
python eval/datasets_preprocess/long_prepare_tum.py # Run from repository root; you may need to change dataset paths
Bonn
To prepare the Bonn dataset, execute:
python eval/datasets_preprocess/long_prepare_bonn.py # Run from repository root; you may need to change dataset paths
KITTI
To download and extract KITTI odometry files under data/kitti, execute:
mkdir -p data/kitti # Run from repository root
wget -c https://s3.eu-central-1.amazonaws.com/avg-kitti/data_odometry_color.zip -P data/kitti
wget -c https://s3.eu-central-1.amazonaws.com/avg-kitti/data_odometry_poses.zip -P data/kitti
unzip -o data/kitti/data_odometry_color.zip -d data/kitti # RGB files
unzip -o data/kitti/data_odometry_poses.zip -d data/kitti # Ground truth pose
VBR
Option A: Download pre-processed data from Hugging Face
mkdir -p data # Run from repository root
wget -c https://huggingface.co/datasets/Junyi42/vbr_processed/resolve/main/vbr_processed.tar.gz -O data/vbr_processed.tar.gz
tar -xzf data/vbr_processed.tar.gz -C data
rm -f data/vbr_processed.tar.gz
Option B: Download raw data and preprocess locally
Download the raw VBR dataset from the official VBR devkit and place the sequences under data/vbr/. Then run:
python eval/datasets_preprocess/vbr_preprocess.py # Run from repository root
Long Evaluation Launch
Run single sequence:
# KITTI example
bash eval/demo_run_longeval.sh --cuda 0 --model LoGeR --mode kitti --seq 00 --win 32
# VBR example
bash eval/demo_run_longeval.sh --cuda 0 --model LoGeR_star --mode vbr --seq campus_train1 --win 64
Run all benchmark sequences:
bash eval/run_kitti.sh
bash eval/run_vbr.sh
Long Evaluation Metrics
Compile benchmark tools:
cd eval/long_eval_script
g++ -o vbr_benchmark vbr_benchmark.cpp -I /usr/include/eigen3 -O3 -std=c++17
g++ -o kitti_benchmark kitti_benchmark.cpp -I /usr/include/eigen3 -O3 -std=c++17
Run VBR benchmark:
cd eval/long_eval_script
./vbr_benchmark ../../data/vbr/processed_gt ../../results/viser_pi3_vbr --plot
Run KITTI benchmark:
cd eval/long_eval_script
./kitti_benchmark ../../data/kitti/dataset/poses ../../results/viser_pi3_kitti --plot
Notes:
vbr_benchmarkexpects*_es.txttrajectories in TUM format.kitti_benchmarkexpects estimated trajectories in TUM format and GT in KITTI pose format.--plotgenerates trajectory visualizations and error dumps.
Short Evaluation Launch
LoGeR
Relative pose estimation on ScanNet:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/relpose/run_scannet.sh \
LoGeR \
--num-processes 8 --port 29122 --window-size 64 --overlap-size 3 \
--datasets 'scannet_s3_1000,scannet_s3_50,scannet_s3_90,scannet_s3_100,scannet_s3_150,scannet_s3_200,scannet_s3_300,scannet_s3_400,scannet_s3_500,scannet_s3_600,scannet_s3_700,scannet_s3_800,scannet_s3_900'
Relative pose estimation on TUM-dynamics:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/relpose/run_tum.sh \
LoGeR \
--num-processes 8 --port 29122 --window-size 64 --overlap-size 3 \
--datasets 'tum_s1_1000,tum_s1_50,tum_s1_100,tum_s1_150,tum_s1_200,tum_s1_300,tum_s1_400,tum_s1_500,tum_s1_600,tum_s1_700,tum_s1_800,tum_s1_900'
Multi-view reconstruction on 7scenes (sequential sampling):
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/mv_recon/run.sh \
LoGeR \
--num-processes 8 --port 29552 --window-size 64 --overlap-size 3 \
--max-frames "500,450,400,50,100,150,200,250,300,350"
Multi-view reconstruction on 7scenes (uniform sampling):
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/mv_recon/run.sh \
LoGeR \
--num-processes 8 --port 29552 --window-size 64 --overlap-size 3 \
--max-frames "100,500,1000" --frame-sampling uniform
LoGeR*
Relative pose estimation on ScanNet:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/relpose/run_scannet.sh \
LoGeR_star \
--num-processes 8 --port 29122 --window-size 64 --overlap-size 3 --se3 \
--datasets 'scannet_s3_1000,scannet_s3_50,scannet_s3_90,scannet_s3_100,scannet_s3_150,scannet_s3_200,scannet_s3_300,scannet_s3_400,scannet_s3_500,scannet_s3_600,scannet_s3_700,scannet_s3_800,scannet_s3_900'
Relative pose estimation on TUM-dynamics:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/relpose/run_tum.sh \
LoGeR_star \
--num-processes 8 --port 29122 --window-size 64 --overlap-size 3 --se3 \
--datasets 'tum_s1_1000,tum_s1_50,tum_s1_100,tum_s1_150,tum_s1_200,tum_s1_300,tum_s1_400,tum_s1_500,tum_s1_600,tum_s1_700,tum_s1_800,tum_s1_900'
Multi-view reconstruction on 7scenes (sequential sampling):
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/mv_recon/run.sh \
LoGeR_star \
--num-processes 8 --port 29552 --window-size 64 --overlap-size 3 --se3 \
--max-frames "500,450,400,50,100,150,200,250,300,350"
Multi-view reconstruction on 7scenes (uniform sampling):
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 bash eval/mv_recon/run.sh \
LoGeR_star \
--num-processes 8 --port 29552 --window-size 64 --overlap-size 3 --se3 \
--max-frames "100,500,1000" --frame-sampling uniform