안녕하세요, 스물 여섯 번째 x-review 입니다. 이번 논문은 2024년도 AAAI에 게재된 SPGroup3D: Superpoint Grouping Network for Indoor 3D Object Detection 입니다. 그럼 바로 리뷰 시작하겠습니다 !
1. Introduction
3D Object Detection의 최종 목적은 포인트 클라우드에서 물체의 방향 정보까지 포함된 3D bounding box와 semantic한 클래스 정보를 알아내는 것 입니다. 그 중 indoor에서의 3D detection은 주로 차를 검출하는 outdoor에 비해 물체도 다양하고, 물체 사이의 occlusion 등 기하학적인 구조가 더 복잡합니다. 이전의 SOTA 모델들의 경우 주로 voting과 grouping을 포함하고 있었는데요, 이러한 과정은 각 포인트별 중심에 대한 offset을 학습하고, 포인트끼리 instance agnostic한 local region으로 voting하는 포인트를 합치게 됩니다. 일반적인 voting 방식은 모든 proposal을 중심 포인트에 가깝게 하게 되는데, 이는 proposal부터 물체의 중심까지의 거리가 proposal의 정확도에 끼치는 영향이 클수록 적절하지 않습니다.
voting 이후의 grouping에서 흔히 사용되는 방식은 semantic agnostic과 semantic aware, 크게 두 가지로 나뉩니다. 먼저 semantic agnostic 방식은 포인트 좌표 사이의 거리를 기준으로 그룹을 만들게 되는데, 이는 scene 내에서 다른 카테고리에 속하면서 다양한 instance로 구성되어있을 때 Fig.1(a)와 같이 동일한 물체에 속하는 포인트를 하나의 그룹으로 만들기 어렵습니다. semantic aware의 경우, semantic agnostic과 달리 semantic 정보까지 고려하지만 같은 카테고리에 속하는 물체이지만 서로 너무 가까이 배치되어 있다면 Fig.1(b)와 같이 여전히 그룹화하는데 어려움이 존재합니다. 결국 현재 사용되는 voting과 instance agnostic한 그룹화 방식은 proposal에 대한 outlier와 노이즈를 발생시킵니다. 그래서 본 논문에서는 위와 같은 문제를 해결하기 위해서 superpoing를 사용하여indoor 환경에서 anchor free의 one-stage 모델 SPGroup3D를 새롭게 제안합니다.
SPGroup3D는 indoor scene의 복잡한 기하학적인 구조를 파악할 수 있는 voting 모듈 (geometry-aware voting module)을 제안하며, 이는 voting 과정에서 각 proposal과 물체의 중심 사이의 상대적인 기하학적 구조를 활용하여 낮은 퀄리티의 proposal을 모델이 더 쉽게 필터링할 수 있도록 합니다. 그리고 Fig.1(c)와 같이 superpoint를 이용하여 현재의 그룹화에서 발생하는 문제를 해결하고자 하였습니다. superpoint는 instance aware한 로컬 단위이며, 유사한 semantic과 공간에 존재하는 인접한 포인트들로 구성됩니다. superpoint를 이용한 그룹화 모듈은 superpoint 어텐션과 superpoint-voxel fusion으로 이루어져 있습니다. 먼저 어텐션은 겹치지 않는 superpoint 사이의 interaction을 향상시키기 위해, superpoint-voxel fusion은 voxel과 superpoint 사이의 interaction을 위해 설계하였다고 하는데 이는 method에서 더 자세하게 살펴보도록 하겠습니다. 마지막으로는 다중 매칭을 사용하여 각 superpoint 기반으로 만들어진 물체 proposal과 GT를 비교하여 학습 동안에 positive 샘플을 선택합니다. 이러한 구조를 세 개의 indoor 데이터셋에서 실험한 결과 모두 SOTA를 달성하였다고 합니다. 여기서 본 논문의 main contribution을 정리하면 다음과 같습니다.
- 기하학적인 구조를 활용하는 voting 모듈 제안
- superpoint-to-superpoint와 superpoint-to-voxel feature 간의 상호작용을 향상시키는 superpoint 기반의 그룹화 모듈 설계
- 학습 중에 positive와 negative 샘플을 구별할 수 있는 다중 매칭 방식 제안
2. Method
Overview
모델의 전반적인 동작 과정을 설명해보자면, 먼저 입력으로 들어오는 N개의 포인트는 \{p_i}^N_{i=1}으로 표현되며 여기서 p_i는 \mathbb{R}^6으로 포인트의 좌표인 x, y, z와 컬러 정보인 r, g, b로 이루어져 있습니다. 이러한 입력 포인트를 비어있는 공간이 없는 복셀 구조로 변환하기 위해 sparse 3D 백본 네트워크를 사용하여 M차원의 복셀을 얻게 됩니다. 복셀을 만들었으면 이 복셀과 raw한 포인트 클라우드에서의 superpoint가 geometry aware voting 모듈과 superpoint 기반의 그룹화 모듈을 통과하여 물체에 대한 propsal을 제안하는 것이죠. 학습 중에는 마지막에 다중 매칭을 통해 positive 샘플을 선택하여 사용하고, inference에는 3D NMS를 통해 불필요한 proposal을 제거합니다.
Geometry-Aware Voting
일반적으로 물체의 중심에 가까운 proposal에 더 높은 score와 중심 포인트일 가능성을 더 부여하고 반대로 물체의 중심에서 멀리 떨어진 proposal은 더 낮은 점수를 주어 필터링 할 수 있어야 합니다. 그러나 일반적인 voting 과정을 거치고 나면 모든 voting 포인트들이 물체의 중심에 가깝게 형성되어 낮은 proposal이 필터링하기가 어렵습니다. 그래서 본 논문은 geometry aware voting 방식을 제안한 것이죠. 이러한 voting 방식을 통해 최종 proposal에서 물체의 중심까지의 상대적인 위치 정보를 보존하여 모델이 상대적으로 멀리 형성된 proposal에 낮은 점수를 할당하여 쉽게 필터링할 수 있도록 합니다.
앞서 백본 네트워크를 통과한 M 차원의 시드 복셀 \{v_i\}^M_{i=1}은 v_i는 포인트 좌표 v^c_i \in \mathbb{R}^3과 각 포인트의 feature v^f_i \in \mathbb{R}^C로 이루어진 v_i = [v^c_i;v^f_i] 형태로 주어집니다. 시드 복셀을 superpoint로 그룹화하는 가장 간단한 방식은 미리 형성한 superpoint를 이용하여 \{v_i\}^M_{i=1}을 클러스팅하는 것 입니다. 그러나 Fig.3(b),(f)와 같이 \{v_i\}^M_{i=1}만 사용하게 되면 superpoint가 주로 물체의 표면에만 존재하게 되어 instance에 대한 실제 중심과는 멀리 떨어져 있어 정확한 repression을 어렵게 합니다. 그래서 VoteNet과 유사하게 본 논문에서도 물체의 bounding box의 중심에 대한 복셀의 offset을 학습합니다. 각 시드 복셀은 포인트 좌표와 중심에 대한 offset \vartriangle v^c_i \in \mathbb{R}^3과 feature offset \vartriangle v^f_i \in \mathbb{R}^C을 포함하게 되죠.
따라서 voting 복셀 o_i는 offset이 포함된 식(1)과 같이 표현할 수 있습니다.
- o^c_i \in \mathbb{R}^3 : voting 복셀의 좌표
- o^f_i \in \mathbb{R}^C : voting 복셀의 feature
예측된 offset \vartriangle v^c_i는 시드 복셀 v_i의 좌표에서 해당하는 바운딩 박스 중심까지의 GT offset와 smooth L1 loss로 계산됩니다. 이렇게 기존의 voting 방식을 따라서만 만들어진 결과는 Fig.3(c), (g)와 같이 물체의 중심에 너무 밀집되어 전체적인 물체의 representation을 할 수 없습니다. 그래서 여기까지의 결과를 직접적으로 그룹화에 적용하는 VoteNet과 달리 추가적으로 시드 복셀을 식(2)와 같이 합치게 됩니다.
- f_i : \{f_i\}^{2M}_{i=1}의 i번째 복셀
이러한 추가적인 과정을 통해서 만들어진 최종 superpoint는 Fig.3(d),(h)와 같이 물체의 중심에 대한 상대적인 위치를 유지하면서 기존 voting 결과처럼 중심에 너무 밀집되지 않은 형태로 물체 내에 포함된 형태를 유지할 수 있습니다.
Superpoint-based Grouping
하나의 proposal에서 일관된 instance representation을 유지하기 위해서 superoint로 복셀을 합치는 그룹화 모듈을 제안합니다. 앞서 이야기하였 듯, 그룹화 모듈은 superpoint attention과 superpoint-voxel fusion으로 이루어져 있습니다. 그룹화는 여러번 (default는 3번) 반복하는데, superpoint-voxel fusion의 출력은 다음 그룹화의 입력으로 사용됩니다.
먼저 superpoint attention을 살펴보도록 하겠습니다. 저자는 superpoint는 입력 복셀에서 겹치지 않는 로컬 영역으로, 모델이 superpoint 자체만으로는 object detection과 같은 task에서 인스턴스를 파악하지 못한다고 합니다. 그래서 인접한 로컬 영역 내에서 feature 상호 작용을 가능하게 하는 superpoint attention 모듈을 제안합니다. 앞선 voting 모듈에서 \{f_i\}^{2M}_{i=1}을 전달받아서 맨 첫번째 그룹화에서 초기 L개의 그룹을 만들며, 여기서 s_i는 [s^c_i;s^f_i]를 포함합니다. 이후부터는 계산 복잡도를 단순화하기 위해서 각 superpoint에 대해 k-NN 알고리즘을 적용하여 가까운 이웃 k개를 구해서 k개의 이웃에 대해서만 attention을 계산하며 이러한 과정은 식(3)과 같이 공식화할 수 있습니다.
- Scatter : Scatter 함수
- \{N_{ij}\}^k_{j=1}: s_i의 이웃 포인트
- n^c_{ij} \in \mathbb{R}^3, n^f_{ij} \in \mathbb{R}^C : \{N_{ij}\}^k_{j=1}의 각 superpoint에 해당하는 좌표와 feature
좌표 정보를 feature 공간에 임베딩하는 대신 좌표와 feature 공간 모두에서 유사도를 모두 계산한다고 합니다. 더 많은 context 정보를 사용하기 위해 superpoint 간의 interaction을 활발히 하는 것을 목표로 하며 구체적인 과정은 식(4),(5)와 같습니다.
- \{w^c_{ij}\}^k_{j=1} : 이웃 포인트의 좌표 공간에 대한 가중치
- \{w^f_{ij}\}^k_{j=1} : 이웃 포인트의 feature 공간에 대한 가중치
- MLP : fc layer
이러한 좌표와 feature 공간 가중치를 곱하여 소프트맥수 함수를 적용하면 정규화된 fusion 가중치를 얻을 수 있습니다. 즉 i번째 superpoint와 가장 가까운 k개의 이웃 중 j번째 superpoint에 대한 fusion 가중치 w_{ij}는 식(6)으로 정의할 수 있습니다.
마지막으로, 이러한 fusion 가중치에 k개의 포인트에 대한 feature을 곱하여 업데이트된 feature을 얻고, 포인트의 좌표는 변경되지 않은 상태를 유지하는데, 이는 식(7)과 같이 표현합니다.
- \{a_i\}^L_{i=1} : 업데이트된 superpoint
- a^c_i, a^f_i : \{a_i\}^L_{i=1}의 좌표와 feature
이렇게 superpoint attention을 하고나면 다음은 superpoint-voxel fusion 입니다. 복셀에서 superpoint 형태로 변환하면 semantic한 정보가 손실될 수 밖에 없기 때문에 superpoint와 복셀 사이의 interaction을 가능하게 하기 위해 sparse convolution을 기반으로 하는 superpoint-voxel fusion을 제안합니다.
- {h^f_i}^{2M}_{i=1} : {a_i}^L_{i=1}의feature를\{f_i\}^{2M}_{i=1}의 크기와 동일하도록 broadcasting한 결과
- \{g^f_i\}^{2M}_{i=1} : 초기 fusion 복셀 feature
먼저 attention 모듈을 통과한 supepoint를 사용하여 식(2)의 복셀 \{f_i\}^{2M}_{i=1}의 크기와 동일하도록 feature을 broadcasting 합니다. broadcasting은 본래 큰 차원의 배열에 맞게 작은 배열이 확장되는 방식이라고 하네요. fusion 복셀의 좌표는 식(2)의 복셀 좌표와 동일하기에 좌표를 기반으로 식(2)의 복셀 resolution과 동일한 복셀 크기로 fusion 복셀을 다시 복셀화 합니다. 복셀화된 fusion 복셀은 sparse 컨볼루션 레이어, 정규화 레이어, activation 레이어로 구성된 SPFFN 구조, 식(10)을 통과하여 최종 출력값을 얻습니다.
- g’_i : 업데이트된 fusion voxel
{g’_i\}^M_{i=1}은 sparse 텐서 행렬 매핑을 통해 입력 레벨로 다시 변환된 후, 다음번 반복에 사용되기 위해 refine된 복셀 \{f_{i+1}\}^{2M}_{i=1}을 얻을 수 있습니다. 그러면 이러한 refine 복셀이 다음번 Superpoint 기반 그룹화 모듈의 입력으로 들어가 동일한 과정을 반복하게 되는 것이죠.
Multiple Matching and Loss Function
이전 방법론들은 일정한 이웃 포인트를 사용한 proposal을 형성하였으며, 현재 proposal의 중요도를 결정하는 기준으로 receptive field를 고려하였습니다. 즉, 같은 feature level에서 만들어지는 proposal은 모두 동일하게 다루어지죠. 그래서 proposal의 위치와 바운딩 박스의 중심 사이의 거리를 기준으로 positive와 neagtive 샘플을 직접적으로 구분할 수 있었습니다. 그러나 다이나믹한 receptive field 크기를 가지며 superpoint에 의해 proposal이 만들어지는 본 논문에는 이전의 방법론에서 적용한 방식이 적절하지 않다는 것 입니다. 그래서 GT에 대해서 다양한 positive 샘플을 선택하기 위해서 매칭 알고리즘을 개선해야만 했습니다. DETR에 영감을 받아, 학습 과정의 loss를 매칭 cost 함수로 직접 사용하고 classification과 regression cost를 동시에 고려하였다고 합니다. DETR의 Bipartite Matching과는 다르게, 본 논문은 Hungraian 매칭은 필요하지 않기 때문에 각 GT에 대해서 여러 샘플을 할당합니다.
- Cost_{ik} : i번째 proposal과 k번째 GT 사이의 유사도를 평가
- cost^{cls}_{ik}, cost^{reg}_{ik} : focal cost 함수, DIoU cost 함수
각 GT에 대해 최소 cost를 가진 top r개의 proposal을 positive 샘플로 선택하고 나머지는 negative로 간주합니다. 이렇게 샘플을 나누고 나면 식(12)에서 차례대로 voting loss, centerness loss, bounding box을 추정하는 loss, 그리고 classification loss로 이루어진 전체 loss를 계산하게 됩니다.
3. Experiments
실험은 indoor 데이터셋인 SUN RGB-D와 ScanNet V2, 그리고 S3DIS에서 모두 진행하였습니다.
Benchmarking Results
세 데이터셋에서 최근 SOTA 모델과의 비교를 진행하였는데, 일단 표에 존재하는 방법론들과 비교하였을 때는 본 논문의 SPGroup3D가 새롭게 SOTA를 달성하였습니다. 그런데, FCAF3D를 개선하여 SOTA를 달성하였던 방법론이 ICIP 23년도에 게재된 TR3D인데 본 논문이 24년도 논문임에도 불구하고 TR3D와의 비교가 없어서 의아했습니다 .. TR3D와의 비교까지 포함하면 ScanNet을 제외하고 SUN RGB-D와 S3DIS에서는 성능 차이가 꽤 크게 TR3D가 SOTA를 유지하게 됩니다. 22년도까지의 논문들과만 비교되었고 해당 논문도 23년도에 아카이브에 기재된 것으로 보아 같은 년도에 나온 TR3D는 고려하지 못한 것이 아닐까 생각합니다.
Ablation Study
ablation study는 ScanNet V2에서 진행하였습니다.
Effect of different components of SPGroup3D
먼저 논문에서 제안한 3개의 contribution이 각각 성능에 미치는 영향에 대한 ablation study를 진행하였습니다. 1행의 베이스 모델은 VoteNet의 voting 방식을 활용하는 fully sparse convolution 모델 입니다. 먼저 1행과 2행을 비교하면, 본 논문의 geometry aware voting 결과를 그룹화 모듈과 다중 매칭 없이 다이렉트로 최종 proposal 형성에 사용합니다. 제안한 voting 모듈을 통해 베이스라인 모델 대비 꽤나 큰 폭을 가지며 성능 향상이 가능한 것을 확인할 수 있습니다. 또한 2행과 3행을 비교하면 superpoint 기반의 그룹화 모듈과 다중 매칭 방식을 차례로 추가할 때 마다 향상되는 성능을 통해 본 논문에서 제안하는 3개의 모듈이 모두 기존의 voting, 그룹화 방식을 개선하여 성능 향상에 영향을 주고 있다는 사실을 증명할 수 있습니다.
Effect of superpoint based grouping
superpoint 기반의 그룹화 모듈에는 두 개의 하이퍼 파라미터를 조절할 수 있는데요, 모듈을 얼마나 반복할지에 대한 iteration과 이웃 포인트의 수인 k 입니다. Fig.4의 그래프를 보면 하이퍼 파라미터의 변화에도 성능 변동이 크지 않은 것을 볼 수 있습니다.
그리고 그룹화 모듈을 제안하게 된 문제 정의가 introduction에서 언급한 바와 같이 현재까지의 semantic agnostic, semantic aware 방식처럼 instance를 고려하지 않는다는 문제를 해결하기 위함이었습니다. 그래서 그룹화 모듈의 효과를 더욱 증명하기 위해 앞서 언급한 그룹화 모듈과의 비교를 Tab.3에서 진행하였습니다. 해당 실험에서 본 논문의 그룹화 모듈이 가장 높은 성능을 달성하면서 instance를 고려한 proposal을 생성하는 것이 최종 detection 성능 개선에 도움이 된다는 사실을 증명하고 있습니다.
안녕하세요. 리뷰 잘 읽었습니다.
허허.. 내용이 쉽지 않네요. 결국 Voting이란 것을 통해 3D Convolution에 필요한 PCD를 샘플링하는 과정인거죠? Super-Point라는 것은 그럼 중간의 InfoNCE Loss형태가 나오는걸 보이는데, 그 샘플링에 Positive와 Negative가 존재하는건가요?
TR3D라는 논문을 작년부터 들은거 같은데, AAAI2024에서 따로 리포팅안한 이유가 있을까 싶긴 하네요. 음, 그럼 이건 꽤나 크리티컬한 이슈로 보여지는데, 저자의 깃에 따로 물어볼 가치는 있ㄱ겠네요
++) 제 2주 전 질문에 답글 부탁드립니다!
안녕하세요 ! 리뷰 읽어주셔서감사합니다.
InfoNCE Loss는 아니고 일단 super point 샘플링에서는 이후에 proposal까지 형성한 이후에 positive와 negative로 나누어질 포인트들이 존재합니다. TR3D에 대해서는 .. 저도 궁금하긴 하네요
안녕하세요. 좋은 리뷰 감사합니다.
식 10에서 나오는 SPFFN 구조가 무엇인가요 ? ? 그냥 sparse conv layer, 정규화 layer, activation layer로 구성된 네트워크인건가요 ? ? ? ? 이 부분은 fig2의 프레임워크 그림에서는 어느 부분에 해당하는지 궁금합니다.
감사합니다.
안녕하세요 ! 리뷰 읽어주셔서 감사합니다.
SPFFN 구조에 대해서는 말씀하신 것처럼 네트워크 안에 어떤 layer로 구성되어있는지만 서술되어 있습니다. Fig2에서는 우하단의 Superpoint-Voxel Fusion에서 SparseConv 부분에 해당합니다.
안녕하세요. 리뷰를 읽다 질문이 생겨서 몇가지 남깁니다.
제가 3D detection쪽을 잘 몰라서 그러는데, superpoint라는 것이 어떠한 과정을 의미하나요? 제가 아는 superpoint는 17년도에 나왔던 딥러닝 기반 keypoint/descriptor 방법론으로 밖에 몰라서요. 3D 쪽에서 언급되는 superpoint는 제가 알던 개념이랑 다른 것 같아서 질문 드립니다.
그리고 작성해주신 리뷰 내용 중에 voting이라는 과정을 거치게 되면 물체 중심에 포인트들이 형성되어서 낮은 proposal을 필터링하게 어렵다고 말씀해주셨습니다. 근데 voting으로 나온 point들이 물체 중심에 집중적으로 분포된다면 더 이상 필터링을 할 필요가 없는 것 아닌가요? 물체 중심에 voting point들이 나오도록 하려는 것이 voting의 목적이라고 이해했는데, 왜 여기서 또 필터링을 하려고 하는지 궁금하네요.
그리고 저자들이 제안하는 geometry aware voting이라는 방식에 대해서도 어떻게 동작하는지 궁금합니다. 단순히 superpoint를 그룹화 한 것(그림3의 b와 f)에서 수식1을 통해 offset을 학습 및 적용시켰다면 (그림3의 c와 g) 그 다음에 수식2를 통해서 저자들의 의도에 맞게 어떠한 작업을 수행했다는 것으로 보이는데 수식2가 정확히 무슨 연산을 한다는 것인지 잘 모르겠어서요. geometry aware voting이라는 방법이 어떻게 동작하는지 조금 더 구체적인 설명해주시면 좋겠습니다.
좋은 리뷰 감사합니다.
{f_i}^{2M}_i=1은 seed 복셀과 offset 복셀을 합하여 2M이 된 것으로 이해하였는 데 맞나요? 그렇다면 혹시 seed 복셀과 offset 복셀을 나누어 각각의 superpoint를 구한 뒤 합치지 않고 복셀을 합쳐서 superpoint를 구하는 것이 어떠한 장점이 있는 지 별도의 실험이 있었는 지 궁금합니다.
또한 Figure 4를 통해 하이퍼파라미터 변화에도 성능 변화가 크지 않음을 보였다고 하셨는데, 기존 다를 방법론들은 하이퍼파라미터가 큰 영향을 주는 문제가 있었던 것인 지 궁금합니다.
감사합니다.