Official source code for RePer360, a 360-degree depth-estimation method accepted by ECCV 2026.
This repository keeps the release focused on the depth-estimation task: model code, training, validation, inference, datasets, losses, and metrics.
- Geometry-Aligned Guidance (GAG):
network/gag.py - Self-Conditioned AdaLN-Zero (SCAdaLN-zero):
network/reper360.py - Equi-Cube Consistency loss (ECC loss):
util/ecc_loss.py - RePer360 model wrapper:
network/model.py - Depth Anything V2 backbone and DPT decoder interface:
depth_anything_v2/
network/ contains the RePer360-specific components and calls the reused Depth Anything V2 pipeline.
conda create -n reper360 python=3.9
conda activate reper360
pip install -r requirements.txtModel weights will be released after the download folder is finalized. Once available, place the downloaded files under checkpoint/. The common file names used by the scripts are:
| Checkpoint | Use |
|---|---|
checkpoint/depth_anything_v2_metric_hypersim_vitl.pth |
Depth Anything V2 metric initialization |
checkpoint/matterport_metric_depth.pth |
RePer360 Matterport3D metric depth |
checkpoint/stanford2d3d_metric_depth.pth |
RePer360 Stanford2D3D metric depth |
checkpoint/zero_shot_ssi_depth.pth |
RePer360 synthetic SSI zero-shot depth |
Activate the environment first:
conda activate reper360The distributed helper supports three modes:
# Matterport3D metric depth
CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 \
MATTERPORT_ROOT=/path/to/Matterport3D \
bash ./dist_train.sh matterport3d# Stanford2D3D metric depth
CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 \
STANFORD_ROOT=/path/to/Stanford2D3D \
bash ./dist_train.sh stanford2d3d# Synthetic SSI zero-shot training
CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 \
STRUCTURED3D_ROOT=/path/to/Structured3D \
DEEP360_ROOT=/path/to/Deep360 \
MATTERPORT_ROOT=/path/to/Matterport3D \
STANFORD_ROOT=/path/to/Stanford2D3D \
bash ./dist_train.sh zero_shotMetric-depth modes use --depth-type metric --max-depth 10.0. The synthetic zero-shot mode uses --depth-type ssi --max-depth 1.0.
Metric-depth validation:
python validate.py \
--checkpoint checkpoint/matterport_metric_depth.pth \
--dataset matterport3d \
--data-root /path/to/Matterport3D \
--split dataset/splits/matterport3d/test.txt \
--depth-type metric \
--max-depth 10SSI zero-shot validation uses scale-and-shift aligned metrics:
python validate.py \
--checkpoint checkpoint/zero_shot_ssi_depth.pth \
--dataset stanford2d3d \
--data-root /path/to/Stanford2D3D \
--split dataset/splits/stanford2d3d/test.txt \
--depth-type ssiMetric depth with optional point cloud:
python run.py \
--img-path /path/to/panorama.jpg \
--load-from checkpoint/matterport_metric_depth.pth \
--depth-type metric \
--save-numpy \
--save-pointcloud \
--outdir outputs/matterport_demoSSI zero-shot depth is normalized to [0, 1] and does not have metric scale, so point-cloud export is skipped:
python run.py \
--img-path /path/to/panorama.jpg \
--load-from checkpoint/zero_shot_ssi_depth.pth \
--depth-type ssi \
--save-numpy \
--outdir outputs/zero_shot_demoTable 4 in the paper studies pretrained initialization on Matterport3D with the same ViT-L backbone. Besides the depth-pretrained DAMv2 initialization, RePer360 also remains competitive when initialized from task-agnostic DINOv2 weights.
| Method | Initialization | Abs Rel ↓ | RMSE ↓ | δ1 (%) ↑ |
|---|---|---|---|---|
| PanDA | DAMv2 | 0.0788 | 0.3827 | 93.73 |
| RePer360 | DAMv2 | 0.0691 | 0.3164 | 95.67 |
| RePer360 | DINOv2 | 0.0808 | 0.3518 | 94.33 |
This suggests that the proposed adaptation is not solely dependent on depth-pretrained initialization. We encourage users to experiment with weights from different but related tasks; just choose the evaluation protocol explicitly. Use --depth-type metric only when the prediction has metric scale, and use --depth-type ssi for relative or scale-shift-invariant predictions.
Example visualizations are provided under:
assets/matterport3d/assets/stanford2d3d/assets/sun360_zero_shot/
Raw .npy predictions and .ply point clouds are ignored by default and can be regenerated with run.py.
RePer360 builds on the strong Depth Anything V2 backbone and adapts it for panoramic depth estimation with the modules above. Please follow the upstream license requirements for reused components.