본문 바로가기
3D point clouds/Classification

[논문리뷰] PointGPT: Auto-regressively Generative Pre-training from Point Clouds

by khslab 2023. 9. 5.

이 논문은 point clouds classification의

SOTA논문인데 GPT 구조에 영감을 받아 만들어진 것이다.

point generation을 하도록 모델을

pre-training하고 이것을 downstream에 적용하니

성능이 좋았다는 논문이다.

 

arXiv' 23

https://arxiv.org/abs/2305.11487

 

PointGPT: Auto-regressively Generative Pre-training from Point Clouds

Large language models (LLMs) based on the generative pre-training transformer (GPT) have demonstrated remarkable effectiveness across a diverse range of downstream tasks. Inspired by the advancements of the GPT, we present PointGPT, a novel approach that e

arxiv.org


Abstract

 

저자들은 GPT에 영감을 받아 PointGPT를 제안한다.

이것은 GPT의 concept을 point clouds로 확장한 새로운 접근법이다.

다시말해 transformer model을 pre-training하기 위해

point clouds auto-regressive generation task를 진행한다.

auto-regressive란 선행 정보를 통해 후행 정보를 예측하는 것이다.

이를 통해 disorder property,

low information density, task gap과 관련된 문제를 다룰 수 있다.

 

저자들의 방법은 input point clouds를

여러개의 point patch로 나누고 spatial proximity에 따라

순서대로 배열한다.

그다음 transformer decoder기반 extractor-generator

dual masking strategy와 함께

이전 point patch를 조건으로 잠재 표현을 학습한다.

이렇게 auto-regressive 방식으로 다음 point를 예측하도록 한다.


1 Introduction

 

GPT가 성공하고 GPT를 point clouds understanding에

적용하려하니 여러 문제가 따라온다.

(1) Disorder property

문장과 달리 point clouds는 순서가 없다.

따라서 저자들은 point patch를

Morton-order curve로 기하학 순서를 배겨 배열한다.

 

(2) Information density difference

언어는 많은 정보가 함축되어 있지만

point clouds는 불필요한 중복이 많아

prediction task를 진행할 때 모델이 point clouds가 전체적인 이해 없이

task를 진행하게 될 수도 있다.

따라서 dual masking strategy가 제안되었고

이것은 추가적으로 각 token에 대해 attending token을 마스킹하는 것이다.

이 전략은 효과적으로 중복을 줄이고 point clouds의

포괄적인 이해에 대한 task를 수행한다.

 

(3) Gaps between generation and downstream task

generation task는 주로 각 pont를 예측하는 것을 주로 하고

이것은 downstream task에 비해 lower semantic level에 대한

잠재 표현을 학습하는 결과를 도출할 수도 있다.

이를 위해, extractor-generator architecture가 도입되었다.

generator task는 generator를 통해 용이하게 되고

extractor에 의해 학습된 잠재 공간의 semantic level이 향상된다.


3 PointGPT

 

point clouds $ X={x_{1}, x_{2}, ... , x_{M}}\subseteq \mathbb{R}^{3}$가 주어졌을 때

전체적인 pre-training 파이프라인은 다음과 같다.

point cloud sequencer module은 point patch를

순서대로 구성하는데 사용된다.

이것은 point clouds를 불특정한 patch로 나누고

Morton order로 배열됨으로써 수행된다.

결과 순서는 이제 extractor로 들어가 잠재 공간을 학습하고

generator는 다음 patch를 auto-regressive 방식으로 예측한다.

이러한 pre-training 이후, generator는 버리고

extractor는 dual masking의 사용 없이 downstream task를 위해

잠재 공간을 학습하는데 사용된다.


3.1 Point Cloud Sequencer

 

point cloud domain은 미리 정의된 vocabulary(소스)가 부족하고,

(NLP는 단어가 많이 존재하고 접근도 쉬움)

point cloud는 순서가 없는 특성을 드러내는 sparse 구조다.

이를 극복하기 위해 다음 과정이 사용된다.

 

Point patch partitioning

 

input point clouds는 farthest point sampling (FPS)알고리즘으로

처리되고 K-nearest neighbors (KNN) 알고리즘을 사용하여

center point와 point patch를 구한다.

이걸 공식화 할 때 $M$개의 points가 있는 point cloud $X$가 주어지면,

FPS로 $n$개의 center point $C$를 샘플링한다.

KNN 알고리즘은 $k$개의 points로 patch $P$를 구성하는데 이용된다.

Sorting

 

center points의 좌표는 Morton code를 사용하여

1차원 공간으로 인코딩 되고 이것은

이 center points의 순서 $O$로 결정되도록 정렬된다.

point patch는 이제 같은 순서로 배열된다.

$C^{s}$는 정렬된 centor points로 정렬된 것을 뜻하고

$P^{s}$는 정렬된 patch다.

 

Embedding

 

PointNet은 point patch를 위한

충분한 기하학적 정보를 추출하도록 사용된다.

학습 수렴을 위해 좌표는 center point에 대해 normalize된다.

따라서 정렬된 patch $P^{s}$는 D차원 token $T$로 임베딩 된다.


3.2 Transformer Decoder with a Dual Masking Strategy

 

GPT를 point clouds로 가장 쉽게 확장하는 법은

vanilla transformer decoder

auto-regressively point patch predict에 이용함으로써

수행할 수 있다.

그다음 pre-trained parameter를 downstream task에 대해

fine-tuning하면 된다.

 

그러나, 이 접근법은  point clouds의 제한된 정보 밀도와

generation, downstream task간의 차이로 인해

low-level semantic으로 부터 문제가 생긴다.

 

이를 위해 dual masking strategy가 제안된다.

추가적으로, extractor-generator transformer 구조가 제안되며

이것은 downstream task에서는 이 generator를 버리고

extractor만 남기는 방식이다.

 

Dual masking strategy

 

transformer에 있는 vanilla masking strategy는

모든 이전의 pont token으로 부터 정보를 받기 위해

각 token을 사용하는 것이다.

dual masking strategy는 pre-training동안 각 token의

처리되는 preceding token의 일부분도 지우는 것이다.

흰색은 처리 x

따라서 다음과 같은 방식으로 self-attention이 진행된다.

$M^{d}$는 resulting dual mask다.

$M^{d}$에 마스크된 영역은 0으로 하고 아닌 부분은 1로 한다.

 

Extractor-generator

 

extractor는 전체적으로 dual masking strategy와 함께

transformer decoder block으로 구성된다.

이를 통해 잠재 표현 $T$를 얻고 각 point token은

unmasked preceding token에만 처리된다.

 

Sinusoidal position encoding은

absolute positional encoding (APE)

정렬된 center point $C^{s}$의 좌표에 매핑된다.

 

generator architecture는 extractor architecture와 비슷하지만

더 적은 block이 포함된다.

이것은 input으로 extracted token $T$를 받고 prediction head를 통해

point token $T^{g}$를 만든다.

 

그러나 center points sampling이 모델 예측에 모호함을 만들기 때문에

모델이 의미있는 point clouds 표현을 학습하는 것을 방해한다.

따라서 다음 point patch에 대한 방향(direction)

generator에 prompt로 제공된다.

이것을 RDP(relative direction prompt)라고 한다.

$n' = n-1$다.

최종 extractor-generator 구조는 다음처럼 공식화 할 수 있다.

Prediction head

 

prediction head는 좌표 space에서

다음 point patch를 예측하는데 이용된다.

이것은 two-layer MLP로 구성된다.

prediction head는 tokens $T^{g}$를

vector로 project하는데 output channel의 수

patch내의 좌표 전체 수와 같다.

따라서 예측된 point patch는 다음과 같다.


3.3 Generation Target

 

 각 ponit patch generation target은

다음 point patch 사이에서 point의 좌표를 예측하는 것이다.

예측된 point patch $P^{pd}$ 뿐만 아니라

ground-truth point patch $P^{gt}$가 주어지면

generation loss $L^{g}$는 $l_{1}$ norm과 $l_{2}$ norm으로

Chamfer distance를 통해 계산된다.

$l_{n}$ CD loss $L_{n}^{g}$는 다음과 같다.

$|P|$는 집합 $P$의 크기다.

 

저자들은 다음과 같은 사실을 발견했다.

generation task를 fine-tuning process에 포함하는 것은

training 수렴을 빠르게 만들고 supervised model의

일반화 성능을 개선한다.

저자들은 fine-tuning stage를 다음과 같이 학습한다.

$L^{f} = L^{d} + \lambda \times L^{g}$

$L^{d}$는 downstream task loss다.


3.4. Post-Pre-training

 

현재 point cloud SSL 방법은 직접적으로 target dasta에

pre-trained model을 fine-tuning하고

이것은 제한된 semantic supervision information 때문에

잠재적으로 overfitting의 결과를 가져올지도 모른다.

 

따라서 저자들은 다음 intermediate fine-tuning strategy를 적용했다.

VideoMAE V2: Scaling Video Masked Autoencoders with Dual Masking

BEiT: BERT Pre-Training of Image Transformers

Swin Transformer V2: Scaling Up Capacity and Resolution

그리고 PointGPT에 대한 post-pre-training을 도입한다.

이 steage에서 다양한 point clouds 데이타를
수집한 hybrid dataset이 사용된다.

이러면 semantic information이 효과적으로 포함된다.

또 fine-tuning은 target dataset에 수행되어

task-specific knowledge에 대한

학습된 general semantics를 전달하게 된다.


4 Experiments

 

자세한 정보는 Appendix에 있다고 하는데

논문에 Appendix가 없다.

 

4.1 Implementation and Pre-training Setups

 

Models

PointGPT에 ViT-S를 extractor module로 사용한 것을

PointGPT-S라고 한다.

비슷하게 PointGPT-B, PointGPT-L이라 한다.

 

Data

PointGPT-S는 ShapeNet으로 pre-training되고

두 종류의 데이터셋을 수집하여 high-capacity인

PointGPT-B, PointGPT-L에 학습한다.

(1) unlabeled hybrid dataset (UHD)

이것은 self-supervised pre-training에 사용된다.

(2) labeled hyprid dataset (LHD)

이것은 post-pre-training에 사용된다.

 

Pre-training setup

point cloud를 1024개씩 sampling하여 input으로 사용한다.

그다음 64개의 pointpatch로 분할한다.

(이러면 패치당 32개의 point가 있다고 한다.)

또 pre-training을 위해 AdamW로 300 epochs을 학습한다.


4.2. Downstream Tasks

 

일단 PointGPT-S는 post-pre-training 과정이 없다.

 

Object classification on a real-world dataset

Object classification on a clean objects dataset

같은 데이터를 학습시키더라도

PointGPT pre-training 성능이 더 좋다.

Few-shot learnning

{5, 10} - way, {10, 20} - shot setting으로 진행한다.

Part segmentation

 

point clouds를 2048개로 sampling하고

segmentation head인 다음 논문을 사용한다.

Masked autoencoders for point cloud self-supervised learning

또 extractor의 $\frac{1 \times td}{3}, \frac{2 \times td}{3}, \frac{3 \times td}{3}$ layer를

concatenate한다.


4.3 Ablation Studies

 

저자들은 다음과 같이 ablation study를 진행한다.


5. Conclusion

 

저자들은 GPT concept를 point clouds로 확장하는 PointGPT를 제안한다.

기존 self-supervised masked point modeling보다

objet shape leakage문제를 개선했고 일반화 성능도 올렸다.

또 pre-trainig과 post-pre-training을 위해 hybrid dataset을 구성했다.

해당 모델을 다양한 task에 적용했는데 좋은 성능을 기록했다.


Appendix가 없어서 아쉽다..