[NeurIPS 2022] CAGroup3D: Class-Aware Grouping for 3D Object Detection on Point Clouds

본 논문에서는 two-stage의 fully sparse convolutional 3D object detection framework인 CAGroup3D를 제안한다. CAGroup3D에서는 class-aware local group 방식을 통해 object surface voxel에 대해 3d proposals를 생성하고, fully sparse convolutional RoI pooling module을 통해 생성된 proposals에서 중요한 spatial정보를 aggregate하여 refinement를 수행했다. 해당 방식은 메모리 측면에서 효율적이며 3d proposals의 기하학적 features들을 더 효과적으로 encode할 수 있다고 한다. indoor dataset인 Scannet과 sun rgb-d에서 sota를 달성했다. 이번 논문은 전체적인 작동 과정을 이해하기가 특히 더 어려웠던 것 같다.

Introduction

3d point cloud는 unordered하고 sparse, irregular한 특성을 가지기 때문에 기존에 발전해온 2d detection 기법들을 3d detection으로 확장시키는데 어려움이 존재한다. 자율주행 시나리오 환경에서 하늘에서 새가 바라보는 view 형태인 bird’s eye view(BEV)형태로 변환하여 처리하는 3d object detection방법과는 다르게 대부분의 존재하는 3d indoor object detection방법론은, input point cloud로 부터 point-wise features를 추출하고 grouping을 통해 proposals를 생성한다. 하지만 기존 grouping 알고리즘은 class-agnostic 방법으로 같은 group 내 class에 대한 semantic consistency를 고려하지 않고 서로 다른 categories간 존재하는 다양한 locality를 고려하지 않는다고 한다. 예를 들어 votenet의 경우 point-wise center offset을 학습하고 비슷한 local region에 대한 points들을 aggregation한다. 아래 Figure 1을 보면, (a)의 경우 서로 다른 class의 object들이 가깝게 존재하는 cluttered indoor scene에서 좋지 않은 결과를 보인다. 

또한 (b)의 경우를  보면 서로 다른 categories에 속하는 object들이 다양한 size를 가지기 때문에 class-agnostic한 local grouping방식을 통해서는 large object인 sofa에 대해 일부분의 points만 cover하고 small object인 chair에 대해 noise outlier가 포함되는 것을 확인할 수 있다. 

따라서 본 논문에서는 two-stage의 fully convolutional 3D object detection framework인 CAGroup3D를 제안한다. 해당 방법론은 2가지 새로운 component로 구성되는데 하나는 class-aware 3D proposal generation module로 기존 class-agnostic방식이 아니라 같은 semantic prediction을 가지는 object surface의 voxels에 대해 class-specific local grouping을 적용하여 좀 더 reliable한 proposals를 생성하는 것을 목표로 한다. 다른 하나는 fully sparse convolutional RoI pooling module을 통해 object surface에서 missed voxel에 대한 features를 recovering하여 predict한 box의 quality를 높이고자 하였다.

좀 더 자세히 보자면, 3D sparse convolution으로 구성된 backbone network가 raw point cloud로부터 voxel-wise features를 추출하며 class-aware local grouping module을 통해 object surface voxel을 해당되는 instance centroids로 모으게된다. 이때 semantic consistency를 고려하기 위해 같은 instance의 voxel을 해당 instance의 centroid로 shift해주고 voxel마다 semantic scores를 예측하게 된다. 예측한 semantic score를 가진 voxels들이 주어졌을 때 예측된 semantic categories와 vote coordinates에 따라 다시 voxelize해주어 서로 다른 categories에 대해 class-specific 3D voxels를 생성하게 된다. 그리고 grouping을 할 때 sparse convolution을 적용하여 같은 semantic space에 존재하는 인접 voxels에 대한 features를 aggregation하게 된다.

grouping을 통한 proposal candidates가 주어졌을 때 3D proposals 내의 features들은 box refinement를 위해 pooling 과정을 거쳐야 한다. 하지만 기존에 존재하는 pointnet의 set abstraction과 같은 pooling방식은 hand-crafted방식으로 메모리 측면에서 비효율적이다. 또한 적용된 max-pooling을 사용하는 경우 points들의 geometric한 분포를 해칠 수 있다고 한다. 따라서 본 논문에서는 RoI-Conv pooling module을 새롭게 제안하여 well-optimized된 3D sparse convolutions를 통해 voxel features를 aggregate하게된다. 제안하는 방식이 proposal refinement를 할 때 메모리 효율적으로 geometric representation을 encoding할 수 있다고 주장한다.

본 논문에서 말하는 contribution은 아래와 같다.

1. 새로운 class-aware 3D proposal generation 방법 제안

2. 3d proposals를 refinement하기 위한 RoI-Conv pooling module 제안

3. indoor dataset인 ScanNetV2, SUN RGB-D에서 sota 달성

Related Work

3D object detection on point clouds

계속 반복적으로 말하는 것처럼 3d point cloud는 입력될 때 unordered하고 sparse한 point를 가지며 2d image처럼 regular하지 않은 특성을 가지기 때문에 challenging한 요소들이 많이 존재한다. 따라서 크게 voxel-based와 point-based로 나누어 처리하는 방법이 있었는데 voxel-based는 일정한 영역을 voxel로 나누어 처리하는 것이고 point-based는 raw point cloud를 sampling과 grouping을 통해 처리하는 방식이다. 이때 hand-crafted기반의 point sampling방법이 많은 연산량을 요구하며 large-scale의 point cloud로 확장시키는데 어려움이 존재한다고 한다. 따라서 본 논문에서는 효율적인 fully convolutional framework를 통해 3d point cloud로부터 3d box를 검출하고자 한다.

feature grouping

feature grouping은 high-quality의 3d bounding box를 생성하기 위해 중요한 과정이다. 많은 voting-based방법론들에 적용이 되었는데 같은 local region에 points들에 voting을 하여 grouping을 하는 것이다. 하지만 해당 방식은 semantic consistency를 고려하지 않은 방법으로 위의 그림에서 볼 수 있는 것처럼 서로 다른 class의 objects들이 가까이 분포해있는 clutter indoor scene에서 좋지 않은 결과를 보일 수 있다. 또한 large objects나 small objects에 대해 class를 고려하지 않아 부정확한 grouping결과를 보일 수 있다. 본 논문에서는 class-aware local grouping을 통해 class-specific한 영역에서 같은 category에 대한 points들을 aggregate하게된다.

two-stage 3d object detection

기존에는 첫 번째 stage에서 생성한 3d proposals를 두 번째 stage에서 refine하여 feature를 aggregate하였다. 이때 pooling 알고리즘은 pointnet의 set abstraction과 같은 방식을 적용했는데 주변 일정 반지름 구 범위 내 포함되는 point들을 합치는 것과 같은 방식의 hand-crafted방식이기 때문에 많은 연산량을 필요로 한다고 한다. 또한 maxpooling연산이 point의 spatial distrubution 정보를 해칠 수 있다고 한다. 따라서 본 논문에서는 RoI-Conv pooling을 제안하여 연산량측면에서 효율적인 방법을 제안하여 proposal refinement를 수행한다.

Methodology

본 논문에서 제안하는 CAGroup3D는 two stage fully convolutional 3D object detection framework로 poitn cloud로 부터 3d bounding box를 예측하게된다. 전반적인 모델의 architecture는 아래 Figure 2와 같으며 크게 3개의 major components로 구성된다. 1) point cloud feature learning을 위한 backbone network, 2) high-quality의 3D proposals를 예측하기 위한 class-aware 3D proposal generation module, 3) 3d proposals를 refine하기 위한 RoI-Conv pooling module 이렇게 3가지로 구성된다. 

3D Voxel CNN for Point Cloud Feature Learning

정확한 3D proposals를 생성하기 위해 먼저 input point cloud의 geometric representation을 학습해야한다. 3D sparse convolution을 포함하는 Voxel CNN(VoxelNet)은 point cloud를 voxel화하는데 backbone으로 널리 사용되고 있다. 본 논문에서도 sparse convolution기반의 bakbone을 통해 feature encoding과 3d proposal을 수행한다. 이때 voxel size는 0.02m로 한다고 한다.

정확한 3D bounding box 예측과 voxel-wise semantic segmentation을 하기 위해서 3D backbone은 high-resolution feature map과 large receptive field를 가지는 것이 중요하다고 한다. 이러한 두 가지 특징을 만족시키기 위해 ResNet기반의 dual resolution을 가지는 3D boxel bilateral network를 적용하였고 간단하게 BiResNet으로 칭하였다. 위의 Figure 2를 보면 backbone network가 크게 두 가지 branch로 나뉘는데, 하나는 모든 2d convolutions를 3d sparse convolution으로 변경한 ResNet18이다. 여기서 downsampling module을 통해 multi-scale의 contextual information을 추출할 수 있다. 다른 하나는 auxiliary branch로 high-resolution feature map을 유지하는데 이때 resolution은 input 3d voxel의 절반이다. 그리고 bilateral feature fusion을 중간 feature에서 수행한다. 최종적으로 풍부한 contexture information을 가지는 fine-grained voxel-wise geometric feature를 생성하게 된다.

Class-Aware 3D Proposal Generation

backbone network로부터 voxel-wise geometric features가 생성되었고 이제 object surface voxels들을 grouping하게 된다. 본 논문에서는 class-aware 3D proposal generation module을 제안하여 먼저 voxel-wise prediction을 통해 voxel을 shift하고 이후 class-specific local group으로 같은 semantic prediction에 대해 object surface의 voxels을 clustering한다. 

Voxel-wise Semantic and Vote Prediction

backbone network로부터 voxel features를 얻은 후 voting branch와 semantic branch, 이렇게 두 branch로 구성되는데 각각 center offset vectors와 voxel-wise semantic scores를 output으로 한다. 좀 더 자세히 보자면 backbone network는 N개의 non-empty voxels {oi}i=1N, oi = [xi ; fi]를 생성한다. voxel마다 xi는 spatial center 좌표이며 fi는 feature를 의미한다.

먼저 voting branch는 spatial center offset ∆xi ∈ R3과 feature offset ∆fi ∈ RC를 학습하기 위해 voxel feature fi를 encoding한다. C는 backbone network를 통과한 voxel-wise latent feature의 차원으로 64이다. 이렇게 학습된 spatial, feature offset을 기반으로하여 voxel oi를 각 instance의 center로 shift하여 아래와 같이 vote point pi를 생성한다.

예측한 offset ∆xi의 경우 seed voxel xi의 coordinate와 상응하는 bounding box center와의 차이를 smooth-l1 loss로 추가해준다.

voting branch와 함께 semantic branch의 경우, Nclass의 classes를 포함하는 모든 voxels에 대해 semantic scores

S = {si}i=1N를 아래 수식(2)와 같이 계산하게 된다. 

MLPsem(·)은 layer 하나짜리 MLP network를 의미하고 si는 각 voxel oi마다 모든 classes에 대한 semantic probability를 나타낸다. focal loss를 통해 voxel segmentation loss를 추가하여 class imbalance issue를 다루고자 하였다. 그리고 특정 voxel이 multiple gt bounding box에 포함되는 모호한 case에 대해서는 가장 작은 volume을 가지는 box에 해당 voxel을 할당했다. 이 부분에 대해 왜 그런지 이해가 잘 되지 않는데 개인적인 생각으로는 큰 bounding box를 가지는 object는 주변에 다른 voxel들이 많이 할당될 수 있기 때문에 locality를 고려하여 가장 작은 volume을 가지는 bounding box를 gt로 할당하지 않았나 하는 생각으로 넘어갔다. 

Class-Aware Local Grouping

해당 과정은 위에서 구한 voxel-wise semantic scores {si}i=1N와 vote prediction {pi}i=1N를 기반으로 reliable한 3D proposals를 생성하기 위한 과정이다. 우선 semantic prediction을 통한 grouping을 하기 위해 모든 categories에 대한 score threshold τ를 정의하여 어떤 voxel이 각 category에 해당하는지 정한다. 이때 threshold score는 초기값 0.15로 epoch마다 줄여나가도록 정의했다. 그리고 주어진 semantic scores S = {si}i=1N를 통해, 모든 class에 대해 반복해서 모든 voxel에 대해 각 class마다 threshold보다 높은 score를 가지는 vote set을 찾아 class-dependent vote set {cj}j=1Nclass를 아래 수식(3)과 같이 구한다. 아마 수식을 보면 이해가 더 쉽게 이해할 수 있을 것으로 생각된다.

위의 과정을 통해 얻은 vote points들은 irregular하게 분포되어있을 것이기 때문에, voxel feature encoding(VFE) layer를 적용하여 각 class마다 해당 semantic subset을 다시 voxelize 하여 {Vj}j=1Nclass를 얻는다. re-voxelize를 할 때 class average spatial dimension에 비례하도록 하는 class-specific 3D voxel size를 사용하며 아래에 조금 더 추가설명을 하겠다. 

cj는 j번째 class의 class-dependent vote set을 의미하고| Vj |는 class individual re-voxelization을 하고 난 후 non-empty voxel의 수를 의미한다. α · dj 는 class-specific voxel size를 의미하며 α는 사전에 정의한 scale factor(=0.15)이고 dj = (wj , hj , lj )는 category average spatial dimension을 나타낸다. VFE( · , α · dj , Avg)는 정리하자면  α · dj의 voxel size를 가지는 j번째 class subset의 vote features를 voxelize하기 위해 average pooling을 한다는 것을 의미한다. 여기서 voxel size를 categories마다 다르게 적응적으로 사용하기 때문에 널리 사용되는 FPN기반의 prediction 구조보다 더 다양한 size의 categories를 prediction할 수 있을 것으로 생각된다. 

j번째 class에 대해 예측된 vote voxels {vi}i=1|Vj |가 주어졌을 때, 사전에 정의된 kernel size k(a)(=9)를 가지는 sparse convolutions를 적용하여 automatically하게 local context를 합쳐 class-specific geometric features A(j)를 아래 수식(5)와 같이 생성하게 된다.

SparseConv(j)(· center, · support voxels, · kernel size)는 standard sparse 3d convolution으로 각 class마다 specific하게 적용된다. 그리고 aggregated features에 shared anchor-free head가 추가되어 classification probabilities, bounding box regression parameters, confidence scores를 예측하게 된다. 

RoI-Conv point cloud feature pooling for 3D Proposal Refinement

첫 번째 stage에서의 voxel-wise semantic segmentation error로 인해 class-aware local grouping module이 object surface voxels에 대해 잘못 grouping을 하는 경우가 발생할 수 있다. 따라서 missed voxel feature를 recover하고 fine-grained features를 aggregate하는 것과 같은 proposal refinement과정을 위한 효과적인 pooling module이 필요하다. 보통 기존에 pointnet에 적용된 set abstraction을 통해 pooling을 진행하였다. 하지만 해당 방식은 주변 일정 반지름 내 영역을 설정하거나 주변 points 수를 사전에 정의하는 hand-crafted 방식을 통해 pooling을 하여 많은 연산량을 필요로 하고, maxpooling을 적용한 경우 spatial한 분포 정보를 해칠 수 있다고 주장한다. 따라서 여기서는 3d sparse convolutions로 구성되어 hierarchical하게 grouping하는 module인 RoI-Conv pooling을 제안하여 proposal refinement를 수행한다. 본 논문에서 제안하는 hierarchical structure는 sparse abstraction block들로 구성되며 두 가지 key components를 가진다. 하나는 RoI-guidence sampling으로 3d proposal 내 subset input voxel을 선택하는 과정이고, 다른 하나는 local patterns를 feature vectors로 encoding하기 위한 shared sparse convolution layer이다.

Sparse Abstraction

위의 Figure 2에서 보이는 것처럼, sparse abstraction block으로 들어오는 input은 I개의 input voxels I = {ln}n=1I와 M개의 proposals M = {ρm}m=1M이다. ρm은 point sampling을 guide하기 위한 proposal parameters를 의미한다. 그리고 결과적으로 output은 | Q |개의 pooling을 거친 RoI-specific voxels Q = {qk}k=1|Q|이다.

좀 더 구체적으로 살펴보면, input voxels와 proposals가 주어졌을 때 RoI-guidence sampling을 통해 voxel space의 각 3d proposal 내부에서 Gx × Gy × Gz grid points를 uniform하게 sample하며 수식으로는 G = {gk ∈ Z3}Gx×Gy×Gz×M로 나타낼 수 있다. Gx × Gy × Gz는 proposal sampling resolution으로 proposal size마다 독립적인 hyper-parameter이다. 서로 다른 proposal과 overlab되는 경우 repeated grid points를 하나로 합쳐 unique poitn set G^~ = {gk}k=1|G^~|를 생성한다. |G^~|는 unique grid points의 수를 의미하며 위의 그림을 보면 voxel 내 작은 point sets들이 여러 개 생성된 것을 통해 이해할 수 있을 것이다. 이렇게 구한 RoI-specific points set G^~를 통해 주변 input voxels를 cover하기위해 각 sampled point를 중심으로 sparse convolution을 적용한다. unique point set의 주변 neighboring voxels를 Nk = {l1 , l2 , …, lkLk }, kernel size는 k(p)로 나타낸다. 

Lk는 k번째 RoI-specific point 주변 neighboring voxels의 수를 의미하며 kernel size k(p)는 5로 설정했다. SparseConv3D(· center, · support voxels, · kernel size)는 모든 proposals에 대해 shared sparse 3d convolution을 의미하며 수식에서 알 수 있는 것처럼 neighboring voxel sets이 non-empty인 경우에만 적용한다. empty voxel인 경우는 무시하여 computation cost를 줄이고 RoI-specific voxels set인 Q를 output으로 한다.

RoI-Conv Pooling Module

pooling network는 2개의 layers를 가지는 sparse abstraction block으로 구성되며 각 3d proposal 내 voxel features를 점진적으로 abstract한다. 

SparseAbs(· input voxels, · proposals, ·sampling resolution, · kernel size)는 sparse abstraction block을 의미하며 첫 번째 수식은 위에서 설명한 sparse abstraction을 나타내며 아래 수식을 통해 얻은 각 proposal마다 RoI feature F ∈ RC를 통해 refinement network가 Stage-1에서의 proposal과의 잔차(residuals)를 비교하여 object의 size, location 등을 예측하게 된다. 

Learning Objective

loss는 Stage-1에서는 semantic loss(Lsem), voting loss(Lvote), centerness loss(Lcntr), bounding box estimation loss(Lbox), classification loss(Lcls)가 사용되고 stage-2에서는 bbox refinement loss(Lrebox)가 사용되며 아래 수식(8)과 같이 구성된다. 

Lsem은 voxel-wise semantic segmentation에 대한 loss를 의미하며 Lvote는 각 voxel에서 center offset을 예측하기 위한 smooth-l1 loss이다. stage-2에서 사용된 Lrebox의 경우 3d box proposal refinement를 위한 smooth-li box regression loss로 size, box center, angle refinement loss를 포함한다고 한다. 추가로 Liou를 추가하여 stage-1에서 proposal과의 residual을 통한 box refinement loss를 아래와 같이 구성한다. 

∆r은 예측된 잔차(residual)을 의미하고 ∆r*는 상응하는 gt bounding box를 나타낸다.

Experiments

CAGroup3D는 두 가지 indoor dtaaset인 ScanNetv2와 SUN RGB-D에서 평가를 진행했다. 

network architecture에 대한 설명을 조금 추가하자면 dataset에 대해 voxel size는 0.02m로 설정했다. class-aware 3D proposal generation module에서 re-voxelization을 위한 scale factor α는 0.15로 했고 semantic threshold τ는 처음에 0.15로 시작해서 SUN RGBD의 경우 0.05가 될 때까지 4 epoch마다 0.02씩 줄여나갔다. 수식(5)의 convolution-based grouping module에서 kernel size k(a)는 9로 설정했고 뒤에 수식(7)에서 각 sparse abstraction blockㅔ서 kernel size k(p)는 5와 7로 설정했다.

아래 Table 1에서는 ScanNet V2와 SUN RGB-D에서의 평가 성능을 나타내고 있다. 최근 indoor 3d object detection 논문에서 성능 reporting 경향을 보면 5번 train을 반복하고 각 train마다 5번씩 evaluation을 통해 총 25번 평가한 결과에 대한 최고 성능을 표시하고 옆에 평균값을 ()안에 표시하고있다. 모델의 랜덤성을 잡으려고 하고 있는데 어느 부분에서 잡을 수 없는 부분이 존재하는지 찾고 있는데 아직 잡지 못했다. 이러한 경향으로 reporting하는 이유에 대해  더 알아보아야 할 것 같다. 성능을 확인해보면 우선 ScanNet V2의 경우 기존 sota모델인 FCAF3D모델에 비해 최대 4% 향상된 정확도를 보이고 SUN RGB-D의 경우 최대 2.6%의 정확도 향상을 보인다. 추가로 가로선 위의 *가 붙은 모델들은 다른 Modality(rgb input)를 추가적으로 사용하는 multi-sensor fusion 모델들인데 본 논문에서 제안하는 point cloud 단일 modality기반의 CAGroup3D가 특히나 더 sparse한 poor point cloud인 SUN RGB-D에서 좋은 성능을 보이고 있다.

아래는 ablation study이다. 먼저 class-aware local grouping module의 효율성에 대해 확인해보자. Table 2에서 첫 번째 행인 base 성능은 fully sparse convolution을 사용한 VoteNet의 성능이다. 이후에 각 voxel마다 semantic prediction을 했을 때 성능이 소폭 상승했고,  2번째 행에서 3번째 행으로 넘어가는 부분인 semantic prediction과 class-specific local grouping을 함께 사용했을 때 가장 큰 폭의 성능 향상(68.22 -> 72.10)을 보였다. grouping을 할 때 논문 처음에 저자가 문제점으로 지적했던 부분에 대해 같은 group 내 semantic consistency를 가지는 것과 서로 다른 category가 가지는 diverse locality를 고려하는 것이 좋은 효과를 보이는 것 같다. fpn 기반 backbone을 BiResNet으로 대체하고 RoI-Conv구조를 추가했을 때 가장 좋은 성능을 보이는 것일 확인할 수 있다. 4번째 행과 5번째 행의 성능 차이를 통해 본 논문에서 two-stage구조로 box refinement를 하는 과정이 효과가 있음을 확인할 수도 있다.

아래 Table 3에서는 hyperparameter에 대한 실험인데 본 논문에서 제안하는 class-aware local group module이 scale factor α에 따른 성능 영향에 대해 알 수 있다. 처음에 scale factor를 점진적으로 줄여나갈수록 output voxel은 더 fine-grained되어 정확한 bounding box 예측이 가능하고 small object에 대해 좋은 예측이 가능하다. 하지만 너무 작은 scale factor는 오히려 성능 하락을 야기한다. kernel size k(a)가 고정된 상태에서 scale factor를 줄이게 되면서 small local region을 보게 되는데 이때 object boundary points에 대해 잘못 grouping을 하는 경우가 생길 가능성이 높아져 성능 하락의 원인이 될 수 있다고 저자는 이야기한다. 

아래 Table 4의 경우 semantic threshold τ에 따른 성능을 보인다. 큰 차이는 보이지 않지만 threshold가 0.06일 때 가장 좋은 성능을 보인다. threshold가 너무 낮게되면 아무래도 semantic consistency를 거의 고려하지 않는 형태가 되기 때문이다. 

Table 6에서는 RoI-Conv pooling에서 서로 다른 수의 sparse abstraction block을 사용했을 때 성능 차이를 보이고 있다. block수를 늘렸을 때 추가적인 성능 향상이 없어 두 개의 sparse abstraction block만 사용했다고 한다. {}안 숫자는 sampling하는 resolution을 의미한다. 

Conclusion

본 논문에서는 tow-stage fully convolutional 3D object detector인 CAGroup3D을 제안한다. 우선 같은 semantic prediction을 가지는 object voxel에 class-aware local grouping module을 활용하여 3d proposal을 생성하고, incorrect한 semantic prediction으로 인한 missed voxel에 대한 features를 recover하기 위해 fully sparse convolutional RoI pooling module을 통해 연산량을 줄이고 기존 maxpooling보다 효과적인 pooling을 적용하였다. 결과적으로 scannet과 sun rgbd에서 sota를 달성할 수 있었다. 마지막에 한계점으로 CAGroup3D에서 inter-category locality에 초점을 맞춰 다양한 서로 다른 class의 locality에 집중했지만, point cloud가 incomplete하고 class 내에서도 여러 spatial dimension을 가지기 때문에 다양한 intra-category locality를 가질 수 있는데, 이것에 대해 충분히 고려하지 못했다는 아쉬움을 보인다. 추후 intra-category locality에 대해서도 고려하는 방법에 대해 고려할 것이라고 한다. 논문을 생각해보니 indoor 3d object detection의 경우, 다른 task도 마찬가지이지만 data를 sampling하는 과정에서 여러 hyperparameter가 적용되다보니 좀 더 data-driven하게 성능이 영향을 받는 것 같다. 각 dataset의 특성에 따라 설정해줘야하는 파라미터나 해결 방식을 다르게 가져가다보니 좀 더 general한 성능을 보이기가 다른 task에 비해 까다롭고 데이터셋의 특성을 잘 파악해야겠다는 생각이 들었다.

Author: 도경 김

8 thoughts on “[NeurIPS 2022] CAGroup3D: Class-Aware Grouping for 3D Object Detection on Point Clouds

  1. 안녕하세요. 좋은 리뷰 감사합니다. related work 부분에서 maspooling 연산이 point의 spatial distribution 정보를 해칠 수 있다고 하셨는데, 이 부분이 잘 이해가 가지 않네요. 단순히 maxpolling을 취해서 정보를 압축하기 때문에 이렇게 표현하신 걸까요:? 아님 다른 이유가 있을까요?

    1. 댓글 감사합니다.
      pointnet++에서도 지적한 문제인데요, 기존 pointnet에서 1024차원의 point feature를 maxpooling을 통해 급격하게 하나의 차원의 vector로 줄이게 되는데 이때 급격한 변화가 큰 정보 손실을 가져올 수 있다고 합니다.

  2. 안녕하세요 김도경 연구원님
    오우 3d detection 연구는 정말 익숙하지 않아서 어려울 것 같았는데, 친절히 설명해주셨네요.
    그런데 semantic consistency라는 단어가 종종 등장하는데, 정확히 어떤 의미로 사용되는 뜻일까요?
    두번째로 실험테이블 1 에서 가로줄로 방법론들을 나눴는데, 어떤기준으로 두 개로 분류된건지 알수 있을까요?

    1. 댓글 감사합니다.
      semantic consistency는, 우선 본 논문에서 처음에 object surface의 존재하는 points들을 voxelization하게 됩니다. 그리고 이 각각의 voxel에 대해 score를 통해 같은 object인지 판단하게 되는데 이렇게 같은 class의 voxel에 대해 고려한다는 것을 의미하는 것 같습니다.
      두번째로 Table 1에서 가로줄은, 가로줄 위의 모델들은 모델명 옆에 *가 붙은 것을 알 수 있습니다. 가로줄 위의 모델들은 2d image와 3d point cloud를 함께 사용한 fusion based model이고 가로줄 아래 모델들은 3d point cloud 단일 모달리티 기반 모델들입니다.

  3. 좋은 리뷰 감사합니다.
    논문이 굉장히 어려운 것 같습니다.

    우선 해당 논문에서 이야기한 문제점(그림1과 관련된)은 단순히 point만을 이용하여 grouping을 할 경우 유의미한 point를 구하기 어렵다는 것으로 이해하였습니다.

    Class-Aware 3D proposal generation에서 voxel-wise prediction을 통해 voxel을 shift한다고 하셨는데,
    이 과정이 center offset vector를 구하는 과정이 맞나요??

    또한 전체 학습에 사용되는 loss식이 굉장히 다양한데, stage-1과 stage-2는 함께 학습이 되는 것인지 궁금합니다. 만일 함께 학습이 된다면, 따로 학습하는 방식에 대한 고려는 없었는지 궁금합니다.

    1. 댓글 감사합니다.
      맞습니다. 그림 1의 class-aware 3d proposal generation에서 voxel-wise prediction을 통해 score를 구하여 center를 구하는 과정이 shift하는 과정입니다.
      각 stage별로 loss를 구해 합하여 total loss를 구하는 것을 보아 함께 학습을 진행하는 것 같습니다. 따로 학습하는 방법에 대한 분석이나 내용은 없었습니다.

  4. 좋은 논문 리뷰 감사합니다.

    해당 기법의 연산량이랑 인퍼런스 속도가 얼마나 나올지 궁금하네요.
    클래스 별로 모델을 다시 두고, 수많은 후보군들을 기준으로 재정리하는 방법은 예전이라…
    실시간성을 따지기에는 어려워 보이네요.

    1. 댓글 감사합니다.
      appendix에 첨부된 결과를 보았을 때, 본 논문에서 제안하는 방법론의 경우 FPS가 5.58이고 one stage의 경우 8 ~ 10정도의 FPS를 보였습니다. 말씀하신 것처럼 실시간성을 따지기는 어려워보입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다