KalelPark's LAB

[Computer Vision] Digging Into Self-Supervised Monocular Depth Estimation 본문

Data Science/Depth Estimation

[Computer Vision] Digging Into Self-Supervised Monocular Depth Estimation

kalelpark 2023. 5. 3. 22:15

Abstract

다양한 scale로부터, depth에 대한 ground-truth를 얻는 것은 어렵습니다. 이러한 문제를 극복하기 위해, Self-Supervised Learning이 대안으로 떠오르고 있습니다. 본 논문에서는, 기존의 SSL 방법론에서 quantitatively와 qaulity를 개선한 방법을 제안합니다.
본 논문에서는, 단순한 Architecture를 보여줍니다. 
주된 기여는.
   1) robustly handle occulsions을 위한 mimum reprojection loss

   2) visual artifact를 감소시키기 위한, full-resolution multi-scale sampling 방법

   3) camera motion을 violate한 pixel을 무시하는 auto masking loss
를 제안합니다.

Introduction

stereo-based supervision의 대안인 monocular video는 도입하기에는 몇몇 문제가 존재합니다. depth를 추정하기 위해서
model은 training동안, image pair간의 ego-motion을 추정해야 합니다. 일반적으로 input으로 finite sequence를 활용하고, camera transformation에 대응하는 Output을 출력하는 pose estimation network를 포함하고 있습니다. stereo data를 활용하는 것은, occlusion과 texture-copy artifacts를 일으킨다는 문제가 있습니다.

 

본 논문에서는 Archticture와 loss를 제안하여, 상당한 개선을 가져옵니다. stereo pair와 monocular video를 동시에 훈련하고자 하는 경우, 3가지를 활용합니다. 1)  monocular supervision을 활용할 때, occluded pixels 문제를 다루기 위한 apperance matching loss를 제안합니다. 2) 또한 상대적인 Pixel의 위치를 무시하기 위해 auto-masking 접근법을 제시합니다. 3) 입력 해상도에서 모든 image를 sampling하기 위한, multi-scale apearance matching loss를 제안합니다. 이것은 depth artifacts를 완화합니다.

Method

해당 Section에서는 Self-supervised training을 하는 방법을 먼저 설명한 후, Network의 구조와 training loss에 대해서 살펴보도록 하겠습니다. ResNet Architecture를 활용하고, U-Net 방법을 사용합니다. Depth를 추정시에는 Sigmoid를 활용합니다. 

전반적인 원리를 간략하게 설명하고자 한다면, 6 Dof (Degree of Freedom)의 상대 pose 또는 rotation 및 translation을 예측하고, 두 frame 간의 pose를 구하기 위해 Network를 사용하여, 연속적인 이미지를 input으로 사용하여, 다른 이미지의 관점에서 대상 이미지의 모양을 예측하는 것이 가능합니다.

* 전체적인 학습 과정은, Depth Network은 Depth를 추정하고, Pose Network는 6-Dof relative pose를 추정합니다 이후, appearance loss를 사용합니다. 

Self-Supervised Training

another image로부터 target image의 외관을 예측하는 것은 Self-Supervised depth estimation frames에서 novel view-synthesis 중 하나를 생성하도록 학습하는 것이 될 수 있습니다. 하지만 기존 문제는 두 개의 view로부터 상대적인 pose를 고려하여 novel reconstructure 하는 것은 pixel당 depth에 대한 예측이 부정확한 개수가 많으면 문제가 됩니다. 고전적인 binocular 과 multi-view stereo method는 이러한 문제를 depth matp에 smoothness를 강화시킴으로써 모호함을 다룹니다. 본 논문도 마찬가지로, training time에 photometric reprojection error를 최소화하기 위해 노력합니다.

Improved Self-Supervised Depth Estimation

기존 monocular method는 fully-supervised model보다는 lower quality depth를 생성합니다. 이러한 격차를 줄이기위해, 본 논문에서는 교육이 필요한 추가 모델 구성 요소를 추가하지 않고, quality를 향상시키는 몇 가지 개선 사항을 제안합니다.

Per-Pixel Minimum Reprojection Loss

Multiple source image로부터, reprojection error를 계산하고자 할 때, 기존 Self-supervised은 source image로부터 reprojection error를 함께 평균화한다. 이로 인해, 대상 이미지에서는 표기되지만, 일부 원본 이미지에는 표시되지 않는 문제가 발생할 수 있습니다. 네트워크가 이러한 픽셀에 대한 정확한 깊이를 예측하면, occulded 부분에서는 오류 페널티를 발생할 수 있습니다.
Pixel에 대해서는 2가지 문제점이 있습니다.
Image boundarires에서 ego motion이 발생한다면, occluded pixels 문제가 발생합니다. Out-of-vew pixel의 효과는 reprojection loss에서 pixel을 masking함으로써 감소시킬 수 있지만, 하지만 이러한 방식은, disocculusion을 다루지 않습니다.

 

Auto-Masking Statinary Pixels

Self-supervised monocular training은 moving camera와 static scene의 가정 하에 작동됩니다. 하지만, Camera가 멈취있거나, 객체가 정지되어 있는경우 성능이 저하되는 문제가 발생합니다. 이러한 문제는 일반적으로 훈련중에 움직이는 객체에 대해서, 예측된 depth map이 무한한 depth를 일으키는 "hole"을 발생합니다. 그리하여, 우리는 sequence에서 Pixel이 변하지 않는 부분은 auto masking method를 적용합니다. 이러한 방법은 카메라 내 동일한 속도로 움직이는 객체를 무시하고, camera stops moving 시, 전체 frame의 monocular vidoe를 무시하게 합니다.


Multi-scale Estimation

bilinear sample의 gradient locality 때문에, 기존의 model은 multi-scale depth prediction과 image reconstructure를 동시에 진행합니다. 그리하여, 최종 loss는 각각의 decoder로부터 나온 feature를 사용합니다. 하지만 이러한 방식은 texture-copyt artifactus뿐만 아니라, depth maps에서 lower resolution depth map에서 hole을 관찰하는 경향이 있습니다. Hole in depth는 photometric error가 모호한 low-texture regions에서 낮은 해상도를 발생시킵니다. 
본 논문은 stereo reconstructure에 영감을 받아, disparity image의 resolution를 분해하고, reprojection error를 계산하기 위한 color image를 활용하면서 multi-scale formation을 개선합니다. 모호한 저해상도 이미지에 대한 photometric error를 계산하는 대신에 우리는 lower resolution depth maps를 Upsampling한 다음, input resolution에서 계속해서 reprojection 합니다. 그리고, 계속해서 reprojection과 resampling을 거칩니다. 이러한 과정은 matching patches 방법과 유사합니다. 

Experiments

Sq Rel(Squared Relative Error)와 Abs Rel(Absolute Relative Error)를 사용합니다. (일반적으로 회귀에서 사용됨)
Abs Rel : 예측값과 실제값 사이의 차이를 실제값으로 나눈후 절댓값을 씌운 것을 의미합니다.

Sq Rel : Abs에서 제곱을 한 것을 의미합니다. 


Abs Rel은 오차의 크기를 상대적으로 평가하는데 사용되고, Sq Rel은 상대적인 오차를 제곱하여 오차의 크기를 더 강조하는데 사용됩니다.

def compute_depth_errors(gt, pred):   

    abs_rel = torch.mean(torch.abs(gt - pred) / gt)

    sq_rel = torch.mean((gt - pred) ** 2 / gt)
    
    rmse = (gt - pred) ** 2
    rmse = torch.sqrt(rmse.mean())

    rmse_log = (torch.log(gt) - torch.log(pred)) ** 2
    rmse_log = torch.sqrt(rmse_log.mean())


    delta = torch.max((gt / pred), (pred / gt))
    a1 = (delta < 1.25     ).float().mean()
    a2 = (delta < 1.25 ** 2).float().mean()
    a3 = (delta < 1.25 ** 3).float().mean()

    return abs_rel, sq_rel, rmse, rmse_log, a1, a2, a3

Conclusion

본 논문에서는 Contribution을 3가지로 요약하고 있습니다. minimum reprojection loss, auto-masking loss, full-resolution multi-scale sampling 방식을 언급합니다. minimum reprojection loss와 Auto masking loss를 활용함으로써, disparity를 개선하였습니다. 무엇보다도, Monodepth2를 활용하면, Monocular Video 데이터 뿐만 아니라, Stereo 데이터에도 적용가능합니다. 

Reference

https://arxiv.org/abs/1806.01260

 

Digging Into Self-Supervised Monocular Depth Estimation

Per-pixel ground-truth depth data is challenging to acquire at scale. To overcome this limitation, self-supervised learning has emerged as a promising alternative for training models to perform monocular depth estimation. In this paper, we propose a set of

arxiv.org

https://gaussian37.github.io/vision-depth-metrics/

 

Depth Estimation의 평가 지표 (Metric)

gaussian37's blog

gaussian37.github.io

https://gaussian37.github.io/vision-depth-monodepth2/

 

Monodepth2, Digging Into Self-Supervised Monocular Depth Estimation

gaussian37's blog

gaussian37.github.io

https://gaussian37.github.io/vision-depth-table/

 

Depth Estimation 관련 글 목록

gaussian37's blog

gaussian37.github.io

 

Comments