Skip to content

munimo/RePer360

Repository files navigation

RePer360

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.

Highlights

  • 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.

Setup

conda create -n reper360 python=3.9
conda activate reper360
pip install -r requirements.txt

Model 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

Training

Activate the environment first:

conda activate reper360

The 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_shot

Metric-depth modes use --depth-type metric --max-depth 10.0. The synthetic zero-shot mode uses --depth-type ssi --max-depth 1.0.

Validation

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 10

SSI 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 ssi

Inference

Metric 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_demo

SSI 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_demo

Task-Agnostic Weights

Table 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.

Assets

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.

Acknowledgement

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.

About

[ECCV 2026] Official code of "RePer-360: Releasing Perspective Priors for 360° Depth Estimation via Self-Modulation"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors