[arXiv 2025] Distill Any Depth: Distillation Creates a Stronger Monocular Depth Estimator

안녕하세요, 73번째 x-review 입니다. 이번 논문은 2025년 arXiv에 올라와 있는 Distill Any Depth라는 논문 입니다.

그럼 바로 리뷰 시작하겠습니다 !

1. Introduction

Monocular Depth Estimation(MDE) 중에서 zero shot MDE는 여느 task에서와 마찬가지로 중요하게 여겨지는데, 이러한 모델은 많은 depth 데이터가 필요하여 수집하기 어렵다는 한계가 있습니다. 이를 해결하기 위해서 라벨이 없는 데이터를 활용하는데, DepthAnything이 대표적인 사례로, teacher 모델이 생성한 psuedo 라벨을 이용해서 student 모뎅를 학습하여 효과를 봤습니다. 이렇게 서로 다른 종류의 데이터가 합쳐진 대규모의 데이터셋으로 학습을 하기 위해서 많은 최신 연구들은 scale-and-shift invariant(SSI) depth 표현을 loss 함수에 포함을 하고 있습니다. 왜냐하면 다양한 센서로 찍었기 때문에, 원본 depth 값을 정규화하여 depth 값이 전체적으로 스케일 변화나 shigt 되는 경우에도 영향을 받지 않도록 만들어줘야 합니다. 이렇게 하면 모델은 절대적인 depth 값보다는 상대적인 depth 관계에 집중해서 학습할 수 있습니다.

그런데 SSI는 pseudo 라벨 distillation에 적용하게 되면 몇가지 문제가 발생하게 됩니다. SSI loss의 정규화 과정에서 특정 픽셀에서의 depth 예측은 teacher 모델이 그 픽셀에서 가지고 있는 raw 값에만 의존하는게 아니라, 이미지의 다른 모든 영역의 depth 값에도 영향을 받게 됩니다. pseudo 라벨에는 어쩔 수 없이 노이즈가 포함되어 있는데, 특정 영역은 정확하게 예측했더라도 다른 위치는 부정확한 예측이 발생할 수 있어서 전체 이미지 레벨에서의 global 정규화를 하게 되면 정확했던 영역 조차도 정확도가 떨어지는 경우가 발생합니다. 이런 SSI의 특징이 distillation 결과에서는 최적의 결과를 내지 못하게 되는 것이죠.

실제 위 Fig.2에서 보면, global 정규화를 적용한 depth map이 로컬한 지역에 대해 정규화를 적용한 것보다 정확도가 떨어지는 것을 보여줍니다. 즉 정규화를 글로벌하게 하는 대신에 로컬 단위로만 적용했을 때 특정 픽셀 영역의 depth 예측 정확도가 더 높다는 것을 보여주는 것 입니다.

이러한 결과를 기반으로 본 논문에서는 pseudo label distillation 과정에서의 depth 정규화 문제를 다룹니다. 글로벌 정규화, 로컬 정규화, 또는 하이브리드 정규화 등 다양한 depth 정규화 방식을 분석하였다고 합니다.

또한 cross context distillation이라는 방식을 제안하는데, 이는 글로벌 depth 정보와 로컬 depth 정보를 동시에 활용하여 pseudo 라벨의 퀄리티를 향상시키는 방식 입니다. 로컬한 영역 단위로 distillation을 수행할 경우에 더 정확한 depth 정보를 포함한 pseudo 라벨을 생성할 수 있고 이를 통해 student 모델의 depth estimation 성능이 향상되는 것을 확인하였다고 합니다. 그러나 로컬 영역만 사용하면 이미지의 글로벌한 맥락적 정보를 놓칠 수가 있죠. 그래서 본 논문에서는 distillation 프레임워크 안에서 두 정보를 모두 활용하고자 하였습니다. 이 때 두 정보를 더욱 잘 활용하기 위해서 diffusion 기반의 모델을 teacher assistance로 사용하여 pseudo 라벨을 생성하여 이를 student 모델 학습에 사용하였습니다.

이러한 본 논문의 main contribution을 요약하면 다음과 같습니다.

  1. pseudo 라벨 distillation 과정에서 다양한 depth 정규화 방식이 미치는 영향에 대한 분석
  2. pseudo 라벨의 퀄리티를 높이기 위해 cross context distillation 프레임워크를 제안하고, 이 때 diffusion을 teacher assistant로 활용
  3. 다양한 벤치마크 데이터셋에서 SOTA 달성

2. Method

2.1. Depth Normalization

Global Normalization

먼저 글로벌 정규화는 이미지 전체를 하나의 집합으로 보고, 전체 depth 값에 대한 대표값을 이용해서 depth를 정규화하는 방식 입니다. 이러한 정규화는 depth 값이 몇 배씩 커지거나(scale invariance)와 depth 값이 일정하게 더해져도(shift invariance) 관계가 없도록 하는 것을 목표로 합니다.

각 픽셀 i에 대해서 student 모델이 예측한 d^s_i와 teacher 모델이 생성한 pseudo depth d^t_i를 식(1)과 같이 변환할 수 있습니다.

  • med(d^s), med(d^t) : student, teacher depth map의 중앙값

중앙값을 빼는 이유는 shift를 보정하기 위함이고, 분모인 평균 절대 편차는 스케일을 보정하기 위함 입니다. 이렇게 나온 두 depth map은 전체 이미지의 분포를 표준화할 수 있는 것이죠.

그렇게 정규화된 두 depth map에 대해 loss는 식(2)와 같이 계산할 수 있습니다.

각 픽셀별로 depth 값을 계산하여 상대적인 depth 관계를 학습하게 되는데, 이를 통해 데이터셋이나 teacher 모델의 스케일 편차가 있더라도 학습을 안정적으로 할 수 있습니다.

그렇지만 이런 글로벌 정규화는 한 픽셀의 depth 차이가 이미지 전체의 depth 분포에 의해 영향을 받게 됩니다. 특정 영역의 depth 값이 정확하더라도 다른 영역의 값에 따라서 전체 정규화가 틀어져 예측에 좋지 않은 영향을 미칠 수 있는 것이죠.

Hybrid Normalization

하이브리드 정규화는 위의 글로벌 정규화의 문제를 해결하기 위해 글로벌 구조를 유지하면서도 로컬한 영역의 구조도 보존할 수 있도록 설계된 방식 입니다.

우선 depth 범위를 여러 구간으로 나눈 다음, 각 구각 내에서 별도로 정규화를 수행합니다. 이렇게 하면 depth 값이 비슷한 영역끼리는 더 정확하게 보정되고 전체 맥락적인 정보를 유지할 수 있습니다.

이 때 구간을 나누는 방법은 depth 범위를 몇 개로 나눌지 S를 통해 결정합니다.

S가 1이면 depth 범위를 하나로 취급해서 사실상 글로벌 정규화와 동일하고, 2라면 depth 범위를 두 개로 나누어 가까운 영역와 먼 영역을 구분하거나 할 수 있습니다. 마지막으로 S가 4인 경우는 4개의 구간으로 나누어져 좀 더 세밀하게 영역이 구별됩니다. 이런 식으로 몇 개로 나눌 지를 결정하여 depth 값이 비슷한 영역끼리 정규화가 될 수 있도록 하여 로컬한 구조를 보존할 수 있도록 합니다.

여기서 나누어지는 각 구간을 하나의 context로 취급되는데요, 특정 픽셀 i는 어떤 특정 구간, 혹은 여러 개의 구간에 속하게 됩니다. 여러 구간에 속할 수 있는 이유는 단일 레벨의 분할이 아니라 계층적 분할이기 때문 입니다. 예를 들어 depth가 0.3인 픽셀은 전체 집합인 S=1 케이스와 중간 레벨인 S=2인 케이스에도 속할 수 있는 것이죠.

이 때 픽셀이 속한 각 context별로 정규화를 하는데, student 모델과 teacher 모델의 depth 값을 각 구간 별로 따로 정규화를 하는 것이죠.

정규화한 후에 각 픽셀에 대한 loss는 식(3)과 같이 정의합니다.

  • \mathcal{N}_u(d^s_i), \mathcal{N}_u(d^t_i) : student, teacher 모델에 대한 정규화된 depth 값
  • U_i : 픽셀이 속한 context 집합
  • |U_i| : 픽셀이 속한 context 개수 (일반적으로 1이지만 겹치는 context가 있을 수 있습니다.)

각 픽셀에 대해서 식(3)과 같이 계산되면 전체 loss는 식(4)와 같습니다.

이렇게 하이브리드 정규화는 글로벌 구조와 로컬한 구조를 함께 보존할 수 있도록 설계한 방식 입니다.

Local Normalization

이제 로컬 정규화인데요, 하이브리드 정규화와 다르게 로컬 정규화는 로컬 단위만 사용을 합니다. 즉 depth 범위를 4개로 나눈 상태에서 각 픽셀이 속한 하나의 작은 구간에 대해서만 정규화를 적용하는 것 입니다.

  • u_i : 픽셀 i가 속한 context

식(5)는 하이브리드 정규화와 다르게 각 픽셀이 속한 구간을 찾아서 그 구간 내에서만 depth 값 분포를 정규화하게 됩니다.

이러한 로컬 정규화는 물체의 세부적인 depth 차이를 잘 반영하지만, 전체적인 depth 정보를 잃어버릴 수 있다는 장단점이 존재합니다.

No Normalization

마지막으로 정규화를 하지 않을 수도 있는데요, 그냥 teacher랑 student의 원본 depth 값을 그대로 비교하는 것 입니다. pseudo 라벨이랑 student가 동일한 depth 도메인에 있다고 가정하게 되기 때문에 이 가정 하에는 정규화 자체가 필요없어지는 것이죠.

이게 가정대로 들어맞는다면 불필요한 정규화로 인해 발생하는 오차를 막을 수 있겠지만, 사실 보통의 데이터셋들은 depth 스케일이 다르기 때문에 일반화가 어렵게 됩니다.

2.2. Distillation Pipeline

이제 distillation 과정에 대해 살펴보도록 하겠습니다.

여기서 저자가 문제점으로 이야기하는 것은 teacher 모델의 입력이 전체 이미지일 때와 일부 영역을 crop했을 때의 결과가 다르다는 것 입니다.

Fig.5를 보면, 전체 이미지를 입력으로 넣으면 글로벌한 구조는 잘 맞추지만 디테일에 약하고 일부 영역을 crop하면 로컬 정보는 더 잘 표현하지만 이미지의 전체적인 맥락 정보는 반영하짐 못합니다.

그래서 저자는 student 모델이 두 가지 특징을 동시에 학습할 수 있도록 모델을 설계하고자 하였습니다.

이 cross-context distillation은 크게 2가지로 나뉘어져 있습니다.

1)Shared-Context Distillation

Fig.3의 상단인 shared context distillation은 teacher와 student 모델이 동일한 크롭된 이미지를 동시에 입력 받습니다. 이 때 자르는 크기나 위치는 무작위로 바꿔가며 학습하는데, 이는 student 모델이 다양한 공간적 context를 학습할 수 있도록 하기 위함이라고 하네요.

이러한 shared-context distillation은 teacher 모델이 크롭된 영역만 보고 pseudo depth를 예측하여 세밀한 depth 정보가 잘 표현되는 pseudo label을 생성할 수 있도록 합니다. student 모델은 그럼 같은 영역을 보고 학습을 하니 해당 영역에 대해 두 모델을 1대1로 맞추는 구조가 됩니다. 이를 통해 student는 세부적인 구조를 teacher에게서 직접적으로 받을 수 있게 됩니다.

이 과정에 대한 loss 함수는 식(7)과 같습니다.

  • d^s_{local} : student 출력 depth
  • d^t_{local} : teacher 출력 depth

2)Local-Global Distillation

Fig.3의 하단 local-global distillation은 shared-context와 조금 다르게 동작합니다.

teacher 모델은 크롭 이미지를 입력 받아 depth를 예측하고, student 모델은 이미지 전체를 입력으로 받아 전체 depth를 예측합니다. shared-context와 local-global distillation을 합치면 student 모델은 목표한대로 전체 장면 구조와 세부적인 디테일을 모두 반영할 수 있을 것 입니다.

local-global distillation을 수식적으로 정의하면 식(8)과 같습니다.

  • d_{local_n}^t : crop한 이미지에 대한 예측 depth
  • d_{global}^s : 이미지 전체에 대한 예측 depth

loss 계산은 teach의 로컬 depth 예측과 student의 예측이 같은 위치, 즉 겹치는 부분에 대해서만 하게 됩니다.

위의 loss들을 포함한 최종 loss는 식(9)로 정의합니다.

  • \mathcal{L}_{feat} : feature alignment
  • \mathcal{L}_{grad} : gradient 유지

맨 마지막 항은 depth map의 gradient를 보존하여 depth 변화하여 엣지 부분이 깨지지 않도록 추가하였다고 합니다.

Assistant-Guided Distillation

마지막으로 teacher의 보조 역할을 위해 사용한다고 했던 diffusion 사용에 대한 부분 입니다.

이런 teacher 보조가 필요한 이유는 teacher 모델 하나만 사용하면 그 모델에 편향이 student에 그대로 전달될 수가 있습니다. 이를 막기 위해서 메인 teacher 모델(\mathcal{M})은 DepthAnyting V2와 같은 모델을 쓰고 assistance teacher(\mathcal{M}_a)로는 diffusion 기반의 depth 모델을 사용하였다고 합니다.

학습 때는 확률적으로 teacher 모델을 선택하는데, 한 iteration에서는 메인 teacher 결과를 사용하고, 다른 teacher 모델에서는 assistant teacher 결과를 사용합니다. 이렇게 하면 student가 한 개 모델의 편향에 영향받지 않고 두 teacher의 장점을 모두 학습할 수 있도록 합니다.

3. Experiment

distilation을 위한 데이터셋은 20만 개의 unlabeled 이미지로 구성된 SA-1B를 사용하였다고 합니다. zero shot 평가는 NYUv2, KITTI, ETH3D, ScanNet, DIODE로 진행하였습니다.

3.1. Analysis

Analysis of Normalization across Cross-Context Distillation

먼저 cross context distillation에서 depth 정규화 방식들에 대한 ablation study 입니다.

우선 shared context distilation에서는 하이브리드 정규화가 가장 좋은 성능을 보였고, 그 다음으로는 정규화가 없을 때가 효과가 있었다고 합니다. 이는 동일 teacher 모델에서 생성된 pseudo 라벨이 모두 같은 도메인에 속하기 때문에 서로 다른 데이터셋으로 학습했을 때 발생하는 정규화가 크게 필요하지 않는다는 것을 의미합니다. 반면에 글로벌 정규화는 픽셀 간에 오히려 불필요한 의존성을 형성하게 하고, 로컬 정규화는 글로벌한 구조를 무시하게 되어 성능이 하락된 것으로 분석하고 있습니다.

다음 Local-Global Distilation에서는 마찬가지로 하이브리드 정규화가 가장 좋은 성능을 달성하였습니다. 아무래도 하이브리드 정규화가 로컬과 글로벌 예측 사이의 일관성을 가질 수 있도록 설계되었기 때문이라고 볼 수 있습니다. 단 하이브리드와 글로벌 사이의 성능 차이가 크지는 않은데 이는 Local-Global distillation 구조 자체가 글로벌 정규화의 한계를 어느 정도 보완할 수 있기 때문이라고 합니다. 여기서 정규화가 없는 케이스가 shared context 때 보다 성능 저하가 크게 나타나는데, 이는 local-global distillation에서 사용되는 로컬 영역들은 서로 다른 depth 도메인을 만들기 때문에 정규화가 없으면 성능이 저하될 수 밖에 없습니다.

Ablation Study of Cross-Context Distillation

그 다음은 cross context distillation의 두 가지 구성에 대한 ablation study 입니다.

두 구성을 모두 빼면 모델은 일반적인 distillation 세팅이랑 비슷해지며 성능이 크게 저하되는 것을 알 수 있습니다. 두 구성을 각각 추가해도 성능 향상이 크게 나타나며 최종적으로 두 구성을 모두 합쳤을 때 가장 좋은 성능을 보입니다. 이는 각 구성들도 목적으로 하는 일관된 맥락 정보 유지 및 디테일한 영역에 대한 표현력 등을 가지고 있지만 두 개를 함께 사용할 때 가장 최적의 성능을 낸다는 것을 보이고 있습니다.

Effect of Assistant-Guided Distillation

다음은 assistant로 사용한 diffusion 모델에 대한 실험 결과 입니다.

assistant guided 방식은 두 가지인데요, 먼저 Tab.4에서 Avg.는 두 teacher 모델의 출력이 유사할 수록 높은 가중치를 주어 평균을 계산하는 방식 입니다. 이는 teacher 간에 불일치가 있을 경우에 평균을 내는 과정에서 오류가 커질 수도 있기 때문에 성능적으로 봤을 때도 상대적으로 좋지 않은 것을 알 수 있습니다. 반면 Select는 각 학습 iteration마다 확률적으로 하나의 teacher 모델을 선택하여 pseudo 라벨을 사용하는 것 입니다. 특정 teacher에 대한 의존도를 줄이면서 선택적으로 학습을 하기 때문에 실험적으로 봐도 teacher마다의 개별적 성능이나 Avg 보다도 큰 폭으로 성능이 향상 됩니다.

이를 통해 보조적인 teacher 모델을 사용하면서, 선택적인 pseudo 라벨을 사용하는 방식이 student 모델의 depth 예측 성능 향상에 도움이 되는 것을 알 수 있습니다.

2.3. Comparison with State-of-the-Art

Quantitative Analysis

Tab.5는 zero shot depth estimation 벤치마크에서 SOTA 성능을 달성한 것을 보여줍니다.

Ours에서 첫번째는 MiDAS를 사용하고, 두번째는 Depth Anything v2를 사용합니다.

각각 student 모델은 해당하는 teacher 모델의 사전학습된 인코더로 초기화하고, teacher가 생성한 pseudo 라벨을 사용하여 distillation 학습을 수행하였습니다.

결과적으로 봤을 때 본 모델이 teacher 자체 모델들 대비 일관되게 향상된 성능을 보이고 있습니다. 이러한 결과를 통해 스케일과 depth 데이터의 분포가 다르더라도 적용이 가능하며 student 모델이 teacher를 넘기는 성능을 달성할 수 있음을 보여주고 있습니다.

결국 특정 모델이나 데이터셋에 국한되는게 아니라 범용적으로 사용 가능한 일반화된 성능을 보인다는 것을 어필하고 있습니다.

Author: 손 건화

3 thoughts on “[arXiv 2025] Distill Any Depth: Distillation Creates a Stronger Monocular Depth Estimator

  1. 안녕하세요.

    리뷰 내용 중에 “학습 때는 확률적으로 teacher 모델을 선택하는데, 한 iteration에서는 메인 teacher 결과를 사용하고, 다른 teacher 모델에서는 assistant teacher 결과를 사용합니다.” 라는 글이 이해가 잘 안돼서요. 한 iteration에서는 메인 teacher(DAv2)를 사용한다는 것은 이해했는데 그 뒷문장이 조금 앞문장이랑 안맞는 것 같은데 혹시 다른 teacher 모델이 아니라 다른 iteration을 말씀하려고 했던건가요? 한 iteration에서 DAv2랑 Diffusion Depth model 둘 중 하나가 어떻게 골라져서 사용되는지 잘 모르겠어서 질문드립니다.

    감사요.

  2. 안녕하세요, 좋은 리뷰 감사합니다.
    local-global distillation 식(8)은 teacher의 로컬 depth 예측과 student 예측이 같은 위치에 대해서만 한다고 말씀해주셨는데, 이게 지금 crop된 영역에 대해서는 위치가 어디인지를 어떻게 알게 되나요 ? crop되는 위치가 어디인지에 대해서는 crop될 때 마다 이미지와 같이 정보가 넘어가는건지 궁금합니다.
    감사합니다.

  3. 안녕하세요 건화님 좋은 리뷰감사함다.

    한가지 궁금한것이…
    Hybrid Normalization 통해서 구간을 나누는데 말씀하신 depth 가 0.3인 픽셀은 context가 겹쳐서
    어떻게 처리가 되는지 와닿지않아서 질문드립니다..

Leave a Reply

Your email address will not be published. Required fields are marked *