[Week 2] Pointnet++

Treeboy·2022년 10월 1일
0

3d-vision

목록 보기
1/8

기존의 pointnet은 pointcloud 데이터셋을 바로 처리할 수 있는 아키텍쳐를 제안하였으나, point-to-point interaction (즉, local한 feature) 를 잡아내는 것에 한계가 있었다.

직관적으로 생각해 보자면, CNN은 kernel 을 통해서 local feature 을 직접적으로 추출해내는 반면, pointnet 은 unordered 상태에서 바로 mlp -> max pooling 을 통해 permutation-invariance 에 중점을 두었기 때문에, local information 에 대해 소홀한 것은 불가피하다.

Pointnet++

"a hierarchical neural network that applies PointNet recursively on a nested partitioning of the input point set"

Pointnet++ 의 idea

-> 점들의 집합을 local regions 의 오버랩으로 표현.
-> 이후 CNN 처럼 근접한 이웃들 사이의 기하학적 구조에서 특징을 추출함
-> 이러한 특징을 더 포괄적인 레벨에서 처리해 higher-level 특징을 구현
-> 전체 집합의 특징을 추출할때까지 반복.

여기서 문제는, 점들의 partitioning 을 어떻게 할것이며, 커널의 디자인을 어떻게 할 것이냐다. 전작인 PointNet이 정렬되지 않은 점들에서 semantic feature를 잘 추출했다는 점을 이용해, pointNet을 재귀적으로 활용해 문제를 해결한다.

CNN은 커널 사이즈가 작을 수록 디테일로 인한 성능 향상이 있었으나, Pointnet++ 같은 경우 너무 적은 점들은 오히려 강건하지 않았음. 또한, 2D images 는 정해진 규격 안에서 처리를 해야 했지만, pointcloud 같은 경우엔 크기에 제약이 없어서 기존의 CNN 기법 대신에 FPS 알고리즘을 사용해 데이터의 scale 에도 invariant 한 모델을 개발해냄.

여기서 Set abstraction layer 은 세 단계로 나뉘는데

  • Sampling: centroids 를 골라 local space의 중심이 됨

FPS 기법 사용 (kmeans++ 에서 무작위로 정하지 않고 한점 한점 고르듯이..)

  • Grouping: centroids 에 기반해 neighborhood points 선정

이 때, 점묶음의 크기 (점의 수) 는 고정이 되어있지 않는데, 어차피 pointnet 에서 고정된 크기의 특징벡터를 반환해주기 때문.

논문에서는 두가지 방법을 소개함
Ball query: 반지름 r 내의 모든 점을 묶음
kNN: 가장 가까운 k 개의 점을 묶음

ball query 가 local region 에 더 일반화하기 좋다고 언급.

  • PointNet: 점묶음별로 feature vector 을 추출

Non-uniform density

그러나, 실제 3d 데이터에선 밀도가 uniform하지 않은데,

저자는 학습 단계에서 sampling 기법을 (data augmentation) 활용해 문제를 해결하려고 시도.

MSG: Grouping 할 때 r 을 하나로 정하지 말고, 여러 크기의 r 을 적용해 다양한 크기의 그룹을 얻어내는 기법. 무작위 드랍아웃 기법을 적용해 밀도를 다르게끔 설정함. 하지만, 모든 점이 pointnet 을 거쳐야 하기 때문에 연산량이 너무 커져, MRG 제안.

MRG: 다른 레벨의 group 에서 나온 feature 을 concat. 계산량도 줄일 수 있으며, 동시에 여러 density 의 데이터에서도 대응 가능.

Point feature propagation

다운샘플링 하면서 locality 가 손실되는데 (CNN과 마찬가지로), 이는 segmentation의 고질적인 문제임. 저자는 k nearest points의 inverse distance weight 을 통해 interpolation 을 수행함.

이 점들은 다시 skip link 된 feature 에 concatenate 되고, unit pointnet (저자는 이를 1d conv. 라고 표현) 에 넣음. 이 과정을 original points 를 recover 할 때까지 반복.

Experiment

DP: random dropout

먼저 dropout을 통해 훈련한 모델이 points 소실에 더욱 강건하다.

또한, MRG+DP 기법을 활용한 모델이 point vanilla + DP 모델을 consistent 하게 outperform하는 것을 주목할 수 있다.

0개의 댓글