논문/CV

PointNet 논문 리뷰

Dogun Kim 2024. 9. 19. 20:48

딥러닝을 이용해 Point cloud를 처리하는 방법론들에 대해 공부

 

1. PointNet

https://arxiv.org/abs/1612.00593

 

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

Point cloud is an important type of geometric data structure. Due to its irregular format, most researchers transform such data to regular 3D voxel grids or collections of images. This, however, renders data unnecessarily voluminous and causes issues. In t

arxiv.org

- Abstract

  • Point cloud는 중요한 유형의 기하학적 데이터 구조
  • Point cloud는 비정형 데이터, 이전의 연구자들은 이러한 데이터를 정형화된 3D Voxel 구조나, 이미지의 모음으로 변경하여 처리를 시도하였음. 하지만 데이터가 방대하게 커지는 등의 문제를 발생시킴
  • PointNet은 비정형 데이터인 Point cloud를 직접 처리하는 신경망 구조이다.
  • permutation invariance을 준수하며 단순하지만 매우 효율적인 새로운 신경망 구조임.

cf. Permutation invariance 순열 불변성이란.. Point cloud의 특성 중 하나로 데이터의 각 요소가 어떤 순서로 불러들여져도 형태 등의 특징은 은 동일한 것. 즉 input data들을 어떤 순서로 받던지 output에 영향을 끼치지 않아야 함.***


- Introduction

  • CNN은 이미지 그리드나 3D voxel처럼 정형화된 입력 데이터를 처리하는데 최적화되어 있음. CNN 구조를 사용하면 가중치를 공유하는 등의 장점을 활용해, 적은 수의 가중치로 다양한 위치에서의 데이터 학습 가능. 
  • 하지만 PointNet은 비정형 데이터이기에 딥러닝 네트워크에 이를 입력하기 전에 정형화된 데이터로 변환. 이 때 데이터가 불필요하게 방대해지거나, quantization artifacts 문제가 발생함.
  • PointNet은 Point cloud를 직접 처리하며, single symmetric function인 max pooling을 사용하여 permutation invariance을 준수 추가적으로 회전, 이동 등의 불변성 또한 고려한 전체 입력에 대해 클래스 레이블을 출력하거나, 각 점에 대해 부분 분할 레이블을 출력하는 통합된 아키텍처. # 일관된 결과를 내도록하는 처리 방식 
  • 입력으로 좌표(x, y, z)를 받고, 이를 각각 독립적으로 변환.

cf1. quantization artifacts 양자화 오류.. 연속 값을 이산적인 값으로 변환하며 발생하는 정보 손실

 

cf2. 왜  single symmetric function을 사용하여 대칭화를 하는지..***

위에서 Permutation invariance를 설명하며 포인트 클라우드는 각 점이 어떤 순서로 배열되든 그 자체로 동일한 3D 구조임을 설명함.. 즉  input data들을 어떤 순서로 받던지 output에 영향을 끼치지 않아야 함. 모델이 이러한 permutation invariance를 만족하려면 점들의 순서가 바뀌더라도 동일한 출력을 내기 위한 대칭화가 필요함.

ex) 최대값을 뽑아내는 max-pooling과 같은 대칭적인 연산을 사용, 모든 점의 정보를 집계하여 대칭화할 수 있음. 

 

요약) PointNet은 각 점을 독립적으로 처리한 후, 대칭 함수 max pooling을 통해 전체 포인트 클라우드의 중요한 정보를 통합해 하나의 전역적인 표현을 만든다. 이는 데이터를 굳이 정형화하지 않아도, 순서에 관계없이 포인트 클라우드 전체의 중요한 정보를 추출할 수 있게 한다. 즉, PointNet은 순서에 영향을 받지 않고, 포인트 클라우드의 자연스러운 특성을 그대로 유지하면서 데이터를 처리할 수 있다.


- Problem Statement & Model Architecture

  • 비정렬된 포인트 집합을 입력으로 직접 처리하는 딥러닝 프레임워크를 설계
  • point cloud의 x, y, z가 채널로 사용됨. 색상, 법선 벡터 등의 정보가 포함될 수 있음.

  • n개의 Point cloud의 각 포인트에 대해 독립적으로 feature transformation을 적용한 후, max pooling을 통해서 각 점의 특징을 집계한다. 이를 통해 순서와 관계 없이 중요한 정보를 집계함.
  • object classification task에서는 shape에서 직접 샘플링하거나 scene에서 미리 분할한 point cloud 두 가지 방식의 point cloud 사용 방법이 존재. PointNet이 다양한 방식으로 생성된 포인트 클라우드를 처리할 수 있음. 입력 값을 처리 후, k개의 후보 클래스에 대해 k개의 점수를 출력함. 즉 클래스에 속할 확률을 예측하는 방식을 사용함.
  • semantic segmentation task에서는 global feature과 local feature를 concatenate 병합하여 각 포인트에 대한 점수를 출력한다. 즉 두 특징 모두를 고려하여 예측이 이루워진다.  처리 후 n개의 point에 대해 m개의 semantic 하위 카테고리에 대한 점수 nxm 행렬을 출력함. 
  • mlp에서 Batch Normalization을 사용하여 학습을 안정, 가속화, 활성화 함수는 ReLU를 사용. classification net 마지막 mlp에 dropdout layers를 사용. 과적합을 방지함.

cf. 포인트 클라우드의 각 점이 어떤 부분에 속하는지 예측하기 위해서.. 전체적인 것과 지역적인 걸 동시에 보는 듯하다.

 

cf2. Shape 형상 vs Scene 장면

Shape: 단일 객체의 3D 모양. 직접 샘플링된 포인트 클라우드란, 하나의 객체의 표면에서 포인트 클라우드를 추출하는 것을 의미한다. 즉, 객체 분류 작업에서 shape는 개별적인 물체로부터 추출된 포인트 클라우드를 의미한다.

 

Scean: 복잡한 환경이나 여러 개의 물체가 포함된 장면. ex) 거실, 사무실..  미리 분할된 포인트 클라우드란 scene에서 이미 하나의 객체를 분할해낸 포인트 클라우드를 의미한다. 즉 복잡한 환경에서 개별 물체를 추출해낸 포인트 클라우드이다.

ex) 거실에서 소파 객체의 point cloud만 추출

 

 

- Deep Learning on Point Sets: Point Sets의 성질 및 이에 따른 PointNet의 핵심 전략 정리 

1) Unordered: 포인트 클라우드는 순서가 없는 점들의 집합. 따라서 포인트 클라우드를 처리하는 네트워크는 입력 순서에 불변성을 가져야 한다. 즉, 어떤 순서로 입력되더라도 결과는 같아야한다.

>> Max pooling: 점들로부터의 정보를 집계하기 위해 대칭 함수 Max pooling을 사용, 입력 순서에 대한 불변성을 확보

cf. 입력을 정렬하거나, RNN을 사용하는 방법도 있지만 각 방법은  정렬이 안정적이지 않거나 Point cloud에 적합하지 않았다. Max pooling이 가장 좋은 실험 성능을 보였다.

 

2) Interaction among points: 포인트 클라우드는 거리 측정을 기반으로 상호작용하는 점들의 집합. 이웃하는 점들은 의미 잇는 구조를 형성하며 모델은 이러한 local structure를 포착해야함. ex) 토끼 객체에서 토끼 귀 부분의 point들..

>> global feature와 local feature를 결합하여 segmantaion에 사용. 로컬 구조와 전역 의미를 모두 고려한 예측이 가능해짐.

3) Invariance under transformations: 회전이나 이동과 같은 변환이 일어나더라도 포인트 클라우드의 전체적인 특성이 변하지 않아야함. 즉, 점들을 회전시키거나 이동해도 같은 카테고리분할 결과를 유지해야함.

>> 포인트들의 좌표를 정렬하는 변환행렬 T-Net 적용. 입력 포인트의 좌표를 변환하고, 이로써 변환에 대한 불변성을 확보 

T-Net은 affine transformation matrix를 통해 입력 포인트를 표준 공간 cannonical space로 정렬한다. 이 이후 특징을 추출하면 된다.

cf2. 추가로 feature space에서도 비슷한 정렬을 수행할 수 있으며, 이를 위한 특징 변환 행렬에 정규화 항을 추가해 최적화를 안정화시킬 수 있다.

정규화를 통해 고차원 matrix를 Orthogonal matrix로 바꾸며 최적화를 더 쉽게 만들었다.


- Theoretical Analysis

PointNet은 PointNet은 안정적으로 포인트 클라우드 shape 정보를 함축하는 feature vector를 뽑아내는 것을 목적으로 한다. 이를 위해 다음과 같은 3가지를 만족해야한다.

1) 작은 섭동에도 출력 값은 변하지 않아야 한다. 

2) 잡음이 포함된 입력도 출력 값에 큰 영향을 주지 않아야 한다. ex) 스캐닝, 뷰 이슈.. 

3) 가림이나 유실 등 데이터 소실이 일부 발생해도 출력 값에 큰 영향을 주지 않아야 한다.

-> PointNet의 robustness가 논문에서 증명됨. 즉 가려지거나, 이동되거나, 약간 안보여도 출력에 큰 영향을 주지 않으며, 잡음이 있는 부분에서도 안정적으로 shape에 대한 global feature를 잘 뽑아낸다.


- Experiment

https://dogunkim.tistory.com/35

 

Ch02. Point Cloud Processing Backbone - 1) PointNet

Ch 02. Point Cloud Processing Backbone 딥러닝을 이용해서 Point cloud를 처리하는 방법론을 공부할 것이다. 2-1. PointNet2-2. PointNet++ 2-3. Graph Convolutional Network 2-4. Dynamic Graph CNN 2-5. Kernel Point Convolution  https:/

dogunkim.tistory.com


- Conclusion

1. 포인트 클라우드를 별도 변환 없이 직접적으로 활용할 수 있는 네트워크 구조 제안

2. Classification, Segmentation 등의 분야에서 활용 가능한 출력 값을 도출할 수 있음

3. 기존 방법 대비 높은 성능 향상을 보임을 실험을 통해 증명

4. 제안한 방법의 이론적 분석을 통한 이점을 증명함