[ICRA 2019] Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera

이번 리뷰 논문은 이전 논문에 이어 비지도 학습 기반의 depth completion 방법론 입니다. 해당 논문은 대부분의 자기 지도 학습 기반 depth completion 기법들이 사용하는 프레임워크를 처음 제안한 논문에 해당합니다.

Intro

Depth completion은 Fig 1-(a)과 같이 LiDAR의 sparse한 특징으로 인해 드물게 측정된 깊이 정보들을 조밀한 깊이 정보로 만드는 기술로, 자율 주행 및 로보틱스 분야에서 유용하게 사용될 수 있는 기술 중 하나 입니다. 저자는 해당 기술을 고도화 시키기 위해서는 다음과 같은 3가지의 문제를 해결해야 한다고 합니다. 첫째, LiDAR 측정값은 매우 희소하고 이미지 공간에서의 간격도 불규칙합니다. 둘째, 깊이와 색상은 서로 다른 센서 방식이기 때문에 가능한 경우 해당 컬러 이미지를 사용하여 예측 정확도를 개선하는 것은 간단한 작업이 아닙니다. 셋째, 일반적으로 정밀한 GT를 사용하기 힘듭니다. 이는, 픽셀 수준 주석을 얻는 것은 노동력이 매우 많이 들며 현실적으로 정밀한 측정이 어려운 문제가 있습니다.

이에 따라 저자는 2가지 기여를 제안합니다. (1) Sparse depth와 컬러 이미지를 이용하여 dense depth로 직접 매핑이 가능하도록 학습할 수 있는 모델 구조를 제안합니다. 해당 모델은 KITTI 깊이 완성 벤치마크 SOTA를 달성한 결과를 보여줍니다. (2) Depth completion network를 훈련하기 위한 self-supervised framework를 제안합니다. 이 프레임워크는 sprse 3D LiDAR와 단안 컬러 카메라가 있는 간단한 센서 구성이라고 가정합니다. 해당 self-supervised framework는 GT(dense depth label)없이도 네트워크를 훈련하며, semi-dense depth를 GT로 사용하여 훈련하는 기존 방법보다 성능이 뛰어난 결과를 보여줍니다…

+ 당시 자기 지도 기반의 depth completion을 처음 제안한 방법론이며, 프레임워크 자체가 novel한 경우라 디테일한 부분에 대한 어필 없이 자체를 기여도로 판단하고 제안한 것 같네요…

Method

Network Architecture

저자는 depth completion problem을 심층 회귀 학습 문제로 공식화합니다. 각 모달리티는 표현하기 쉽도록 Sparse dense input(측정된 깊이가 없는 픽셀은 0으로 설정)에는 d를, 컬러 이미지(또는 그레이스케일 이미지)에는 RGB를, 예측된 깊이 정보에는 pred를 사용합니다.

제안된 모델은 fig 2에 표시된 것처럼 인코더-디코더를 가집니다. 인코더는 특징 공간 해상도를 다운샘플링하기 위해 필터 뱅크가 증가하는 연속적인 컨볼루션 레이어로 구성됩니다. 반면 디코더는 공간 해상도를 업 샘플링하기 위해 컨볼루션을 역순으로 배치한 역구조를 가지고 있습니다.

Sparse depth와 컬러 이미지를 입력으로 사용 가능한 경우 각각 개별적인 컨볼루션을 통해 처리됩니다. 각각 처리된 특징 정보들은 연결(concatenated)되며, 이는 ResNet-34의 residual block로 구성된 인코더에 입력 되어집니다. 각 인코딩 레이어의 출력값들은 skip-connection을 통해 동일한 크기 혹은 레벨의 디코딩 레이어로 전달됩니다. 마지막으로 최종 1×1 컨볼루션은 네트워크 입력과 동일한 해상도의 단일 예측 이미지를 생성합니다. 모든 컨볼루션은 마지막 레이어를 제외하고 batch normalization 및 ReLU가 사용합니다.
++ 간단하게 U-Net 구조를 그대로 따른다고 보시면 됩니다. 실제로도 논문에서 U-Net 구조를 따른다고 밝혔습니다.
+ 추론 시 사전 정의한 임계값 τ 미만의 예측은 τ로 클리핑됩니다. 저자는 경험적으로 τ = 0.9m로 설정했다고 합니다. 이는 LiDAR의 최소 유효 감지 거리라고 합니다.
+ 컬러 이미지가 없는 경우 RGB 분기를 제거하고 약간 다른 하이퍼 파라미터를 채택하여 필터 수를 절반으로 줄입니다
++ 그냥 빼버린다는 말을 어렵게 하시네요…

Self-supervised Training Framework

기존 depth completion 방법론들은 학습을 위해 dense depth을 GT로 사용하기에 dense depth에 의존적인 특성을 가집니다. 그러나 일반적으로 dense depth는 존재하지 않으며, semi-dense depth를 취득하는 것도 기술적으로 어려울 수 있습니다. 예를 들어 Uhrig [1]은 연속적인 프레임을 이용하여 스테레오 비전과 GPS 등을 수작업을 통해 깊이 데이터 셋을 생성하였습니다. 그러나 해당 방법은 쉽게 적용하기 어려울 뿐더러 이미지의 반 밀도 주석 (약 30% 픽셀) 정도만 생성할 수 있습니다.

[1] J. Uhrig, N. Schneider, L. Schneider, U. Franke, T. Brox, and A. Geiger. Sparsity invariant cnns. arXiv preprint arXiv:1708.06500, 2017.
++ 위 레퍼런스는 KITTI benchmark의 depth completion에 해당합니다.

저자는 이러한 문제점을 해결하기 위해 자기 지도 기반의 학습 프레임워크를 제안합니다. 해당 프레임워크는 단안 카메라의 컬러 이미지와 LiDAR의 sparse depth만을 요구합니다. 그렇기에 추가적인 센서 정보 및 수동 라벨링 작업이 요구되지 않습니다. 또한, 특정 모델에 의존적이지 않아 다른 모델을 적용하기 쉽습니다. 해당 프레임워크의 구조는 fig 3에서 확인 할 수 있습니다. 학습 중에는 현재 프레임 RTBd1과 이에 대한 인근 프레임 RGBd2가 학습에 사용되며, 추론에는 깊이 예측 pred1을 생성하기 위한 RGBd1만을 입력으로 필요합니다.

Sparse Depth Supervision. sparse depth d1 자체를 지도 학습을 위해 사용합니다. 구체적으로, 정확하게 알고 있는 희소 깊이 정보를 이용하여 해당하는 픽셀에서의 예측된 조밀한 깊이 정보에 대한 아이덴티티 매핑을 수행합니다. 이러한 손실은 정확도를 높이고 안정성을 개선하며 학습을 위한 빠른 수렴으로 이어집니다. depth loss는 다음과 같이 정의됩니다.

사용 가능한 경우 더 밀도가 높은 지상 실측 데이터(예: KITTI depth completion benchmark[1]의 30% dense label)를 sparse depth d1 대신 사용할 수도 있습니다.

Model-based Pose Estimation. Photometric loss에 대한 중간 단계로 현재 프레임과 인근 프레임 사이의 상대적인 포즈를 계산해야 합니다. 이전 연구에서는 알려진 변환(스테레오)을 사용하거나 포즈 추정을 위해 다른 학습된 신경망을 사용한다고 가정합니다. 이와는 대조적으로, 해당 프레임워크에서는 RGB와 d를 모두 활용하는 모델 기반 접근 방식을 채택하여 포즈 추정을 수행합니다.

구체적으로, RGBd1과 RGB2에서 각각 추출한 일치하는 특징 대응을 사용하여 현재 프레임 1과 인근 프레임 2 사이의 relative transformation T1→2를 추정하기 위해 Perspective-n-Point(PnP) 문제를 해결합니다. 특징 매칭의 이상값에 대한 견고성을 향상시키기 위해 무작위 샘플 합의(RANSAC)도 PnP와 함께 사용합니다.
++ 최근 방법론에서는 PoseNet을 이용하여 relative transformation을 구하는 방식을 이용합니다.

Photometric Loss as Depth Supervision. Relative transformation T1→2와 현재 깊이 예측 pred1이 주어지면 주변 컬러 이미지 RGB2를 현재 프레임에 역으로 warping이 가능해집니다 . 구체적으로 카메라 고유 행렬 K가 주어지면 현재 프레임 1의 모든 픽셀 p_1 은 프레임 2에서 p_2 = KT_{1 \rightarrow 2}pred_1(p_1)K^{-1}p_1 로 해당 투영을 갖습니다. 따라서 p_2 의 이웃 4개를 중심으로 이중 선형 보간을 사용하여 합성 컬러 이미지를 생성할 수 있습니다. 이를 정리하면 아래와 같습니다.

warped는 촬영 환경이 정적이고 시차 변화로 인해 occlussion이 최소화된 경우 현재 RGB1과 유사합니다. Photometric loss를 최소화하는 경우에 깊이 예측 오차도 함께 감소하게 됩니다. 허나, 깊이 예측이 실측에 충분히 근접한 경우(즉, 투영된 포인트 p2가 실제 대응과 1픽셀 이상 차이가 나지 않는 경우)에만 해당됩니다. 따라서 다중 스케일 전략이 적용되어 적어도 하나의 scale s에서 \lVert ^{\(s\)}_2 - p^{\(s\)}_1 \lVert_1 < 1 이 되도록 합니다. 또한 depth loss와의 충돌을 피하기 위해 직접적으로 지도 학습을 수행하지 않은 픽셀에 대해서만 photometric loss을 계산합니다. photometric loss은 다음과 같습니다.

여기서 S는 모든 스케일링 계수의 집합이고, (-)^{\(s\)} 는 mean pooling을 이용한 이미지 크기 조정을 s만큼 나타냅니다. 낮은 해상도에서의 손실은 s만큼 가중치가 낮아집니다.
++ 스케일링에 대한 내용이 이해가 가지 않아 추후 코드 리뷰가 필요해 보임.

Smoothness Loss. Photometric loss는 인접 제약 없이 모든 개별 오차(즉, 각 픽셀에서 독립적으로 계산된 색상 차이)의 합계만 측정합니다. 따라서 측광 손실만 최소화하면 일반적으로 깊이 픽셀의 값이 부정확하고 불연속성이 높은 로컬 최적값이 생성됩니다. 이 문제를 완화하기 위해 손실 함수에 세 번째 항을 추가하여 깊이 예측을 원활하게 합니다. 깊이 예측의 2차 미분의 L1 손실인 \lVert \nabla^2 pred_1 \rVert_{1} 를 페널티로 부여하여 패치 단위의 depth prediction을 수행하도록 유도합니다.

전반적인 손실 함수은 다음과 같이 구성됩니다.

여기서 β1, β2 are 상대적인 가중치이며, 저자는 β1 = 0.1 and β2 = 0.1로 설정하였다고 합니다.

Implementation

  • KITTI depth completion dataset에서 학습 및 평가를 진행함
  • The dataset consists of 85,898 training data, 1,000 selected validation data, and 1,000 test data without ground truth.
  • PnP 포즈 추정: 현재 프레임 자체를 제외한 가장 가까운 6개 시간 프레임에서 무작위로 이웃 프레임 2를 선택합니다. PnP 포즈 추정에 실패하면 T1→2가 identity matrix로 설정되고 이웃 RGB2 이미지가 현재 RGB1로 덮어씌워집니다. 따라서 photometric loss은 0이 되며 학습에 영향을 미치지 않습니다.
  • Pytorch 사용
  • 배치 8에 8장의 v100 사용. 12 epoch에 12시간 소요

Experiment

Comparison with State-of-the-art Methods.

Tab 1에서 해당 방법론을 제외하면 다른 방법론들은 지도 학습에 해당합니다. 그런데도 불구하고 꽤나 큰 성능 차이를 보여주고 있습니다. 이에 대해 저자는 지도 학습에 사용되는 LIDAR의 semi-dense depth에서 LiDAR에서 측정되지 않은 부분들은 0 값을 보유하고 있어 해당 정보들을 모두 0으로 학습하기 때문에 모델이 제대로된 학습이 불가능하기 때문이라고 이야기합니다.

정성적인 결과인 fig 4에서도 확인할 수 있듯이 제안한 방법론에서 낮은 오차를 보여줄 뿐더러, 다른 방법론 대비 경계면이 두드러지는 모습을 볼 수 있습니다.

Evaluation of the Self-supervised Framework

Tab3을 보면 지도 학습의 성능이 좋은 결과를 보여주고 있습니다, 하지만 이는 ‘GT’ 자체가 편향되어 있기 때문에 자가 감독 방식으로 학습된 깊이 예측의 결과는 평가 지표에 의해 과소평가될 수 있다고 합니다. 그 결과, 그림 5에 표시된 것처럼 semi-dense GT에 제공되지 않는 상단의 예측은 오류 메트릭에 반영되지 않습니다.
++ 지도 학습은 depth loss를 포함한 모델 입니다.

자기 지도 프레임워크는 64라인 라이다 측정 뿐만 아니라 저해상도 라이다와 더 희박한 깊이 입력에도 효과적인 결과를 보여 줍니다. fig 6-(b)는 깊이의 희소성 수준에 따라 자기 지도 학습 프레임워크로 훈련된 모델의 검증 오류를 보여줍니다. 입력값의 수가 너무 적으면 검증 오차가 커지는 결과를 보여줍니다. 이는 PnP 포즈 추정에 실패하기 때문에 발생되는 현상입니다. 그러나 충분히 많은 측정값이 있으면 유효성 검사 오류는 semi-dense GT를 사용한 모델과 유사하게 입력의 거듭제곱함수로 감소하기 시작합니다.

Author: 김 태주

6 thoughts on “[ICRA 2019] Self-Supervised Sparse-to-Dense: Self-Supervised Depth Completion from LiDAR and Monocular Camera

  1. 안녕하세요. 리뷰를 읽고나서 궁금점들이 생겨서 댓글 남깁니다.

    1) RGBD1과 RGB2 영상에 대하여 corresponding points 계산 후 pnp-ransac으로 두 frame 사이에 pose를 계산한다고 하셨는데 여기서 corresponding points 계산은 무엇으로 하나요? SIFT 같은 전통적인 기법 쓰면 되나요 혹은 데이터 셋 자체에서 RGB1과 RGB2 사이에 대응점에 대한 GT가 있나요?

    2) 그리고 최근 방법론에서는 PoseNet을 사용한다고 해주셨는데, 그 PoseNet이라고 함은 monodepth2와 같이 두 프레임 영상 넣고 나온 결과값을 photometric loss로 학습하는 그런 PoseNet을 의미하나요 아니면 이 분야에서 따로 PoseNet이라는 새로운 네트워크가 존재하는 건가요?

    3) 그리고 이 논문에서 Photometric loss를 사용하는데 있어 정적인 상황 혹은 occlusion 등 warping의 제약 조건을 위반하는 상황들을 제거할만한 masking을 전혀 사용하지 않는 모습인데 해당 논문 이후의 방법론들도 모두 이 논문의 photometric loss 방식을 그대로 사용하나요?

    4) 그리고 보통 Detph쪽 도메인에서 Self-supervised learning을 한다는 것은 Lidar 정보 등을 전혀 사용하지 않는다는 의미인데, 해당 분야에서 말하는 Self-sup은 dense GT가 아닌 sparse GT를 사용한다고 했을 때의 의미로 받아들이면 되나요? 아니면 Depth Loss가 없이 Photometric loss만 존재하는 것을 Self-sup으로 보는건가요?

    만약 후자라면 두 프레임 사이에 camera pose를 계산할 때 이미 Depth 정보를 사용해버리기도 하고, 애초에 DepthNet의 입력 단에서도 Depth map이 RGB 영상과 함께 들어가는데 Self-sup이라고 보기는 힘들 것 같은데.. 왜 저자는 실험단에서 굳이 Photometric Loss only, Self-Supervised, Supervised Learning 이런 식으로 나눈 것일까요? Photometric Loss only라는 것이 loss function만 영상 레벨에서 사용했다는 것이지 실제 네트워크 및 pose 계산할 때는 Depth를 사용하는 것 아닌가요?

    위 질문을 정리하자면 저자가 말하는 Photometric Loss only와 Self-sup, 그리고 supervised learning의 차이가 모델이 학습 및 평가 때 어떤 데이터를 활용하는지 매칭이 안되어서 이 부분에 대해 설명해주시면 좋겠습니다.

    1. 1) RGBD1과 RGB2 영상에 대하여 corresponding points 계산 후 pnp-ransac으로 두 frame 사이에 pose를 계산한다고 하셨는데 여기서 corresponding points 계산은 무엇으로 하나요? SIFT 같은 전통적인 기법 쓰면 되나요 혹은 데이터 셋 자체에서 RGB1과 RGB2 사이에 대응점에 대한 GT가 있나요?

      A) 전통적인 기법 사용합니다. 해당 방법론은 feature matching이 아니기에 대응점에 대한 GT는 당연히 없죠.

      2) 그리고 최근 방법론에서는 PoseNet을 사용한다고 해주셨는데, 그 PoseNet이라고 함은 monodepth2와 같이 두 프레임 영상 넣고 나온 결과값을 photometric loss로 학습하는 그런 PoseNet을 의미하나요 아니면 이 분야에서 따로 PoseNet이라는 새로운 네트워크가 존재하는 건가요?

      A) 말씀하시는 posenet 맞습니다.

      3) 그리고 이 논문에서 Photometric loss를 사용하는데 있어 정적인 상황 혹은 occlusion 등 warping의 제약 조건을 위반하는 상황들을 제거할만한 masking을 전혀 사용하지 않는 모습인데 해당 논문 이후의 방법론들도 모두 이 논문의 photometric loss 방식을 그대로 사용하나요?

      A) 아직까지는 별다른 변화가 없네요… 변화를 주고 효과가 있다면 이 또한, 큰 기여로 적용할 것이라고 생각합니다.

      4) 그리고 보통 Detph쪽 도메인에서 Self-supervised learning을 한다는 것은 Lidar 정보 등을 전혀 사용하지 않는다는 의미인데, 해당 분야에서 말하는 Self-sup은 dense GT가 아닌 sparse GT를 사용한다고 했을 때의 의미로 받아들이면 되나요? 아니면 Depth Loss가 없이 Photometric loss만 존재하는 것을 Self-sup으로 보는건가요?

      A) 해당 방법론에 사용되는 입력 데이터인 sparse depth를 GT로 사용하기에 자기 지도라고 부를 수 있습니다. 입력 자체에 depth map이 들어가요

      1. 만약 후자라면 두 프레임 사이에 camera pose를 계산할 때 이미 Depth 정보를 사용해버리기도 하고, 애초에 DepthNet의 입력 단에서도 Depth map이 RGB 영상과 함께 들어가는데 Self-sup이라고 보기는 힘들 것 같은데.. 왜 저자는 실험단에서 굳이 Photometric Loss only, Self-Supervised, Supervised Learning 이런 식으로 나눈 것일까요? Photometric Loss only라는 것이 loss function만 영상 레벨에서 사용했다는 것이지 실제 네트워크 및 pose 계산할 때는 Depth를 사용하는 것 아닌가요?

        A) 해당 태스크에 대한 이해가 부족한 것 같습니다. depth completion은 sparse depth를 dense depth로 만드는 방법론 입니다. loss를 학습 기법에 따라 나눈 이유는 해당 논문이 처음 자기 지도 학습 기반의 방법론을 제안한 것이기에 기법에 따라 나눠 성능을 보여주었습니다.

        1. – Photometric Loss only:
          – 입력: RGB + sparse depth
          – GT: x
          – Self-sup:
          – 입력: RGB + sparse depth
          – Depth loss GT: Sparse depth
          – supervised learning
          – 입력: RGB + sparse depth
          – Depth loss GT: Semi-dense depth

  2. 좋은 리뷰 감사합니다.

    먼저 추론 시 사전 정의한 LiDAR의 최소 유효 감지 거리 임계값 τ = 0.9m로 설정했다고 하셨는데 보통 LiDAR 센서의 경우 유효 거리가 200m이상이고 오히려 근거리인 경우 신뢰도가 좋지 않다고 알고 있습니다. 저기서 설정한 임계값 τ가 실제 Real world에서의 거리를 의미하는게 맞나요?
    그리고 방법론에서 dense depth gt를 얻기 어렵기(불가능하기)때문에 sparse depth gt를 사용한다고 하는 것이 맞게 이해한 것인가요?

    감사합니다.

    1. Q) 먼저 추론 시 사전 정의한 LiDAR의 최소 유효 감지 거리 임계값 τ = 0.9m로 설정했다고 하셨는데 보통 LiDAR 센서의 경우 유효 거리가 200m이상이고 오히려 근거리인 경우 신뢰도가 좋지 않다고 알고 있습니다. 저기서 설정한 임계값 τ가 실제 Real world에서의 거리를 의미하는게 맞나요?

      A) 최소 유효 거리가 0.9m 라고 하는 겁니다. 실제 Real world에서의 거리를 의미하는게 맞습니다.

      Q) 그리고 방법론에서 dense depth gt를 얻기 어렵기(불가능하기)때문에 sparse depth gt를 사용한다고 하는 것이 맞게 이해한 것인가요?

      A) 넵 맞아요. 라이다 특성상 그리고 왜 구하기 힘든지 고민해보세요

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다