Skip to content

Repository files navigation

Pano360: Perspective to Panoramic Vision with Geometric Consistency

arXiv Hugging Face alt text

Requirements

  • Python 3.9
  • PyTorch 2.3
  • GPU: CUDA-compatible GPU with ≥4GB VRAM
  • The VGGT-Omega checkpoint at model/vggt_omega_1b_512.pt

Installation

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

Install the optional LightGlue dependency for bundle adjustment:

pip install -r requirements-ba.txt

Pretrained models

We use VGGT-Omega as the geometry backbone. Please download the pretrained checkpoint from the official repository: VGGT-Omega

The checkpoint is approximately 4.3 GiB. Then place the checkpoint as: model/vggt_omega_1b_512.pt

Quick Start

Place overlapping images in one directory. Files are loaded in case-insensitive filename order.

Run the standard pipeline without bundle adjustment:

python demo_stitch.py \
  --image-folder ./example/night \
  --output-path ./result/night_normal.jpg \
  --device cuda \
  --projection plane

Run LightGlue matching and bundle adjustment:

python demo_stitch_ba.py \
  --image-folder ./example/night \
  --output-path ./result/night_normal_ba.jpg \
  --device cuda \
  --projection plane \
  --extractor aliked

Use python demo_stitch.py --help or python demo_stitch_ba.py --help for the complete option list.

Projections and Views

Type Options
Projection auto, plane, cylindrical, spherical, mercator, panini, erp
View normal, little_planet, rabbit_hole, fisheye, cubemap
Seam torch_dp, torch_soft, no
Blend multiband, feather, no

Generate a fixed 2:1 equirectangular panorama:

python demo_stitch.py \
  --image-folder ./example/littleplane \
  --output-path ./result/littleplane_erp.jpg \
  --device cuda \
  --projection erp \
  --erp-width 8192

Generate a Little Planet view:

python demo_stitch.py \
  --image-folder ./example/littleplane \
  --output-path ./result/littleplane_little_planet.jpg \
  --device cuda \
  --projection erp \
  --view little_planet \
  --view-size 2048 \
  --view-zoom 0.65

Pipeline

Images -> VGGT-Omega cameras -> optional LightGlue + BA
       -> CUDA projection -> GPU seam -> exposure compensation
       -> multi-band blending -> optional display view -> RGB output

📂 Dataset Directory Structure

🚀 The Pano360 dataset contains four scenes (a, b, c, d), including tourism, sports, and special lighting scenes.

ROOT/
├── Scene(a)/                  # Tourism scenes
│   ├── 0/                     # 1st sub-scene
│   │   ├── 001/               # 1st focal length
│   │   │   ├── cameras.json   # Ground truth camera parameters
│   │   │   └── images/        # Contains exactly 24 image frames
│   │   ├── 002/               # 2nd focal length
│   │   └── 003/               # 3rd focal length
│   ├── 1/                     # 2nd sub-scene
│   ├── ...                    # (Intermediate sub-scenes)
│   └── 165/                   # 166th sub-scene (Indexed 0 to 165)
│
├── Scene(b)/                  # Sports scenes
│   └── ...                   
│
├── Scene(c)/                  # Special lighting scenes
│   └── ...                    
│
└── Scene(d)/                  # Unsupervised in-the-wild scenes
    └── ...                    

Citation

If you have any question, please contact me via eezhengdong@mail.scut.edu.cn

If you find Pano360 useful for your research, please cite:

@inproceedings{zhu2026pano360,
  title={Pano360: Perspective to Panoramic Vision with Geometric Consistency},
  author={Zhu, Zhengdong and Xue, Weiyi and Yang, Zuyuan and Zhou, Wenlve and Zhou, Zhiheng},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={7600--7609},
  year={2026}
}

About

[CVPR 2026] Pano360: Perspective to Panoramic Vision with Geometric Consistency

Resources

Stars

22 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages