Paper/Point Cloud

Point Transformer V3: Simpler, Faster, Stronger

jaehyuuuuuga 2025. 5. 18. 21:21

Introduction

Point transformer v3는 기존 Transformer 기반 Point Cloud 모델들이 정확도와 효율성 사이의 trade-off 문제를 해결하기 위해, 복잡한 설계 보다는 단순성과 확장성을 우선적으로 한 구조를 제안한다. 저자는 모델의 성능이 복잡한 구조 보다는 스케일에 더 큰 영향을 받는다고 주장한다. 그에 따라 Point Cloud Serialization 방식을 도입하여 효율화 시키고, Serialized Attention을 적용해 receptive field를 확보한다. 그 과정에서 새로운 Position encoding 방식도 적용한다. 자세한 내용은 아래에서 다루겠다.

결과적으로 전작에 비해 추론 속도, 메모리 사용량 부분에서 우수한 성능을 달성했다.

 

 

기존 KNN 기반 방식을 제거하고, Z-order, Hilbert 기반의 Serialization(순차 정렬) 방식을 도입한다. 이후 기존 local KNN attention 대신, window-based patch attention을 사용한다.(점들을 정렬된 순서로 grouping)

이때 patch간 상호작용을 위해 shift dilation, shift patch, shift order, shuffle order 등을 사용해 다양한 receptive field(수용 범위)를 확보한다.

끄적끄적

1) 일반적으로 모델 성능에서 정확도와 효율성의 관계는 "trade-off"로 간주되며, 일반적으로 정확도를 우선시하고 효율성을 희생하는 경향이 있다.

2) 예를 들어 Point Transformer [90, 106], Stratified Transformer [40], Swin3D [101] 같은 방식들이 정확도를 높였지만, 계산 속도나  효율성은 떨어지는 방법들이다.

3) 하지만 꼭 정확도화 효율성 사이의 trade-off는 절대적인 것은 아니라고 한다.  

4) 그 예시로 스케일링 전략을 통해 극복한 대표적인 사례인 Utilizing multi-dataset joint training strategies [92], Sparse Convolution [13, 25] 같은 방법도 존재한다.

5) 그러나 이런 발전들에도 불구하고 여전히 Point Tranformer에는 완전히 적용하기 어렵다. 이는 주로 효율성의 한계나 연산 자원이 부족할 때 학습의 부담이 커지는 문제가 있기 때문이다.

6) 이러한 관찰을 통해서 모델 성능이 복잡한 설계보다는 스케일에 더 크게 좌우된다는 가설을 세운다.
1)  현재의 Point Transformer들은 permutation invariance(순열 불변성) 이라는 제약 하에 스케일링에 어려움을 겪고 있다.

2) KNN을 사용하는 방법은 표와 같이 전체 연산 시간의 28%를 차지하는 계산 부담을 가지고,

3) Positional Encoding 부분에서는 이미지처럼 그리드 구조로 사전 정의할 수없기 때문에 유클리드 거리 계산, 학습 기반 레이어, 룩업 테이블을 사용하여야한다. 이 역시 전체 연산 시간의 26%를 차지하는 비효율성의 또다른 원인이 된다.

4) 그래서 이 논문에서는 포인트 클라우드의 "unordered set" 즉 순서 없는 집합이라고 다루던 기존 패러다임에서 벗어나는 접근을 시도한다.

5) 대신 포인트 클라우드를 정렬된 형식(structured format)으로 직렬화(serialization) 하여, 순열 불변성의 제약을 의도적으로 깨뜨린다.



1) left - 직렬화를 위한 공간 충전 곡선(space-filling curve)
2) middle - 해당 곡선을 기반으로 한 포인트 클라우드 정렬 순서(직렬화 순서)
3) right - 로컬 어텐션을 위한 포인트 클라우드의 패치 단위 그룹화 결과
1) 단순성과 속도를 우선으로 하며 이를 통해 scalability(확장성)을 확보하고 더 성능 좋은 모델을 만드는 것을 목표로 한다.

2) 구조화된 데이터가 가진 단순성과 효율성을 활용하기 위해, 직렬화하여 비정형 데이터를 구조화도니 형식으로 변환한다.

3) Space-filling curves
- Space-filling curves(sfc)는 고차원 이상 공간 안의 모든 점을 순회하는 경로이며, 공간상의 근접성(spatial proximity)을 일정 수준 보존한다.

- 본 논문에서는 대표적인 sfc인 z-order, hilbert를 사용한다.
   - z-order : 단순하기에 계산이 빠름
   - hilbert : 계산이 좀 더 느리지만 더 정밀한 공간 정렬이 가능하다.

- 일반적으로 sfc는 x,y,z 순서대로 순차적으로 순회하지만, 순회 순서를 변경함으로써 변형 버전을 만들 수있다. 

- 이를 구분하기 위해 "Trans"를 사용해 구분한다.

- 이러한 변형 곡선들은 다양한 시각을 보여주고 기존 곡선이 놓칠 수 있는 지역 관계를 포착할 가능성이 있다.
1) Serialized encoding
- sfc가 갖는 locality preservation(공간 근접성 유지 특성)을 활용하기 위해, serialized encoding(직렬화 된 인코딩)을 사용한다. 이러한 방식은 각 점의 위치를 곡선상의 순서에 해당하는 정수로 변환하는 전략이다. 
ㄴ 왜? transformer는 입력에 순서가 있어야 처리할 수 있기 때문에, 그런데 pcl은 순서가 없음.
그래서 sfc를 사용해서  포인트의 위치에 따라 순서 값을 하나의 정수로 인코딩
ex) 
- 직렬화 코드 기준으로 포인트를 정렬하면, 각 배치 안의 포인트 클라우드가 선택한 공간 충전 곡선 패턴에 따라 정렬된 구조가 된다.

2) Serialization
-  포인트 클라우드의 직렬화는 직렬화 인코딩으로 얻은 코드들을 정렬함으로써 이루어 진다.
- 즉, 정렬된 이웃 포인트들이 실제 공간상에서도 서로 가깝게 위치할 가능성이 높다는 것
- 구현에서 물리적으로 직접 재배열하지는 않고, 직렬화 과정에서 생성된 인덱스 매핑 정보만 기록
Serialized Attention

1) Re-weigh options of attention mechanism
- 이미지 Transformer에서는 윈도우 기반 어텐션, dot-product 어텐션을 선호한다.
- 그 이유는 이미지가 가지는 spatial relationship(고정된 공간 구조)를 활용함으로써, 효율적이고 확장 가능한 로컬 처리가 가능하기 때문이다.
- 하지만 비정형 구조인 포인트 클라우드에서는 해당되지 않기 때문에 이런 장점이 사라진다.
- 그래서 이전 v1,v2는 복잡한 공간 관계를 가진 포인트 클라우드에 맞춰  이웃기반 어텐션, 벡터 어텐션을 도입해서 모델 성능을 향상시킴.
- 근데 v3는 직렬화된 구조화 형태이기 때문에 다시 윈도우,dot-product 방식을 기본 구조로 채택함.
-  물론,  정확한 공간 이웃 정보가 줄어들기 때문에 직렬화 방식은 일시적으로 성능이 낮아질 수 있음.
- 하지만 확장성(scalability)의 잠재력을 봤을 때, 초기 성능 격차는 충분히 극복할 수 있다고 함.

2) Patch attention
- 윈도우 어텐션을 확장하여 "patch attention"을 정의함.
- 이 구조는 포인트를 서로 겹치지 않는 패치 단위로 그룹화한 뒤, 각 패치 내에서만 어텐션을 수행하는 구조
- 이 patch attention의 효과는 2가지 주요 설계에 달려 있음 (patch Grouping, Patch Interaction)

-------------------------------------------------------------------------------------------------------




 오른쪽 아래 그림부터 반시계 방향으로 도는 구조.

1) 다양한 space-filling curve 패턴 시각화(z-order, hilbert)

2) 선택된 곡선(Z-order 등)을 따라 3D 포인트들이 1D 순서로 정렬됨

3) (a) Reordering: 그 순서를 따라 포인트들을 1차원 시퀀스로 배열

4) (b) Padding: 나눠진 패치가 정해진 크기(patch size)에 맞지 않으면 주변 포인트를 복사해 채움

-------------------------------------------------------------

Patch Grouping (표 4)
- 직렬화된 순서대로 포인트를 패딩 후 간단히 묶기만 하면 된다고 함.
- 실제 구현에서는 재정렬, 패딩 과정이 하나의 인연산으로 통합된다고 한다.
- fig 3 오른쪽 그림이 여기서 말하는 패턴에 따라 생성된 패치 그룹화 형태를 보여줌.

-------------------------------------------------------------------------------------------------------










a) 표준 패치 그룹화 방식으로, 규칙적이고 이동(shift)되지 않은 배열을 사용

b) 포인트들을 일정 간격으로 그룹화하여, 팽창(dilation)된 효과를 만들어냄

c) Shift-Window 방식과 유사한 이동 메커니즘을 적용

d) 서로 다른 직렬화 패턴을 어텐션 레이어마다 순차적으로(순환적으로) 적용

e) 직렬화 패턴의 순서를 무작위로 섞은 후 어텐션 레이어에 전달

- 각 방식은 모델이 더 넓고 다양한 공간 정보를 학습하도록 도와주기 위한 설계
-------------------------------------------------------------

Patch interaction(표 5)
- 서로 다른 패치 간의 상호작용은 전체 포인트 클라우드에서 정보를 통합하기 위해 매우 중요하다.
ㄴ pcl은 연결된 공간이기에 이웃 정보, 전역 구조가 중요함.
ㄴ 따라서 멀리 있는 점이랑도 정보를 주고 받을 수 있어야 의미 있는 특징을 만들 수 있음

- 이러한 설계는 서로 겹치지 않는 구조의 한계를 보완하고, 패치 어텐션을 실제로 동작하게 하는 핵심 요소다.
ㄴ attention이 패치 내부에만 제한되므로 global context가 부족함
ㄴ 패치 단위이기 때문에 경계에 걸친 포인트는 정보를 주고 받지 못함
ㄴ 그걸 patch interaction이 해결함

본 논문에서는 표5와 같은 방법을 사용함.

1) Shift Dilation[83]
- 포인트 클라우드를 일정 간격(step)마다 건너뛰며 그룹화하여 더 넓은 receptive field를 확보

2) Shift Patch[49]
- 이미지 Transformer [49]의 Shift-Window 방식에서 영감을 받아 직렬화된 포인트 클라우드 상에서 패치 위치를 이동시키는 방법

3) Shift Order
-  어텐션 블록마다 직렬화 순서를 동적으로 변경하여 모델이 특정 하나의 직렬화 패턴에 overfitting 되는 것을 방지함

4) Shuffle Order
- Shift Order를 기반으로 하며, 직렬화 순서의 패턴들을 무작위로 섞는 방식
- 각 어텐션 레이어의 수용 범위가 단일 패턴에 고정되지 않도록 하여 모델의 일반화 능력을 향상시키고자 함.



-Position Encoding
- 포인트 클라우드의 방대한 데이터 양을 처리하기 위해 Transformer들은 일반적으로 로컬 어텐션(local attention)을 사용한다.
- 이때 보통 relative positional encoding(RPE)를 사용함.[40, 101, 106]

- 하지만 tranformer 에서는 상당히 비효율적으로 보이며, Conditional Positional Encoding(CPE)를 제안함.(CPE는 옥트리 기반 깊이 분리 합성곱[84])

- 근데 또 단일 CPE만으로는 최고 성능을 달성하기 어렵다고 함. 그래서 RPE + CPE 조합 구성인 
xCPE 제안

- xCPE는 어텐션 레이어 앞에 sparse conv 레이어를 skip-connection과 함께 추가하는 방식

1) RPE (Relative Positional Encoding):
포인트 간의 상대 위치를 명시적으로 계산하여 어텐션에 직접 반영하는 방식 (정확하지만 느리고 복잡함).


2) CPE (Conditional Positional Encoding)
:
sparse convolution으로 위치 정보를 간접 표현하여 효율성을 높인 방식 (빠르지만 약간 성능 손해 있음).


3) xCPE (eXtended CPE):
CPE에 추가 sparse conv + skip connection을 붙여 성능을 보완한 개선형 위치 인코딩 (속도는 유지하면서 성능 향상).




Network Details

1) Blcok Structure

- normalization, activation 레이어들이 복잡하게 쌓인 구조를 단순화 함.
- post-norm 대신 pre-norm을 채택하고, Batch Normalization(BN) 에서 Layer Normalization(LN)으로 변경.
- 제안한 xCPE는 어텐션 레이어 앞에 skip connection과 함께 직접 연결하는 구조.

pre-norm:
LayerNorm을 어텐션 또는 MLP 앞에 먼저 적용해 안정적인 학습을 유도 (최근 Transformer 구조에서 선호됨).


post-norm:
LayerNorm을 어텐션 또는 MLP 뒤에 적용하는 전통적인 방식 (초기 Transformer 논문 구조).


BN (Batch Normalization):
배치 단위로 평균과 분산을 정규화해 훈련 안정성과 일반화 향상을 도모 (이미지/conv에서 많이 사용).


LN (Layer Normalization):
특성(feature) 차원별로 정규화하여 배치 크기에 무관하게 적용 가능 (Transformer 계열에서 일반적).



2) Pooling strategy
- PTv2에서 사용한 Grid Pooling을 그대로 사용하고, BN이 효과적이었다고 한다. (LN은 효과적이지 않은듯)
-  그리고 이전에 제안한 Shuffle Order 기법은 풀링 과정에 통합함

3) Model architecture
-  전체 구조는 U-Net [66] 프레임워크와 일관된 구조.
- 4단계의 인코더와 디코더로 구성되어 있고 각각 
[2, 2, 6, 2] (encoder), [1, 1, 1, 1] (decoder)



마무리 개인생각
1. 너무나 당연했던 순열 불변에 대한 문제를 직렬화를 통해서 다르게 풀어냈다는 것이 흥미로웠다. 
2. 요즘은 단순 3d객체에 대한 데이터에 대해서 성능을 올리는 것보다 실제 데이터씬에 대한 방향으로 바뀌는 것 같다. 나도 실험을 하면 단순 3d객체보다는 nuscenes같은 데이터셋에서 실험을 하면 더 의미있을 거 같다.
3. position encoding이 생각보다 다양하다는 것을 처음 알았다. 내 실험에 적용할 수 있는 부분이 있으면 좋겠다.