Paper Overview
CVPR'20
https://arxiv.org/abs/2004.01658
PointGroup: Dual-Set Point Grouping for 3D Instance Segmentation
Instance segmentation is an important task for scene understanding. Compared to the fully-developed 2D, 3D instance segmentation for point clouds have much room to improve. In this paper, we present PointGroup, a new end-to-end bottom-up architecture, spec
arxiv.org
Abstract
본 논문은 새로운 end-to-end bottom-up 구조인 PointGroup을 제안한다.
이 모델은 특히 objet간의 void space를 탐색함으로써, 더 나은 grouping 능력에 집중한다.
이를 위해 저자들은 two-branch network를 설계하여 point features를 추출하고 semantic labels와 offsets를 예측한다.
이때 offsets은 각 point를 해당하는 object의 중심으로 shift하도록 하는 값이다.
clustering componet는 original과 offset-shifted point 좌표 둘 다 적용하여 상호 보완적인 능력을 챙긴다.
나아가 저자들은 후보 instances를 평가하기 위해 ScoreNet을 만든 후 다음 중복을 제거하기 위해 Non-Maximum Suppression을 적용한다.
Keywords
Point Cloud Instance Segmenation
Proposed Method
1. Architecture Overview
3D instance-segmentation을 수행하기 위해서 저자들은 2가지 문제를 고려한다.
먼저 3D 공간에서 독립적인 object를 분리하는 것이고, 두번째로 각 object에 semantic label을 결정하는 것이다.
2D와 달리 3D는 이미 void space(공백공간)으로 object들이 겹치지 않고 분산되어 있다.
이 특성을 이용하여 저자들은 semantic 정보에 따라 3D content를 object instance로 group하는 방법을 제안한다.
본 논문의 구조는 다음과 같다.
backbone network의 입력은 $N$ points로 구성된 point set $\mathbb{P}$이다.
각 point는 color와 3D 좌표를 가진다.
각 point에 대해 backbone은 feature $F_{i}$를 추출하고 $\mathbf{F} = \left\{ F_{i}\right\} \in \mathbb{R}^{N \times K}$와 같이 나타낸다.
그다음 $\mathbf{F}$는 semantic segmentation, pre-point offset vector branch로 들어간다.
이때 offset은 각 point에서 object 중심을 향한 벡터를 의미한다. $o_{i} = (\Delta x_{i}, \Delta y_{i}, \Delta z_{i})$
semantic label을 구한 다음 void space를 기준으로 objects 사이에서 clustering을 진행한다.
이때 points 좌표를 그대로 사용할 경우 clustering이 실패할 수 있으므로, point 좌표에 offset을 더한 좌표또한 사용하여 clustering을 진행한다.
마지막으로, ScoreNet을 구성하여 위의 두 clustering의 결과를 처리하고 cluster당 point를 할당한다.
이제 NMS를 적용하여 최종 instance 예측을 결정한다.
2. Backbone Network
저자들은 backbone으로 3D spase U-Net을 사용한다.
따라서 point를 voxel로 만들고 feature를 추출한뒤 다시 point로 복구하는 단계가 있다.
따라서 feature는 point단위 feature다.
Semantic Segmentation Branch
저자들은 MLP를 사용하여 semantic score $\mathbf{SC} = \left\{sc_{1}, ..., sc_{N}\right\} \in \mathbb{R}^{N \times N_{class}}$를 얻고, cross entropy loss $L_{sem}$로 학습한다.
label은 argmax 값을 이용한다.
Offset Prediction Branch
offset vector는 $o_{i} = (\Delta x_{i}, \Delta y_{i}, \Delta z_{i})$와 같으므로 다음과 같은 loss를 사용하여 학습한다.
$m$은 binary mask로 points 중에서 instance에 해당하는 것만 남기기 위한 것이다.
center 좌표인 $\hat{c}$는 다음과 같이 구한다.
$g(i)$는 ground-truth instance를 의미한다.
재밌는건, 실험 결과 points와 center간의 거리는 대부분 1m 이내 였다고 한다.
하지만 large size의 instance는 offset을 구하기 어려운 문제가 있다.
따라서 다음과 같은 cosine distance loss를 추가로 사용하였다.
3. Clustering Algorithm
clustering 알고리즘은 다음과 같다.
위 알고리즘에서 먼저 $v$는 방문했던(확인했던) point을 알리기 위한 index라고 생각하면 된다.
먼저 semantic class가 벽, 바닥, 천장같은 stuff class일 경우 클러스터링을 진행하지 않는다. 따라서 $v = 1$로 한다.
나머지 점들에 대해서 일단 어떤 점을 하나 기준으로 잡은 뒤, 그 점을 $Q$와 $C$에 넣는다.
---반복---
그다음 $Q$에서 점을 하나 꺼내서 dataset내의 모든 point와 거리 계산을 한다.
거리가 $r$보다 작은 point에 대해서 semantic label이 같고, $v$가 0인 point를 다시 $Q$와 $C$에 넣는다.
------------
위 과정을 반복하면 어느 타이밍에 $Q$에 점이 없을 때가 온다.
그때 $C$의 크기가 $N_{\theta}$보다 클 경우 cluster라고 지정한다.
이 과정을 전체적으로 하면 클러스터링이 진행되고, 이것은 original points좌표와 offset으로 shifted points 좌표 각각에 대해 진행하고 두 cluster를 $\mathbf{C}$에 넣는다.
4. ScoreNet
이제 cluster들을 평가하여 qulity 점수를 매긴 뒤, NMS 알고리즘을 적용하여 최종 cluster를 확정한다.
먼저 Cluter에 대응되는 point cloud feature와 point 좌표를 가지고 backbone feature만들 때 처럼 voxel을 만든다.
이때, voxel 하나에 해당하는 point feautre는 AvgPool을 적용한다.
그다음 small U-Net에 입력한뒤 MaxPool을 적용하여 하나의 cluster feature를 얻는다.
마지막으로 MLP와 sigmoid를 사용하여 score $s$를 구한다.
이때 저자들은 다음과 같은 soft label 기법을 사용한다.
$\theta_{l}$과 $\theta_{h}$는 각각 0.25, 0.75다.
이때 $iou$는 다음과 같이 구한다.
그리고 다음과 같은 loss를 사용하여 학습한다.
5. Network Training and Inference
Training
Inference
ScoreNet의 과정을 거쳐 NMS를 수행하여 cluster를 만든다.
마지막으로 cluster간의 IoU를 계산하여 0.3보다 크면 겹치는 cluster를 삭제한다.
Experiments
1. Experimental Setting
Dataset
ScanNet과 S3DIS를 사용한다.
Evaluation Metircs
mAP를 사용한다. (설명)
Implementation Details
2. Evaluation on ScanNet
2.1 Benchmark Results
2.2 Ablation Studies
Clustering based on Different Coordinate Sets
Ablation on the Clustering Radius $r$
Ablation for the ScoreNet
ScoreNet을 사용하지 않고 semantic probability를 평균내어 사용한다면 성능이 다음과 같다.
$AP/AP_{50}/AP_{25}$ = 30.2/51.9/68.9(%)
이때 ScoreNet을 사용하면 다음과 같다.
$AP/AP_{50}/AP_{25}$ = 34.8/56.9/71.3(%)
2.3 Runtime Analysis
3. Evalutation on S3DIS
Conclusion
We have proposed PointGroup for 3D instance segmentation, with a specific focus of better grouping points by exploring the in-between space and point semantic labels among the object instances. Considering the situation that two intra-category objects may be very close to each other, we design a two-branch network to respectively learn a perpoint semantic label and a per-point offset vector for moving each point towards its respective instance centroid. We then cluster points based on both the original point coordinates and the offset-shifted point coordinates. It combines the complementary strength of the two coordinate sets to optimize point grouping precision. Further, we introduced the ScoreNet to learn to evaluate the generated candidate clusters, followed by the NMS to avoid duplicates before we output the final predicted instances. PointGroup accomplished the best ever results.
In our future work, we plan to further introduce a progressive refinement module to relieve the semantic inaccuracy problem that affects the instance grouping and explore the possibility of incorporating weakly- or self-supervision
techniques to further boost the performance.