[ICLR2020] PSEUDO-LIDAR++: ACCURATE DEPTH FOR 3D OBJECT DETECTION IN AUTONOMOUS DRIVING

신정민 군이 Pseudo-Lidar v1을 리뷰를 해서 곧 v2를 할거 같은 예감이 들어 호다닥 제가 작성해버리는 리뷰가 되겠습니다. 인터셉트… ㅎ


먼저 개요는 pseudo-Lidar와 동일합니다. Lidar는 비싸며 RGB기반은 성능이 안좋으니 두가지를 잘 융합하자! 가 되겠습니다. 그럼 Pseudo-LiDAR와는 뭐가 다르냐! 하면 아래 그림을 보면 되겠습니다.

기존 Stereo depth estimation의 경우 Disparity를 예측한다음 이걸 depth로 역변환해서 point cloud로 변경합니다. 하지만 disparity를 예측하도록 학습할경우 disparity가 에러가 났을때 depth의 에러값은 disparity의 에러보다 크다는 것입니다. 그림 3표를 보면 disparity와 depth의 관계를 볼 수 있는데, 1 disparity error가 일어났을때 depth가 20 이하일때의 depth error와 60 이상일때의 depth error는 매우 큰 차이가 나는것을 볼 수 있습니다. 이러한 이유로 disparity를 예측하던 기존 방식을 없애고 depth를 바로 예측하도록 모델을 변경했습니다. 그 결과를 위 그림과 아래 그림으로 알 수 있습니다. 먼저 위의 그림을 먼저 보면 Disparity를 예측하는 기존의 모델(빨강)의 경우 3D box GT와 굉장히 떨어져 있지만 예측대상을 disparity에서 depth로 변경한 보라색의 경우 빨강보다 GT box와 더욱 가까이 있는것을 볼 수 있습니다. 그리고 아래 그림를 보면 이전 분석과 유사한 결과를 나타냅니다. figure 3을 보면 depth 를 예측한 모델의 결과가 더욱 에러가 작을 것을 확인 할 수 있고 figure 4 또한 정량적으로 적은 에러를 보여줍니다.

그리고 아직 부정확 depth 값을 교정하기 위해서 4 beam LiDAR를 활용해 예측한 depth를 교정하는 Graph-based Depth-correlation algorithm(GDC)을 제안합니다. LiDAR가 굉장히 비싼 경우는 64beam이나 32beam 이 비싼거지 4beam의 경우 두 LiDAR에 비해서 매우 싼 축에 속합니다. 하지만 이 센서의 경우 매우 sparse 해서 잘 사용되지 못하지만 그 sparse한 depth 값이 매우 정확하기 때문에, 이 센서를 이용해서 stereo image로 부터 예측된 dense depth map의 값들을 정확한 depth 값으로 이동 시켜줍니다. 이 방법론의 결과는 위 그림의 파란색으로 확인할 수 있습니다. 노란색의 4 beam LiDAR 값을 통해 보라색 값이 파란색으로 옮겨져 정확시 GT box안으로 안착한 것을 확인할 수 있습니다.

[그림 2]
그림 3

Method

뭔가 위에서 분석과 함께 이 논문의 방법론을 다 본 것만 같지만 그래도 자세하게 이 파트에서 다뤄보겠습니다.

[그림 4]

먼저 그림 4를 통해서 제가 위에서 설명한 방법론들의 전체 파이프라인을 볼 수 있습니다.

STEREO DEPTH NETWORK (SDN)

그림 4의 상단에 볼 수 있는 stereo images를 이용해 depth를 예측하는 네트워크 입니다. 이 네트워크에 대해 설명하자면 다음과 같습니다.

D= disparity

위 수식과 같이 예측한 Disparity를 비교하던 기존 Loss를 아래 식과 같이 Depth를 비교하도록 변경합니다.

Z=depth

이때 Stereo Depth network가 Depth를 예측할 수 있도록 기존에 stereo image의 feature를 matching 하기 위해 두 feature를 concat 한 cost volume disparity를 아래 식을 이용해서 cost volume depth로 변경합니다.

disparity 보다 depth를 예측하는 것이 에러율이 더 적기 때문에 위 과정들을 거쳤으며 최종적으로 pointcloud로 올릴 수 있는 정확한 depth를 예측하게 됩니다.

DEPTH CORRECTION

이 논문이 위에서 제안한 SDN은 깊이 추정을 크게 개선하고 물체 윤곽을 더 정확하게 렌더링합니다. 그러나 stereo depth estimation은 두 영상의 수평선이 일치하다는 가정으로 disparity를 예측하기 때문에 수직적인 상황을 고려하지 못해 에러가 발생하게 됩니다. 이러한 오류를 해결하기 위해서 영상 x축 y축을 모두 고려해서 학습을 할 수 있지만 그건 자율 주행 상황에서의 GPU 한계를 뛰어 넘기 때문에 불가능에 가깝습니다.

따라서 stereo depth estimation의 에러를 바로 잡기 위해서 매우 싼 장비인 4 beam LIDAR의 정보를 이용하는 방식을 제안합니다. 이 방식의 이름은 Graph-based depth correction (GDC) 로 그림 4의 하단부를 보시면 됩니다.

이 방식은 먼저 예측한 depth를 point cloud로 올린다음 KNN을 이용해서 각 point의 관계도를 그립니다. 그 후 4 beam LiDAR의 실제 depth 값을 KNN에 추가하며 이때는 가장 가까운 stereo point하고 만 매칭되도록 합니다.

이 이후의 과정은 나중에 자세히 추가하도록 하겠습니다만, 간단히 설명하자면 matching된 stereo depth point 간에 weight를 매긴후 실제 LiDAR 와 가장 가까운 point와 weight 가 높은 point 까지를 LiDAR 방향으로 이동시키는 과정을 거칩니다. 이를 통해 정확한 depth point cloud를 얻습니다.

RESULTS

먼저 Car 의 성능이 위에 표에 나타나 있습니다. Input 이 S일 때를 먼저 보면 단순히 Pseudo-LiDAR일때와 비교해서 전체적으로 높은 성능 향상을 보이며 HARD 에서 성능향상이 두드러지게 나타난것을 볼 수 있습니다. 이것으로 통해 먼 물체 대해서 더욱 높은 성능 향상을 이뤘다는것을 알 수 있습니다.

다음으로 L#은 4 beam을 사용한 것으로 이것 또한 높은 성능 향상을 보여주며 오히려 64beam을 사용한 아래 회색보다 높은 성능도 간혹 있는 것을 볼 수 있습니다.

뭐 이 이후로도 매우 다양한 실험 결과가 잇으나 그건 논문을 참고 바랍니다. 이렇게 생략하는 이유는 결국 말하고자 하는 성능 향상을 위 표에 다 담겨 있는 것 같아서 그렇습니다.

Author: 한 대찬

1 thought on “[ICLR2020] PSEUDO-LIDAR++: ACCURATE DEPTH FOR 3D OBJECT DETECTION IN AUTONOMOUS DRIVING

  1. Depth correction과정에서 발생하는 속도저하는 없나요?

답글 남기기

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