Evaluation
April 19, 2026 ยท View on GitHub
This document describes the public MeMix evaluation setup for:
- 3D reconstruction
- camera pose estimation
- video depth estimation
Datasets
Please follow the dataset download instructions from MonST3R and Spann3R to obtain:
- ScanNet
- TUM-dynamics
- Sintel
- Bonn
- KITTI
- Neural RGBD
- 7-Scenes
Data Preparation
All prepare scripts read from DATA_ROOT, which defaults to ./data.
If your datasets live elsewhere:
cd /path/to/MeMix
export DATA_ROOT=/path/to/your/data
Expected raw dataset roots under the default repo layout:
data/7scenesdata/neural_rgbddata/tumdata/scannetv2data/kittidata/bonn/rgbd_bonn_datasetdata/sintel/training
Prepare all public benchmarks with:
python datasets_preprocess/prepare_7scenes.py
python datasets_preprocess/prepare_nrgbd.py
python datasets_preprocess/prepare_tum.py
python datasets_preprocess/prepare_scannet.py
python datasets_preprocess/prepare_kitti.py
python datasets_preprocess/prepare_bonn.py
python datasets_preprocess/prepare_sintel.py
Model Selection
All public eval entrypoints use the same MODEL_NAMES environment variable.
Examples:
CUDA_VISIBLE_DEVICES=0 bash eval/mv_recon/run.sh
MODEL_NAMES="cut_memix" CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_tum.sh
MODEL_NAMES="ttt ttt_memix" CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_kitti.sh
Default six-model sweep:
MODEL_NAMES="cut ttt ttsa cut_memix ttt_memix ttsa_memix"
Sequence Controls
For camera pose and video depth, the default run scripts use the paper short
setting. Use EVAL_PROTOCOL=long and SEQ_LENGTHS for long-sequence sweeps.
You can also override the frame window with:
START_FRAME: first frame indexPOSE_EVAL_STRIDE: frame strideMAX_VIEWS: number of frames after striding
1. 3D Reconstruction
Datasets:
- 7-Scenes
- NRGBD
Run:
CUDA_VISIBLE_DEVICES=0 bash eval/mv_recon/run.sh
MAX_VIEWS can be either a single value or a whitespace-separated sweep:
MAX_VIEWS=300 KF_EVERY=2 CUDA_VISIBLE_DEVICES=0 bash eval/mv_recon/run.sh
MAX_VIEWS="300 400 500" KF_EVERY=2 \
CUDA_VISIBLE_DEVICES=0 bash eval/mv_recon/run.sh
For dense sampling, use KF_EVERY=1 with the same MAX_VIEWS interface.
2. Camera Pose Estimation
Datasets:
- TUM and ScanNet for short and long settings
- Sintel for the short setting
Run:
CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_tum.sh
CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_scannet.sh
CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_sintel.sh
Examples:
# Short-sequence pose setting: TUM / ScanNet use 90 views.
MAX_VIEWS=90 CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_tum.sh
# Long-sequence pose sweep.
EVAL_PROTOCOL=long SEQ_LENGTHS="50 100 150 200 300 400 500 600 700 800 900 1000" \
CUDA_VISIBLE_DEVICES=0 bash eval/relpose/run_tum.sh
3. Video Depth Estimation
Datasets:
- KITTI
- Bonn
- Sintel
Run:
CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_kitti.sh
CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_bonn.sh
CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_sintel.sh
Examples:
# Short-sequence depth setting: KITTI / Bonn use 110 views; Sintel uses 50.
MAX_VIEWS=110 CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_kitti.sh
# Long-sequence depth sweep.
EVAL_PROTOCOL=long SEQ_LENGTHS="50 100 150 200 300 400 500 600 700 800 900 1000" \
CUDA_VISIBLE_DEVICES=0 bash eval/video_depth/run_sintel.sh
Options
Shared:
MODEL_NAMES="cut ttt ttsa cut_memix ttt_memix ttsa_memix"NUM_PROCESSES=1PORT=29502WEIGHTS=/path/to/cut3r_512_dpt_4_64.pthDATA_ROOT=/path/to/data
Runtime-sliced tasks (relpose and video_depth):
EVAL_PROTOCOL=short|longSEQ_LENGTHS="..."START_FRAME=<int>POSE_EVAL_STRIDE=<int>MAX_VIEWS=<int>
mv_recon only:
DATASETS="7scenes NRGBD"MAX_VIEWS=300KF_EVERY=2