Paper/3D

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

shvtr159 2022. 6. 3. 23:22

Key ingredients of 3D point cloud processing and learning (con't)

Part2에서는 다양한 표현방법에 대해 알아보았습니다. 이번 Part3에서는 이 표현법들을 기반으로 3D point cloud를 processing 하고 learning 하는 대표적인 방법들에 대해 알아봅니다.

 

Representative tools


3D point cloud를 processing하고 learning 하는 데 사용되는 몇 가지 방법에 대해 알아봅니다. 최근 자율주행에서는 주로 딥러닝 기반 방법들이 주로 사용되기 때문에 이 부분에 집중해서 알아봅니다.

 

Nondeep learning methods

딥러닝이 나타나기 이전에는 많은 전통적인 handcrafted 방법들이 있었고, 이 방법들은 각각의 task에 특화되어 설계되어있어 하나의 방법론으로 설명하기에는 어려움이 있습니다. 예를 들어 point cloud segmentation과 3D shape detection의 기존 방법은 단순한 기하학적 heuristics 또는 그래프 기반 최적화 방법을 사용하거나 random sample consensus(RANSAC)과 같은 robust estimation 방법을 사용하였습니다.

 

Convolutional neural networks

Convolutional neural networks(CNNs)를 사용하게 된 동기는 기존에 사용하던 딥러닝 방법을 이용해 3D point cloud를 처리하고자 하는것에서 시작하였습니다. Convolution layer의 장점은 weight를 공유하는 것으로 동일한 filter weight가 2D 이미지 전체에 걸쳐 적용되어 weight 수를 줄이고 shift invariance를 보장해줍니다.

Convolution 방법은 3D voxelization, range-view, BEV 기반 표현 방법에 바로 사용될 수 있습니다. CNN을 사용하여 3D point cloud를 처리하면 Convolution 연산이 자연스럽게 point clou의 local 관계를 포함하게 되는 장점이 있습니다. 뒤에 나올 PointNet 기반 방법은 각각의 point를 따로 처리하지만 CNN 기반 방법은 인접한 voxel이나 pixel이 함께 계산되어 더 많은 context 정보를 얻을 수 있습니다.

그러나 3D convolution의 경우 계산량과 메모리 사용량이 높고 convolution 연산을 위해 discretization을 수행하며 정보에 손실이 발생할 수 있습니다. 또, 희박한 point cloud 특성상 비어있는 voxel에 대한 불필요한 연산이 낭비됩니다. 하지만 공간 관계의 이점과 잘 발전된 CNN 기법들로 인해 널리 쓰이고 있습니다.

 

PointNet-based methods

PointNet은 discretization 없이 3D point들을 직접 처리한 최초의 딥러닝 네트워크입니다. 3D point cloud는 순서가 없는 특성을 가지고 있는데 PointNet은 이 속성을 고려하며 geometric feature를 얻기 위해 point별 shared MLP들을 사용한 뒤 global pooling을 수행하였습니다. 이 방법은 간단하지만 많은 point cloud 방식의 기초가 되고, 높은 성능을 보여줍니다.

Feature channel 수를 $D$라고 했을 때, 직관적으로 생각하면 MLP는 $D$개의 대표적인 geometric feature를 찾고 이러한 feature가 각 3D point 주위에 나타나는지를 확인합니다. (여기서는 이와 같이 설명했는데 조금 다르게 이 단계에서 각 3D point 주위를 확인할 수는 없고 나중에 max pooling을 통해 global feature만을 얻습니다. MLP는 $D$개의 function을 찾고 각 point마다의 함숫값이 계산됩니다. PointNet의 Figure 19. 에서 보는 것처럼 각각의 함숫값에 해당하는 point 위치가 생기며 max pooling을 통해 최댓값만 남으며 이 정보가 종합됩니다. 이 정보의 종합으로 point가 없는 부분은 잘라나가며 point의 전체적인 형상을 학습한다고 주장하였습니다)

PointNet Figure 19.

PointNet은 point를 변환 없이 사용하며 max pooling으로 point의 차원을 제거하여 permutation invariance를 보장하는 효과적인 방법입니다.

 

Graph-based methods

Graph 기반 방법은 3D point 간의 공간적 관계를 활용하여 end-to-end 학습을 가속화하고자 합니다. CNN이 local sptial 관계를 고려하지만 이는 원래 3D point의 관계가 아닌 인접 voxel(또는 pixel) 간의 관계입니다. 해서 Point 간의 local 관계를 알아내기 위해 각 node가 point이고 각 edge가 point쌍의 관계를 나타내는 graph 구조를 사용할 수 있습니다.

그래프를 만드는 방법으로는 $K$-neareste-neighbo(KNN), $\epsilon$-nearest-neighbor 등이 있고, 이 두 방법은 Octree와 같은 효율적인 데이터 구조를 사용해서 구현할 수 있습니다. 학습 가능한 그래프는 end-to-end learning 구조에서 인접 행렬(adjacency matrix)을 학습할 수 있는 그래프입니다. 일반적인 그래프 기반 operation으로는 graph classical filter를 graph domain으로 확장하고 graph signal로부터 feature를 추출하는 graph filter가 있습니다.

소셜 네트워크 분석에서 graph neural network의 성공에 따라 3D point cloud를 처리하기 위해 graph 신경망을 사용하였습니다. 이러한 첫 번째 방법으로는 Dynamic graph CNN에서 edge convolution 연산과 학습 가능한 그래프라는 두 가지 기술을 소개하였습니다. 후속 연구로 DeepGCN이라는 논문에서 56개의 layer로 구성된 graph convolution 네트워크 구조를 구성하여 point cloud recognition 및 segmentation을 수행하였습니다. 이 방법은 residual과 dense connection 뿐만 아니라 dilated graph convolution과 같은 CNN의 일련의 기술을 graph domain으로 가져와 사용하였습니다.