Skip to content

Evaluation Environment Setup

The open-source baseline is a single Conda environment named worldatlas. Do not use the old new environment.

Terminal window
# Tested on CUDA 12.1
export CUDA_HOME=/path/to/cuda-12.1/
conda create -n worldatlas python=3.10 -y
conda activate worldatlas
Terminal window
python -m pip install \
torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 \
--index-url https://download.pytorch.org/whl/cu121
python -m pip install -e .
conda install -c conda-forge decord=0.6.0 -y
python -m pip install \
transformers==4.46.3 diffusers accelerate pyiqa open3d iopath pycocotools \
pytorch-lightning torchmetrics timm==0.4.12 xformers==0.0.28.post3 \
easydict roma jaxtyping lpips "pyglet<2" e3nn moviepy==1.0.3 \
plyfile pillow-heif pycolmap imageio-ffmpeg OpenEXR kornia gsplat trimesh
python -m pip install \
-f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py310_cu121_pyt251/download.html \
pytorch3d
python -m pip install \
-f https://data.pyg.org/whl/torch-2.5.1+cu121.html \
torch-scatter
python -m pip install causal-conv1d==1.5.0.post8 mamba-ssm==2.2.4
ln -sfn "$(python -c 'import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())')" \
"$CONDA_PREFIX/bin/ffmpeg"

If conda-forge cannot solve decord in an already-populated environment, fall back to:

Terminal window
python -m pip install decord==0.6.0

3. Install official metric runtime dependencies

Section titled “3. Install official metric runtime dependencies”

Several headline metrics (camera_error, reprojection_error, motion_accuracy, and related flow metrics) reuse upstream implementations through in-tree adapters. Initialize the metric-source submodules and build DROID-SLAM when you need the full official benchmark path:

WorldAtlas keeps only the metric adapters under worldatlas/benchmark/official_backends/. DROID-SLAM, SEA-RAFT, GroundingDINO, SAM2, and VFIMamba are used directly from their thirdparty/ submodule checkouts.

Terminal window
mkdir -p thirdparty
git submodule update --init --recursive thirdparty/DROID-SLAM
cd thirdparty/DROID-SLAM/
python setup.py install
cd ../..
git submodule update --init thirdparty/GroundingDINO
python -m pip install --no-build-isolation -e thirdparty/GroundingDINO
git submodule update --init thirdparty/sam2
cd thirdparty/sam2/
python -m pip install -e .
cd ../..
git submodule update --init thirdparty/SEA-RAFT thirdparty/VFIMamba

Install additional native metric runtimes (submodules where registered, otherwise clone once):

Terminal window
git submodule update --init \
thirdparty/AMT \
thirdparty/RAFT \
thirdparty/Pulse-of-Motion \
thirdparty/Depth-Anything-3 \
thirdparty/met3r \
thirdparty/vipe \
thirdparty/UniDepth \
thirdparty/Prior-Depth-Anything
# Not registered as submodules yet — clone manually when needed
git clone --depth 1 https://github.com/soCzech/TransNetV2 thirdparty/TransNetV2
git -C thirdparty/TransNetV2 lfs pull

Official distribution and trajectory metrics:

Terminal window
git clone --depth 1 https://github.com/DSL-Lab/FVMD-frechet-video-motion-distance thirdparty/FVMD-frechet-video-motion-distance
git clone --depth 1 https://github.com/oooolga/JEDi thirdparty/JEDi
git clone --depth 1 https://github.com/google-deepmind/tapnet thirdparty/tapnet
# Keep the JAX/CUDA stack isolated from the shared WorldAtlas environment.
python -m venv --system-site-packages ../envs/worldatlas-metrics-cu121
METRIC_PYTHON=../envs/worldatlas-metrics-cu121/bin/python
"$METRIC_PYTHON" -m pip install \
--constraint requirements/metrics-cu121.txt \
"jax[cuda12]==0.4.35" flax==0.10.2 prettytable==3.9.0 tensorboardX==2.6.2.2
"$METRIC_PYTHON" -m pip install \
--constraint requirements/metrics-cu121.txt \
-e thirdparty/tapnet
"$METRIC_PYTHON" -m pip install --no-deps vjepa==0.1.2

The FVMD and JEDi backends import directly from their configured repo_root, so their upstream packages do not need to be installed. In particular, avoid installing FVMD’s complete upstream requirements into the shared environment: its strict historical pins conflict with the current WorldAtlas stack. Run the evaluation launcher with "$METRIC_PYTHON" scripts/run_eval_shards.py .... The constraints above are the real-runtime-tested H100/driver-535 stack; a non-fatal cuFuncGetName warning may still be emitted by JAX on driver 535.

fvmd and jedi are distribution metrics. A sharded evaluation collects samples in workers and computes each metric once after the full merge. trajan is the paper’s per-video reconstruction Average Jaccard and runs on both dynamic suites.

For hpsv3_norm, install the inferencer package in the same worldatlas env:

Terminal window
python -m pip install hpsv3

Optional MegaSAM backend for camera_error (kept in a separate conda environment):

Terminal window
# Set MEGASAM_PYTHON to the MegaSAM env after installing upstream mega-sam
export MEGASAM_PYTHON=/path/to/mega_sam/bin/python
Terminal window
python -m pip check
python scripts/check_installation.py

The environment prepared for the current evaluation run uses decord==0.6.0, pytorch3d==0.7.8, pyiqa==0.1.15.post2, open3d==0.19.0, xformers==0.0.28.post3, torch-scatter==2.1.2+pt25cu121, causal-conv1d==1.5.0.post8, and mamba-ssm==2.2.4.

If pip check reports only decord 0.6.0 is not supported on this platform after installing from PyPI, the package is usually importable but its published wheel metadata is tagged for CPython 3.6. Prefer conda-forge decord; otherwise treat that single decord metadata warning separately and verify with python -c "import decord; print(decord.__version__)".