fabiotosi92/ZipDepth

[ECCV 2026] Official implementation of "ZipDepth: Bringing Lightweight Zero-Shot Monocular Depth Anywhere, on Any Device". A compact 6.1M-parameter network for zero-shot monocular depth estimation, running in real time from server GPUs to mobile phones via knowledge distillation from foundation models.

📦 ZipDepth 는 무엇인가요?

ZipDepth 는 ECCV 2026 에 소개된 가벼운, 제로샷 단안 깊이 추정 모델입니다. 특정 작업용 미세 조정 없이 단일 RGB 이미지에서 밀도 높은 깊이 맵을 예측합니다. 핵심 장점은 정확도-효율성 균형 입니다: 훨씬 더 큰 트랜스포머 기반 기초 모델과 동등한 성능을 달성하면서도 모델 크기는 약 6M 파라미터로 유지하고, 최신 GPU에서 1k FPS 이상 으로 작동하며, 모바일/엣지 하드웨어에서도 안정적으로 작동합니다.


🔑 핵심 아이디어

구성 요소 기능
에코더 RepVGG 재파라미터화 가능한 컨볼루션으로 구성된 4단계 계층. 초기 단계에서는 스트립 풀링 어텐션 으로 수평/수직 맥락을 처리하고, 후반 단계에서는 압축-및-흥분(Squeeze-and-Excitation)과 글로벌 컨텍스트 블록 을 추가합니다.
다중 스케일 풀링 (SPPF) 과 크로스 스케일 융합 모듈을 통해 디코딩 전 특징을 융합합니다.
디코더 볼록 업샘플링 헤드를 갖춘 컴팩트한 특징 피라미드 네트워크(FPN)로, 서브픽셀 정밀도 깊이 맵을 생성합니다.
두 개의 체크포인트 zipdepth_base.pth (GPU 친화적, torch.nn.Unfold 사용) 및 zipdepth_base_npu.pth (Unfold 없음, ONNX/CoreML/TFLite 로의 변환이 쉬워 모바일/NPU에 적합).

🚀 시작하기

# 복제 및 설치
git clone https://github.com/fabiotosi92/ZipDepth
cd ZipDepth
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt   # PyTorch ≥2.4 필요
pip install -e .

추론 (단일 이미지, 폴더, 또는 비디오)

python scripts/infer.py \
  --checkpoint checkpoints/zipdepth_base.pth \
  --input assets/examples/im0.jpg \
  --input-size 384          # 짧은 변, 32의 배수로 반올림

옵션 플래그: --fp16 (반정밀도), --compile (torch.compile), --npu (NPU 호환 체크포인트 사용), --no-colormap / --save-raw 로 원시 .npy 깊이 출력을 저장.

모델 내보내기

  • ONNX (모바일/엣지용 추천):
    python scripts/export.py \
      --ckpt checkpoints/zipdepth_base_npu.pth \
      --format onnx --height 384 --width 384 --npu
    
  • TorchScript (트레이스 또는 프리즈) : 순수 PyTorch 배포용.

📊 성능 요약

데이터셋 파라미터 수 GFLOPs (384×384) 일반 지연 (RTX 3090)
NYUv2, KITTI, ETH3D, ScanNet, DIODE ~6.1 M ~0.9 G 0.8 ms (TensorRT FP16) → 약 1300 FPS

논문의 파레토 플롯은 ZipDepth 가 가벼운 모델 영역을 지배하면서도 최고의 대규모 모델과 몇 퍼센트 내외의 성능 차이를 유지함을 보여줍니다.


🛠️ 학습 (연구 중심)

  • 데이터: 17개의 공개 이미지 도메인(예: COCO, Cityscapes, MegaDepth 등)에서 Depth Anything V2 Large 에서 지식 증류를 통해 생성된 14M개의 RGB-깊이 쌍. 파일 경로 목록은 training_files.txt.gz 로 제공되며, 실제 이미지는 원본 데이터셋에서 확보해야 합니다.
  • 파이프라인: scripts/prepare_index.py 가 JSON 인덱스를 생성 → 선택적으로 NumPy 메모리 매핑으로 변환하여 빠른 I/O를 구현.
  • 실행 (단일 GPU 예시):
    python scripts/train.py --config configs/default.json
    
    Multi-GPU 는 torchrun 과 표준 DDP 를 사용.
  • 손실: 스케일 및 시프트 불변 깊이 손실 + 기울기 정규화, AdamW 와 One-Cycle LR 스케줄로 최적화.

📱 온디바이스 배포

  1. NPU 친화적 체크포인트 (zipdepth_base_npu.pth) 를 선택합니다.
  2. ONNX 로 내보냅니다 (scripts/export.py --format onnx --npu).
  3. ONNX 모델을 대상 런타임(ONNX Runtime Mobile, CoreML, TFLite, NCNN 등)으로 변환합니다.
  4. 업샘플링 헤드는 모바일 NPU에서 널리 지원되는 연산자만 사용하므로, 깔끔한 변환이 보장됩니다.

🙏 감사의 말 및 인용

저자들은 Marigold (평가 프로토콜 제공) 및 Depth Anything V2 (가짜 레이블 제공) 의 제작자들에게 감사를 표합니다. ZipDepth 를 연구에 사용할 경우 다음 인용을 포함해 주세요:

@inproceedings{tosi2026zipdepth,
  title     = {ZipDepth: Bringing Lightweight Zero-Shot Monocular Depth Anywhere, on Any Device},
  author    = {Tosi, Fabio and Bartolomei, Luca and Poggi, Matteo and Mattoccia, Stefano},
  booktitle = {European Conference on Computer Vision (ECCV)},
  year      = {2026}
}

📧 문의

질문이 있으면 README 에 기재된 이메일 주소로 연락해 주세요.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트