๐Ÿš€ ICCV 2025: PacGDC

July 18, 2025 ยท View on GitHub

PacGDC: Label-Efficient Generalizable Depth Completion with Projection Ambiguity and Consistency

Haotian Wang, Aoran Xiao, Xiaoqin Zhang, Meng Yang, and Shijian Lu

International Conference on Computer Vision (ICCV), October 2025


๐Ÿ“ Abstract

examples

PacGDC is a label-efficient technique that enhances data diversity with minimal annotation effort for generalizable depth completion. It builds on novel insights into inherent ambiguities and consistencies in object shapes and positions during 2D-to-3D projection, allowing the synthesis of numerous pseudo geometries for the same visual scene. This process greatly broadens available geometries by manipulating scene scales of the corresponding depth maps. To leverage this property, we propose a new data synthesis pipeline that uses multiple depth foundation models as scale manipulators. These models robustly provide pseudo depth labels with varied scene scales, affecting both local objects and global layouts, while ensuring projection consistency that supports generalization. To further diversify geometries, we incorporate interpolation and relocation strategies, as well as unlabeled images, extending the data coverage beyond the individual use of foundation models.


โš™๏ธ Requirements

  • Python >= 3.9
  • PyTorch >= 2.7

๐Ÿ‹๏ธโ€โ™‚๏ธ Training

1๏ธโƒฃ Prepare Your Data

  • Save your training datasets in ./Datasets/Data_Train:
โ””โ”€โ”€ Data_Train
  โ”œโ”€โ”€ Labeled         # Labeled datasets
  โ”‚   โ”œโ”€โ”€ Dataset1
  โ”‚   โ”‚   โ”œโ”€โ”€ rgb
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file1.png
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file2.png
  โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
  โ”‚   โ”‚   โ”œโ”€โ”€ depth
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file1.png
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file2.png
  โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
  โ”‚   โ”‚   โ”œโ”€โ”€ DA      # DepthAnything Results
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file1.png
  โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ file2.png
  โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
  โ”‚   โ”‚   โ””โ”€โ”€ DepthPro # DepthPro Results
  โ”‚   โ”‚       โ”œโ”€โ”€ file1.png
  โ”‚   โ”‚       โ”œโ”€โ”€ file2.png
  โ”‚   โ”‚       โ””โ”€โ”€ ...
  โ”‚   โ””โ”€โ”€ Dataset2
  โ”‚       โ””โ”€โ”€ ...
  โ””โ”€โ”€ UnLabeled       # Unlabeled datasets
      โ”œโ”€โ”€ Dataset1
      โ”‚   โ”œโ”€โ”€ rgb
      โ”‚   โ”‚   โ””โ”€โ”€ ...
      โ”‚   โ”œโ”€โ”€ DA
      โ”‚   โ”‚   โ””โ”€โ”€ ...
      โ”‚   โ”œโ”€โ”€ DepthPro
      โ”‚   โ”‚   โ””โ”€โ”€ ...
      โ””โ”€โ”€ Dataset2
        โ””โ”€โ”€ ...

โš ๏ธ Note:

  • depth should be stored in 16-bit format, normalized by depth(m)/max_depth(m)*65535.
  • max_depth=30(m) for indoor datasets, max_depth=150(m) for outdoor datasets.
  • Save your hole datasets in ./Datasets/Data_Hole:
โ””โ”€โ”€ Hole_Datasets
  โ”œโ”€โ”€ Dataset1
  โ”‚   โ”œโ”€โ”€ file1.png
  โ”‚   โ”œโ”€โ”€ file2.png
  โ”‚   โ””โ”€โ”€ ...
  โ””โ”€โ”€ Dataset2
      โ”œโ”€โ”€ file1.png
      โ”œโ”€โ”€ file2.png
      โ””โ”€โ”€ ...

โš ๏ธ Note:


2๏ธโƒฃ Start Training

  • Run train.py:
# model_type: ["T", "S", "B", "L"] referring to SPNet
python train.py --model_type="L" --foundation_models="DA_DepthPro"
# All configuration parameters are located in ".\src\configs.py" and can be customized as required.
  • The trained model will be saved in ./logs/models

๐Ÿงช Testing

  1. Download and locally save the Zero-Shot Checkpoint to ./Pretrained
CheckpointsModel TypeFoundation ModelsDrop rate
Zero-shotSPNet-LargeDA, DepthPro0.5
KITTI Finetuned (Online Leaderboard)SPNet-LargeDA, DepthPro0.8
  • If you want to load Zero-Shot Checkpoint using Hugging Face:
# update test.py as follows:

# hugging face loading
net = CompletionNet.from_pretrained("Haotian-sx/PacGDC_large").to(args.device).eval()
# locally loading
# net = CompletionNet(str(args.ckpt_path.name)[0]).to(args.device).eval()
# net.load_state_dict(torch.load(args.ckpt_path)["network"])
  1. Download and unzip Test Dataset (Ibims) to ./Datasets/Data_Test
  2. โ–ถ๏ธ Run test.py:
# 1. Normalize depth values to [0,1] by "depth(m)/max_depth(m)*65535"
# (The provided "Test Dataset (Ibims)" is already normalized with max_depth=30 (Indoor))

# 2. Run test.py
python test.py --ckpt_path="Pretrained/L_DA_DepthPro.pth" --max_depth=30

โš ๏ธ Note:

  • KITTI Fine-tuned Checkpoints are released for autonomous driving applications. This repository does not reimplement few-shot/full-shot fine-tuning, as existing public repositories like LRRU and CompletionFormer already provide effective solutions.

๐Ÿ“ˆ Research Trajectory

๐ŸŸข G2-MonoDepth (Framework) โ†’ ๐Ÿ”ต SPNet (Network) โ†’ ๐Ÿ”ด PacGDC (Data)


๐Ÿ“š Citation

If you find our work useful, please cite:

@article{wang2025pacgdc,
  title     = {PacGDC: Label-Efficient Generalizable Depth Completion with Projection Ambiguity and Consistency},
  author    = {Wang, Haotian and Xiao, Aoran and Zhang, Xiaoqin and Yang, Meng and Lu, Shijian},
  journal   = {arXiv preprint arXiv:2507.07374},
  year      = {2025},
  url       = {https://arxiv.org/abs/2507.07374}
}