본문 바로가기
A.I./이론

논문 번역 및 요약) Depth Pro : Sharp Monocular Metric Depth in Less Than a Second

by 채소장사 2024. 10. 18.

Abstract

  • 이 논문은 제로샷 단안 카메라 깊이 예측(zero-shot metric monocular depth estimation)에 대한 파운데이션 모델을 소개한다.
    • 참고) 각각의 의미는 다음과 같다.
      • zero-shot :  이전에 학습된 적 없는 처음 보는 이미지에 대해서도 깊이 예측을 수행한다.
      • metric : 예측된 깊이 맵은 실제 물리 거리를 반영하고 있다.
      • monocular : 단안, 즉 단일 카메라 센서로 촬영된 이미지에 대한 깊이 예측을 한다.
  • Depth Pro 모델이 합성하는 고해상도 깊이 맵(high-resolution depth maps)은 어떤 모델보다 뛰어난 선명도를 가지며, 세부사항도 뭉게지지 않는다.
  • 카메라 (내부) 파라미터(camera intrinsic)와 같은 메타정보에 의존하지 않고도, 절대 크기(absolute scale)의 실제 깊이(metric)를 예측할 수 있다.
    • 참고) 카메라 내부 파라미터(camera intrinsic)는 초점 거리(focal length), 주점(principal point) 등의 정보를 의미하며 이미지 평면으로 투영되는 과정에 필요한 정보이다.
      센서 정보 또는 카메라 캘리브레이션 과정을 통해서, 카메라 내부 파라미터를 구할 수 있다.
  • Depth Pro 모델은 일반적인 GPU에서 2.25 메가픽셀(=약 2백만 화소) 깊이맵을 만드는데 0.3초가 소요될 정도로 빠르다.
  • 모델이 가지는 이러한 특성은 여러 기존 연구들로부터 가능했다.
    • 1) 효율적인 멀티스케일 ViT(multi-scale vision transformer for dense prediction)
    • 2) 실제 데이터셋합성 데이터셋을 결합한 훈련 방식
    • 3) 깊이 맵에서의 경계 예측 정확도 향상을 위한 전용 평가 메트릭
    • 4) 단일 이미지 초점 거리 예측(focal length estimation from a single image)에 관한 최신기술
  • 코드 및 학습된 가중치는 ml-depth-pro레포(https://github.com/apple/ml-depth-pro)에서 확인할 수 있다.

1. Introduction

  • 추가 훈련없이 사용할 수 있는(=제로샷) 단일 카메라 이미지(=monocular) 깊이 예측 방법을 다양한 분야에 활용될 수 있다. Zero-shot monocular depth estimation
    • 이미지 편집(image editing), 시점 합성(view synthesis), 조건부 이미지 생성(conditional image generation) 등
  • MiDaS 이후로, 이미지로부터 고해상도 깊이맵(dense pixelwise depth map) 예측에 관한 연구가 활발히 이뤄지고 있다.
  • 이 논문은 특히 단일 이미지로부터 새로운 시점의 이미지를 합성하는 view synthesis 연구로부터 출발하였다.
    • 시점 합성은 단일이미지 깊이 예측(monocular depth estimation) 연구가 발전함에 따라, 여러 방식으로 응용되고 있다.
    • 이를 위해 한장의 이미지로부터 깊이 예측을 하는 연구가 갖춰야 할 사항들은 다음과 같다.
    • 1) 깊이 예측 모델은 어떠한 이미지에 대해서도 제로샷으로 바로 예측 가능해야하며, 특정 도메인에서만 가능하도록 제한되어서는 안된다.
    • 2) 단안 깊이 예측 모델은 (상대적인 깊이값이 아닌) 실제 물리 거리의 깊이 맵(metric depth maps)을 만들 수 있어야 한다.
      • 그래야지만 정확한 개체의 모양과 장면, 그리고 절대 거리(=실제 거리, absolute scale)를 재현할 수 있다.
      • 실제 환경(in-the-wild)에서 널리 사용되려면, 비록 카메라 내부파라미터(camera intrinsic)가 없더라도, 절대 거리로 표현된 실제거리 깊이 맵(metric depth map with absolute scale)이 있어야 한다.
    • 3) 단일 이미지 깊이 예측 모델은 고해상도 결과를 가져야하며, 머리카락, 털과 같은 섬세한 세부사항들도 유지할 수 있도록 상세한(fine-grained) 깊이 맵을 예측할 수 있어야 한다.
      • 선명한 깊이 맵을 예측하게 되면, 이미지의 복잡한 디테일을 정확하게 파악할 수 있어서, 부유 픽셀(flying pixels)을 제거할 수 있다.
        • 시점 합성(view synethsis)과 같은 합성 이미지에서 원래의 위치와 다르게 위치되어서, 이미지의 불연속성을 초래하는 등 합성품질을 떨어뜨리는 요인을 flying pixel이라고 한다.
    • 4) 대화형의 응용작업에서는 깊이 예측 모델이 고해상도 깊이 맵을 만들면서도 낮은 지연시간(low latency)으로 동작해야 한다.
      • 낮은 지연시간을 위해서 제로샷 단안 깊이 예측 모델은 보통 신경망을 통한 단일 패스(single forward pass)로 동작하는 공통점을 가지고 있다. 그렇지만 더 높은 연산량을 가지는 모델 일부는 다른 경우도 있다.
  • 이 논문에서는 위의 이러한 요구사항을 만족시킬 수 있는 zero-shot metric monocular depth estimation을 위한 파운데이션 모델(foundation model)을 제안한다.
    • Depth pro는 실제 환경에서 메타정보를 갖지 않은 임의의 이미지에서 절대 길이로 표현된 실제 거리 깊이 맵을 만들어 낼 수 있다.
    • 업샘플링(upsampling)을 통해 확대하지 않을때 1536 x 1536 크기의 200만 화소(2.25 메가픽셀) 깊이 맵을 예측한다. 이 때, V100 GPU에서 실행시간은 0.3초에 불과하다.

  • 머리카락, 털, 식물 등의 디테일과 같은 개체 경계의 선명한 묘사에 있어 기존모델보다 뛰어난 결과를 보였다.

  • Depth pro는 기존 연구들보다 경계면 재현율에 있어서 몇배 이상 뛰어난 성능을 보였다. 
    • 또한 10배 이상 빠른 속도의 강점을 갖는다.
  • Depth Pro를 가능하게 한 기존 연구들은 다음과 같다.
    • 1) 고해상도에서 세부 구조를 유지하면서 전체 이미지의 맥락을 파악할 수 있도록, 효율적인 멀티 스케일 비전트랜스포머 기반 아키텍쳐(multi-scale ViT-based architecture)를 설계하였다.
    • 2) 단일 이미지 깊이 예측에서 경계면 추적의 정확성을 정량화하는 정밀 데이터셋을 사용함에 있어서, 새로운 평가 방식을 적용했다.
    • 3) 일련의 손실함수와 훈련 방식을 통해 선명한 깊이 맵 예측을 향상시켰다.
      • 실제 데이터셋과 합성 데이터셋을 동시에 사용한다. 합성 데이터셋은 픽셀단위의 정확한 경계 깊이를 알 수 있지만, 실제같지 않은 단점이 있었다.
    • 4) Depth pro에 사용된 단일 이미지로부터 제로샷으로 초점 거리 예측 연구도 기존 연구들을 압도하는 성능의 연구였다.

3. Method

3.1. Network

  • Depth Pro 아키텍쳐의 핵심 아이디어는
    • ViT의 인코더다양한 스케일에서 추출한 패치에 적용하고, 패치에 대한 깊이 예측을 하나의 고해상도 깊이 맵으로 합치는 것이다. 이 때, 엔드-투-엔드로 훈련가능한 모델을 사용한다.
  • 다음은 Depth pro의 아키텍쳐에 관한 모식도이다.

  • 깊이 예측을 위해서, 두 개의 ViT 인코더를 사용한다. 하나는 patch encoder이고, 다른 하나는 image encoder이다.
  • 패치 인코더(patch encoder)다양한 크기(=스케일)에서 추출된 패치에 적용된다.
    • 패치 인코더를 통해, 그 크기에 상관없는(scale-invariant) 표현 특징(representation)을 학습할 수 있다.
      • 이는, 패치 인코더에서 학습되는 가중치가 여러 스케일에서 공유되기 때문이다.
  • 이미지 인코어(image encoder)는 패치에 대한 예측을 전역적인(=전체 이미지에 대한) 맥락(global context)과 연결짓는다.
    • 이미지 인코더는 (패치로 나뉘지 않은) 전체 이미지에 적용되는데, 단 이미지의 크기는 선택된 인코더의 입력 해상도 크기로 다운샘플링(=축소)된다.
    • 이 논문에서는 384 x 384 크기로 다운샘플링된 이미지를 (이미지 인코더의) 입력으로 사용한다.
  • 전체 신경망은 1536 x 1536 크기고정된 (입력) 해상도에 대해서 동작한다.
    • 1536 x 1536은 ViT 인코더가 사용할 384 x 384의 배수로서 선택되었다.
    • 이는 충분히 큰 수용장(receptive field = 특성맵의 크기)을 보장해주는 동시에
    • 메모리 부족(out-of-memory) 이슈를 방지하면서 고정된 실행시간을 기대할 수 있게 해준다.
      • 메모리 부족 문제는 큰 이미지들에 대해 다양한 해상도를 사용할 때, 반복적으로 관찰되는 현상이다.
    • 참고) 이런 설계상의 선택과 관련된 결과는 섹션 4 등에서 볼 수 있다.
      논문의 주장에 따르면, 고정된 입력해상도를 사용하는 방식은 다양한 해상도를 사용할 때에 비해, 일관적으로 수십배 이상 빠르게 관찰되었으며, 더 정확하고 명확한 경계영역을 보여주었다.
  • 일반적인 (단순한 구조의) 인코더가 아닌, (보통의) ViT 인코더를 사용한 까닭은
    • 사용해 볼 수 있는 사전 훈련된 ViT 기반 백본이 충분히 많아졌기 때문이다.
    • 부록에서 여러 종류의 사전훈련된 ViT 백본 네트워크의 성능을 평가하고, 다른 깊이 예측 모델과 비교하여 Depth Pro의 성능을 보였다.
  • 최초의 입력이미지를 1536 x 1536으로 다운샘플링(=축소) 한 다음에, 이미지를 384 x 384 크기의 패치들로 분할한다.
    • 참고) 위의 Depth Pro 아키텍쳐 모식도에 따르면, 1536 x 1536 해상도가 된 입력이미지는, 추가적으로 768 x 768 크기와 384 x 384 크기의 해상도의 이미지로 다운샘플링된다.
      384 x 384 크기의 이미지는 단일한 패치로 생각하여 사용될 수 있지만, 나머지 두 크기(=two finest scale)의 이미지를 패치로 만들 때에는, (딱 나눠떨어지는 크기가 아니므로) 끊기지 않도록 겹쳐진 패치를 생성하게 된다.
  • 이제 각 스케일(=크기)에서 만들어진 패치들은 패치 인코더로 입력된다. 그리고 각 패치마다 24 x 24 크기의 특성텐서(feature tensor)가 출력된다.
  • 더 상세한 (경계면 등의) 특성을 파악하기 위해서, 중간 특성(intermediate features)을 추출한다.
  • 최종적으로 각 패치에 대한 특성 출력을 깊이 맵으로 합치기 위해서, DPT 디코더와 유사한 형태디코더 모듈에 입력하여 최종 깊이 맵을 출력할 수 있다.
    • 참고) DPT(=Dense Prediction Transformer) 디코더는 Vision Transformers for Dense Prediction에서 제안된 구조이다. 참고로 이미지 레벨이 아닌 (이미지를 구성하는) 각 픽셀 레벨에서의 예측을 하는 태스크를 Dense Prediction이라고 하며, 위의 논문에서는 monocular depth estimation과 semantic segmentation에 대해 사용되었다.
  • 서로 다른 크기의 특징 표현(representation)을 함께 사용하는 것에 더해서 패치 기반의 인코더을 사용하게 되면, 병렬 연산(parallelization) 효과를 누릴 수 있다.
    • 각 패치들이 독립적으로 처리될 수 있기 때문이다.
  • Depth Pro의 연산이 효율적인 또다른 요인으로
    • 기존에 ViT에 입력하기 위해 고해상도로 확대하는 것과 비교하여
    • 패치-기반의 처리의 낮은 연산 복잡도(lower comutational complexity)를 들 수 있다.
    • 참고) ViT에 사용되는 (트랜스포머 구조의) 멀티 헤드 어텐션(MHA, multi-head attention)에서는 입력되는 픽셀 수에 제곱에 비례하여 연산복잡도가 커진다. 즉, 이미지 해상도의 증가에 제곱에 비례하는 연산복잡도가 생기게 된다.

3.2. Sharp Monocular Depth Estimation

훈련을 위한 목적함수(Training objectives)

  • 입력되는 이미지 $I$에 대해서, Depth pro의 신경망 $f$는 표준 역-깊이 맵 이미지(canonical inverse depth image) $C = f(I) $를 예측한다.
    • 참고) 이미지에서 카메라와 개체와의 거리(=깊이)의 역수가 inverse depth 다. 깊이의 역수값을 사용하게 되면, 이미지 상에서 매우 깊은 곳에서의 값 또는 차이를 줄여주기 때문에 안정적인 계산이 가능해진다. 
      이를 반영해서, inverse depth map에서 가까운 물체는 밝은 픽셀로 표현되고, 멀리 있는 깊은 물체는 어두운 픽셀로 표현되게 된다.
  • 각 픽셀마다 실제 깊이를 나타내는 dense metric depth map $D_m$을 얻기 위해서
    • 초점 거리(focal length) $f_{px}$로 표현된 수평 시야각(horizontal field of view)과 이미지 너비 $w$를 활용한다.
    • $D_{m} = \frac{f_{px}}{wC} $
  • 훈련에 사용한 몇가지 목적함수(objectives)들도 모두 표준 역-깊이 맵(canonical inverse depth)에 기반을 둔다.
    • 왜냐하면, inverse depth를 사용함으로써 카메라에서 먼 영역보다 카메라에 가까운 영역에 더 우선순위를 둘 수 있기 때문이다.
    • 이를 통해, 시점 합성(view synthesis)과 같은 응용에서 시각적 품질을 향상시킬 수 있다.
  • $\hat{C}$을 표준 역 깊이 맵(canonical inverse depth)의 정답데이터(ground-truth)라고 생각한다면,
    • 실제 물리 거리를 가진 metric 데이터셋에 대해서, 모든 픽셀에서 평균 절대 오차(MAE, mean absolute error) $\mathcal{L}_{MAE}$를 계산한다.
    • $\mathcal{L}_{MAE} (\hat{C}, C) = \frac{1}{N} \sum_{i}^{N} | \hat{C}_i - C_i | $
    • 이 때, 합성(synthetic) 데이터셋과 달리 실제 수집한(real-world) 데이터셋에서는 MAE를 계산할 때, 각 이미지마다 상위 20% 오차 안에 드는 픽셀은 무시한다.
  • 카메라 내부 파라미터(camera intrinsic)을 신뢰할 수 없거나, 일관성없는 크기를 가진 이미지들을 실제 물리 거리를 추정하기에 적합하지 않은 데이터들이다.
    • 이러한 non-metric 데이터셋에 대해서는, 정답과 예측값 모두 손실값을 계산하기 전
    • 중간값(median)으로부터 평균 절대 편차값(mean absolute deviation)을 구하여, 표준화(normalize)한다.
  • 또한 나아가 다양한 스케일(=크기)에서의 표준 역-깊이 맵(canonical inverse-depth map)의 1차 / 2차 미분을 구하고 오차를 계산한다.
    • $\nabla_{*}$가 임의의 공간 미분 연사(spatial derivative operator *)을 나타낸다고 하자.
      • 샤르($S$, Scharr), 라플라스($L$, Laplace) p차 놈(p error norm) 등
      • 이 때, $M$개의 스케일에 대한 멀티 스케일 미분 손실(multi-scale derivative loss)은
      • $\mathcal{L}_{*, p, M}(C, \hat{C}) = \frac{1}{M} \sum_{j}^{M} \frac{1}{N_{j}} \sum_i^{N_j} | \nabla_* C_{i}^j - \nabla_* \hat{C}_i^j |^p $
        • 스케일 $j$는 2배씩 역-깊이 맵(inverse depth map)을 블러링(blurring)과 다운샘플링(=축소)하여서 구해진다.
    • 짧게 다음과 같이 정의해서 사용하였다.
      • 평균 절대 그래디언트 오차(Mean Absolute Gradient Error) $\mathcal{L}_{MAGE} = \mathcal{L}_{S, 1, 6}$
      • 평균 절대 라플라스 오차(Mean Absolute Laplace Error) $\mathcal{L}_{MALE}=\mathcal{L}_{L, 1, 6}$
      • 평균 제곱 그래디언트 오차(Mean Squared Gradient Error) $\mathcal{L}_{MSGE} = \mathcal{L}_{S, 2, 6}$

댓글