논문 리뷰

UniDepth: 일반화된 Monocular Metric Depth Estimation!

dohyeon2 2024. 11. 20. 11:20

목차

    안녕하세요 윤도현입니다. 오늘 소개할 논문은 2024년 ICCV에 개제된 UniDepth: Universal Monocular Metric Depth Estimation 일명 UniDepth 이라는 논문입니다.
    논문 소개에 앞서 초창기 Monocular Depth Estimation 방법들은 단안 카메라에서 획득된 RGB 이미지만으로 Depth Map을 얻을 수 있었습니다. 하지만 이렇게 얻어진 Depth Map의 각 픽셀에 저장되는 Depth Value는 하나의 이미지 안에서 각 물체끼리의 상대적인 거리를 나타내는 Relative Value(상대적인 값)만을 얻을 수 있는 한계가 존재하였습니다. 그래서 최근 Monocular Metric Depth Estimation 일명 MMDE라는 방법이 제안되었습니다. Metric Depth Estimation은 기존의 상대적인 깊이 추정 방법과 달리 실제 거리 단위(예: 미터)로 표현된 깊이 값을 제공합니다. 그래서 어떻게 삼각측량법이나 다른 깊이센서 없이 실제 거리정보를 획득하는지 알아보고자 논문을 리뷰하게 되었습니다.

    1. Introduction

    • 기존 MMDE는 train과 test에 사용된 데이터셋이 유사한 카메라 내부 파라미터와 장면 스케일값을 가질 경우에만 좋은 성능을 보여주었습니다.
    • 또한 학습 데이터셋의 크기가 작고 장면(상황)과 카메라의 다양성이 부족했기 때문에, real-world inference에서 일반화 성능이 떨어지는 문제점이 있었습니다.
    • 이러한 일반화 성능이 떨어지는 문제를 해결하고자 본 연구에서는 외부 정보(카메라 파라미터)에 의존하지 않고 일반화가 가능한 MMDE 모델을 제안합니다.
    • 본 눈문에서 제안하는 UniDepth는 학습 데이터셋의 장면 구성이나 카메라 설정에 대한 제약 없이(학습 데이터에 없는 장면과 새로운 카메라로 촬영한 이미지에서도 제약 없이!!) 단일 이미지만으로 Metric Depth Estimation이 가능한 최초의 일반화 모델입니다.

    2. Related Works

    앞서 Monocular Depth Estimation은 상대적 거리를 구할 수 있는 방법과 절대적 거리를 구할 수 있는 방법으로 나뉜다고 설명드렸습니다.
    2.1 Relative Depth Estimation vs Metric Depth Estimation

    • MiDas, OmniData, LeReS와 같은 Relative Depth Estimation 모델들은 대규모 데이터셋에서 학습 되었기 때문에 뛰어난 일반화 성능을 보여주었습니다.
    • 그러나 절대적 거리가 아닌 상대적 거리를 제공했기 때문에 실제 로봇이나 자율주행 등에서 활용되기에는 한계점이 명확했습니다.
    • 이러한 문제점을 해결하기 위해 절대적 거리를 구할 수 있는 Metric Depth Estimation이 제안되었습니다.
    • 최근 나온 Sota Metric Depth Estimation 모델들은 주로 동일한 도메인 내에서 학습과 테스트가 이뤄졌습니다.
    • 따라서 훈련 시나리오에 과적합(overfitting)되는 경향이 있었고, 이미지의 도메인이 약간만 달라져도 성능저하가 발생하였습니다.

    UniDepth 이전에도 Metric Depth Estimation 모델의 일반화 성능을 높이기 위한 다양한 연구들이 이뤄져 왔습니다. 그렇다면 기존 일반화된 Monocular Metric Depth Estimation은 어떤식으로 이루어졌을까요?
    2.2 General Monocular Metric Depth Estimation

    • 최근에는 다양한 도메인에서 일반화 가능한 MMDE 모델을 개발하기 위해 주로 카메라 인식(camera awareness)을 활용하였습니다.
    • 예를들어, 카메라 외부 파라미터(Extrinsic Matrix)를 직접 계산에 포함하거나 내부 파라미터(Intrinsic Matrix)를 기반으로 깊이를 정규화한다거나, 기하학적 특징(가까운 객체는 더 크게 보이고, 먼 객체는 더 작게 보인다와 같은!!)을 학습하거나 데이터셋 특화 사전 정보(데이터셋에 등장하는 자동차나 사람의 평균 크기를 사전에 모델이 알도록 설정)를 사용합니다.
    • 이렇게 기존의 일반화된 MMDE 모델들은 성능을 높이기 위해서 추가적인 정보들이 필요했습니다.
    • 반면 본 논문에서는 이러한 추가 정보 없이 단일 RGB 이미지만으로 3D 정보를 직접 예측하는 방법을 제안합니다.

    3. UniDepth

    fig 1. Model Architecture

     

    3.1 3D Representation(for 카메라 요소와 깊이 요소 분리)

    • 단일 이미지만으로 3D 정보를 예측하기 위해 Depth와 Camera Intrinsic matrix 두가지를 예측합니다.
    • 본 논문에서는 이를 위해 3D 출력 공간을 Depth Estiation과 Camera Calibration 두가지 task로 분리하였습니다.
    • 본 논문에서는 데카르트 좌표계(X,Y,Z) 대신 방위각, 고도각, 로그 깊이로 이루어진 가상의 구형 좌표계(θ, ϕ, zlog)를 활용합니다.

    방위각과 고도각?
    방위각은 카메라를 기준으로 픽셀이 위치한 수평방향 각도를 나타냅니다. 0˚는 카메라의 정면, 동쪽은 90˚, 남쪽은 180˚, 서쪽은 270˚로 표현됩니다.
    고도각은 카메라를 기준으로 픽셀이 위치한 수직방향 각도를 나타냅니다. 카메라 원점을 기준으로 수직으로 위쪽은 +, 수직으로 아래쪽은 -로 표시됩니다.

    방위각(Azimuth)과 고도각(Altitude)

    Reference
    Horizontal coordinate system

    • 이러한 가상의 구형 좌표계의 장점은 카메라(θ, ϕ)요소와 깊이(zlog) 요소를 분리할 수 있다는 점입니다.
    • 또한, 이 3D 출력 공간에서는 수학적으로 식 1과 같이 텐서 형태로 표현될 수 있습니다.

    식 1. 비매개변수 표현식

    매개변수 표현과 비매개변수 표현?
    : 본 논문에서 말하는 매개변수 표현은 카메라 Intrinsic Matrix(fx, fy, cx, cy, skew)를 말하고,
    비매개변수 표현은 입력 이미지의 모든 픽셀마다 방위각과 고도각 값을 저장하여 카메라의 모든 픽셀에 대해 dense(밀집)한 표현을 말합니다. 저자는 논문에서 이러한 비매개변수 표현은 수학적으로 텐서 형태로 식 1과 같이 표현될 수 있다고 설명하였습니다.

    C: 카메라 비매개변수 표현, 각 픽셀에 방위각과 고도각 값이 저장된 텐서
    R: Real Number Space(실수 공간), 카메라의 방위각과 고도각은 일반적으로 연속적인 각도로 표현되므로 실수 공간에서 정의 해야 함
    H: 이미지의 height 크기
    W: 이미지의 width 크기

     

    3.2 Self-Promptable Camera(for 단안카메라의 스케일 모호성 해결)

    fig 2. Camera 모듈과 Depth 모듈의 역할

    • UniDepth 모델을 살펴보면 크게 Camera Module과 Depth Module로 이루어진 것을 확인할 수 있습니다.
    • 여기서 Camera Module은 output으로 3D 출력 공간에서 방위각과 고도각 정보를 임베딩한 Camera Embedding을 제공합니다.
    • Camera Ebedding을 계산하는 방법은 다음과 같습니다.
      1. 핀홀 카메라 모델을 기반으로 초점거리(fx,fy), 주점(cx,cy) 초기화합니다.

                이때 W,H는 각각 이미지의 가로 세로 크기 입니다.
           2. 초점거리와 주점이 학습과정에서 업데이트 될 수 있도록 잔차 추가

                여기서
           3. 역투형(Backprojection)과 방위각 및 고도각 계산
             학습된 카메라 내부 파라미터(fx, fy, cx, cy)를 사용하여 이미지의 각 픽셀 좌표를 3D 공간상의 ray로 변환하고 이를 통해 각 광선이 가리키는 방향을 바탕으로 방위각과 고도각 계산

    • 이렇게 얻어진 임베딩(=방위각, 고도각 정보)을 깊이 모듈에 프롬프트로 제공하여 깊이 모듈에서 각 픽셀이 3D 공간상에서 어디에 위치해야 하는지 추론할 수 있는 기하학적 사전지식을 제공합니다.
    • 이로인해, 깊이 모듈은 스케일 정보를 따로 학습하지 않아도 카메라 모듈에 의해 간접적으로 스케일 정보를 얻을 수 있습니다.
    • 결과적으로 본 논문에서 저자는 Camera Module로 Monocular Depth Estimation의 Scale Ambiguity 문제를 해결하였습니다.

     

    3.3 Geometric Invariance Loss(for 동일한 장면이 다양한 카메라 설정에서도 일관된 3D 표현을 유지)

    fig 3. Geometric Augmentation

    • 깊이 모듈은 동일한 장면을 서로 다른 카메라로 촬영하더라도 동일한 깊이값를 얻어야 합니다.
    • 그러나 현실적으로 서로 다른 카메라 Intrinsic Matrix를 사용하면 동일한 픽셀이더라도 다른 3D 위치에 매핑될 수 있습니다.
    • 이렇게 동일한 픽셀끼리도 카메라 설정값에 따라 3D 위치가 차이나는 문제를 해결하기 위해 저자는 Geometric Invariance Loss를 제안합니다.
    • Geometric invariance Loss는 각기 다른 카메라 매개변수에서 얻어진 깊이값을 비교하며, 동일한 3D 위치를 얻도록 모델을 학습시킵니다.
    • Geometric Invariance Loss는 서로 다른 기하학적 증강(geometric augmentations)이 적용된 동일한 장면의 깊이 특징 간의 차이를 계산하기 위해 사용되었습니다
    • 방법은 다음과 같습니다.
    • 먼저, 각 이미지에 대해 N개(논문에서 N=2)의 서로 다른 기하학적 증강을 수행합니다.

    식 2. Geometric Invariance Loss

    : 카메라 프롬프트 Ei에 조건화된 깊이 특징 (3.2절에 설명됨).
             sg: Stop-Gradient Detach 연산으로, D2 | E2를 의사-정답(pseudo ground truth)으로 사용하기 위해 필요합니다.

    • 이후 서로 다른 증강 조건에서도 양쪽 방향에서의 결과가 일치하도록 양방향 손실을 계산합니다.
    양방향 손실이란? 
    :양방향 손실은 두 데이터 간의 일치성을 계산하는 손실 함수로, 두 방향에서 모두 계산되어 결과를 결합합니다. 예를 들어:
    첫 번째 방향: A를 기준으로 B를 예측하고, 이를 기반으로 손실을 계산.
    두 번째 방향: B를 기준으로 A를 예측하고, 이를 기반으로 손실을 계산.
    이 두 손실 값을 합하거나 평균내어 최종 손실을 계산합니다.
    식 3. 양방향 손실

     

    3.4 Network Design


    UniDepth 네트워크는 인코더 백본, 카메라 모듈, 깊이 모듈로 구성됩니다.

     

    3.4.1 인코더

    • 인코더는 CNN based backbone, ViT based backbone으로 설계될 수 있으며 multi-scale feature를 생성합니다.

    3.4.2 카메라 모듈

    • 카메라 모듈은 CNN based backbone에서 풀링된 feature map을 사용하고, ViT based backbone에서 class tokens으로 초기화됩니다.
    • 인코더에서 생성된 특징 F는 카메라 모듈로 전달되고, 여기서 class tokens은 카메라 파라미터를 초기화하는데 사용됩니다.
    • 특징 F는 카메라 모듈에서 밀집 카메라 표현 C(카메라의 방위각, 고도각을 포함한 픽셀정보)로 변환됩니다.
    • 밀집 카메라 표현 C는 SHE(Spherical Harmonic Embedding)기법을 통해 카메라 임베딩 E로 변환되고 깊이 모듈의 Cross Attention 블록으로 전달됩니다. 

    3.4.3 깊이 모듈

    • 첫째, 초기 잠재 특징(Latent Feature)은 인코더에서 생성된 FB 차원에 대해 평균을 취해 계산됩니다.
    • 둘째, 카메라 임베딩 E에 의해 조건화된 깊이 특징 D|E가 생성됩니다.
    • 셋째, 깊이 특징은 self-attention 레이어를 통해 다중 스케일 출력을 생성합니다.
    • 넷째, 로그 깊이 예측은 다중 스케일 출력의 평균값으로 계산됩니다.
    • 최종 3D 출력값 O는 예측된 광선 C와 깊이 Z를 연결하여 생성합니다.(Z는 Zlog를 지수화하여 계산)
    • 마지막으로 MSE를 계산하여 최적화 진행!

    4. Experiments

    4.1 정성적 평가

    • 홀수 행에 해당하는 predicted Point Cloud의 색상은 절대 상대 오차를 나타냅니다. 즉, point의 색상이 파란색에 가까울수록 정확하고 빨간색에 가까울수록 오차가 크다는 것을 의미합니다.
    • 이에 따라 UniDepth로 예측한 Point Cloud는 다른 Sota 모델들과 비교했을 때 정확도가 매우 뛰어난 것을 직관적으로 확인할 수 있습니다.

     

    4.2 정량적 평가

    5. Conclusion

    • 이 논문은 기존 Monocular Depth Estimation 모델들의 도메인이 달라지면 성능이 급격히 떨어지는 문제를 해결한(일반화 성능을 끌어올린) 논문이었습니다.
    • 기존 일반화 성능을 끌어올린 대부분의 논문들이 단일 이미지뿐만 아니라 추가정보(Camera Intrinsic matrix 등)를 요구하였으나, 이 논문에서는 self-prompting 이라는 기법을 도입해서 해결하였고, Sota급 성능을 보여준 좋은 논문이었습니다.
    • 특히 zero-shot learning 기법으로 8개의 데이터셋으로 검증했을 때, Sota 논문(Metric3D)의 성능을 압도하며 실제 어플리케이션에 쓰일 수 있을 정도로 높은 성능을 보여준 논문이었습니다.