Paper/Point Cloud

Point-BERT: Pre-training 3D Point Cloud Transformers with Masked Point Modeling

jaehyuuuuuga 2025. 5. 30. 19:15

Introduction

Point-BERT는 LLM의 BERT 구조에서 아이디어를 얻어, 이를 3D 포인트 클라우드에 적용한 사전학습 방법이다.

BERT는 입력 데이터의 일부를 의도적으로 마스킹한 뒤, 그 내용을 복원하는 과정을 통해 학습하는 방식이고, 이러한 방식의 장점은 문맥 정보를 스스로 이해하고 예측하는 능력을 길러낼 수 있다는 점이다.

하지만 LLM과 달리, 포인트 클라우드에서는 각 포인트가 단어처럼 뚜렷한 의미를 가지지 않기 때문에, Transformer 기반의 사전학습(BERT 방식)을 그대로 적용하기 어렵다는 문제가 있다. 왜냐하면 문장 속 단어는 문맥적 의미를 지니지만, 포인트 하나는 그 자체로 의미가 거의 없기 때문이다.

이를 해결하기 위해 Point-BERT는 포인트 클라우드를 여러 개의 패치(patch)로 나눈 후, dVAE 기반 토크나이저를 통해 각 패치를 의미 있는 정수형 토큰으로 변환한다.

즉, 포인트 클라우드에도 언어의 단어처럼 사용할 수 있는 "기하학적 의미 토큰"을 정의하고, 이를 통해 마스킹 복원 방식의 학습이 가능하도록 만든 것이다.

 

자세한 내용은 아래에서 다루도록하겠다.

 

 

 

끄적끄적


1. Point-BERT
BERT 스타일의 사전학습 전략을 포인트 클라우드 Transformer에 확장하는 것이 목표
그러기 위해서 이산적인 포인트 토큰을 생성할 수 있는 Tokenizer 학습하고, BERT의 MLM 방식을 모방해서  dis-crete 포인트 토큰을 기반으로  마스킹된 포인트를 복원하는 MPM을 설계해 Transformer를 사전학습한다.
3.1 Point Tokenization

a. Point Embeddings
Vision Transformer에서 사용하는 patch 임베딩 전략을 참고하여, 포인트 클라우드를 여러 개의 local patch로 나눈다고 한다.

구체적으로는
1. FPS을 통해 중심점을 고르게 샘플링
2. 중심점 기준으로 KNN을 사용하여 k개의 포인트들로 그룹 구성
3. 구성된 포인트 그룹을 patch라고 부르며, 하나의 입력 토큰으로 활용

이후에 각 patch는 중심 좌표를 빼주는 방식으로 정규화하는데 이는 위치 정보와 구조 정보를 분리하여, 위치에 관계없는 구조 패턴만을 학습하기 위해서 라고 한다.
ex)  바닥에 있는 사과, 테이블 위의 사과는 위치는 다르지만 구조적으로는 같으므로, 구조 패턴만 학습하게 되는 것

끝으로 정규화된 patch는 mini-PointNet을 통해 임베딩되고, 이후 Transformer에 입력되기 전에 다시 각 patch의 중심 좌표를 기반으로 positional encoding을 더해 마무리한다고 한다.





b. Point Tokenizer
요약하면 의미 있는 기하학적 패턴에 대한 것을 정수 토큰에 저장하는 느낌이다.
예륻 들어 patch1이 평평한 구조면 토큰 1에 저장, patch2가 둥근 구조면 토큰 2 이런식으로 자주 등장하는 구조를 기억할 수 있게 하는 목적인 거 같다.

이런 방식은 나중에 모델이 "이 구조는 이런 토큰이다." 라고 인지해서 마스킹된 패치를 해당 구조에 맞는 토큰으로 예측할 수 있게 된다.

즉 Tokenizer는 각 패치들을 의미 정보를 포함하는 정수 토큰으로 압축하는 역할을 한다.



c. Point Cloud Reconstruction

포인트 토큰 → 다시 포인트 클라우드로 복원 하는 과정에 대한 내용

tokenizer에서 압축한 정수 토큰만으로는 원래의 포인트 클라우드를 그대로 복원하기엔 정보 손실이 클 수 있다. 그래서 본 논문에서는 dVAE (Discrete Variational AutoEncoder)구조를 이용해 복원하는 과정을 학습한다.


dVAE의 디코더는 정수형 토큰을 입력받아, 해당 토큰이 어떤 구조를 나타내는지를 바탕으로 원래의 패치를 복원한다. 그러나 다양한 지역 구조를 표현하기에는 토큰 수가 제한적이므로, 표현력을 보완하기 위해 DGCNN을 활용하여 이웃한 토큰 간의 관계를 학습한다. 이를 통해 개별 토큰뿐 아니라 주변 토큰들과의 문맥적 연관성을 반영한 정교한 복원이 가능해진다.

이후, 복원된 feature는 FoldingNet을 통해 실제 3D 포인트 형태로 재구성되는데 최종적으로 복원된 포인트 클라우드와 원래의 클라우드 간의 차이를 최소화하는 방향으로 학습이 이루어진다고 한다.

단, 포인트 토큰이 정수형(discrete)이기 때문에 reparameterization 기법을 사용할 수 없어 Gumbel-softmax 기법을 써서 실수처럼 soft하게 token을 샘플링할 수있게 한다.

즉, 이 복원 과정은 정수 토큰 기반의 구조 정보를 최대한 보존하면서, 원래의 포인트 클라우드를 정밀하게 복원하는 것
3.2 Transformer Backbone


포인트 클라우드 입력이 어떻게 transformer 입력으로 들어가는지 입력 구조를 설명한다.

a. local patch 나누기
- 전체 포인트를 g 그룹으로 나눔 = patch

b. mini-pointnet - 포인트 임베딩
- 각 patch를 mini-pointnet에 넣어서 패치가 어떤 구조인지 요약해주는 feature vector(fi)를 추출함. 

c. positional embedding - 위치 임베딩
- 각 patch의 중심 좌표를 mlp에 넣어서 위치 정보에 대한 feature를 추출.

d. embedding 결합
- transformer에 들어가는 입력은 최종적으로 포인트 임베딩 + 위치 임베딩
- 최종 입력 벡터 xi 생성

e. class token 추가
- transformer 일반적인 방법으로 입력 앞에 class token E[s]를 추가.
- 이 토큰은 "전체 구조를 요약할 특성"을 담기 위한 공간이라고 보면 될듯

f. transformer에 입력


3.3 Masked Point Modeling

a. Masked Sequence Generation
Bert와 MAE 처럼 랜덤 마스킹 방식과 달리
블록 기반 마스킹 전략을 취했다고 함.

임의의 pitch 하나와 주변 m개 패치를 묶어서 local region을 만들고 해당 영역 전체를 마스킹함.

마스킹된 부분은 별도의 token으로 대체되어 Transformer에 입력되고, 모델은 Transformer를 통해 마스킹되지 않은 주변 patch의 정보를 이용해 가려진 패치의 의미 있는 토큰을 복원하도록 학습
b. Pretext Task Definition
- MPM은 어떻게 정의 되었는가?
Point-BERT의 MPM은 일부 포인트 패치를 가린 상태에서, 주변 패치를 보고 가려진 부분의 구조를 추론하도록 모델을 학습시키는 것이다.

이를 위해 사전에 학습된 dVAE가 각 패치를 정수형 토큰 으로 바꾸며, 이 토큰들을 정답처럼 사용해서 Transformer가 어떤 구조가 가려졌는지를 맞추도록 학습시킨다.

즉, Transformer는 마스킹된 패치가 어떤 구조였는지 예측하는 pretext task를 수행하며 사전학습된다.
c. Point Patch Mixing

서로 다른 두 개의 patch를 섞어서 새로운 데이터를 만드는 보조 pretext task 영역인데, 더 어려운 문제를 풀도록 유도해서 학습 효과를 높이기 위한 목적이라고한다.

요약하면 가짜 샘플을 만들고 그것도 맞히게 만들어 사전학습 난이도를 높이는 기법





d. Optimization Objective
MPM만으로는 고차원 의미 정보까지는 충분히 학습되지 않는다는 한계가 있어서 대조 학습(contrastive learning) 방식인 MoCo를 함께 적용했다고 한다.

특히 앞서 설명한 Point Patch Mixing 기법으로 생성한 가상 샘플이 두 패치의 의미를 모두 반영하도록 학습되도록 대조 손실(contrastive loss)을 설계 한다.

이때 가상 샘플의 특징 벡터는 원폰 샘플의 특징 벡터에 가까워 지도록 학습하고 혼합 비율에 따라 특징에 부여되는 중요도가 조절된다. 전체 손실 함수에는 온도 조절 파라미터 τ메모리 뱅크 크기 K도 포함

결과적으로 MPM을 통해 로컬 기하 구조를 복원하고, MoCo 기반의 대조 학습으로 고차원 의미 표현을 동시에 학습함.


classification 성능

segmentation 성능

마무리 개인생각
- FPS + KNN 부분에서 위치 정보를 분리한다고 하는데 같은 FPS+KNN을 하는 다른 논문에서도 분리하는 방식을 사용하는지 궁금해졌다.
- masking같은 사전학습 전략이 많이 보이는 거 같다. 또 다른 masking방식이나 다른 사전학습 접근은 어떤게 있을지 궁금하다.
- 개인적으로 느끼기에 마스킹이 외란을 주는 상황이랑 비슷해 보이긴한다.