Paper/Point Cloud

Point Transformer

jaehyuuuuuga 2025. 5. 11. 16:34

Introduction

Point Transformer는 자연어나 이미지 처리 분야에서 성공을 거둔 transformer를 point cloud 데이터에 적용한 논문이다.

transformer의 핵심 연산인 self-attention이 set 연산자 이기 때문에 transformer 구조는 point cloud 데이터에 적합하다는 의견이다. 즉 입력의 순서나 개수에 영향을 받지 않기 때문에 점들의 집합 형태인 point cloud에 자연스럽게 적용 가능하다고 한다.

효과는 결과적으로 기존 기법들을 뛰어 넘는 SOTA 달성.

 

끄적끄적





기본적으로 transformer의 self-attention 수식 구조에 대해서 복습한다.

기본적으로 Transformer에서 사용하는 self-attention 연산은 입력 데이터의 각 요소들 간의 관계(유사도)를 계산하고, 그 결과를 기반으로 특징(feature)을 집계(aggregate)하는 방식이다.

전체 구조는 다음과 같다.
1. 기준점 xi와 이웃점 xj의 feature를 각각 MLP 또는 선형 변환(φ, ψ, α 등)을 통해 임베딩
2. 이 두 feature 간의 유사도를 계산 (내적: dot-product) → 이 때, 내적값은 두 벡터 간의 방향 유사성 (cosθ)을 의미
3. 포인트 간 위치 차이(pi - pj)를 반영한 position encoding (δ) 추가
4. 결과를 softmax 등을 통해 정규화(ρ)하여 attention weight 생성
5. 최종적으로 이웃 feature들을 attention 가중치로 가중 평균하여 집계




1) scalar attention
스칼라 어텐션 attention weight은 스칼라 값으로 계산된다.
간단히 얘기하면 모든 채널에 대해 같은 가중치로 feature를 집계
결과적으로 계산이 간단하고 효율적이지만 채널별 중요도는 구분이 불가하다.


2) vector attention 
벡타 어텐션 attention weight은 벡터 형태로 계산되어, 각 채널마다 다른 가중치를 적용할 수 있다.
즉, 각 채널별로 다르게 가중치를 줄 수 있어 정교한 표현력을 확보할수있다.
Point Transformer는 vector self-attention을 기반으로 하며,각 포인트가 이웃들과의 관계를 채널 단위로 정밀하게 계산한다.
수식의 구조는 다음과 같다.
1) relation vector 생성 
- 기준점 xi, 이웃점 xj의 feature를 각각 φ, ψ로 변환하고, 이 둘의 차이 를 계산
- 여기에 위치 인코딩 를 더해 relation vector 벡터 생성

2) attention vector 생성
위에서 얻은 relation vector를 MLP γ에 통과시켜 attention vector 생성
→ 각 채널별 중요도를 나타내는 벡터


3. 정규화(normalization)
attention vector 전체를 softmax 등으로 정규화
이웃들 간 상대적인 중요도를 결정

4. Value Vector 생성
이웃점 xj의 feature는 α를 통해 변환되고, 동일한 위치 인코딩 를 더하여 value vector 생성

5. 최종 조합
마지막으로 attention vectorvalue vector요소별 곱(Hadamard product) → 이 결과를 이웃 전체에 대해 합산하여 최종 출력 y를 얻는다.
 

self-attention에서 position encoding은 매우 중요한 역할을 하며 연산자가 데이터의 local structure에 적응할수있도록 도와준다.

본 논문에서는 학습 가능한 형태의 파라미터한 위치 인코딩을 도입하는 함수를 사용.

인코딩 함수 θ는 2개의 선형 계층과 하나의 ReLU 비선형 함수로 구성된 MLP

position encoding이 attention 생성 경로와 feature를 변환하는 경로 모두 중요하여 두 연산 경로에 모두 추가
Point Transformer Block은 Residual 구조를 기반으로 설계되어, 정보 표현의 깊이와 학습 안정성을 동시에 확보한다.
                                                 



Point Transformer 레이어, 포인트별 변환, 그리고 풀링 연산만으로 구성

Point Transformer 네트워크의 feature encoder는
점차 다운샘플링되는 포인트 셋에 대해 5개의 단계를 거친다.

단계에서의 포인트 수는
Transition down의 핵심은 포인트 수를 줄이는 것이다. 즉 다운샘플링 하는 것
수행 순서
1) FPS(Farthest Point Sampling)
FPS를 통해 적절한 포인트 중심점 추출
2) KNN, MLP
k개의 이웃을 탐색하고 이웃들의 feature를 MLP + BatchNorm + Relu를 통해 처리.
이후 max pooling으로 중심 포인트별 집계 feature 생성

  결과적으로, 포인트 수는 줄고, 특징 표현력은 유지 or 강화

Transition up 모듈의 핵심은 포인트의 개수를 복원 시키는 것. 즉 업샘플링하는 것이다.

수행 순서
1) 선형 변환 → BatchNorm → ReLU
이전 디코더 스테이지의 feature를 먼저 변환
2) 삼선형  보간(trilinear interpolation)
다운샘플된 포인트의 feature를 상위 해상도의 포인트셋으로 보간하여 복원
3) Skip connection + summation
보간된 디코더 feature에 해당 인코더 단계에서 넘어온 feature를 skip connection으로 더함
간법  이전 디코더 단계에서 보간된 feature는, 해당 인코더 단계의 feature와 skip connection을 통해 합쳐진다.

이 구조는 U-Net의 encoder-decoer 병렬 구조와 유사
1) semantic segmentation
최종 디코더 단계에서 입력 포인트 집합의 각 점에 대해 feature vector를 출력
이 feature에 MLP를 적용하여 최종 분류 결과(logits)로 변환
2) classification
포인트별 feature에 대해 전역 평균 풀링(global average pooling)을 적용하여
전체 포인트 셋에 대한 하나의 전역 feature vector를 생성한다
이 전역 feature는 MLP를 거쳐 최종 분류 logits로 변환



segmentation


classification
마무리 개인 생각
1) 포인트 클라우드의 데이터 특성상 transformer와 잘맞는 구조인 거 같다. 단점인 연산량을 줄이는 연구가 많을듯
2) transformer의 self-attention 구조를 이해할 수 있어서 좋았다.