Point Cloud
란? point cloud
를 사용해서 연구를 하는 등의 과정을 위해서는 정육면체 모양의 voxel grid로 변형을 한다거나 collection of images로 바꾸어 주는 전처리 과정이 선행 되어 왔다. (여기서 collection of image란 다양한 view의 이미지로 바꾸어 준다는 뜻이다.)3D point cloud를 voxelized shape으로 바꾸어서 3D convolution을 수행하는 경우가 있는데, 이런 경우에는 보통 sparse한 point에 비해서 연산량이 너무 증가하기 때문에 비효율적이다.
→이를 보완하기 위해서 sparse convolution을 사용하기도 한다. (값이 없는 voxel에 대해서는 연산을 선택적으로 하지 않음)
3D point cloud → 2D Image → 2D CNN을 수행하는 방법도 있다. 하지만 이렇게 하면 space classification은 할 수 있어도 point classification이나 space reconstruction등의 task는 불가능하다.
3D Point cloud → manifold mesh로 형태를 바꾸는 경우도 있는데 일반적으로 non-isometric shape에 대해서는 mesh를 사용하는것이 어렵다.
→ 2D로 펼쳐질 수 있는 3D 형태는 모든 normal vector이 한 방향을 가리킨다는 의미이다.
→ 그리고 3D processing이나 mesh transformation을 위해서는 manifold mesh를 만들어야 한다. (non-manifold는 실제로 존재하지 않는 형태이기 때문이다.)
→ 이 시도는 N개의 point들의 순서가 바뀌는 경우에도 모델의 output은 동일하도록 하기 위함이다.
1. 기존 시도들
- `RNN`과 같이 sequential data를 다루기 위한 모델을 사용하기에 point cloud의 데이터 개수가 너무 많다.
- 직접 sorting을 할수 있으면 좋겠으나 sorting이 가능하단 것은 3차원의 point들을 1차원으로 매핑할수 있는 일대일 대응함수가 존재한단 뜻이기 떄문에 현실적으로 불가능하다.
2. 논문의 시도: transformed element에 symmetric function을 적용하기
=> g 함수와 h 함수를 사용해서 최종적인 f 함수를 만들 수 있게 된다. Max Pooling
을, h로는 Multi Layer Perceptron
을 사용한다.MLP
의 경우에는 가중치가 다양할 것이기 때문에 결과적으로 다양한 transformation을 가능하게 할 수 있다고 생각한다.Local and Global Information Aggregation
→ 앞선 max pool
과 MLP
를 사용하는 모듈의 출력은 각각의 point set마다 feature vector로 나타낸 것을 의미한다. (아마도 초기의 input point cloud들을 그룹화 하여서 각각의 그룹의 feature vector을 나타낸 것으로 확인이 된다)
f
함수로 구한 global feature vector이 global information이고, MLP
를 거치기 전의 각 point마다의 feature이 local information이다.→ 이를 통해서 네트워크는 local geometry와 global semantics에 의존한다.
실험 결과를 보면 per-point normal에 대한 예측의 정확도가 높은것이 point의 local 이웃의 정보를 효과적으로 summarize할 수 있음을 확인 가능하다.
Joint Alignment Network
→ T-net
이라는 네트워크를 통해서 affine transformation matrix를 예측한다.