티스토리 뷰

Depth estimation 분야에 대해 좀 자세히 공부해보고 싶어서 survey 부터 찾아보고 있는 중이다.

우선 첫 번째로 발견한 survey 논문에 대해서 서술해보려고 한다.

자세하게 파고드는 건 처음이라 미숙한 점이 많을 것 같다. (댓글로 지적해주시면 감사하겠습니다ㅜ)

https://paperswithcode.com/sota/monocular-depth-estimation-on-nyu-depth-v2

 

https://paperswithcode.com/sota/monocular-depth-estimation-on-eth3d

Survey 논문이 있긴 있는데 뭔가 인용 횟수도 적고 인증된 느낌의 survey는 아닌 것 같아서 추후에는 이 benchmark 들의 정확도 및 error 줄어드는 이 flow를 따라서 논문을 리뷰하고자 한다.

1. Introduction

우선 Monocular depth estimation은 잘 설정되지 않은 문제랑 본질적으로 애매모호한 문제가 있다고 한다. 여기서 Monocular depth estimation이란 다음 hugging face에서 간단히 설명되어 있는데, 정리해보겠다.

https://huggingface.co/docs/transformers/tasks/monocular_depth_estimation

 

Monocular depth estimation

Monocular depth estimation is a computer vision task that involves predicting the depth information of a scene from a single image. In other words, it is the process of estimating the distance of objects in a scene from a single camera viewpoint. Monocular

huggingface.co

Monocular depth estimation이란 간단하게 하나의 scene 이미지에서 depth을 예측하는 것으로 즉, 카메라 viewpoint 하나만 있는 것을 통해 물체들의 거리들을 예측하는 과정이라고 보면 되겠다. 하나의 카메라 viewpoint뿐만 아니라 여러 개인 경우는 Stereo depth estimation이라고 한다.

 

전통적인 건 여러 카메라의 viewpoint들을 이용하여 depth을 예측하는 것이지만, 이제는 단일 이미지만을 이용해도 해당 scene의 depth을 측정하는 것이 중요한 task가 됐다고 생각하면 된다. Benchmark들은 KITTI, NYUv2 등이 있는데, 해당 Benchmark들에 대한 설명은 추후 서술하는 것으로 하겠다. (https://paperswithcode.com/task/depth-estimation)

 

우선 단일 viewpoint만을 이용해 depth을 예측하는 분야는 크게 두 카테고리이다. 1. Absolute Depth estimation(=Metric depth estimation), 그리고 2. Relative depth estimation이다. 1.은 Camera로부터 "절대적인 깊이값"을 얻고자 하는 task, 즉, output으로 해당 object까지 깊이가 10m, 1m 등 real-world 수치적 값으로 나온다는 것이다. 2.는 1.과 반대로 수치적 값이 나오는 것이 아닌 물체들의 깊이 순서가 제시된다고 생각하면 된다. 2.의 output은 depth map이며, scene의 각 object들 간의 관계에서의 depth가 map으로 보여진다. 

 

현재 Absolute Depth estimation의 sota는 ZoeDepth이고, Relative depth estimation의 sota는 Depth Anything v2이다. 

 

정리하면 depth estimation 분야에서 크게 Monocular, Stereo로 나뉘고, Monocular 내에서는 Absolute, Relative으로 나뉜다고 생각하면 된다.

 

Monocular에서 현재 challenging되는 task가 뭐냐하면 depth estimation에 대한 결과를 3D reconstruction 등 다양한 분야로의 응용이 "잘" 되어야 한다. Sota method들을 보면, 크게 두 가지들이다. 첫 번째, 복잡한 네트워크를 구성하여, depth map의 회귀(regress)가 잘 되게끔 구성하는 것과 두 번째, input을 bins나 windows 단위로 쪼갠 다음, depth estimation 수행한다. (계산량 줄이기 위해)

 

RGB image가 input이고 각 픽셀마다 depth map을 예측할 때, 문제점은 large texture, structural variations, object occlusions(어떤 물체 앞에 장애물이 있어서 가려지는 현상을 뜻) 그리고 마지막으로 rich geometric detailing(복잡하거나 세밀한 구조를 갖는 3D 객체나 환경)이 있곤 한다. 

 

이 2024 survey 논문에 의하면 deep-learning based model 기반 depth estimation 분야는 500 논문 이상 나왔다고 한다. depth estimation은 응용 부분에서 많은 부분을 기여할 수 있는 분야이기에 앞으로도 연구가 지속적으로 될 것 같다.(개인적인 생각 ..)

 

Depth estimation은 하나 또는 여러 개의 이미지에서 scene을 3d geometry로 복구시키는 것이 목표이다. 3D에서 2D 정사영하는 과정에서 정보 손실이 일어날 수 있는데, 이러한 부분도 문제이다. 

 

현재 depth estimation은 active sensors(ex. laser scanners, Light Detection Range(LiDAR)), RGB camera에 의존하는데, 이런 것들은 3D info를 바로 가져다 주는데, 대신 단점은 굉장히 비싸고, 시간 소모가 꽤 많이 든다는 점이다. 또한, 짧은 거리에서의 물체들을 인식하는 건 굉장히 challenging한 task이다. sensor들은 거리에 민감하기에 이러한 장비 써도 단점 또한 더 존재한다. Image-based(passive) depth estimation method 예시 1. Structure-from-motion, 2. Shape-from-X (X=실루엣, 텍스쳐, 그림자, multi-view stereo 등)이 있다. 이런 것들은 두 개 이상의 image들을 요구하거나, camera calibration(=카메라 교정)을 요구한다. 

 

Camera Calibration 이란?

카메라의 기하학적, 광학적 특성을 파악 및 정량화하는 과정

이를 통해 다음 두 가지 얻을 수 있음.

1. 내부 파라미터(Intrinsic paramters) : 카메라의 내부적인 광학적 특성을 나타내는 파라미터로, 렌즈의 초점 거리(focal length), 주점(principal point, 이미지 센서에서 광축이 통과하는 점), 왜곡 계수(distortion coefficients, 렌즈의 왜곡을 설명하는 값) 등이 있다. 이 파라미터들은 카메라가 이미지를 어떻게 형성하는지를 설명해 준다고 한다.

2. 외부 파라미터(Extrinsic parameters) : 카메라의 위치와 방향을 나타내는 파라미터로, 특정 참조점 대비 카메라의 3차원 공간에서의 위치와 회전 각도를 말한다. 이를 통해 카메라가 어디를 향하고 있는지 파악할 수 있다. 

 

카메라 캘리브레이션은 일반적으로 특정 패턴(ex 체스보드 패턴)이 포함된 이미지를 사용하여 진행된다. 이 패턴에서의 특정 점들을 카메라로 촬영하여 그 위치를 이미지 상에서 찾아내고, 이를 바탕으로 카메라의 파라미터를 계산한다. 이렇게 캘리브레이션을 통해 얻은 파라미터들은 다른 비전 태스크를 보다 정확하게 수행할 수 있도록 도와준다고 한다.

 

Depth estimation에서는 카메라 캘리브레이션 정보를 사용하여 2D 이미지에서 3D 공간 정보를 추정하는 데 필요한 정확도를 높일 수 있습니다. 따라서 카메라 캘리브레이션은 정확한 3D 시각 정보를 얻기 위한 필수적인 단계로 여겨집니다.

https://arxiv.org/pdf/2303.10559

 

이 논문을 좀 정리해보았다. Camera calibration 계산하는 method에 대해 다음과 같은 방법을 소개한다.

1. DHN (Deep Homography Network)

  • DHN은 딥러닝 기반의 호모그래피 추정 방법.
  • DHN은 입력 이미지와 템플릿 이미지를 사용하여 호모그래피 매트릭스를 추정.
  • DHN은 VGG-style 네트워크를 사용하여 특징을 추출하고, 추출된 특징을 사용하여 호모그래피 매트릭스를 추정.

2. UDHN (Unsupervised Deep Homography Network)

  • UDHN은 딥러닝 기반의 호모그래피 추정 방법.
  • UDHN은 입력 이미지와 템플릿 이미지를 사용하여 호모그래피 매트릭스를 추정.
  • UDHN은 호모그래피 매트릭스를 추정하기 위해 L1 픽셀별 사진 오차를 최소화.

3. CLKN (Compositional LK Network)

  • CLKN은 딥러닝 기반의 카메라 캘리브레이션 방법.
  • CLKN은 입력 이미지와 템플릿 이미지를 사용하여 카메라 파라미터를 추정.
  • CLKN은 LK 알고리즘을 사용하여 카메라 파라미터를 추정하고, 추정된 파라미터를 사용하여 카메라 캘리브레이션을 수행.

4. DR-GAN (Deep Reconstruction-Generation Adversarial Network)

  • DR-GAN은 딥러닝 기반의 카메라 캘리브레이션 방법.
  • DR-GAN은 입력 이미지와 템플릿 이미지를 사용하여 카메라 파라미터를 추정.
  • DR-GAN은 생성 모델과 판별 모델을 사용하여 카메라 파라미터를 추정하고, 추정된 파라미터를 사용하여 카메라 캘리브레이션을 수행.

이제 다시..돌아오자면 이런 식의 다양한 요구 사항은 추후 응용 분야에서 안 좋다. 그래서 이러한 camera calibration 등 요구 사항 없이 하나의 이미지(Monocular)만을 이용해도 깊이 추정이 가능하게끔 분야가 발전이 이뤄진 것이다. 

 

2. Problem Statement, Challenges and Taxonomy.

I = Single image, monocular depth estimation은 위의 function f를 배우는 것이 목표이고, function은 per-pixel scene depth 을 output으로 가져온다. 요즘 Monocular depth estimation은 deep neural architecture 디자인하는 것에 초점이 맞춰져 있으며, 효과적으로 훈련시키는 것 또한 목표이다. 

2.1 Challenges

  • 3D-to-2D mapping ambiguity : Depth ambiguity (깊이 모호함) = 2D image에서 3D info 복원할 때 문제점. RGB camerark 3D 공간의 물체를 포착했을 때, 카메라로 담게 되면 해당 물체는 2D로 저장되면서 pose, volume, 3D shape을 잃어버리게 된다. 2D image는 texture과 2D pixel grid 형태로 되어 있는 2D projection 형태로 되어 있다. 결과적으로, 객체의 2D 표현은 3D로 복구할 때 다양한 3D 해석이 가능하게 되며, 이는 깊이 모호성을 불러 옵니다. 스테레오 큐(stereo cues)가 풍부한 스테레오 및 멀티뷰 이미지와 달리, 단안 큐(monocular cues)만으로는 이러한 깊이 모호성을 해결할 수 없다. 따라서 단일 이미지를 사용하여 신뢰할 수 있는 깊이 결과를 얻기는 어렵다.
  • Camera parameters estimation : 절대적 depth을 구하려면 camera의 내재적, 외재적 파라미터를 구해야 한다. 내저적 파라미터는 위에서 얘기한 것처럼 focal length(초점 거리), aspect ratio(종횡비) 등을 포함하며, 이는 카메라 좌표에서 각 점을 픽셀 좌표로 매핑하는 방식을 결정한다. 정확한 카메라 파라미터가 제공될 때, depth estimation method는 이 파라미터들을 이용하여 rough한 depth estimation을 추정할 수 있고, 이를 이용하여 input image와 유사한 이미지를 랜더링할 수는 있다. 카메라 포즈(카메라의 위치와 방향)는 실제 값과 예상되는 depth 추정값을 single image로도 가능하다. 하지만,,camera parameter는 실제로 알 수 없는 경우가 많다...
  • Brightness inconsistency in scenes : Monocular image로부터 depth estimation 추정하는 것은 color(색깔)과illumination (조명) 때문에 힘들곤 하다. 그래서 same depth map을 나타내는 두 개의 image가 다른 color 분포를 띌 수 수도 있다. 날씨, 낮과 밤에 따라서 해당 scene 에 대한 다른 depth 분포를 산출. 이로 인해 pixel의 색깔과 depth 사이의 직접적인 관계성을 얻기 힘들다. 

Depth estimation image 말고 video도 언급하는데 현재 image 관련된 부분만 언급하고 싶어서 추후 서술하겠다.

2.2 Deep learning-based monoculara depth estimation

사람은 prior knowledge, 우리가 살면서 얻는 경험으로 RGB image에서 depth 산출하는 건 쉽지만, deep learning-based는 다음과 같은 문제가 있다. 

  • Acquisiton of accurate 3D ground-truth: learning based는 3d ground truth가 존재하는 것이 문제이다. Ground-truth 얻고자 하는 것이 시간 소모적익고, 비싸다.또한, ground-truth pair with 2D image 또한, 잘 매치가 안 될 수도 있다.
  • Generalizing and adapting to new domain : 말 그대로 training data 에 의존하면서 해당 모델이 unseen image에 대해서는 한계점을 보이곤 한다. 또한, limted 된 domain에 대해서만 model 잘 작동하며 다른 domain data에 대해서는 낮은 정확도를 보여준다. Day dataset 훈련시킨 모델이 night dataset에 대해서는 낮은 성능을 보이는 등의 문제가 있다. 이런 Domiain shift-related issue는 minimum한 전처리를 기반으로 모델이 잘 작동되어야 한다.
  • Computation time and resources : 말 그대로 리소스 부족으로 발생하는 문제들이다.

3. Taxonomy

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함