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이 생각보다 다양하다는 것을 처음 알았다. 내 실험에 적용할 수 있는 부분이 있으면 좋겠다. |
'Paper > Point Cloud' 카테고리의 다른 글
OctFormer: Octree-based Transformers for 3D Point Clouds (0) | 2025.05.20 |
---|---|
Point Transformer V2: Grouped Vector Attention and Partition-based Pooling (0) | 2025.05.13 |
Point Transformer (0) | 2025.05.11 |
PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space (0) | 2025.05.10 |
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation (0) | 2025.05.09 |