2017년에... 하던 모델로 넘어갔다.
3D 데이터를 voxel화 해서 처리한 VoxelNet을 살펴보자.
manual feature engineering 을 해서 3D point cloud 데이터를 처리하는 방식은 information bottleneck 을 생성해서 우리가 원하는 invariance 를 생성하지 못함.
PointNet 에서는 MLP 를 사용해서 invariance 를 도입해 보았는데, 이는 아직도 연산량이 괴랄하다는 문제를 가지고 있음
따라서, pointcloud 데이터를 voxel 로 바꾸는 연산을 사용해 더욱 수월하게 convolution 을 수행하도록 해보자.
Figure 2. VoxelNet Architecture
우선, (D x H x W) 의 공간을 vD x vH x vW 의 복쉘로 나눔.
복쉘 안에 있는 점들을 하나로 묶음.
복쉘 안에 T 보다 많은 점이 있는 경우, 무작위로 T 개의 점을 뽑음
각 복쉘 안에서 centroid 를 구한 뒤, pi = [xi, yi, zi, ri] -> phati = [xi, yi, zi, ri, xi−vx, yi−vy, zi−vz] 로 매핑. 이후, 각 복쉘 안에서의 feature 을 FCN 으로 추출하고, element-wise max pooling 으로 그 복쉘의 feature을 만든 뒤 concatenate.
이는 아래의 VFE (Voxel Feature Encoding Layer) 다이어그램에 잘 요약되어 있음.
non-empty voxel features 만 메모리에 저장함으로써 메모리 할당량을 최소화하게 됨.