성장通

[Paper Review] Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data 본문

리뷰/논문 리뷰

[Paper Review] Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data

백악기작은펭귄 2024. 3. 3. 23:20

Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data

Yang, L., Kang, B., Huang, Z., Xu, X., Feng, J., & Zhao, H. (2024). Depth anything: Unleashing the power of large-scale unlabeled data. arXiv preprint arXiv:2401.10891.


Abstract

 

이 논문은 단안 깊이 추정(Monocular Depth Estimation)을 위한 Foundation Model로써 'Depth Anything'을 제시한 논문이다. 새로운 기술 모듈을 추구하지 않고 비교적 심플한 아키텍처를 사용했음에도 불구하고 강력한 성능을 보이고 있는 모델이며, 별도의 추가 학습 없이 다양한 태스크에 사용할 수 있는 가능성을 열었다.

 

이 논문에서는 1.5M labeled images 뿐만 아니라 pseudo label을 추가하는 데이터 엔진을 사용하여 62M+ unlabeled images를 적극 활용하였으며, Semantic Segmentation 모델을 보조 모델로 사용함으로써 전반적인 성능을 개선하였다.

 

개인적으로 이 논문과 같이 이미 알려진 강력한 아키텍처를 바탕으로 유기적인 시스템을 설계하는 방식을 굉장히 매력적이라고 생각하기에 리뷰 대상으로 선정하였다.


Learning Labeled Images

앞에서도 언급하였듯이, 해당 시스템은 labeled images와 unlabeled images를 모두 이용한다. 먼저 labeled images를 이용하여 Teacher model $T$를 학습하는데, 이때 저자들은 기존의 SOTA 모델이었던 MiDaS에서 제안한 데이터셋 중 저품질의 데이터셋을 제외한 후 pretrained-segmentation 모델을 이용해 이미지에서 '하늘'을 인식하고 그 깊이를 무한대(disparity=0)로 설정하여 labeled dataset을 구축하였다. 또한, Teacher model $T$의 성능을 극대화하기 위해 DINOv2의 pretrained weights를 사용하여 인코더를 initialize 하였다.

 

이 논문에서 labeled images는 $\mathcal {D}_l$ 로 표현되며 이는 입력 이미지 $x_i$와 그에 대응되는 depth map $d_i$의 pair로 구성된다.

 

$$
D_l = {(x_i,d_i)}^M_{i=1}
$$

 

이때 깊이 값(depth value)은 다음 공식을 통해 disparity space로 transform 된다.

 

$$
d = {1\over t}
$$

 

여기서 $d$는 disparity, $t$는 depth를 의미한다.

disparity스테레오 비전에서 두 카메라가 보는 같은 장면의 이미지에서 동일한 특징이나 객체의 이미지 점 위치가 얼마나 다른지를 나타내는 척도이다. disparity 값은 픽셀 단위로 측정되며, 깊이의 역수 값이다. 즉, 객체가 카메라에 가까울수록 값이 커지고, 객체가 멀어질수록 값이 작아진다.


이와 같은 관계는 3D 컴퓨터 비전에서 스테레오 매칭과 깊이 추정을 수행할 때 매우 중요하다. 이 관계를 이용하여 깊이 정보를 disparity space로 변환하면 disparity 값의 변화를 통해 깊이 정보를 더 정확하게 추론할 수 있다.

 

이렇게 변환된 값은 다시 0과 1 사이 값으로 정규화된다.

 

해당 논문에서 저자는 다양한 source로부터 수집된 데이터셋을 학습에 이용했는데, 이때 각 데이터셋 간의 scale 차이와 shift는 학습에 악영향을 미칠 수 있다. 이에 이들은 이러한 문제를 해결하기 위해 Affine-invariant Loss를 사용하였다.

 

$$
L_l = {1\over HW}\sum^{HW}_{i=1}\rho(d_i^*,d_i)
$$

 

여기서 $d^*_i$와 $d_i$는 각각 predicted disparity와 ground truth disparity를 의미한다. $\rho$는 affine-invariant mean absolute error loss를 의미하며 다음과 같이 계산된다.

 

$$
\rho(d^*_i, d_i)=\hat{d^*_i}-\hat{d_i}|
$$

 

보통 hat은 predicted 값을 의미하는 경우가 많은데, 여기서는 각 값이 동일한 scale과 zero translation으로 scaled & shifted 된 값이다.

 

$$
\hat{d_i} = {d_i-t(d)\over s(d)}
$$

 

$$
t(d) = median(d),\ s(d)={1\over HW}\sum^{HW}_{i=1}|d_i - t(d)|
$$

 

Unleashing the Power of Unlabeled Images

Depth Anything의 핵심은 unlabeled images를 학습에 적극 활용했다는 점이다.

대규모의 공개된 Unlabeled dataset 이용

 

이 과정에서는 앞서 labeled images로 학습된 모델 $T$ 에 unlabeled images를 입력하여 pseudo labeled set을 생성한다.

 

$$
\hat{\mathcal{D}}^u = {(u_i, T(u_i))|u_i\in \mathcal{D}^u}^N_{i=1}
$$

 

이 pseudo labeled set은 모델의 generalization 능력을 향상시키기 위해 labeled set과 함께 Student Model $S$를 학습시키는 데에 사용된다.

 

하지만 단순히 unlabeled set을 추가하는 것은 성능의 향상을 가져오지 못했고, 이에 저자들은 augmentation과 re-initialization을 활용하여 더 어려운 최적화 목표를 $S$에게 부여하는 방식으로 성능 개선을 이루어냈다.

 

좀 더 구체적으로는, 모델이 unlabeled data로부터 더 잘 배울 수 있도록 Color jittering, Gaussian blurring과 같은 strong color distortion을 주었으며 추가로 CutMix와 같은 spatial distortion을 추가하여 강한 perturbation을 주었다.

 

CutMix는 일반적으로 Imge classification에서 주로 사용되는 augmentation 기법으로, 두 이미지의 일정 부분을 binary mask $M$만큼 잘라서(Cut) 섞는(Mix) 기법이다.

$$
u_{ab} = u_a \odot M + u_b \odot (1 − M)
$$

 

Unlabeled loss는 $\mathcal {L}_u$ 는 CutMix augmentation에서의 binary mask $M$에 대해 $M$과 $1-M$에 각각 Affine-invariant loss를 계산한 후 이를 weighted sum 하여 최종적으로 계산되었다.

 

$$
\mathcal{L}^M_u = \rho(S(u{ab})\odot M, T(u_a)\odot M)
$$

 

$$
\mathcal{L}^{1-M}u = \rho(S(u{ab})\odot (1-M), T(u_a)\odot (1-M))
$$

 

$$
\mathcal{L}_u = {\sum M\over HW}\mathcal{L}^M_u + {\sum (1-M)\over HW}\mathcal{L}^{1-M}_u
$$

 

이때 이러한 perturbation은 $S$의 학습 과정에만 적용되었으며 $T$에 unlabeled images를 입력하여 pseudo labeled set을 만드는 과정에는 적용되지 않았다.

 

또한, 일반적인 fine-tuning 과정과 달리 S를 re-initialized 시켰는데 이러한 과정을 통해 해당 모델은 더욱 도전적인 최적화 목표를 가지게 되어 더 복잡하고 어려운 패턴을 학습하게 되어 결과적으로 성능의 개선이 이루어질 수 있었다고 한다.

 

Semantic-Assisted Perception

Depth estimation 성능을 더욱 끌어올리기 위해, Depth Anything은 DINOv2와 같은 모델의 Semantic-aware 능력을 활용하여 Semantic Segmention을 보조 태스크로 사용하였다.

 

추가적인 Semantic 정보를 제공하고 pseudo label의 noise에 대처하기 위해 추가 인코더 사용

 

이는 다음과 같은 feature alignment loss를 사용함으로써 수행되었다.

 

$$
\mathcal{L}{feat} = 1-{1\over HW}\sum^{HW}{i=1} cos(f_i, f_i')
$$

 

여기서 $f_i$와 $f_i'$는 각각 depth model S와 가중치가 고정된 DINOv2 인코더(DINOv2의 성능이 강력하기 때문에 fine-tuning 없이 고정된 DINOv2 인코더를 사용했음에도 성능이 크게 향상됨)로부터 얻어진 feature vector이며 두 feature vector 간 cosine similarity가 계산되어 loss를 계산하기 위해 이용되었다.

 

다만, Semantic segmentation task에서는 물체의 서로 다른 부분에 대해 동일한 feature를 생성하는 경향이 있는데, 이는 Depth estimation에서는 알맞지 않은 특성이다. 따라서 논문 저자들은 torlerace margin $\alpha$를 설정함으로써 두 feature vector 간 cosine similarity가 $\alpha$를 초과하면 $\mathcal{L}_{feat}$의 계산에 포함하지 않았다.

 

이러한 방식으로 저자들은 모델이 rich semantic information을 가지고 depth prediction을 align 하도록 하였으며, 더욱 강건하고 정확한 depth estimation을 할 수 있도록 하였다. 부가적으로, 학습된 인코더는 depth estimation과 같은 middle-level perception task는 물론 semantic segmentation과 같은 high-level perception task에 대해서도 높은 성능을 보임으로써 universal 한 multi-task encoder로써의 가능성 또한 보여주었다.

 

최종 loss는 앞서 계산된 세 가지 loss인 $\mathcal{L}_l$, $\mathcal{L}_u$, $\mathcal{L}_{feat}$의 average combination으로 계산된다.


Results

해당 논문은 어떤 이미지에서든 강건한 Depth Estimation을 수행하기 위한 Foundation Model을 제시하였다. 이에 저자들은 6개의 unseen dataset인 KITTI, NYUv2, Sintel, DDAD, ETH3D, 그리고 DIODE에 대해 그 성능을 검증하였다. 각 실험에 사용된 인코더ViT-L이 사용되었으며 디코더로는 MiDaS v3.1에서 사용된 $DPT-BEiT_{L-512}$를 사용했다. 다음은 그 실험 결과이다.

실험 결과 Depth Anything은 AbsRel(absolute relative error: $|d^*-d|/d$) 및 δ1(max($d^*/d$, $d/d^*$)<1.25의 비율)에 대하여 가장 강력한 MiDaS 모델을 능가하는 성능을 보였다.

위에서부터 차례로, 입력 이미지, output depth map, 그리고 depth map을 입력으로 한 합성 이미지

 

Conclusion

이 논문은 Monocular Depth Estimation 분야에서 강력한 Foundation Model을 만들고자 하였다. MDE는 하드웨어의 제약이 있는 환경에서 Stereo Depth Estimation에 비해 더욱 쉽게 활용 가능하며 두 장의 이미지를 동시에 processing 하지 않고 단일 이미지만을 처리하기 때문에 계산 요구량이 많지 않아 계산에 드는 cost가 적어 매우 중요한 연구 주제 중 하나이다. 이에 별도의 재학습이 필요 없는 거대 모델을 제시하였다는 점은 상당히 주목할만하다.

 

하지만 (내 선호와는 별개로) 저자들만의 특별한 Novelty가 부족하며 여러 기믹들에 대한 명시적인 영향도의 해석이 부재했다는 점이 다소 아쉬운 점으로 남는다. 또한 대규모의 unlabeled dataset을 사용하는 과정에서 잠재적인 bias가 있을 수 있다고 생각되며 이를 명시적으로 검증하였다면 더욱 좋은 논문이 되었을 것이라는 아쉬움 또한 있다.

 

References

[1] https://depth-anything.github.io/

[2] https://learnopencv.com/depth-anything/ 

[3] https://ostin.tistory.com/404