Paper/3D

[논문 리뷰] 3D Point Cloud Processing and Learning for Autonomous Driving - Part 2. Properties & representation

shvtr159 2022. 5. 10. 18:45

Key ingredients of 3D point cloud processing and learning

이번 파트에서는 3D point cloud processing과 learning의 기본 방법들에 대해 알아보기 전에 3D point cloud의 key property들은 무엇인지 확인하고 3D point cloud를 표현하는 몇 가지 방법들에 대해 알아봅니다. 

 

Properties


​Real-time lidar sweeps

일반적인 lidar는 채널 수만큼 evaluation angle(고도각)을 가지고 각 채널마다 고유한 Laser ID 번호가 주어집니다. 360도 시야를 제공하는 Lidar는 회전하며 초당 수천번 laser를 발사하게 되는데 이를 통해 채널 개수만큼의 elevation angle과 수천 개의 azimuth angle(방위각)에 관련된 point들을 얻을 수 있습니다. 이렇게 얻은 point들은 x축을 time-stamp, y축을 laser ID로 하는 2D 이미지로 나타낼 수 있습니다. 그러나 모든 laser가 동시에 발사된다면 회전하며 같은 timestamp(x값)를 가지며 차례차례 2D 격자에 쌓이겠지만 서로 다른 laser끼리는 대부분 동기화되지 않아 완벽히 align 된 2D 이미지를 만들 수는 없습니다. 이 외에도 다른 real-time lidar sweep의 key property를 요약하면 다음과 같습니다.

  • Pseudo 3D : 실시간 lidar sweep은 3D point들을 approximate하여 2D 격자에 배열할 수 있지만 synchronization 문제로 완벽히 정렬할 수는 없습니다. 또, 여러 view에서 data를 얻어 물체의 형태를 나타낼 수 있는 3D point cloud와는 달리 lidar에서 보이는 부분의 data만을 얻기 때문에 pseudo 3D라고 이야기할 수 있습니다.
  • Occlusion : 각각의 실시간 lidar sweep는 모두 lidar 하나의 viewpoint에서 기록됩니다. 이로 인해 앞에 있는 물체가 그 뒤의 물체들을 가리면 뒤의 물체들은 확인할 수 없습니다.
  • Sparse point clouds : 2D 이미지와 비교했을 때, 실시간 lidar sweep은 laser가 object에 닿은 부분만 point로 나타내므로 object의 표현이 sparse 합니다. 이는 멀리 있는 객체일수록 더 심해집니다. 

 

Point cloud map

Point cloud map을 만들기 위해서는 많은 실시간 lidar sweep들을 합쳐야합니다. 예를 들어 $200 \times 200\;m^2$크기의 HD map을 만들기 위해서는 해당 지역을 5~10번 다니며 얻은 lidar sweep들을 합쳐야 하고 이 합쳐진 map은 1000만 개 이상의 point들로 이루어지게 됩니다. 여러 view에서 수집된 lidar sweep들을 합친 덕분에 HD map은 더 조밀하고 상세한 3D 형상 정보를 제공합니다. key property를 요약하면 다음과 같습니다.

  • Full 3D : Point cloud map은 다양한 view에서 얻은 여러개의 lidar sweep를 합쳐 생성하므로 object의 더 많은 표면 정보를 얻어 조밀하고 상세한 3D 표현을 제공합니다.
  • Irregularity : Point cloud map의 3D point들은 3D 공간상에 불규칙하게 흩어져있습니다.
  • No occlusion : 여러 viewpoint에서 얻은 3D point들을 합친덕분에 occlusion이 매우 줄어든 정적 3D scene을 나타냅니다.
  • Dense point clouds : 여러 lidar sweep들을 합쳐 조밀한 point들을 가지고있기 때문에 고해상도 형태와 표면 normal과 같은 디테일한 3D 형태 정보를 가지고 있습니다. 
  • Semantic meanings : HD map의 또 다른 layer인 trafic rule-related semantic feature map은 도로 표면, 빌딩, 나무와 같은 3D scene의 semantic label을 가지고 있습니다. traffic rule-related semantic feature map과 point cloud map이 3D 공간상에 align 되어있기 때문에 각 3D point들의 semantic 의미를 알 수 있습니다. 예를 들어 lidar point에서의 나무는 대부분 noisy 하고 인식하기 어려운데 point cloud map에서 그 위치의 point가 나무로 label 되어있다면 lidar point에 있는 point도 나무로 인식하는데 도움을 줄 수 있습니다.

 

Matrix representations


이터 안에 숨겨진 패턴과 구조를 파악하기 쉽게 해주고 이후 작업에 큰 도움이 됩니다. 이러한 이유로 신호 처리와 ML에서는 항상 표현법이 중심에 있었습니다.

일반적으로 3D point cloud는 point의 순서는 고려되지 않는 집합(set)으로 표현됩니다. $N$개의 3D point를 가지는 집합은  $i$번째 point의 좌표값 $\mathbf{p}_i=[x_i,y_i,z_i]\in \mathbb{R}^3$와 좌표값 외의 attribute들인 $\mathbf{a}_i$를 가지는 $i$번째 element 집합 $\mathcal{S}=\{(\mathbf{p}_i,\mathbf{a}_i)\}^{N}_{i=1}$으로 표현할 수 있습니다. 여기서 $\mathbf{a}_i$는 주로 실시간 lidar sweep인 경우 intensity값이고 point cloud map인 경우 intensity값과 surface normal을 포함한 4차원 vector로 표현됩니다.

Point cloud의 효율적인 저장과 과학적인 계산에 matrix(or tensor) 표현은 매우 효과적입니다. 만약 3D point들의 집합 $\mathcal{S}$를 matrix(or tensor) 표현 $\mathbf{X}$로 mapping 하는 함수를 $f$라 했을 때, $\mathbf{X}=f(\mathcal{S})$로 표현할 수 있습니다. 여기서는 다양한 mapping 방법 $f$에 대해 알아봅니다.

 

Raw points

가장 간단한 방법은 집합 $\mathcal{S}$의 각 3D point를 행렬의 한 행으로 나타내는 방법입니다.

이때, $i$번째 행 $\mathbf{X}^{(raw)}_i=\mathbf{x}_i \in \mathbb{R}^d$는 $i$번째 point의 feature들을 나타냅니다.

장점

  1. 간단하고 일반적이며 original set의 모든 정보를 보존할 수 있습니다

단점

  1. 기하학적 특징을 전혀 나타내지 않습니다.

이 표현법은 일반적으로 높은 precision이 필요한 자율주행 시스템의 localization module에서 사용됩니다.

 

3D voxelization

3D 공간을 이산화(discretize)하여 voxel을 만들고 이 규칙적인 voxel의 배열들을 이용하는 3D voxelization은 2D 이미지 처리에서 사용하던 방법을 사용하기 좋은 방법입니다. 간단한 voxelization은 그림과 같이 $x,y,z$축 방향을 따라 일정한 간격으로 겹치지 않는 voxel로 분할하게 됩니다. 각 voxel은 위와 같이 $h,w,d$라는 일정한 크기를 가지게 되고, 이 voxel을 표현할 때는 2D 이미지에서와 같이 $(i,j,k)$로 표현할 수 있습니다. 이때 이 $(i,j,k)$번째 voxel에 속하게 되는 point들은 $\mathcal{V}_{i,j,k} = \{(x,y,z)|(i-1)h\leq x<ih, (j-1)w\leq y<jw, (k-1)d\leq z<kd\}$로 나타낼 수 있습니다.

이때 tensor $\mathbf{X}^{(\textrm{vox})}$가 단지 voxel의 점유(occupancy) 여부만을 저장하면 $(i,j,k)$ element는 다음과 같이 표현할 수 있습니다.

장점

  1. 결과 voxel들이 자연스럽게 계층적(hierarchical)한 구조로 연관되고 모든 voxel이 동일한 공간 크기를 가지게됩니다.
  2. 데이터 분석을 위해 3D convolution과 같은 기존의 방법(off-the-shelf)들을 사용한 수 있습니다.

단점

  1. 구조화된(organized) 3D point cloud의 특정 속성을 고려하지 않습니다.
  2. 대부분 많은 voxel이 비어있는 희박한 표현을 가지게 되어 memory와 resolution 간에 심각한 trade-off를 유발합니다.

 이 표현법은 point cloud 저장뿐만 아니라 자율주행의 perception module에서도 사용될 수 있습니다.

 

Range view

위 "Properties"에서 설명했던 것과 같이 실시간 lidar sweep는 한 곳에서 특정 각도의 시야의 범위를 측정합니다. 이 특징을 이용해 각 pixel이 3D 공간 상의 절두체(frustum)에 대응되는 2D range-view 이미지처럼 나타낼 수 있습니다. 이때 pixel값은 frustum 내에 있는 point 중lidar로부터 가장 가까운 point까지의 거리를 사용합니다. 수학적으로 표현하여 azimuth angle을 $\alpha \in [0,2\pi) $ elevation angle을 $\theta \in (-\pi /2, \pi /2]$라 하면 이때 pixel은 lidar의 azimuth angle의 해상도($\alpha_0$)와 elevation angle($\theta_0$)의 해상도에 따라 결정됩니다. 이때 pixel $(i, j)$의 3D point는 $\mathcal{V}_{i,j,k} = \{(x,y,z)|\alpha_0(i-1)\leq a\cos(x/\sqrt{x^2+y^2})<\alpha_0i,\; \theta_0(j-1)\leq a\tan(z/\sqrt{x^2+y^2})+\pi/2<\theta_0j\}$로 계산할 수 있습니다. 이렇게 2D matrix를 이용해 표현하면 $\mathbf{X}^{FV} \in \mathcal{R}^{H\times W}$일 때 $(i,j)$는 다음과 같이 계산됩니다.

유의할 점은 range-view 기반 표현법은 lidar의 설정에 따라 elevation angle의 크기가 일정하지 않게 나누어질 수 있습니다. 

장점

  1. lidar가 3D 공간 속 2D 표면의 반사를 이용하여 3D point를 얻는 방법과 같아 자연스럽습니다.
  2. 대부분의 frustum이 3D point를 가지고 있기 때문에 compact 한 range-view 이미지를 만들 수 있습니다.

단점

  1. HD map의 point cloud map처럼 구조화되지 않은(unorganized) point cloud에는 적용하기 어렵습니다.

이 표현법은 perception module에 사용될 수 있습니다.

 

Bird's-eye view

조감도(bird's-eye view(BEV))는 3D voxelization에서 높이 차원을 무시한 특별한 case입니다. 여기서는 voxel을 BEV 이미지로 projection 하여 그림과 같이 $x, y$축만 남기게 됩니다. 그래서 BEV 이미지는 pixel에서 기둥(pillar)과 같은 형태로 z 축을 고려하게 됩니다. 그 결과 voxel과 유사하게 $(i,j)$ 픽셀은 $\mathcal{V}_{i,j,k} = \{(x,y,z)|(i-1)h\leq x < ih,\;(j-1)w\leq y < jw\}$이고, $\mathbf{X}^{(BEV)}\in \mathcal{R}^{H\times W}$의 $(i,j)$ pixel 값은 다음 식으로 계산됩니다.

​이 방법도 pixel의 기둥 속 point 유무만을 사용하지만 이 외에도 다른 픽셀 값 계산 방법도 많이 있습니다. 한 가지 예로 MV3D라는 방법은 각 기둥모양 공간에 몇 개의 통계 값을 사용하여 픽셀 값으로 사용합니다.

장점

  1. 2D vision 기반 방법을 적용하기 쉽습니다.
  2. ​HD map에서 ​주행 가능한 영역이나 교차로의 위치같이 2D로 projection 되는 정보들과 함께 사용하기에 편리합니다.
  3. Prediction과 motion planning 같은 후속 module에 적용하기 쉽습니다.
  4. Range-view 기반 표현법과 달리 object의 크기가 항상 일정합니다.

단점

  1. Voxelization과 같이 resolution과 memory 사이의 심각한 trade-off를 가지고, 작은 물체의 자세한 정보를 얻기 위해 과도한 quantization 문제가 있을 수 있습니다.
  2. Organize 된 3D point cloud의 속성을 고려하지 않고, occlusion을 추론할 수 없습니다.
  3. 많은 pixel이 비어있는 경우가 있기 때문에 sparsity issue를 고려해야 합니다.

이 표현법은 perception module에서 사용될 수 있습니다.