이미지는 격자 형태로 각 픽셀(데이터)가 구조화돼있는 반면
point cloud는 이미지를 flat한것 처럼 구성되어 있다.
따라서 point cloud를 다루기 위해서는 voxel 형태로 구조화 할 수도 있는데,
해당 논문은 point cloud를 그대로 구조화 없이 처리하는 방법을 소개한다.
해당 블로그는 다음 블로그의 코드리뷰와 함께 살펴봐야
논문 이해에 용이하다.
CVPR'17
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를 다이렉트로 처리하는 신경망의 새로운 type을 설계한다.
이것은 input point의 순서(permutation) 불변을 준수한다.
PointNet은 여러 task에 대해 통일된 구조를 제공한다.
간단하기 때문에 PointNet은 고효율적이고 효과적이다.
또한 저자들은 이론적으로 network가 학습한것의 이해를 향한 분석과
왜 network가 input 순서와 오염(corruption)에 강한지 제공한다.
1. Introduction
저자들은 point cloud같은 3D geometric data에 대해 판단할 수 있는
deep learning architecture를 탐색한다.
point cloud는 정형화된 formet이 아니기 때문에,
대부분 연구는 전형적으로 각 data를 3D voxel gird로 변환하거나 image로 투영한다.
그러나 이러한 데이터는 불필요하게 용량을 차지하고
데이터의 자연 불변함을 모호하게 할 수 있는 양자화 artifact를 도입한다.
이러한 이유로 저자들은 간단하게 point cloud를 사용한 input representation에 집중한다.
point cloud는 간단하고 통일된 구조를 가지고 있어
변칙성과 mesh같은 복잡성을 피한다. 따라서 학습하기 쉽다.
그러나 PointNet은 여전히 point cloud는 단지 point의 집합이고
그 요소들은 순서에 불변한다고 사실을 존중하며
네트워크 계산에 특정한 대칭화를 필요하게 만든다.
나아가 고정된 모션에 불편해야 한다는것 또한 고려되야 한다.
PointNet은 point cloud자체를 input으로 다루고
output은 point에 대한 class label 또는 segment / part label이다.
네트워크의 기초 구조는 놀랄만큼 간단하다.
또 각 point는 (x, y, z) 좌표인 3차원으로 여기는데 추가적인 정보들이 더 붙을수도 있다.
(color 정보가 붙는다고 하면 x, y, z, r, g, b 가 될 것이다.)
키포인트는 single symmetric func.인 max pooling 사용이다.
네트워크는 point cloud의 interesting or informative point를 선택하고
선택된 이유를 encode하는
최적화 function, criteria의 집합으로 효과적인 학습을 한다.
네트워크의 최종 fully connected layer는 학습된 optimal value를
전체 형태의 global descriptor (shape classification / segmentation)으로 모은다.
input format은 고정되거나 affine transformation에 적용하기 쉽다.
(각 point는 독립적으로 변환된다.)
따라서 PointNet process전에 데이터 정규화를 위한
data-dependent spatial transformer network를 추가할 수 있다.
여러 실험 결과 PointNet은 key point의 sparse 집합에 의해
input point cloud를 요약하도록 학습한다는것을 알아냈다.
이론적 분석에선 왜 PointNet이 input point의 작은 동요 뿐만 아니라
insertion (outlier), deletion (missing data)에도 아주 안정적인지 설명한다.
저자들의 contribution은 다음과 같다.
1. 순서가 없는 3D point set을 처리하는데에 알맞은 network를 제안함.
2. network가 얼마나 task를 수행하도록 학습되는지 보여줌.
3. 실증적 이론적 분석을 통해 해당 방법의 안정성과 효율성을 제공함.
4. 네트워크에서 선택된 뉴런에 의해 계산된 3D feature를 보여주고
이 성능에 대한 직관적인 설명을 개발함.
3. Problem Statement
point cloud는 3D point의 집합 $\left\{ P_{i}| i = 1, ..., n\right\}$으로 나타낸다.
각 point $P_{i}$는 $\left ( x, y, z \right )$같은 좌표고 color같은 요소가 추가될 수 있다.
저자들은 $\left ( x, y, z \right )$를 사용한다.
classification에 대해서는 한 형태로부터 다이렉트로 샘플링되거나
point cloud의 한 장면으로 부터 pre-segment가 된다.
PointNet은 모든 k class에 대한 k score를 출력한다.
semantic segmentation에 대해서는
input이 part region segmentation을 위한 single object가 되거나
object region segmentation을 위해 3D 장면으로 부터 sub-volume이 될 수 있다.
PointNet은 각 $n$ point와 각 $m$ semantic subcategory에 대한 $n \times m$을 출력한다.
4. 1. Properties of Point Set in $\mathbb{R}^{n}$
Input 데이터는 Euclidean space에 있는 point의 부분집합이다.
이것은 3가지 주된 특징을 가진다.
1. Unordered
image나 voxel과는 달리 point cloud는
구체적인 순서나 격자가 없는 point의 집합이다.
다시말해, $N$개의 3D point set을 처리하는 network는
input set의 순서 $N!$에 불변해야 한다.
2. interaction among points
point cloud는 distance metric에 대한 space에 있다.
이것은 point cloud는 고립된것이 아니고
point cloud는 의미있는 부분집합 형태로 이웃하고 있다는 것이다.
그러므로, 모델은 인접한 point로부터 local structure을 감지할 수 있어야 하고,
local structure 사이에서 상호작용이 가능해야 한다.
3. Invariance under transformation
geometric object인 point set의 학습된 표현은
특정한 transformation에 불변해야 한다.
예를 들어 회전변환을 할 경우 global point cloud category나
segmentation은 변하지 않아야 한다.
4.2. PointNet Architecture
PointNet의 구조는 다음과 같다.
네트워크는 크게 3가지 모듈로 구성된다.
1. 모든 point로부터 정보를 융합하기 위한 symmetric function으로써의
max pooling layer.
2. local, global information combination 구조
3. input point와 point featuer를 align하는
two joint alignment network
Symmetry Function for Unorderd Input
model이 Input 순서에 불변하기 위해서는 3가지 전략이 존재한다.
1. sort input into a canonical order
2. treat the input as a sequence to train an RNN
but, 모든 경우의 수에 대해 augment
3. 각 point 정보를 모으기 위해 use a simple symmetric function
symmetric func.는 input으로 $n$ vector를 받고 ouput으로 순서 불변 vector를 출력한다.
+나 *등이 symmetric func.이다. $a + b = b + a$; $a \times b = b \times a$
즉, symmetric func.은 함수의 인자의 순서와 상관없이 같은 결과를 출력하고
max pooling func.도 symmetric func.인 것을 알 수 있다.
sorting은 간단한 얘기처럼 들리지만 차원이 높아지면 사실
정렬할 수 있는 방법이 없고 network를 학습시키기도 어렵다.
따라서 1.은 해결책이 될 수 없다.
실험결과, 정렬된 point를 MLP에 다이렉트로 적용한 결과
정렬하지 않은 MLP보단 성능이 좋지만 그래도 전체적으로는 안좋다는 것을 알았다.
point를 sequential signal로 처리할 수 있는 RNN은
이론상 input order에 불변할 것이다.
그러나 이 방법은 point sequential의 scale 조절이 어렵다.
실험결과, 시계열 데이터로 처리하는 것은
위 sorting보단 좋지만 PointNet보다는 안좋다는것을 알았다.
저자들의 아이디어는 변환된 요소에 symmetric func.을 적용함으로써
point set으로 정의된 general func.을 근사화 한다.
$f : 2^{\mathbb{R}^{N}} \to \mathbb{R}$
$h : \mathbb{R}^{N} \to \mathbb{R}^{K}$
$g : \mathbb{R}^{K} \times \cdots \times \mathbb{R}^{K} \to \mathbb{R}$
$g$에서 $\mathbb{R}^{K}$는 총 $n$개 있다.
$h$는 MLP network에 의해 근사화되고,
$g$는 single variable func.과 max-pooling func.으로 근사화된다.
$h$ collection을 통해 저자들은 set의 다른 특성을 capture하는
많은 $f$를 학습할 수 있다.
즉, MLP는 근본적으로 함수 근사기 이므로 general func.을 근사화 한다는 뜻이다.
Local and Global Information Aggregation
위의 section의 output은 vector $\left [ f_{1}, ..., f_{K} \right ]$ 형태다.
그리고ㅓ 이것은 input set의 global signature다.
classification을 위해서는 SVM이나 MLP를 global feature에 쉽게 학습할 수 있다.
그러나 segmentation은 local과 global 지식의 결합이 필요하다.
해결법은 PointNet의 segmentation구조에서 볼 수 있다.
global point cloud feature vector을 계산한 다음
저자들은 각 point feature와 global feature를 결합함으로써
각 point feature을 feed-back 한다.
그 뒤에 저자들은 결합된 point feature에 기반한 새로운 point feature을 추출한다.
이때 per point feature은 local과 global 정보를 모두 가지고 있다.
이러한 수정을 한 PointNet은 logcal geometry와 global semantics 둘다에 의존하는
per point quantity를 예측할 수 있다.
Joint Alignment Network
point cloud의 semantic labeling은
point가 transformation이 적용되도 불변성을 가진다.
그러므로 point set으로부터 학습된 표현도 transformation invariant해야 한다.
자연적인 해결법은 feature를 추출하기 전 모든 set을
정규화된 space에 align하는 것이다.
"Spatial Transformer Networks"에서 sampling 및 보간을 통해
2D image를 align하는 spatial transformer 이이디어를 소개한다.
저자들은 위와 유사하게
mini-network (T-net)에 의해 affine transformation matrix를 예측하고
각 point 좌표에 이것을 다이렉트로 적용한다.
nini-network는 그 자체로 big network와 닮았고 max pooling과
fully connected layer 같은 point 독립 feature 추출기의 basic module로 구성된다.
이 아이디어는 feature space의 alignment에 확장될 수 있다.
저자들은 point feature에 또다른 alignment networkfmf 삽입할 수 있고,
다른 input point cloud로부터 feature를 align하기 위해
feature transformation matrix를 예측한다.
그러나, feature space에 있는 transformation matrix는
spatial transformation matrix보다 더 큰 차원을 가진다.
따라서 regularization term을 softmax training loss에 추가한다.
저자들은 다음을 통해 feature transformation matrix를
orthogonal matrix와 비슷하게 만든다.
$A$는 mini-network에 의해 예측된 feature alignment matrix다.
torthgonal matrix의 곱은 $I$다.
orthogonal transformation은 정보의 손실이 없다.
regularization term을 추가하니
optimization이 더 안정적으로 진행되고 모델의 성능도 상승한다.
4.3. Theoretical Analysis
Universal approximation
set func.의 연속성으로부터, 직관적으로, input point set의 작은 동요는
classifcation과 segmentation과 같은 func. value에 큰 변화를 주지 못한다.
$\mathcal{X} = \left\{ S : S \subseteq \left [ 0,1 \right ]^{m} \mathrm{and} \left|S \right| = n \right\}$이라 할 때,
$f : \mathcal{X} \to \mathbb{R}$는
$\forall\epsilon > 0, \exists\delta >0$ 즉, 모든 $\epsilon$이 0보다 크고, 존재하는 $\delta$가 0보다 클때,
Hausdorff distance $d_{H}\left ( \cdot , \cdot \right )$에 대한
$\mathcal{X}$ 의 continuous set func.이다.
어떤 $S, S' \in \mathcal{X}$가 주어질때,
만약 $d_{H}(S, S') < \delta$를 만족하면
$\left| f\left ( S \right ) - f\left ( S' \right )\right| < \epsilon$이다.
이때 Hausdorff distance는 metric space의 두 개의 부분집합 사이를 측정하는 것이다.
예를 들어 여러개의 점으로 구성된 클러스터 A, B가 있을 때,
A와 B에서 각각 한개의 점을 선택한 뒤 두 점사이의 거리를 측정한다.
이때 두점사이의 거리가 최대가 되는 거리가 Hausdorff distance다.
저자들의 이론에서 max pooling layer에서
충분한 뉴런, 다시말해 (1)식에서 $K$가 충분히 크면
PointNet에의해 $f$는 임의적으로 근사화 될 수 있다고 말한다.
Theorem 1
함수 근사기가 이론적인 함수 $f$를 근사하는가.
주어진 $f : \mathcal{X} \to \mathbb{R}$는
Hausdorff distance $d_{H}(\cot , \cdot)$에 대한 continuous set func.이다.
모든 $\epsilon$이 0보다 크고, $\forall\epsilon > 0$
존재하는($\exists$) continuous func. $h$와 symmetric func. $g\left ( x_{1}, ..., x_{n} \right )$가
$\gamma \circ MAX$와 같다면,
어느 $S \in \mathcal{X}$이 주어질때 다음을 만족한다.
보통 $\epsilon$은 아주 작은 양수다. 즉, 위 식이 만족한다는 것은 함수가 근사됐다는 것이다.
$x_{1}, ..., x_{n}$는 임의의 순서로 $S$에 있는 element의 전체 리스트다.
$\gamma$는 continuous func.다.
$MAX$는 input으로 $n$ vector를 가지고 요소별 최대값의 new vector를 반환하는
vector max operator다.
이 이론의 증명은 뒤에 supplementary 자료에 있다.
key idea는 network의 가장 나쁜 케이스는 point cloud를
space를 같은 크기의 voxel로 나눔으로써
volumetric representation으로 변환하는것을 학습할 수 있다는 것이다.
그러나 현실적으로 network는 space를 살피는 더 똑똑한 전략을 학습한다.
Bottleneck dimension and stability
이론적으로 실험ㅈ거으로 저자들은 network의 표현이 max pooling layer의 차원
다시말해 식(1)의 $K$에 강하게 영향을 받는다는것을 알았다.
$\textbf{u} = \underset{x_{i} \in S}{MAX}\left\{ h\left ( x_{i} \right )\right\}$를
$\left [ 0,1 \right ]^{m}$에 있는 point set을
$K$차원 vector로 mapping하는 $f$의 sub-network로 정의한다.
다음 이론은 input의 작은 오염(corruption)이나 noise point은
network의 출력을 바꾸지 않을것 같다는 것이다.
Theorem 2
$\textbf{u} : \mathcal{X} \to \mathbb{R}^{K}$이기 때문에
$\textbf{u} = \underset{x_{i} \in S}{MAX}\left\{ h\left ( x_{i} \right )\right\}$와 $f = \gamma \circ \textbf{u}$가 주어지면 다음을 만족한다.
(a)는 $C_{S}$에 있는 모든 point가 보존된다면,
$f(S)$는 input 오염(corruption)에 불변하게 된다.
이것은 $N_{s}$까지 여분의 noise point가 있어도 변하지 않는다고 말한다.
(b)는 $C_{S}$가 식 (1)에서 결정된 $K$인 point의 제한된 수만 포함한다고 말한다.
다시말해, $f(S)$는 사실 $K$ element와 작거나 같은
유한한 집합인 $C_{S} \subseteq S$에 의해 결정된다.
그러므로, $C_{S}$는 $S$의 critical point set이라 부르고
$K$는 $f$의 bottleneck dimension이라고 한다.
$h$의 연속성과 비교하여, 이것은 point perturbation, corruption,
extra noise에 대한 모델의 안정성을 설명한다.
직관적으로, PointNet은 key point의 sparse set에 의해 형태를
요약하는 식으로 학습한다.
5. Experiment
5.1. Application
3D Object Classification
저자들은 ModelNet40에 대해 평가한다.
3D Object Part Segmentation
저자들은 ShapeNet에 대해 평가한다.
segmentation 결과는 다음과 같다.
Blensor Kinect Simulator를 사용하여 6개 시점으로
불완전한 pointcloud도 만들었다.
좌측이 만들어낸 partial input이고 우측이 complete인 dataset input이다.
Semantic Segmentaion in Scenes
저자들은 Stanford 3D semantic parsing data (S3DIS)에 대해 평가한다.
저자들은 training datas를 구성하기 위해,
먼저 room으로 point를 분리하고
$1 \times 1$ 영역 블록으로 room을 샘플링한다.
training할 때는 랜덤으로 각 블록에서 4096 point를 샘플링하고
testing할 때는 전체를 사용한다.
이때 train/test는 k-fold strategy를 사용한다.
저자들은 Segmentation 결과로부터 3D object detection을 수행한다.
5.2. Architecture Design Analysis
Comparison with Alternative Order-invariant Methods
저자들은 4.2에서 언급한 3가지 처리 방법에 대해 비교를 한다.
또 symmetry operation에 대해서는 max pooling, average pooling,
weighted sum에 대한 attention 3가지로 비교를 한다.
실험결과 Max pooling의 결과가 가장 좋았다.
Effectiveness of Input and Feature Transformations
다음 표는 저자들의 input과 treature transformeation의 긍정적인 효과를 보여준다.
흥미로운 점은 모든 실험결과가 의미있는 정확도를 기록한다는 것이다.
transformation과 regularization을 결합한것이 가장 높은 성능을 달성한다.
Robusteness Test
첫번째는 input sampling에서 data 손실 비율에 따른
정확도다.
두번째는 모델을 학습시킬 때 point의 좌표값만 쓴 것과,
point density도 쓴 것을 outlier 비율에 따라 비교한 것이다.
세번째는 perturbatoin noise 표준편차에 따른 정확도 비교다.
5.3. Visualizing PointNet
critical point set $C{S}$와 upper-bound shape $N_{S}$를 visualize한것이다.
ciritical point set $C_{S}$는 max pooled feature로 분포되어
형태의 skeleton을 요약한다.
upper-bound shape $N_{S}$는 같은 global shape feature $f(S)$가 주어졌을 때,
가장 큰 possible point cloud를 보여준다.
5.4. Time and Space Complexity Analysis
6. Conclusion
저자들은 point cloud를 다이렉트로 처리하는 PointNet을 제안한다.
PointNet은 수많은 3D recognition의 통일된 접근을 제안한다.
저자들은 모델의 이해를 위해 이론적 분석과 시각화를 보여준다.
Supplementary
B. Comparision between PointNet and VoxNet (Sec 5.2)
저자들은 5.2에서 한 Robustness Test 추가 실험을 했다.
PointNet과 VoxNet을 비교하여 실험을 했는데,
둘다 input으로 1024개의 point를 입력한다.
실험결과 PointNet은 Data Missing에 강건한 반면
VoxNet은 드라마틱하게 성능이 떨어진다.
C. Network Architecture and Traning Details (Sec 5.1)
PointNet Classification Network
첫번째 transformation network는
입력으로 raw point cloud를 입력받고 $3 \times 3$를 반환하는 mini-PointNet이다.
이것은 layer output size가 64,128,1024인 shared MLP와
max pooling과 output size가 512,256인 2개의 fully connected layer로 구성되어 있다.
output layer matrix는 identity matrix $I$로 초기화 된다.
마지막 레이어를 제외하고 모든 레이어는 ReLU와 Batch normalization이 적용된다.
두번째 transformation network는
output layer를 제외한 모든 구조가 동일하다.
두번째 network의 ouput은 $64 \tiems 64$다.
이 네트워크 또한 $I$로 초기화 된다.
weight 0.001로해서 regularization loss가 softmax classication loss에 추가된다.
drop out은 0.7로하고 output 차원은 256으로 한다.
batch normalization의 decay rate는 0.5부터 시작해서 0.99까지 증가한다.
adam optimizer를 사용하고 초기 learning rate 0.001,
momentum 0.9, batch size 32다.
learning rate는 20 epoch마다 2배 감소한다.
PointNet Segmentation Network
part segmentation에서,
위의 segmentaiton 구조를 조금 수정해야 한다
저자들은 class input을 나타내는 one-hot vector를
max pooling output에 concatenate한다.
또하 위의 그림처럼 skip link를 추가한다.
semantic segmentation에서
classification과 동일하고 위(4.2)에서 설명한 segmentation이 다다.
Baseline 3D CNN Segmentation Network
part segmentation에서 위 그림은 저자가 사용한 baseline의 구조다.
먼저 point cloud를 $32 \times 32 \times 32$ volumetric 표현으로 변환한다.
그다음 5개의 3D convolution operation을 적용한다.
마지막으로, $1 \times 1 \times 1$인 3D convolution layer를 적용하여
voxel의 segmentation label을 예측한다.
ReLU와 batch normalization이 마지막 layer외에 모두 적용된다.
D. Details on Detection Pipeline (Sec 5.1)
detection은 생략하겠다.
E. More Applications (Sec 5.1)
Model Retrieval from Point Cloud
PointNet은 global shape signature을 학습한다.
저자들은 기하학적으로 비슷한 형태는
비슷한 global signature을 가진다고 예측했다.
그래서 형태 검색 application으로 위의 예측을 실험했다.
Shape Correspondence
PointNet에 의한 point feature은 잠재적으로 shape corresponence
할 수 있다.
매칭한 결과는 다음과 같다.
F. More Architecture Analysis (Sec 5.2)
Effects of Bottleneck Dimension and Number of Input Points
저자들은 first max layer의 사이즈와 input point의 수에 대한
성능 변화를 보여준다.
위 표를 보면 point의 수가 늘어날수록 성능이 증가한다는 것을 알 수 있다.
하지만 1K개 쯤에서 포화된다.
max layer사이즈는 64~1024에서 유의미한 성능 향상을 가져온다.
이는 다른 형태의 3D space를 구별하기 위해
충분한 point feature func.가 필요하다는 것을 보여준다.
MNIST Digit Classification
MNIST 이미지를 2D 포인트 세트로 변환하기 위해
저자들은 픽셀 값을 thresholding하고
128보다 큰 값을 가진 픽셀(이미지에서 $(x, y)$ 좌표의 점으로 표시)을
set에 추가한다.
이때 set size는 256으로 한다.
256보다 크면 랜덤으로 sampling하고
작으면 1만큼 padding한다.
결과는 다음과 같다.
Normal Estimation
저자들은 segmentation 모델에서 local point feature와
global feature을 concatenate한다.
이때 context가 concatenation을 통해 학습되는지 명확하지 않기 때문에
point 이웃에 의해 결적되는 local geometric 특성인
point normal을 예측하는 것으로 이를 검증했다.
결과는 다음과 같다.
Segmentation Robustness
PointNet은 classification task에 대해 data corruption과
missing point에 대해 덜 민감하다고 했다.
왜냐하면 global shape feature는 point cloud로부터 critical point의 모음으로
추출되기 때문이다.
이 안정성이 segmentation에도 다음과 같이 유효하다는 것을 보여준다.
Network Generalizabillity to Unseen Shape Categories
저자들은 unseen categories의 새로운 shape에 대한
critical point set과 upper bound shape를 보여준다.
그 결과는 다음과 같다.
나름 일반화가 잘 되는것을 확인할 수 있으나,
학습을 평면구조가 많은 객체에 대해 학습하기 때문에
new shape도 많은 평면구조가 포함된다.
G. Proof of Theorem (Sec 4.3)
먼저 앞서 정의한 조건을 다시쓰면 다음과 같다.
$\mathcal{X} = \left\{ S : S \subseteq \left [ 0,1 \right ]^{m} \mathrm{and} \left|S \right| = n \right\}$이라 할 때,
$f : \mathcal{X} \to \mathbb{R}$는
$\forall\epsilon > 0, \exists\delta >0$ 즉, 모든 $\epsilon$이 0보다 크고, 존재하는 $\delta$가 0보다 클때,
Hausdorff distance $d_{H}\left ( \cdot , \cdot \right )$에 대한
$\mathcal{X}$ 의 continuous set func.이다.
어떤 $S, S' \in \mathcal{X}$가 주어질때,
만약 $d_{H}(S, S') < \delta$를 만족하면
$\left| f\left ( S \right ) - f\left ( S' \right )\right| < \epsilon$이다.
저자들은 $f$가 임의의 symmetric func.과 continuous func.의 구성에 의해
근사화 될 수 있다는 것을 보여줄 것이다.
Theorem 1
주어진 $f : \mathcal{X} \to \mathbb{R}$는
Hausdorff distance $d_{H}(\cot , \cdot)$에 대한 continuous set func.이다.
모든 $\epsilon$이 0보다 크고, $\forall\epsilon > 0$
존재하는($\exists$) continuous func. $h$와 symmetric func. $g\left ( x_{1}, ..., x_{n} \right )$가
$\gamma \circ MAX$와 같다면, (이때 $\gamma$는 continuous func.)
$MAX$는 input으로 $n$ vector를 받고 element-wise maximum의 new vector를
return하는 vector max operator다.
어느 $S \in \mathcal{X}$에 대해 다음을 만족한다.
$x_{1}, ..., x_{n}$는 특정한 순서로 추출된 $S$의 element다.
즉, $f$의 연속성에 의해 만약 $d_{H}\left ( S, S' \right )< \delta _{\epsilon }$라면
어느$S, S' \in \mathcal{X}$에 대해
$\left| f\left ( S \right ) - f\left ( S' \right )\right| < \epsilon$을 만족한다.
[0, 1]을 $K$ 간격으로 나누는 $K = \left [ 1/\delta _{\epsilon } \right ]$를 정의하고
점을 간격의 왼쪽 끝에 mapping하는 보조 func.를 다음과 같이 정의한다.
만약 $\widetilde{S} = \left\{ \sigma (x) : x \in S \right\}$라고 한다면 다음을 만족한다.
왜냐하면 $d_{H}(S, \widetilde{S}) <1/K \leq \delta _{\epsilon }$이기 때문이다.
이론적 부분은 추후 다시 서술할 것이다.
H. More Visualization
Classification Visualization
t-SNE로 embed point cloud global signature를 그렸다.
Segmentation Visualization
Scene Semantic Parsing Visualization
Point Function Visualization
classifcation PointNet은 $K$ 차원 point feature을 계산하고
max pooling layer를 통해 per-point local feature로 모아
gloval shape descriptor 형태인 single $K$-dim vector로 만든다.
위 그림은 랜덤으로 선택한 15개의 point function이고
그것들의 activation region을 보여준다.
'3D point clouds > Classification' 카테고리의 다른 글
[논문리뷰] PointGPT: Auto-regressively Generative Pre-training from Point Clouds (0) | 2023.09.05 |
---|---|
PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space (2) | 2023.06.26 |
PointNet pytorch 리뷰 (0) | 2023.06.23 |