논문: https://arxiv.org/pdf/2406.09414
블로그: https://depth-anything-v2.github.io/
코드: https://github.com/DepthAnything/Depth-Anything-V2
<요약>
- Monocular depth estimatino (MDE) 관련 논문
- Depth Anything의 후속 논문이고 다양한 크기의 모델와 벤치마크 데이터셋을 함께 공개
- Synthetic dataset을 활용하여 정확도를 높이고, student teacher 모델 구조를 이용하여 효율성을 높였다.
- Stable diffusion 최신 모델들에 비해 10배이상 빠르고 정확함
Related works
Monocular depth estimation (MDE)는 3D reconstruction, 네비, 자율주행 등에 활용한다.
Backbone이 되는 모델 구조에 따라 두가지로 분류가 가능하다.
1. discriminative model (BEiT, DINOv2 등)
- ex) Depth Anything
- 장점: 효율성
2. generative model (Stable diffusion 등)
- ex) Marigold
- 장점: 디테일이 좋다. 투명한 물체와 반사 등에도 효과적임.
Method
주요 아이디어는 "Real dataset에 오히려 노이즈가 많아서 안좋을 수 있다""
- 측정 센서의 부정확함 등으로 인함
- 노이즈가 없는 synthetic dataset을 이용하자.
그럼 이전 연구들은 왜 synthetic dataset을 안썼을까? Synthetic dataset은 다음과 같은 단점이 있다.
1. distribution shift
- 그래도 여전히 real world 이미지와는 차이가 있다 (style, color distribution 등)
2. restricted scene coverage
- real world의 모든 시나리오를 담지는 못한다.
그러므로 학습에 real world 데이터는 반드시 사용해야 한다.
이를 해결하기 위해 다음과 같은 student teacher 모델 구조를 활용한다.
1. High-quality synthetic image로 teacher model을 학습한다.
- Generalization 성능이 높고 사이즈가 큰 DINOv2-G를 사용했다.
2. Teacher model을 이용해 real image의 pseudo depth label을 제작한다.
3. 이 Pseudo-labeled real image dataset을 이용해 student model을 학습한다.
이렇게 하면 다양한 사이즈의 모델을 이용해 효율성을 높이면서도 정확도가 높은 MDE 모델들을 학습시킬 수 있다.
Results
정성적 비교 결과 (위는 전작인 Depth Anything V1과 비교, 아래는 SD 기반의 Marigold와 비교)
느낀점
- DINOv2-G로 synthetic dataset에 대해 학습했을 때의 문제점 중 하나는 일부 real world data에 대해 추론 성능이 떨어지는 것이었다. 그런데 이 모델로 real world data에 대한 synthetic label을 만들어 student model을 학습시킨건데 그러면 pseudo-labeled real word dataset에도 이 문제가 고스란히 전달되는것 아닌지.. 극히 일부라 괜찮았던 것일까?