Introduction
우선 3D 스캐너로 얻은 포인트 클라우드와 같은 기하학적 포인트 집합을 분석하는 것이 목표입니다. 이러한 데이터는 두 가지 중요한 특성을 가지고 있습니다. 첫째로 포인트들의 순서에 불변해야 하고, 둘째로 거리에 따른 지역적 특성이 다양하게 나타날 수 있습니다. 예를 들어 3D 스캔에서는 시점 효과나 움직임 등으로 인해 포인트의 밀도가 균일하지 않을 수 있습니다.
기존의 PointNet은 각 포인트의 공간적 인코딩을 학습하고 이를 전체적으로 통합하는 방식을 사용했지만, 거리에 기반한 지역적 구조를 포착하지는 못했습니다. CNN의 성공에서 볼 수 있듯이, 지역적 구조를 활용하는 것은 매우 중요합니다.
이러한 배경에서 PointNet++는 계층적 방식으로 포인트 집합을 처리합니다. 기본 아이디어는 포인트 집합을 거리 척도에 따라 겹치는 지역들로 분할하고, CNN처럼 작은 영역에서 세밀한 기하학적 구조를 포착한 뒤, 이를 더 큰 단위로 그룹화하여 고수준 특징을 생성하는 것입니다.
주요한 설계 과제는 두 가지였습니다. 포인트 집합을 어떻게 분할할 것인가와 지역 특징을 어떻게 추상화할 것인가입니다. 분할된 영역들 사이에 공통된 구조가 있어야 가중치를 공유할 수 있기 때문에, 이 두 문제는 서로 연관되어 있습니다.
특히 입력 포인트의 밀도가 균일하지 않은 문제를 해결하기 위해, PointNet++는 다중 스케일의 이웃을 활용합니다. 학습 과정에서 랜덤 드롭아웃을 사용하여 네트워크가 서로 다른 스케일에서 감지된 패턴들을 입력 데이터에 따라 적응적으로 가중치를 주고 결합하도록 학습됩니다.
결과적으로 PointNet++는 포인트 집합을 효율적이고 강건하게 처리할 수 있게 되었고, 3D 포인트 클라우드의 까다로운 벤치마크에서 최고 수준의 성능을 달성했습니다.
Method
3.1 Review of PointNet
PointNet++는 기존 PointNet을 확장한 구조로, 계층적 구조를 추가했다는 점이 가장 큰 특징입니다.
먼저 PointNet의 기본 구조를 살펴보면, 순서가 없는 포인트들의 집합을 입력으로 받아서 벡터로 매핑하는 함수를 정의합니다. 이 함수는 f(x1, x2, ..., xn) = γ(MAX{h(xi)})와 같은 수식으로 표현되며, 여기서 γ와 h는 MLP로 구성된 네트워크입니다.
이 구조의 장점은 입력 포인트들의 순서가 바뀌어도 같은 결과를 내며, 이는 MAX 연산자를 사용했기 때문입니다. 또한 어떤 연속적인 집합 함수도 근사할 수 있다는 이론적 보장도 있습니다.
여기서 h의 출력은 각 포인트의 공간적 인코딩으로 해석할 수 있으며, 이는 PointNet 논문에서 자세히 설명하고 있습니다. 실제로 PointNet은 여러 벤치마크에서 인상적인 성능을 보여주었습니다.
하지만 한 가지 큰 한계가 있었습니다. 바로 서로 다른 스케일에서의 지역적 맥락을 포착하기 어렵다는 점이었습니다. 왜나하면 PointNet은 global max pooling을 한 번만 사용하여 모든 포인트들을 한꺼번에 보면서 전체적인 특징만을 파악하기 때문입니다. 이를 해결하기 위해 PointNet++는 계층적 특징 학습 프레임워크를 도입하였습니다.
이러한 개선을 통해 PointNet++은 균일하지 않게 샘플링된 포인트 집합에서도 강건하게 특징을 학습할 수 있게 되었다는 점이 중요하며, 이는 실제 3D 스캔 데이터처럼 포인트의 밀도가 불균일한 상황에서 특히 유용한 특징이 되었습니다.
3.2 Hierarchical Point Set Feature Learning
PointNet++의 전체 구조는 계층적 특징 학습 파트와 이를 응용하는 Segmentation/Classification 파트로 구성됩니다.
먼저 sampling은 FPS(Farthest Point Sampling) 알고리즘을 사용하여 입력 포인트 집합에서 대표점들을 선택합니다. 이는 마치 전체 공간에 골고루 점들을 배치하는 것과 같은데, 첫 번째 점을 임의로 선택한 후 이미 선택된 점들로부터 가장 멀리 있는 점을 순차적으로 선택하는 방식입니다. 이렇게 하면 단순한 랜덤 샘플링과 비교했을 때 전체 공간을 더 균일하게 커버할 수 있습니다.
다음으로 grouping 과정에서는 선택된 중심점들을 기준으로 주변 포인트들을 모아 그룹을 만듭니다. 이때 Ball Query라는 방식을 사용하는데, 각 중심점에서 정해진 반경 내에 있는 모든 포인트들을 하나의 그룹으로 묶습니다. KNN(K-Nearest Neighbors)과 달리 Ball Query는 일정한 물리적 크기를 보장하기 때문에, 포인트의 밀도가 다른 영역에서도 일관된 스케일의 지역 정보를 얻을 수 있습니다.
이렇게 만들어진 각 그룹은 하나의 지역 영역을 나타내며, 여기에 PointNet을 적용하여 해당 영역의 특징을 추출합니다. 전체적으로 이 과정은 입력된 N개의 포인트에서 N'개의 중심점을 선택하고, 각 중심점마다 주변 K개의 포인트를 포함하는 그룹을 만들어, 최종적으로 N' × K × (d+C) 크기의 그룹화된 포인트 집합을 만들어냅니다. 이런 과정을 거치면서 포인트의 수는 줄어들지만, 각 포인트가 담고 있는 특징 정보는 더욱 풍부해지게 됩니다. (레벨이 높아질수록 포인트의 특징 차원이 증가)
이렇게 추출된 특징들은 두 가지 방식으로 활용됩니다. 세그멘테이션에서는 interpolate와 unit PointNet을 번갈아 사용하면서 줄어든 포인트들을 다시 원래 개수로 복원합니다. 여기서 unit PointNet을 사용하는 이유는 단순히 보간만으로는 로컬 정보를 충분히 반영할 수 없고, 주변 점들의 분포와 관계를 반영하기 위함으로 보여집니다. 이 과정에서 상단의 skip link concatenation이 다양한 레벨의 특징 정보를 보존하는 역할을 합니다. 분류 태스크는 좀 더 단순한데, 추출된 특징을 fully connected layer에 통과시켜 최종 클래스를 예측하게 됩니다.
이러한 구조는 마치 현미경으로 다양한 배율에서 관찰하는 것처럼, 물체의 세부적인 특징부터 전체적인 구조까지 모두 파악할 수 있게 해줍니다. 특히 skip connection을 통해 여러 레벨의 정보를 함께 활용함으로써, 더욱 정확한 예측이 가능해집니다. 결과적으로 PointNet++는 기존 PointNet의 한계였던 지역적 특징 추출 문제를 해결하면서도, 불규칙한 포인트 클라우드 데이터를 효과적으로 처리할 수 있게 됩니다.
3.3 Robust Feature Learning under Non-Uniform Sampling Density
PointNet++가 해결하고자 하는 핵심 문제는 실제 3D 스캔 데이터의 불균일한 밀도 문제입니다. 현실 세계의 3D 스캔 데이터는 스캐너와의 거리나 물체의 복잡도에 따라 포인트의 밀도가 다르게 나타납니다. 스캐너와 가까운 부분은 포인트가 촘촘하게 찍히고, 먼 부분은 듬성듬성 찍히게 됩니다.
이런 상황에서는 두 가지 문제가 발생하게 되는데, 포인트가 많은 영역에서는 세밀한 특징을 잡아낼 수 있지만, 포인트가 적은 영역에서는 세밀한 특징을 잡으려고 하면 오히려 노이즈만 학습하게 됩니다.
이를 해결하기 위해 PointNet++는 두 가지 방법을 제안했습니다. 첫 번째는 MSG(Multi-scale grouping)로, 이는 여러 크기의 범위를 동시에 보는 방법입니다. 중심점마다 여러 scale의 ball query를 수행하여 그룹을 생성한 다음 PointNet으로 특징을 추출합니다. 같은 지점을 작은 범위부터 큰 범위까지 동시에 보고 이 정보들을 모두 합쳐서 사용해 성능은 좋지만, 모든 지점에서 여러 번의 연산이 필요해 시간이 오래 걸린다는 단점이 있습니다.
두 번째는 MRG(Multi-resolution grouping)로, 더 효율적인 접근 방식입니다. 작은 범위들을 먼저 보고 그 정보들을 모은 다음, 한 번에 넓은 범위를 보는 방식입니다. 포인트가 많은 곳에서는 첫 번째 정보를, 포인트가 적은 곳에서는 두 번째 정보를 주로 활용하며, MSG보다 빠르면서도 비슷한 효과를 낼 수 있습니다.
예를 들어 사람 얼굴 모델을 스캔했을 때, 코나 입 주변의 복잡한 부분은 포인트가 많이 찍혀 있어 작은 범위의 정보로 세밀한 특징을 잡아내고, 뺨이나 이마 같이 단순한 부분은 포인트가 적어도 넓은 범위를 보면서 전체적인 형태를 파악합니다. 이런 적응적 특징 추출을 통해 PointNet++는 불균일한 밀도의 포인트 클라우드에서도 효과적으로 동작하게 됩니다.
MSG 기반 모델 또는 MRG 기반 모델의 장단점이 존재하기 때문에 상황에 따라 다른 모델을 기용하게 됩니다.
3.4 Point Feature Propagation for Set Segmentation
Segmentation 과정에 대해 좀 더 자세히 살펴보겠습니다.
PointNet++의 특징 추출 과정에서는 포인트의 수를 점점 줄여가면서 정보를 압축합니다. 이는 마치 이미지를 점점 작게 만들어가는 것과 비슷합니다. 하지만 세그멘테이션에서는 각각의 원본 포인트가 어떤 물체의 부분인지 예측해야 하기 때문에, 다시 원래 크기로 복원하는 과정이 필요합니다.
이를 해결하기 위한 가장 단순한 방법은 처음부터 모든 포인트를 다 사용하는 것입니다. 하지만 이는 컴퓨터에 너무 큰 부담을 주게 됩니다. 그래서 PointNet++는 특징 전파라는 방법을 사용합니다.
특징 전파 과정은 다음과 같이 진행됩니다:
- 먼저 줄어든 포인트들의 특징을 원래 위치의 포인트로 복원합니다. 이때 주변의 가까운 포인트들을 참고하는데, 가까운 포인트일수록 더 많은 영향을 줍니다. 예를 들어 책상 모서리의 한 점이 있다면, 가장 가까운 3개의 압축된 포인트들을 보고 그 특징을 추정합니다.
- 그 다음에는 이전 단계에서 저장해둔 skip link 정보를 활용합니다. 이는 마치 압축 과정에서 찍어둔 '중간 사진'을 보는 것과 같습니다. 이 정보들을 방금 복원한 특징과 합쳐서 더 풍부한 정보를 만듭니다.
- 마지막으로 unit pointnet이라는 과정을 거칩니다. 이는 복원된 특징들을 더 정교하게 다듬는 과정입니다. CNN에서 1x1 컨볼루션을 사용하는 것과 비슷한 역할을 합니다.
이러한 과정을 여러 번 반복하면서 점점 더 많은 포인트의 특징을 복원해내고, 최종적으로는 모든 원본 포인트의 특징을 얻게 됩니다. 이렇게 얻어진 특징들은 각 포인트가 어떤 부분에 속하는지 예측하는 데 사용됩니다.
Experiment
실험은 2D 객체부터 실제 3D 장면까지 다양한 특성을 가진 네 가지 데이터셋에서 진행되었습니다. 분류 작업의 경우 정확도로 평가하고, 장면 의미론적 레이블링은 평균 복셀 분류 정확도로 평가합니다.
첫 번째로 MNIST 데이터셋은 손으로 쓴 숫자 이미지들로 구성됩니다. 훈련 데이터 60,000개와 테스트 데이터 10,000개로 이루어져 있어 충분한 양의 데이터로 모델의 기본적인 성능을 평가할 수 있습니다.
두 번째로 ModelNet40은 40개 카테고리의 CAD 모델들로 구성됩니다. 주로 인공물들이 포함되어 있으며, 공식적으로 9,843개의 훈련용 형상과 2,468개의 테스트용 형상으로 나뉘어 있습니다.
세 번째로 SHREC15는 50개 카테고리에서 총 1,200개의 형상을 포함합니다. 각 카테고리는 24개의 형상을 가지고 있는데, 주로 말이나 고양이 같은 유기적 형태를 가진 객체들이 다양한 포즈로 존재합니다. 이 데이터셋에서는 5-폴드 교차 검증을 통해 분류 정확도를 측정합니다.
마지막으로 ScanNet은 1,513개의 스캔되고 재구성된 실내 장면을 포함합니다. 1,201개의 장면을 훈련에 사용하고 312개의 장면을 테스트에 사용하여, 실제 환경에서의 성능을 평가합니다.
4.1 Point Set Classification in Euclidean Metric Space
PointNet++의 유클리드 공간에서의 포인트 집합 분류 실험 결과입니다.
실험은 2D(MNIST)와 3D(ModelNet40) 두 가지 데이터셋에서 진행되었습니다. MNIST 이미지는 픽셀 위치를 2D 포인트 클라우드로 변환했고, ModelNet40은 3D 메시 표면에서 포인트들을 샘플링했습니다. 기본적으로 MNIST는 512개, ModelNet40은 1024개의 포인트를 사용했으며, 특별히 ModelNet40에서는 face normal을 추가 특징으로 사용하고 포인트 수를 5000개로 늘린 실험도 진행했습니다.
.
실험 결과, MNIST에서는 기존 PointNet 대비 오류율을 크게 감소시켰고, ModelNet40에서도 동일한 입력 조건에서 확연히 더 나은 성능을 보였습니다. 특히 포인트 기반 방법이 이미지 CNN과 비교해도 대등하거나 더 나은 성능을 보이기도 하였습니다.
밀도 변화에 대한 강건성 실험도 진행했는데, 이는 실제 센서 데이터가 불규칙한 샘플링 문제를 가지기 때문에 중요한 실험이라고 볼 수 있스비다. 테스트 시에 무작위로 포인트를 제거하면서 성능 변화를 관찰했는데, MSG+DP(Multi-scale grouping)와 MRG+DP(Multi-resolution grouping)가 매우 강건한 결과를 보여주었습니다. 특히 MSG+DP는 포인트 수가 1024개에서 256개로 줄어도 성능 하락이 1% 미만이었습니다.
기존 PointNet도 전역적 특징에 집중하기 때문에 밀도 변화에 어느 정도 강건했지만, 세부적인 특징을 놓치면서 전체적인 성능은 PointNet++보다 낮았습니다. 단일 스케일 그룹핑(SSG)을 사용한 경우에는 희소한 샘플링에서 일반화가 잘 되지 않았지만, 학습 시 무작위 드롭아웃(DP)을 적용하면 이 문제가 개선되는 것을 확인할 수 있었습니다.
4.2 Point Set Segmentation for Semantic Scene Labeling
PointNet++의 의미론적 장면 레이블링 실험 결과입니다.
PointNet++의 의미론적 장면 레이블링 성능을 실내 공간 스캔 데이터로 검증하게 되었습니다. 실내 스캔 데이터의 각 포인트가 어떤 물체인지 예측하는 것이 목표였는데, 여기서는 공정한 비교를 위해 RGB 정보를 제외하고 순수하게 기하학적 정보만을 활용했습니다.
실험 결과를 보면, PointNet++는 기존 방법들과 비교해서 상당히 우수한 성능을 보여주었습니다. 특히 복셀화 과정 없이 포인트 클라우드를 직접 학습함으로써 정보 손실을 최소화했고, 데이터 의존적 샘플링으로 더 효과적인 학습이 가능했습니다. 또한 다양한 스케일의 기하학적 특징을 포착할 수 있어서 크기가 서로 다른 물체들도 잘 인식할 수 있었습니다.
시각화된 결과를 보면 이러한 차이가 더욱 분명하게 드러납니다. 기존 PointNet이 방의 전체적인 구조는 잘 파악하지만 가구 같은 세부 물체들을 놓치는 반면, PointNet++는 전체 구조와 개별 가구들을 모두 정확하게 구분해내고 있습니다.
샘플링 밀도 변화에 대한 실험도 진행했는데, 가상으로 생성한 스캔 데이터로 평가를 진행했습니다. 단일 스케일 그룹핑(SSG)은 비균일한 데이터에서 성능이 크게 떨어진 반면, 다중 해상도 그룹핑(MRG)은 샘플링이 희소한 영역에서도 더 큰 스케일의 특징을 활용하면서 안정적인 성능을 보여주었습니다. 특히 다중 스케일 그룹핑(MSG)은 학습 데이터와 테스트 데이터의 특성이 달라졌음에도 가장 우수한 성능을 보여주었습니다.
4.3 Point Set Classification in Non-Euclidean Metric Space
PointNet++의 비유클리드 공간에서의 성능을 평가한 실험 내용입니다.
이 실험의 핵심은 자세가 다른 물체들을 같은 범주로 분류할 수 있는지 확인하는 것입니다. Figure 7을 보면 서 있는 말과 풀을 먹는 말처럼 자세는 다르지만 같은 말이라고 인식할 수 있어야 합니다. 이를 위해서는 물체의 본질적인 구조를 이해하는 것이 중요합니다.
SHREC15 데이터셋은 3D 공간에 있는 2D 표면 형태의 물체들로 구성되어 있습니다. 여기서는 표면을 따라 측정하는 측지 거리를 사용하여 메트릭 공간을 구성했습니다. 이 공간에서 WKS, HKS, 다중 스케일 가우시안 곡률과 같은 본질적인 특징들을 추출하여 입력으로 사용했습니다.
실험 결과를 보면, PointNet++는 기존의 최고 성능이었던 DeepGM보다 훨씬 좋은 성능을 보여주었습니다. 특히 주목할만한 세 가지 발견이 있었습니다.
첫째, 본질적 특징(Intrinsic features)의 중요성입니다. WKS는 물체의 표면에서 일어나는 파동의 동작을 기반으로 한 특징으로, 물체의 지역적인 기하학적 구조를 잘 포착합니다. HKS는 물체 표면에서의 열 확산 과정을 기반으로, 한 특징으로 물체의 형태적 특성을 잘 나타냅니다. 단순한 XYZ 좌표를 사용했을 때는 60.18%의 정확도를 보였지만, 이러한 Intrinsic features를 사용하면 94.49%까지 성능이 향상되었습니다.
둘째, 비유클리드 거리의 효과입니다. 유클리드 거리 대신 측지 거리(곡면을 따라 측정한 두 점 사이의 최단 거리)를 사용했을 때 성능이 96.09%까지 올라갔습니다. 이는 표면을 따라 이어진 실제 거리가 물체의 구조를 더 잘 반영하기 때문입니다.
셋째, 유클리드 거리의 한계점도 확인할 수 있었습니다. 물체가 구부러지면 유클리드 거리상 가까운 점들이 실제로는 표면상에서 매우 멀리 떨어져 있을 수 있어, 지역적 구조를 파악하는 데 어려움이 있기 때문입니다.
4.4 Feature Visualization
첫 번째 레이어에서 학습된 3D 포인트 클라우드 패턴의 시각화 결과에 대한 설명입니다.
시각화 방법은 다음과 같은 과정을 거쳤습니다. 먼저 공간을 복셀 그리드로 나누고, 특정 뉴런을 가장 강하게 활성화시키는 지역 포인트 집합들을 각 그리드 셀에 모았습니다. 상위 100개의 예시를 사용했으며, 높은 투표를 받은 그리드 셀들을 3D 포인트 클라우드로 변환했습니다.
Figure 8을 보면 128개의 커널 중 무작위로 선택된 20개의 패턴이 보여지는데, 색상은 포인트의 깊이를 나타냅니다. 빨간색은 가까운 부분을, 파란색은 먼 부분을 의미합니다.
이 모델이 ModelNet40 데이터셋으로 학습되었기 때문에, 주로 가구들에서 볼 수 있는 기본적인 구조들이 학습되었습니다. 평면, 이중 평면, 선, 모서리 등의 기하학적 패턴들이 발견되는데, 이는 가구들이 가진 기본적인 구조적 특징들을 네트워크가 성공적으로 학습했다는 것을 보여줍니다.
Conclusion
PointNet++는 메트릭 공간에서 샘플링된 포인트 집합을 처리하기 위한 강력한 신경망 구조를 제안했습니다. 입력 포인트 집합을 계층적으로 분할하여 재귀적으로 처리하며, 거리 척도에 따른 계층적 특징들을 효과적으로 학습할 수 있었습니다.
특히 불균일한 포인트 샘플링 문제를 해결하기 위해 두 가지 새로운 set abstraction 레이어를 도입했는데, 이는 지역적 포인트 밀도에 따라 다중 스케일 정보를 지능적으로 집계합니다. 이러한 혁신적인 접근으로 3D 포인트 클라우드의 까다로운 벤치마크에서 당시 최고 수준의 성능을 달성할 수 있었습니다.
논문에서는 향후 연구 방향으로 두 가지 중요한 과제를 언급했습니다. 첫째는 MSG와 MRG 레이어에서 지역 영역 내 계산을 공유함으로써 추론 속도를 개선하는 것입니다. 둘째는 높은 차원의 메트릭 공간에서의 응용을 찾는 것입니다. CNN 기반 방법들은 높은 차원에서 계산적으로 실현 불가능할 수 있지만, PointNet++는 확장성이 좋아 이러한 상황에서도 효과적으로 적용될 수 있을 것으로 기대된다고 덧붙였습니다.
https://arxiv.org/pdf/1706.02413