Latent Diffusion이 열어 준 단안(單眼) Depth Estimation의 새로운 길
“이미지를 ‘그리는’ 모델이, 그 그림 속 3D 구조까지 자연스럽게 ‘읽어낼’ 수 있다면 어떨까요?”
Marigold는 바로 이 질문에서 출발했습니다.
Depth Estimation(깊이 추정)은 평면 사진에 숨어 있는 거리감을 끌어내는 작업입니다. Stereo Vision처럼 카메라 두 대가 필요한 것이 보통이지만, Monocular Depth Estimation은 한 장짜리 RGB 이미지로 승부수를 던집니다. 문제는 환경이 조금만 바뀌어도 성능이 요동친다는 점이죠. 연구진은 그 이유를 ‘시각적 경험치 부족’에서 찾고, Stable Diffusion의 막대한 visual prior를 빌려와 해법을 제시합니다.

왜 Depth가 중요한가?
- 드론·로봇: 책상 모퉁이를 잘못 읽으면 바로 추락합니다.
- AR/VR: 가상 소품이 테이블을 뚫고 나오면 몰입이 깨지죠.
- 자율주행: LiDAR 대신 카메라 한 대로도 거리 추정이 깔끔하다면 비용이 급감합니다.
현실로 쓰려면 ‘도메인 호환성’이 필수입니다. 실내·실외, 주간·야간, 스마트폰·액션캠 환경이 달라도 흔들리지 않아야 하니까요.

Depth에도 급이 있다
- Ordinal Depth – “이 픽셀이 저 픽셀보다 앞/뒤” 정도만 알려줍니다.
- Affine‑Invariant Depth – 상대적 scale·shift가 살아 있는 숫자. Marigold가 노린 지점입니다.
- Metric Depth – cm·m 단위 절대 거리. 카메라 intrinsics 없으면 어렵습니다.
Affine‑Invariant Depth는 보정 없이도 쓸 만한 숫자를 제공해 실전에서 가장 유용합니다.

Diffusion, 30초 요약
- DDPM: 노이즈를 조금씩 벗겨가며 이미지를 생성합니다.
- DDIM: step 수를 줄이되 품질은 유지합니다.
- LDM: 픽셀 대신 latent space에서 처리해 속도가 훨씬 빠릅니다.
Stable Diffusion v2는 LDM 계열입니다. 수십억 장을 학습한 덕에, 세상을 보는 광대한 상식이 몸에 밴 모델이죠.

Marigold 한 줄 요약
Stable Diffusion의 디코더 자리를 Depth Predictor로 바꾸고, U‑Net만 가볍게 fine‑tune한다!
생성기는 추정기로 변신하고, 시각적 prior는 그대로 유지됩니다.

학습 파이프라인 살펴보기
- 입력 세팅
- 1‑채널 GT depth → 3‑채널로 복사 후 VAE Encoder 통과.
- Depth 값을 2‑98 분위 기준 −1‥1로 정규화.
- Latent + Noise
- Frozen VAE Encoder로 latent depth 생성.
- Multi‑Resolution Noise + Annealing을 주입.
- Conditioning
- latent depth와 latent image를 concat(크로스‑어텐션 X).
- Fine‑Tuning
- U‑Net만 2.5일 학습 (RTX 4090×1).
- Synthetic 데이터: HyperSim(실내) + KITTI‑360(실외).
추론 과정
- Depth latent를 Gaussian noise로 초기화.
- latent image concat → DDIM 50 step (10 step으로 속도 절약 가능).
- VAE Decoder → 3‑채널 평균 → depth map 완성.
- 10‑run ensemble(옵션): affine 정렬 후 pixel‑wise median.
실험 결과 (Zero‑Shot)
| Dataset | δ₁ ↑ | Abs‑Rel ↓ | Rank |
| NYU‑Depth‑v2 | 0.895 | 0.079 | #1 |
| KITTI Eigen | 0.914 | 0.061 | #1 |
| ScanNet | 0.784 | 0.102 | #1 |
| DIode | 0.721 | 0.118 | #1 |
Synthetic 데이터만으로도 기존 모델을 넘어서며 제로샷 SOTA를 기록했습니다.
Ablation 꿀팁
- Ensemble: 1‑pass도 강하지만 10회를 넘기면 효율이 꺾입니다.
- Diffusion Step: 10→50 단계로 갈수록 성능이 올라가지만 속도는 느려집니다.
- Multi‑Res Noise: 기본 Gaussian 대비 δ₁ +4 %.
- Data Mix: HyperSim ∪ KITTI‑360 조합이 최고.
Marigold가 열어 줄 세상
- 크리에이티브: 일러스트에 즉시 parallax 효과!
- 모바일 AR: Depth Sensor 없이도 공간 인식 OK.
- 로보틱스: 합성 세계로 학습 비용↓, 안전성↑.
거대한 생성 모델에게 “그림만 그리지 말고, 거리도 재 달라”고 부탁할 날이 왔습니다.
앞으로의 로드맵
- Sampling 가속 – scheduler·distillation로 ms 단위 추론.
- Absolute Scale – self‑calibration 융합해 metric depth까지.
- 멀티태스크 – depth·normal·segmentation을 하나의 latent에서.
- On‑device Learning – 개인 데이터를 활용한 지속 보정.
맺으며
Depth는 ‘공간을 공감’하는 능력입니다. Marigold는 Art‑AI의 감각이 Geometry‑AI에도 통한다는 사실을 보여줬습니다.
“다음에 Stable Diffusion에게 풍경을 그려 달라면, 슬쩍 물어보세요. ‘그 산까지 거리는 얼마나 돼?’”
'SW > 인공지능' 카테고리의 다른 글
| Native Sparse Attention으로 64K 토큰 디코딩 속도 1.8배 올리는 법 (0) | 2025.07.01 |
|---|---|
| 코딩 초보도 할 수 있는 3가지 AI 프로젝트: 챗봇, GPT 이력서 분석, 이미지 인식 앱 (0) | 2025.07.01 |
| 스테이블 디퓨전으로 영상 만들기: 초보도 가능한 제로샷 기법 (0) | 2025.06.30 |
| Pythagora 사용법 총정리: 음성 프롬프트로 MERN 웹앱 자동 생성하는 방법 (0) | 2025.06.28 |
| Gemini 2.5 Pro 후기: 코딩 진짜 이렇게까지 잘한다고? (0) | 2025.06.23 |