huawei-bayerlab/marigold-v2
Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation
마리골드 V2 – 확산-변환기 깊이 및 밀도-비전 모델
무엇인가요 – 마리골드 V2는 사전 훈련된 확산 변환기(Qwen-Image-Edit-2509 모델)를 사용하여 단일 스텝 예측기로 전환하는 연구용 코드베이스입니다. 이는 단안 깊이(로그-깊이 및 선형 깊이), 투명 깊이, 표면 법선, 알베도와 같은 여러 밀도 이미지-이미지 작업을 빠르게 수행할 수 있습니다. 저자들은 단일 소비자 GPU에서 실행 가능한 가벼운 미세 조정 레시피를 제공하며(전체 깊이 모델 기준 약 5일, 다른 변형은 1일 미만), 표준 벤치마크에서 최첨단 정확도에 도달합니다.
핵심 아이디어
- 확산 변환기 재사용 – 대규모 확산 모델은 고정되어 있으며, 미세 조정 시 작은 LoRA 어댑터와 VAE 디코더만 훈련되므로 비용이 저렴합니다.
- 단일 스텝 추론 – 훈련 후 모델은 반복적인 확산 샘플링 없이 한 번의 전방향 전파로 목표 밀도 맵을 예측합니다.
- 통합 아키텍처 – 동일한 백본을 사용하여 다른 체크포인트와 프롬프트 임베딩을 로드함으로써 깊이, 법선, 또는 알베도를 출력할 수 있습니다.
- 아핀 불변 깊이 – 깊이 예측은 각 이미지당 알 수 없는 스케일/이동으로 이루어지며, 논문에서 사용된 평가 프로토콜과 일치합니다.
얻을 수 있는 것
- 어떤 이미지 폴더에도 바로 사용 가능한 추론 스크립트(
scripts/infer.py). - 주요 깊이 및 법선 벤치마크(NYUv2, KITTI, ETH3D, ScanNet, DIODE, iBims-1, Sintel 등)를 위한 평가 실행 스크립트.
- 훈련 스크립트와 모듈식 YAML 기반 구성 시스템으로, 출판된 모델을 재현하거나 새로운 작업을 추가할 수 있습니다.
- Hugging Face에 호스팅된 사전 훈련된 체크포인트(LoRA 어댑터 + VAE 디코더)와 미리 계산된 Qwen 텍스트-프롬프트 임베딩을 제공하여 7B 텍스트 인코더를 로드할 필요가 없습니다.
빠른 시작 (Linux, Python 3.10, CUDA GPU)
# 복제 및 conda 환경 설정 (기본적으로 CUDA 12.8 웨일 사용)
git clone https://github.com/huawei-bayerlab/marigold-v2.git
cd marigold-v2
bash setup/setup_env.sh # "marigold-v2" 환경 생성
conda activate marigold-v2
# 모델 가중치 및 데모 자산 다운로드 (큰 데이터셋은 건너뜀)
python scripts/download_assets.py --skip-datasets
# 예제 이미지에 대해 깊이 추론 실행
python scripts/infer.py \
--modality depth \
--image_dir assets/examples \
--output_dir output/examples
결과는 output/examples 폴더에 *.npy 깊이 맵과 시각화 PNG 파일로 나타납니다.
훈련 / 미세 조정 방법
- 훈련 데이터(Hypersim, Virtual KITTI 2)와 iREPA 손실에 필요한 DINOv3 특징을 다운로드합니다:
python scripts/download_assets.py --include-dinov3
- 두 단계 깊이 훈련 실행(단계 1 ≈ 5일, 단계 2 ≈ 32GB GPU에서 1일):
# 단계 1 – iREPA + 픽셀 손실
python marigoldv2/script/train/train.py \
--config marigoldv2/experiments/20260316_qwen_depth/training_relative_log_depth_config.yaml \
--output_dir output/train_runs --no_wandb
# 단계 2 – SinkLoss + VAE 미세 조정 (단계 1 체크포인트에서 초기화)
python marigoldv2/script/train/train.py \
--config marigoldv2/experiments/20260316_qwen_depth/training_relative_log_depth_config_stage2.yaml \
--output_dir output/train_runs --no_wandb
법선, 알베도, 또는 체크포인트 표에 나열된 다른 깊이 변형을 훈련하려면 구성 경로를 변경하세요.
새로운 밀도 작업으로 확장하기 이 프레임워크는 YAML 구성 파일에 의해 구동되며, 다음을 선언합니다:
- 데이터셋 정의 (
marigoldv2/config/datasets/) - 사용자 정의 컴포넌트를 등록할 Python 모듈 목록 (
register_modules) - 전방향 전파를 설명하는
network_graph(예: 인코딩 → DiT → 디코딩 → 후처리) - 예측과 타겟을 연결하는
loss_graph - 스케줄, 양자화, LoRA 설정을 위한
optimization블록. 새 작업을 추가하려면 기존 실험 폴더를 복사하고, 작은 데이터셋 로더, 출력 어댑터(예: 디코딩된 RGB를 XYZ 법선으로 변환), 그리고 손실 함수를 구현한 후, 새 YAML 구성 파일을 해당 구성에 연결하면 됩니다.scripts/infer.py에MODALITIES항목을 추가하면 추론이 자동으로 새로운 모달리티를 지원합니다.
벤치마크 및 성능 (논문에 보고됨)
| 지표 | NYUv2 | KITTI | ETH3D | ScanNet | DIODE |
|---|---|---|---|---|---|
| AbsRel ↓ / δ1 ↑ (깊이) | 3.6 / 98.0 | 5.4 / 97.4 | 2.8 / 99.2 | 3.7 / 97.9 | 5.2 / 97.1 |
| 평균 각도 오차 ↓ / 11.25° ↑ (법선) | 16.6 / 61.2 | 14.1 / 67.4 | 15.9 / 70.9 | 28.7 / 27.6 | |
| 알베도 (Hypersim 테스트) – PSNR 20.78, SSIM 0.811, LPIPS 0.195 |
자원
- 데모: Hugging Face Space – https://huggingface.co/spaces/toshas/Marigold-V2
- 모델 가중치: https://huggingface.co/huawei-bayerlab/marigold-v2-0
- 논문: https://arxiv.org/abs/2609.08084 (ACM TOG, SIGGRAPH Asia 2026에 게재 예정)
- 웹사이트: https://hf.co/spaces/huawei-bayerlab/marigold-v2-web
사용 시기
- 다단계 확산 샘플링의 부담 없이 고품질 단안 깊이 또는 기타 밀도 예측이 필요할 때.
- 단일 GPU를 보유하고 있으며, 몇 일 안에 사용자 정의 데이터셋으로 모델을 미세 조정하고자 할 때.
- 새로운 밀도-비전 출력(법선, 알베도, 투명 깊이 등)으로 확장할 수 있는 단일 코드베이스를 원할 때.
"마리골드 V2는 단안 깊이 추정을 위한 확산 변환기를 재고하는 혁신적인 접근입니다. 이는 빠르고 정확한 예측을 가능하게 하며, 연구 및 실용적 응용 모두에 큰 기여를 할 수 있습니다." — @toshas
인용
@article{pavlovic2026marigoldv2,
author = {Pavlovic, Igor and Wandel, Thiemo and Obukhov, Anton and Bartolomei, Luca and Davydov, Andrey and Tosi, Fabio and Poggi, Matteo and S{"u}sstrunk, Sabine and Dai, Dengxin},
title = {Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation},
year = {2026},
journal = {ACM Trans. Graph.},
volume = {45},
number = {6},
pages = {204},
doi = {10.1145/3842528},
}
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트