huawei-bayerlab/marigold-v2
Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation
Marigold V2 – 확산 트랜스포머 깊이 및 밀집 비전 모델
개요 – Marigold V2는 사전 학습된 확산 트랜스포머(Qwen-Image-Edit-2509 모델)를 다양한 밀집 이미지 모달리티(단안 깊이, 투시 깊이, 표면 법선, 알베도)를 위한 빠른 단일 단계 예측기로 변환하는 연구급 코드베이스입니다. 저자들은 일련의 체크포인트, 경량 미세 조정 레시피(LoRA 어댑터 + 소형 VAE 디코더), 그리고 추론, 평가, 학습을 위한 스크립트를 제공합니다.
핵심 아이디어
- 동결된 확산 백본 재사용 – 대형 Qwen 텍스트-투-이미지 모델은 동결된 상태로 유지하고, 작은 학습 가능 어댑터(LoRA)와 VAE 디코더만 학습하므로 미세 조정 비용이 저렴합니다(단일 32 GB GPU에서 약 1주).
- 단일 단계 밀집 예측 – 여러 샘플링 단계가 필요한 기존 확산 파이프라인과 달리, Marigold V2는 한 번의 순전파로 최종 밀집 맵을 생성합니다.
- 다중 출력 모달리티 – LoRA 체크포인트와 프롬프트 임베딩을 교체하여 동일한 백본을 깊이(로그, 선형, 시차, 투시), 법선, 알베도에 재활용할 수 있습니다.
- 아핀 불변 깊이 – 깊이 값은 이미지별 알 수 없는 스케일/시프트까지 출력되며, 이는 논문에서 사용된 평가 프로토콜과 일치합니다.
제공되는 구성 요소
| 구성 요소 | 내용 |
|---|---|
| 체크포인트 | 각 모달리티와 깊이 매개변수화에 대한 LoRA 어댑터(trainables.safetensors로 저장). 모두 동결된 Qwen 백본과 사전 계산된 텍스트 프롬프트 임베딩을 공유하므로 7 B 텍스트 인코더는 로드되지 않습니다. |
추론 스크립트 (scripts/infer.py) |
모든 이미지 폴더에서 깊이, 법선, 알베도를 실행하는 간단한 CLI. NumPy .npy 맵과 시각화 PNG를 출력합니다. |
| 평가 런처 | 표준 깊이/법선 벤치마크(NYUv2, KITTI, ETH3D, ScanNet, DIODE, iBims-1 등)를 다운로드하고 논문에 보고된 지표를 계산하는 Bash 스크립트. |
| 학습 프레임워크 | YAML 기반 구성 시스템(marigoldv2/experiments/...)과 데이터셋, 변환, 네트워크 블록, 손실 그래프, 옵티마이저를 연결하는 소형 레지스트리. 단일 GPU 및 다중 GPU(accelerate launch)를 지원합니다. |
| 데이터셋 헬퍼 | 대규모 Hypersim, Virtual KITTI-2, LayeredDepth-Syn, DINOv3 지각 손실 체크포인트를 다운로드하고 전처리하는 스크립트. |
| 데모 및 웹 UI | 빠른 시각적 테스트를 위한 Hugging Face Spaces 링크(Marigold-V2-web). |
빠른 시작(Linux, Python 3.10, CUDA GPU)
# Clone & set up environment (conda, CUDA 12.8 wheels)
git clone https://github.com/huawei-bayerlab/marigold-v2.git
cd marigold-v2
bash setup/setup_env.sh # creates conda env "marigold-v2"
conda activate marigold-v2
# Download model weights and example images
python scripts/download_assets.py --skip-datasets
# Run depth on the bundled examples
python scripts/infer.py \
--modality depth \
--image_dir assets/examples \
--output_dir output/examples
기본 깊이 체크포인트(depth/Log-stage2)는 README에 보고된 최첨단 수치(예: NYUv2에서 AbsRel 3.6 %, δ1 98 %)를 생성합니다.
새 모델 학습(대략적인 개요)
- 데이터 준비 – 저장소에는 Hypersim, Virtual KITTI-2, 선택적 계층 깊이 데이터를 가져오는 스크립트가 포함되어 있습니다.
marigoldv2/experiments/...에서 구성 선택(예:training_relative_log_depth_config_stage2.yaml).- 학습 시작:
– 1단계(160 k 스텝)는 32 GB GPU에서 약 5일, 2단계(30 k 스텝)는 약 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 - 생성된
trainables.safetensors는scripts/infer.py와 함께 직접 사용할 수 있습니다.
새로운 밀집 작업으로 확장 – 프레임워크는 모듈식입니다:
marigoldv2/config/datasets/에 데이터셋 YAML과 매니페스트 로더를 추가합니다.- 디코딩된 RGB 출력을 원하는 표현(예: 시맨틱 맵)으로 변환하는 작은
network_graph단계를 작성합니다. - 손실 모듈(예: 교차 엔트로피)과 검증 지표를 추가합니다.
- 새 실험 폴더에 새 모듈을 등록하고 새 학습 구성을 연결합니다. README에는 표면 법선 실험을 템플릿으로 사용한 단계별 가이드가 포함되어 있습니다.
성능 및 하드웨어 참고 사항
- 1024×1024 추론에는 약 17 GB GPU 메모리가 필요하고, 2048×2048에는 약 29 GB가 필요합니다.
- 확산 트랜스포머는 로드 시 4비트로 양자화되어 메모리를 줄이고 추론 속도를 높입니다.
- 깊이 완성을 위해 저장소는 고해상도 입력에서 실행할 때 MAE를 개선하는 타일형 로컬 적응 스크립트를 제공합니다.
더 찾아볼 곳
- 논문: https://arxiv.org/abs/2609.08084 (SIGGRAPH Asia 2026).
- 모델 가중치: https://huggingface.co/huawei-bayerlab/marigold-v2-0.
- 데모: https://hf.co/spaces/huawei-bayerlab/marigold-v2-web.
- ModelScope 미러(웹사이트, 모델, 데모)는 News 아래에 나열되어 있습니다.
TL;DR – Marigold V2는 동결된 확산 트랜스포머를 빠르고 고품질의 단안 깊이, 투시 깊이, 법선, 알베도 예측기로 재활용하는 연구 중심의 오픈소스 툴킷으로, 종단 간 학습, 평가, 추론을 위한 스크립트를 갖추고 있습니다. 이는 전적으로 AI/ML 영역에 속하며 주제에서 벗어난 모음이 아닙니다.
관련
- 프로젝트
- Dispatch
- Dispatch
- 프로젝트
- Dispatch