본문 바로가기
AI/3D reconstruction & generation

[Paper Review] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

by SolaKim 2024. 10. 18.

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

Charles R. Qi* Hao Su* Kaichun Mo Leonidas J. Guibas 
Stanford University

 

 

 

Abstract

Point cloud 는 기하학 데이터 구조에서 중요한 요소이다.
기존 연구자들은 Point cloud 의 비규칙적인 구성 때문에 이러한 데이터를 3D voxel girds나 Image collections로 변환했다.
=> 이와 같은 경우 데이터를 과도하게 상세하게 저장하거나 처리하는 방식이 불필요하게 많아져서 성능저하나 시스템 문제가 발생할 수도 있다.

그리하여, 이 논문에서는 input으로 들어오는 points들의 순열 불변성(Permutation invariance)을 잘 반영하여 직접적으로 Point cloud를 처리하는 novel type의 neural network를 design 하였다.
=> PointNet은 포인트 클라우드를 그대로 받아들이면서, 입력된 점들의 순서가 바뀌어도 동일하게 처리될 수 있도록 설계되었다.

그래서 그 novel type의 neural network 를 이 논문에서는 PointNet으로 지칭한다. 이는 객체 분류(object classification), 부분 분할(part segmentation), 장면 의미 분석(scene semantic parsing)을 다양하게 포함한 application을 위해 통합된 구조를 제공한다.

PointNet은 간단하지만 매우 효율적이고 효과적이다. 실증적으로 SOTA (State of The Art) 모델보다 비슷하거나 더 나은 강한 performance를 보여주었다.

 

Point cloud, Voxel, Mesh

 

 


Introduction

전형적인 Convolutional architectures 은 이미지나 3D voxel 처럼 일정한 구조를 가진 데이터에 대해 효율적인 가중치 공유(weight sharing)와 최적화 작업 (other kernel optimizations) 을 할 수 있도록 설계되었다.

* 여기서 "Convolutional" 은 합성곱이라는 뜻으로, 주로 "Convolutional Neural Network(CNN)"에서 사용된다. 합성곱 신경망은 이미지나 시계열 데이터 값은 구조화된 데이터를 처리하기 위한 신경망의 한 종류로, 합성곱 연산을 통해 입력 데이터를 효율적으로 분석하고 중요한 특징을 추출하는 역할을 한다. CNN은 주로 이미지 인식, 객체 탐지 등에서 많이 사용된다.

PointNet 이 점의 순열 불변성을 보장하기 위해 계산 과정에서 대칭성(Symmetrizations) 을 반영해야하며, 더 나아가 강체 변환(Rigid motions) 에 대해서도 네트워크가 견고하게 동작 해야한다. 

*  여기서 "Rigid motions" 는 강체 변환을 의미하며, 물체가 형태를 유지한 채로 위치나 방향이 변하는 움직임을 가리킨다. 즉, 물체가 회전하거나 평행 이동(병진 운동)하더라도 그 모양이나 크기가 변하지 않는 변환이다.

 

PointNet 은 포인트 클라우드를 입력으로 받아서, 전체 포인트 클라우드에 대한 하나의 분류 결과를 제공하거나, 각 점에 대해 개별적으로 분류(세그먼트 또는 부분 레이블)를 할 수 있는 구조이다. 

PointNet 은 포인트 클라우드 내에서 중요한 점들을 식별하고, 왜 그 점들이 유의미한지에 대한 정보를 학습하면서 해당 점들을 인코딩한다. 네트워크의 최종 계층에서는 이전 단계에서 학습된 정보를 기반으로, 전체 형태를 대표하는 전역 특징을 만들어 형태를 분류하거나, 각가그이 점에 대한 분할 레이블을 예측하는 방식으로 사용된다.

이러한 PointNet의 입력 형식은 각 포인트 클라우드의 점들이 독립적으로 변환되기 때문에 강체 또는 아핀 변환을 적용하기 쉽다. 그렇기 때문에 데이터를 변환하는 과정을 더욱 쉽게 적용할 수 있으며, 이러한 변환 네트워크를 통해 데이터를 표준화함으로써 PointNet의 성능을 더 높일 수 있다.

 


Related Work

1. Point Cloud Features

요약 : 포인트 클라우드 데이터를 처리하는 데 있어 기존의 수작업 특징들이 작업에 맞춰 설계되며, 본질적(intrinsic) 또는 외적 불변성(extrinsic)을 고려하여 설계되지만, 최적의 특징 조합을 찾는 것은 복잡하다.

2. Deep Learning on 3D Data

    1 . 요약 : 3D 데이터를 처리하는 데 있어 Volumetrix CNN이 Voxel화된 데이터를 사용하지만, 데이터 희소성과 계산 비용 문제로 인해 해상도에 한계가 있으며, 이를 개선하려는 시도가 있었지만 여전히 매우 큰 포인트 클라우드 처리에는 어려움이 있다.
    2. 요약 : 3D 데이터를 2D 이미지로 변환하여 처리하는 Multiview CNN 방식이 3D 형태 분류에서는 우수한 성과를 냈지만, 이를 더 복잡한 장면 이해(scence understanding) 나, 점 분류(point classification), 형태 완성(shape completion)과 같은 3D 작업으로 확장하여 적용하는 데에는 어려움이 있다.
    3. 요약 : Spectral CNN은 특정 유형의 Mesh, 특히 유기체 같은 물체에 잘 맞지만, 가구처럼 형태가 다양하고 등거리 변환이 어려운 비등거리(non-isometric) 형상에는 적용하기 어렵다.
    4. 요약 : Feature-based DNN (Deep Neural Network) 방식은 3D 데이터를 형상 특징 추출하여 벡터로 변환한 다음, Fully Connected Network를 사용해 형상을 분류한다. 하지만 성능은 추출된 특징들이 얼마나 강력하게 데이터를 잘 표현하느냐에 달려 있다는 한계가 있다

3. Deep Learning on Unordered Sets

요약 : 포인트 클라우드는 순서가 중요하지 않은 데이터 구조를 가지고 있지만, 딥러닝 연구는 주로 순서나 규칙이 있는 데이터에 집중되어 있으며, 포인트 집합을 다루는 연구는 상대적으로 적다.

 


Problem Statement

이 논문에서는 순서가 없는 점 집합을 직접 입력으로 처리하는 딥러닝 프레임워크를 설계했다.

포인트 클라우드 : {Pi | i = 1, …, n} 과 같이 3D 점들의 집합으로 표현되며, 여기서 각 점 Pi는 (x, y, z) 좌표와 색상, 법선 등과 같은 추가적인 특징 채널을 가진 벡터이다. +) 단순성과 명확성을 위해, 별도로 언급하지 않는 한 (x, y, z) 좌표만을 점의 채널로 사용한다.

객체 분류의 경우 K개의 후보 클래스에 대해 점수를 계산하고, 의미론적 분할에서는 각 점에 대해 해당하는 m개의 의미 범주에 대한 점수를 계산하여 각 점을 분류한다.

 


Deep Learning on Point Sets

n차원 유클리드 공간(R^n) 에서의 점 집합의 특징은 다음과 같다.

1. 비순서성(Unordered)

: 이미지의 픽셀 배열이나 볼륨 그리드의 복셀 배열과 달리, 포인트 클라우드는 특정한 순서가 없는 점들의 집합이다. 즉, 네트워크가 N 개의 3D 점 집합을 처리할 때, 입력 데이터의 순서가 변경되어도 (N!개의 순열으로써) 결과가 변하지 않아야 한다. 

2. 점 간 상호작용(Interaction among points)

: 클라우드의 점들은 거리 척도가 있는 공간에서 나온다. 즉, 점들은 고립되어 있지 않으며, 이웃한 점들이 의미 있는 부분 집합을 형성한다. 따라서 모델은 가까운 점들 사이의 지역 구조를 포착할 수 있어야 하며, 지역 구조들 간의 조합적 상호작용을 이해할 수 있었야 한다.

3. 변환 불변성(Invariance under transformations)

: 포인트 클라우드는 기하학적 객체이므로 학습된 표현은 특정 변환에 대해 불변성을 가져야 한다. 예를 들어서, 점들이 전체적으로 회전하거나 이동하더라도 전체 포인트 클라우드의 범주나 점들의 분할이 변하지 않아야 한다.

 

PointNet Architecture

위 그림은 PointNet 의 Architecture이다.
- classification network는 n 개의 points 를 입력값으로 받는다.
- Max pooling* 을 이용하여 point features 를 통합한다. 
- 출력받은 k 개의 클래스에 대한 분류 점수이다.
- segmentation network는 classification net에 대한 확장이다. 이는 global과 local features를 각 포인트 점수마다 concaternate 한다.
- MLP* 는 다층 퍼셉트론으로, 괄호 안에 있는 숫자 값들은 각 층의 크기(뉴런 개수)를 나타낸다.
- 모든 층에 ReLU 활성화 함수와 함께 배치정규화(BatchNorm) 이 사용된다. 이를 통해 비선형성을 추가할 수 있다.
- 분류 작업의 마지막 MLP에서는 드롭아웃* 이 적용되어 과적합을 방지하는 역할을 한다.

* Max pooling 이란, 딥러닝에서 주로 사용되는 다운 샘플링 방법 중 하나로, 주어진 영역에서 가장 큰 값을 선택하여 출력하는 연산이다. 일반적으로 합성곱 신경망(CNN)에서 특징 맵의 크기를 줄이면서 중요한 정보를 유지하고, 계산 비용을 줄이기 위해 사용된다. 
주요 목적은 공간적 차원을 줄이면서도 가장 중요한 (가장 큰 값) 특징을 추출하는 것이다. 이로 인해 모델의 성능이 향상되거나 과적합을 방지하는 효과를 기대할 수 있다. 

* MLP는 fully connected network의 기본 구성 요소로, 주로 비선형 변환을 통해 입력데이터를 처리한다.

* 드롭아웃은 일부 뉴런을 무작위로 비활성화하여 네트워크가 더 일반화된 성능을 내도록 돕는다.

전체 네트워크 아키텍처는 분류 네트워크와 분할 네트워크가 많은 구조를 공유한다. 이 네트워크에서는 세 가지의 주요 모듈이 있다.

1. 모든 점들로부터 정보를 집계하기 위한 대칭 함수로서의 max pooling 층 [PointNet 구조 그림에서 빨간 상자부분]

입력 순열에 대해 불변성을 가지는 모델을 만들기 위한 세가지 전략이 있다.

- 입력을 정렬하여 표준 순서(Canonical Order) 로 배치
 : 입력된 데이터를 정렬해서 일정한 표준 순서를 따르게 만든다. 이렇게 하면 모델이 항상 같은 순서로 데이터를 처리할 수 있어 입력 순서가 바뀌더라도 결과가 동일하게 나온다.
=> 점 집합을 정렬한 후 처리해도 순서 문제를 완전히 해결하지 못하고, 모델이 일관된 결과를 내기 어렵다.
=> 정렬으로 근본적 문제를 해결 할 수 없다.

- 입력을 시퀀스로 취급하고 RNN 훈련
 : 입력 데이터를 순서가 있는 시퀀스로 간주하여 순환 신경망(RNN, Recurrent Neural Network) 을 사용해 학습한다. 하지만 다양한 순열(입력 순서)을 모두 고려해야 하므로, 모든 가능한 순열에 대해 훈련 데이터를 증강(Augment) 하여 학습해야된다. 즉, 같은 데이터라도 순서를 다르게 배치한 여러 버전을 모델이 학습하게 된다.
=> RNN을 이용한 접근은 입력 순서에 어느 정도 견고성을 제공하지만, 점 집학과 같이 수많은 입력을 다룰 때에는 그 성능이 떨어지며, 실제로 실험결과에서도 RNN 기반 모델이 제안된 방법보다 성능이 낮다는 점을 설명하고 있다.

- 대칭 함수 사용
 : 입력된 각 점에서 얻은 정보를 집계하기 위해 대칭적인 함수(Symmetric function, 순서에 영향을 받지 않는 함수)를 사용한다. 대칭 함수는 n개의 벡터(예: 입력된 점들)를 받아들이고, 입력 순서에 상관없이 동일한 결과를 출력한다. 예를 들어, 덧셈(+)과 곱셈(*)은 입력 순서에 영향을 받지 않는 대칭적인 이항 함수이다. 

=> 함수 h는 다층 퍼셉트론(MLP) 네트워크로 근사하고, 함수 g는 단일 변수 함수와 max pooling 함수의 조합으로 근사한다. 
=> 실제 문제에 적용해보면 point n개가 mlp로 이루어진 function에 input으로 각각 들어가고 output으로 나온값들은 max pooling합니다. 
=> 실험 결과 이 방법이 잘 작동함을 확인했다. 다양한 h를 통해 여러 f를 학습하여 점 집합의 다양한 속성을 포착할 수 있었다. 
=> 어떤 순서로 point가 model로 들어가더라도 max pooling을 통해 나오는 값은 동일해진다.

* 대칭 함수는 N개의 벡터를 입력 받았을 때 N개의 벡터의 입력 순서와 상관없이 항상 동일한 결과물을 출력한다. 이때, 대칭 함수란 정의역의 순서를 바꿔도 동일한 결과를 얻는 함수이다. 예 : f(x1, x2) = f(x2, x1)

 

2. Local 및 Global 정보를 결합하는 구조 [PointNet 구조 그림에서 파랑 상자부분]

 위의 섹션에서 나온 출력은 [f1, …, fK] 벡터를 형성한다. 이 논문에서는 입력된 점 집합에서 추출된 전역 특징을 사용하여 SVM 또는 MLP 분류기를 쉽게 훈련하여 형상 분류를 수행할 수 있다. 그러나 점 분할 작업에는 지역적 정보와 전역적 정보를 결합해야 한다는 점을 생각해야된다. 

=> PointNet이 Object Classification 작업만 한다면 위의 1번에서 구한 Global feature만 있으면 된다. 하지만 Segmentation(분할)작업을 하기 위해서는 Local feature도 알아야한다.

=> Global Feature 계산이 끝나면, Local Feature 뒤에 Global Feature 벡터를 연결하는 식으로 통합한다. 통합한 n x 1088 크기의 새로운 벡터가 FC를 거지면서 새로운 Point feature를 갖는 n x 128 크기의 벡터가 생성된다. 

=> 이는 전역 특징을 각 점의 특징에 결합함으로써, 각 점이 주변의 지역적 정보뿐만 아니라 전체 포인트 클라우드의 전역적 정보까지 반영된 새로운 특징을 얻게 된다. 이 방법을 통해 점 분할 작업에서 지역 및 전역 정보를 모두 고려한 더 효과적인 처리가 가능해진다.

=> 이러한 modification을 통해 PointNet은 지역 기하학과 전역 의미에 의존하는 점별 값을 예측할 수 있게 되었다. 예를 들어, 점 별로 법선을 정확하게 예측할 수 있으며 이는 네트워크가 각 점의 지역적 이웃에서 정보를 요약할 수 있음을 나타낸다. => 네트워크가 각 점의 지역적인 정보뿐만 아니라 전체적인 맥락을 잘 활용하여 더 정확한 예측을 할 수 있게 된다.

 

3. 입력 점과 점 특징을 정렬하는 두개의 공통 정렬 네트워크 [PointNet 구조 그림에서 초록 상자부분]

 포인트 클라우드가 회전, 이동 등의 강체 변환을 겪더라도 의미적 라벨링이 일관성을 유지하려면, 학습 과정에서 이러한 변환에 대한 불변성을 확보해야한다. 이를 위해 입력 데이터를 표준 공간에 정렬하거나, Jaderberg의 공간 변환기(샘플링과 보간법을 통해 2D 이미지를 정렬)처럼 데이터를 자동으로 정렬하는 기법을 사용할 수 있다. 

"T-net을 거치면서 모든 점들이 표준화된 공간에 놓이게 하는게 목적". 즉, T-Net 이 3 x 3 크기의 아핀 변환 행렬을 잘 예측하게 만들고자 한다. n x 3 크기의 입력 데이터는 3 x 3 크기의 아핀 변환 행렬과 곱해져서 표준화가 된다.

 포인트 클라우드의 입력 형식은 새로운 레이어를 발명할 필요가 없으며, 이미지의 경우 왜곡(aliasing)도 발생하지 않는다. 
이 논문에서는 작은 네트워크(T-net)을 통해 아핀 변환 행렬을 예측하고, 이 변환을 입력 점들의 좌표에 직접 적용한다. 이 미니 네트워크는 포인트 클라우드 처리에 적합하게 설계된 간단한 구조로 이루어져있다.

=> ⭐️ Input transformation 을 거치고 나서 출력된 n x 3 크기의 벡터는 FC를 거치면서 feature 가 추출된다.이 때 출력된 결과는 n x 64 크기인데, Feature 공간에 대해서도 표준화 작업을 거치기 위해 두 번째 T-Net이 사용된다. 이때 T-Net은 Feature 변환 행렬을 예측하고 두번째 T-Net은 64 x 64 크기의 행렬을 예측한다. 이것은 첫번째 T-Net이 예측한 3 x 3 보다 훨씬 크기 때문에 학습하기가 힘들다. 그래서 PointNet 의 Softmax Loss 에 아래의 Regularizaion 항을 추가한다. 

이 아이디어는 특징 공간의 정렬에도 확장될 수 있다. 
특징 공간에서 입력 포인트 클라우드의 특징을 정렬하기 위해 변환 행렬을 사용하지만, 이 행렬의 차원이 커지면서 최적화가 어려워지므로, 변환 행렬이 직교 행렬에 가깝게 되도록 제약을 추가하여 안전성을 높인다

A는 미니 네트워크(T-net)에 의해 예측된 특징 정렬 행렬이다. 직교 변환은 입력된 데이터를 변환할 때 정보 손실을 최소화하기 때문에 이상적이다. Lreg와 같은 정규화 항을 도입함으로써 네트워크의 학습 과정이 더 안정적이게 되고, 모델의 최종 성능도 개선된다.

=> 고차원 공간에서 입력 데이터를 변환할 때, 변환 행렬이 너무 복잡해지지 않고 적절히 제어되도록 하기 위한 것. 변환 행렬이 직교 행렬에 가깝도록 만들기 위해 위와 같은 항을 추가하여 가중치가 지나치게 커지지 않도록 제약을 줄 수 있다.


Theoretical Analysis

이 부분에 대해서는 깊이 이해하지 못했기 때문에 이해를 한 수준 정도로만 얘기를 해보도록 하겠다.

 

충분히 많은 α가 있을때 (point들이 있을때) Hausdorff distance의 max값 (global max pooling)은 general function과 ϵ(매우작은) 차이밖에 나지 않다는 뜻
출처: https://jaehoon-daddy.tistory.com/46?category=1053336

이 정리는 네트워크가 점 집합 함수 f 를 근사할 수 있음을 보여준다. 
핵심은 네트워크가 point cloud data를 처리하는 방법으로 h 와 gamma 라는 두가지 연속 함수와 MAX 연산을 사용하여, 각 점에서 정보를 추출하고 이를 집합 전체의 최대값으로 요약하는 방식으로 점 집합의 특징을 효과적으로 캡처한다.


(a) 중요한 점들이 유지되면 출력이 변하지 않는다.
: 데이터가 손상되거나 노이즈가 추가되더라도, 중요한 몇 개의 점들만 그대로 있으면 네트워크의 출력 결과는 변하지 않는다.

(b) 중요한 점들은 유한한 수로 제한된다.
: 중요한 점들은 네트워크의 병목 차원(K)보다 많을 수 없다. 즉, 이 K 라는 값에 의해 중요한 점들의 수가 제한된다.

=> 이러한 결과는 네트워크가 입력 데이터의 중요한 점들만 선택하여 학습하고, 그 점들만으로도 데이터의 전체적인 정보를 잘 요약할 수 있음을 보여준다. 이 점들은 마치 객체의 '골격'처럼, 해당 데이터의 중요한 특징을 대표한다.

따라서, 네트워크는 점이 변형 되거나 일부 노이즈가 추가되어도 중요한 점들만 유지되면 안정적으로 결과를 예측할 수 있으며, 이 때문에 네트워크가 더 견고해진다!

 


Experiment

실험은 4가지 파트로 나뉜다.

1. PointNet이 다중으로 3D 인지 작업에 적용될 수 있는지

2. 네트워크의 design이 검증될 수 있는지에 대한 실험들

3. 네트워크가 무엇을 학습했는지 시각화

4. 시간 및 공간 복잡도 분석

 

1. PointNets can be applied to multiple 3D recognition tasks

   1-1. 3D Objection Classification

 네트워크는 포인트 클라우드의 전반적인 특징을 학습하여 객체를 분류할 수 있으며, 이를 검증하기 위해 3D 객체 분류에 널리 사용되는 ModelNet40 데이터셋에서 모델의 성능을 평가한다. ModelNet40 는 40개의 서로 다른 객체 범주로 이루어진 3D 형태 데이터셋이다.

기존 연구들은 3D 데이터를 다루기 위해 복셀(Volumetric data)이나 여러 각도의 2D 이미지로 변환하여 처리하는 방식을 사용했으나, 이 연구에서 최초로 포인트 클라우드를 그래도 처리하는 접근법을 제시.

네트워크는 Mesh 면의 면적에 따라 1024개의 점을 균등하게 샘플링하고(선택하고), 이를 Unit Sphere로 정규화한다. training 중에는 실시간으로 포인트 클라우드를 증강하기 위해 객체를 상향 축(up-axis)을 기준으로 무작위로 회전시키고, 각 점의 위치에 평균이 0이고 표준편차가 0.02인 가우시안 노이즈를 추가한다. => 훈련 중에 데이터를 다양화하기 위해 무작위 회전과 약간의 노이즈 추가하여 포인트 클라우드를 증강하는 방식

<Table 1> 을 보면 3D 입력(mesh, volume, point) 을 기반으로 한 방법들 중에서는 Ours PointNet 이 최고의 성능(89.2) 을 보였지만, 다중 뷰 기반 방법(MVCNN) 에 비해서는 약간 뒤처진다. 그 이유는 다중 뷰 렌더링 이미지가 포인트 클라우드에서 놓칠 수 있는 세부적이 기하학적 정보를 더 잘 포착할 수 있기 때문이라고 판단된다.

   1-2. 3D Object Part Segmentation

 Part segmentaion 작업은 3D 모델의 각 부분을 인식하고 분할하는 작업으로, ShapeNet 데이터셋을 사용하여 평가 및 진행되었다. 
주어진 객체에서 부분별로 레이블을 부여하는것을 목표로 한다(예: 의자 다리, 컵 손잡이). ShapeNet 은 다양한 3D 객체에 대해 세밀한 부분 레이블을 제공하는 대표적인 데이터셋이다.

이 논문에서는 part segmentation 작업을 각 점에 대한 분류 문제로 정의했다. 평가 지표는 점 단위의 평균 교차-합집합(mIoU) 을 사용했다.

카테고리 C의 형태 S에 대해 mIoU를 계산하는 방법은 다음과 같다.

1. 카테고리 C의 각 부분 유형에 대해 실제 정답과 예측 간의 IoU(교차-합집합)을 계산한다. 만약 실제 정답과 예측 점들의 합집합이 비어 있으면, 해당 부분의 IoU를 1로 계산한다.
2. 그런 다음, 카테고리 C의 모든 부분 유형에 대한 IoU 평균을 계산하여 해당 형태의 mIoU를 구한다. 카테고리의 mIoU를 계산하기 위해서는 해당 카테고리의 모든 형태에 대한 mIoU 평균을 구해야한다. 

<Table 2> 에서 각 카테코리별과 평균 IoU(%) 점수가 나타나있다. 이 네트워크는 IoU가 2.3 % 향상되었으며, 대부분의 카테고리에서 베이스라인 방법들을 능가하는 결과를 확인할 수 있었다.

또한, 이러한 방법들의 견고성을 테스트하기 위해 시뮬레이션된 Kinect 스캔 실험을 수행했다. ShapeNet 파트 데이터셋의 모든 CAD 모델에 대해 Blensor Kinect 시뮬레이터를 사용하여 여섯 개의 무작위 시점에 불완전한 포인트 클라우드를 생성했다. 그리하여 이 논문에서는 동일한 네트워크 아키텍처와 학습 설정을 사용하여 완전한 형태와 부분 스캔 데이터에서 PointNet을 훈련했다. 결과는 평균 IoU 에서 5.3 % 만 손실되었음을 알 수 있었다. 

<Fig 3> 에서는 완전한 데이터와 부분 데이터 모두에 대한 정성적(Qualitative) 결과를 제시했다. 부분 데이터가 상당히 도전적이었지만, 예측값이 합리적이라는 것을 확인할 수 있었다.

   1-3. Semantic Segmentation in Scenes

부분 분할에 사용된 네트워크는 객체의 일부 레이블이 아닌, 객체 자체의 의미적 클래스 레이블을 예측하는 의미적 장면 분할로 쉽게 확장될 수 있다. 이 연구에서는 Stanford 3D semantic parsing 데이터셋을 사용해 실험을 수행했다. 이 데이터셋은 Matterport 스캐너로 6개 지역, 271개의 방을 포함한 3D 스캔을 제공한다. 스캔된 각 점은 13개의 카테고리(의자, 테이블, 바닥, 벽 등과 잡동사니) 중 하나의 의미적 레이블로 주석이 달려있다.

순서 
학습데이터 준비 : 먼저 점들을 방(room) 단위로 나누고, 각 방을 1m x 1m 크기의 블록으로 샘플링한다. 
학습 : 각 블록에서 점별 클래스를 예측하도록 PointNet의 분할 버전을 학습시킨다. 각 점은 XYZ 좌표, RGB 값, 방 안에서의 정규화된 위치(0에서 1사이의 값)으로 구성된 9차원 벡터로 표현된다. 
학습 사항 : 학습 시에는 각 블록에서 실시간으로 4096개의 점을 무작위로 샘플링하고, 테스트 시에는 모든 점을 테스트한다. k-fold 전략을 동일하게 따른다. 

<Table 3> 베이스라인은 동일한 9차원 로컬 특징과 추가적으로 3개의 특징(로컬 점 밀도, 로컬 곡률, 법선)을 추출하며, 표준 MLP를 분류기로 사용. PointNet 은 베이스라인 방법보다 현저히 높은 성능을 보였다. 

<Fig 4> 정성적 분할 결과를 부여준다. 이 네트워크는 매끄러운 예측을 출력할 수 있으며, 점이 누락되거나 가려진 경우에도 견고하게 동작한다.

<Table 4> 이 논문에서는 네트워크의 의미적 분할 출력을 기반으로 연결 성분 분석을 사용해 객체 제안을 생성하는 3D 객체 탐지 시스템을 추가로 구축했다. 이전 SOTA 모델과 비교해봤을때, 이전 방법은 sliding shape 방법과 CRF 후처리를 적용했으며, SVM을 사용해 복셀 그리드에서 로컬 기하학적 특징 및 전역 방(room) 컨텍스트 특징을 학습시켰다. PointNet의 방법은 보고된 가구 카테고리에서 이전 방법보다 훨씬 높은 성능을 보였다.

 

2. Architecture Design Analysis

이 파트에서는 통제 실험을 통해 설계 선택을 검증한다. 또한 네트워크의 하이퍼파라미터가 미치는 영향을 보여준다.

   2-1. Comparison with Alternative Order-invariant Methods

Unordered set inputs을 다루는 방법은 세가지가 있다. 이 논문에서는 ModelNet40 의 형태 분류 데이터셋을 사용한다.

<Fig 5> 이곳에서 비교한 베이스라인은 그림에 나타나있다. 
베이스라인으로는 정렬되지 않거나 정렬된 점들을 n x 3 배열로 사용한 다층 퍼셉트론(MLP), 점을 시퀀스로 처리하는 RNN 모델(LSTM*), 그리고 대칭 함수를 기반으로 한 모델이 있다. 
이 논문에서 실험한 대칭 연산에는 max pooling, average pooling, 그리고 Attention 기반 가중합이 포함된다.
Attention method는 각 점 특징에서 스칼라 점수를 예측한 후, 소프트맥스를 사용해 점들 간의 점수를 정규화한다. 그 다음, 정규화된 점수와 점 특징에 대해 가중합을 계산한다.
Fig 5에 나와 있듯이, max pooling 연산이 다른 방법들보다 큰 차이로 가장 좋은 성능을 달성했다. => 네트워크 설계에서 max pooling을 선택한 것이 적절함을 확인할 수 있었다.

* LSTM 이란 Long Short-Term Memory 로 RNN의 일종이다. RNN은 순차적인 데이터를 처리하는 데 사용되지만, 일반적인 RNN은 장기 의존성 문제(Long-term dependencies)를 처리하는 데 어려움을 겪는다. 이는 이전 정보가 긴 시퀀스 동안 유지되지 못해 중요한 정보가 손실되는 문제를 야기한다.
LSTM 은 이러한 문제를 해결하기 위해 고안된 특수한 RNN 구조로, 셀 상태 (cell state)와 게이트 메커니즘(입력 게이트, 출력 게이트, 망각 게이트)를 사용하여 중요한 정보를 더 오래 기억하고 불필요한 정보를 제거한다. 이로 인해 LSTM은 긴 시퀀스에서의 패턴을 학습하고, 장기적인 의존성을 더 효과적으로 처리할 수 있다. 

   2-2. Effectiveness of Input and Feature Transformations

<Table 5>에서 이 논문은 입력 및 특징 변환(input and feature transfomation,정렬을 위한)이 성능에 미치는 긍정적인 영향을 볼 수 있다. 기본적인 아키텍처만으로도 꽤 만족스러운 결과를 얻을 수 있다는 점이 매우 흥미롭다. 입력 변환(input 3x3)을 사용하면 성능이 0.8% 향상된다. 고차원 변환이 효과적으로 작동하기 위해서는 정규화 손실(Regularization loss)* 이 필요한다. 두 변환과 정규화 항을 결합함으로써 최고의 성능을 달성할 수 있었다.

* 정규화 손실(Regularization loss)는 모델이 학습하는 과정에서 과적합(overfitting)을 방지하고, 더 일반화된 성능을 얻기 위해 추가하는 손실 항목이다. 즉, 정규화 손실은 모델이 학습 데이터를 너무 세밀하고 맞추는 것을 막고, 불필요한 복잡성을 줄이도록 도와준다. (ex : L2 정규화(Ridge 정규화), L1 정규화(Lasso 정규화), Dropout) 

   2-3. Robustness Test (견고성 테스트)

PointNet 이 단순하고 효과적이면서도 다양한 입력 손상에 대해 견고함을 유지한다는 것을 보이기 위해 <Fig 5>의 max pooling 네트워크와 동일한 아키텍처를 사용했다. 입력 점들은 단위 구(unit sphere) 로 정규화됐다.

<Fig 6> 결과
- 누락된 점에 대해서는 50 %의 점이 누락되었을 때, 가장 먼 샘플링(furthest sampling)과 무작위 샘플링(random sampling)에서 각각 정확도가 2.4%와 3.8% 만 떨어졌다.
- 훈련 중에 이상점(outlier)을 본 경우, 네트워크는 이상점에도 견고한다. 이 논문에서는 (x, y, z) 좌표만으로 훈련된 모델과 (x, y, z) 좌표에 점 밀도(density) 를 추가한 모델을 평가했다. 이 네트워크는 전체 점들 중 20% 가 이상점일 때에도 80 % 이상의 정확도를 유지한다.
- 맨 오른쪽 그래프는 네트워크가 점 변형에 대해서도 견고함을 유지한다는 것을 보여준다.

3. Visualizing PointNet

- 중요 점 집합 Cs (Critical Point Sets):
   - max pooling 된 특징에 기여하는 중요한 점들이 형태의 골격을 나타냄
   - 이 점들만 있으면 형태의 전역 특징이 유지된다. 

- 상한 형태 Ns (Upper-bounded Shapes):
   - 입력된 point cloud과 동일한 전역 특징을 제공할 수 있는 최대 point cloud
   - 네트워크가 처리하는 점들 중 중요한 점이 아닌 점들이 사라져도 전역 특징 f(s)에 영향을 주지 않는다.

=> 결론, 중요한 점을 잃지 않는 한, 일부 점이 손실되거나 추가되어도 전역 특징은 변하지 않는다. PointNet은 불필요한 점이 있어도 형태를 인식하는 데 견고함을 보여준다.

4. Time and Space Complexity Analysis

<Table 6>은 Classification 용 PointNet의 Space(네트워크의 파라미터 수)과 Time(샘플당 부동소수점 연산, FLOP) 복잡도를 요약한다.

MVCNN 과 Subvolume (3D CNN) 은 높은 성능을 달성했지만, PointNet은 계산 비용에서 훨씬 더 효율적이다(샘플당 FLOP 측정 결과, 각각 141배 및 8배 더 효율적). 또한, PointNet은 네트워크의 파라미터 수(#param) 면에서 MVCNN보다 공간 효율성도 뛰어남(파라미터 수가 17배 적음).
더욱이, PointNet은 매우 확장성이 높다. 즉, 공간 및 시간 복잡도가  O(N) 으로, 입력 점의 개수에 선형적으로 증가 (linearly increased) 
반면, 다중 뷰 방식(MVCNN) 의 시간 복잡도는 이미지 해상도에 따라 제곱으로 증가하고, 볼륨 기반 합성곱 방식의 시간 복잡도는 볼륨 크기에 따라 세제곱으로 증가한다.

=> PointNet은 매우 효율적인 계산 및 공간 복잡도를 가지며, 대규모 포인트 클라우드 데이터 처리에서 높은 성능을 발휘할 수 있는 확장성을 가지고 있다.

 


Conclusion

- PointNet 은 포인트 클라우드를 직접 처리하는 딥러닝 모델이다.

- 객체 분류, 부분 분할, 의미적 분할 등 다양한 3D 인식 작업에 대해 통합된 접근 방식을 제공한다.

- 기존 SOTA 모델의 성능과 동등하거나 더 나은 성과를 달성했다.

- 네트워크를 이해하기 위해 이론적 설명과 시각적 분석을 제공한다.

 

 

 

이렇게 3D Reconstruction & generation 분야에서 가장 기본이 되는 PointNet 에 대한 논문을 리뷰해보았습니다.
제가 공부하는 용도로 작성된 문서이기 때문에 많이 부족할 수 있습니다..! 읽어주셔서 감사합니다.

 

👀 <Supplementary> 분석은 다음편에서 계속됩니다! To be continued.