점군(Point Cloud)에서 순서가 바뀌어도 결과가 변하지 않는 이유
점군(point cloud)은 다음과 같은 순서 없는(unordered) 데이터 집합입니다:
즉,
는 동일한 점군입니다.
하지만 일반적인 신경망(예: CNN, RNN)은 입력 순서에 의존하기 때문에, 점군 데이터에 바로 적용하면 순서가 바뀔 때마다 결과가 달라지는 문제가 생깁니다.
따라서 점군을 다루는 네트워크는 반드시 입력 순서가 달라도 동일한 출력을 보장해야 합니다.
이 성질을 Permutation Invariance(순열 불변성) 이라고 부릅니다.
PointMLP의 기본 구성 요소인 MLP는 각 점에 대해 독립적으로 동일한 연산을 수행합니다.
즉, 각 점의 특징 (h_i)는 오직 그 점의 입력값 (p_i)에만 의존하며,
입력 점들의 순서를 바꾸더라도 각 점별 결과는 변하지 않습니다.
✅ 이 단계에서 MLP는 Permutation Equivariant합니다.
(입력 순서가 바뀌면 출력 순서도 동일하게 바뀜)
MLP로부터 얻은 각 점의 특징을 max-pooling 연산으로 집계합니다.
max-pooling은 교환법칙(commutative) 을 따르는 연산입니다.
즉,
이므로, 입력 순서가 달라져도 결과는 동일합니다.
💡 MLP의 독립적 처리 + 순서 불변 집계 연산(max)
⇒ 최종적으로 permutation invariant 구조 완성
PointMLP의 핵심 연산은 다음과 같습니다.
여기서,
따라서 이 조합은
입력 점의 순서나 이웃 점 순서가 달라져도 결과가 변하지 않으며,
점군의 본질적 특성(순서 없음) 을 그대로 반영합니다.
| 단계 | 동작 | 순열 불변성 관련 설명 |
|---|---|---|
| ① | 각 점에 MLP 독립 적용 | 각 점의 순서와 무관 → Equivariant |
| ② | Max-pooling으로 집계 | 순서에 영향 없음 → Invariant |
| ✅ | 최종 출력 | 입력 순서 바뀌어도 결과 동일 → Permutation Invariant |
PointMLP는 모든 점에 동일한 MLP를 독립적으로 적용하고,
이후 순서 불변 연산(max-pooling)으로 집계하기 때문에
입력 순서가 바뀌어도 동일한 출력을 보장한다.
PointMLP의 순열 불변 설계는 사실상 PointNet의 핵심 아이디어를 계승한 것입니다.
| 항목 | PointNet | PointMLP |
|---|---|---|
| 특징 추출 | 단일 MLP | Residual MLP 블록 (깊은 구조) |
| 순서 처리 방식 | Max-pooling으로 Invariance 확보 | 동일 |
| 추가 모듈 | T-Net(정렬 보정) | Geometric Affine Module (경량 보정) |
즉,
PointMLP는 PointNet의 이론적 토대를 유지하면서,
Residual 설계와 Affine 보정으로 성능과 안정성을 향상시킨 모델입니다.
아래 그림처럼 “입력 순서 → 각 점에 독립적 MLP → Max Pooling → 순서 불변 결과” 흐름을
시각화하면 훨씬 직관적으로 이해할 수 있습니다.예시:
[p1, p2, p3] → [MLP(p1), MLP(p2), MLP(p3)] → max() → g
Permutation Invariance는 3D 딥러닝에서 반드시 보장해야 하는 기본 원리입니다.
PointMLP는 이 원리를 단순한 MLP 구조 안에서 효율적이고 우아하게 구현한 예시로,
CNN이나 Transformer보다 훨씬 가벼운 연산으로도 높은 성능을 보여줍니다.