[ECCV 2022] FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection

안녕하세요. 이번 리뷰는 저희 로보틱스 팀 기초교육의 일환으로 공부 중인 3D detection task 관련 논문입니다. 사실 TR3D 논문을 읽고 그에 대한 코드 원복과 성능 개선을 목표로 한 기초교육이지만 TR3D 논문이 FCAF3D 논문을 기반으로 개선한 연구이기 때문에, FCAF3D 에 대한 이해가 전제가 되어야했습니다. 그래서 FCAF3D를 읽고 리뷰를 하게 되었습니다. 이 다음엔 TR3D 리뷰를 들고와보겠습니다. 리뷰 시작합니다.

1. Introduction

3D object detection 태스크는 input인 3D point cloud set으로부터 3D object에 대한 localization과 recognition을 동시에 추정하고자 하는 태스크입니다. 주로 자율주행, 로보틱스, AR 관점의 3D scene에 대한 representation을 목적으로 연구되고 있습니다.

3D object detection에 대한 비교 태스크 군으로는 역시 2D object detection이 있습니다. 3D detection 태스크를 처음 접하다보니 2D 와 3D object detection 간에는 어떤 차이가 있을까 생각하면서 논문을 읽게 되었는데, 기존의 2D 기반 방법론들은 input인 이미지가 픽셀마다 각각 고유한 값을 가지며 모델의 구조 내에서는 이를 처리하기 위해 dense한 fixed size kernel을 사용했습니다. 하지만 3D의 경우는 input이 point cloud라는 점에서 데이터의 특성 자체가 irregular하고 unstructed한 형태를 띄고 있다는 점에서, 기존 2D 기반 방법론들의 데이터 processing 과정과는 일부 맞지 않는 부분이 생기게 됩니다. 2D->3D input 구조가 다름에서부터 시작된 스노우볼이라고 볼 수 있겠습니다. 2D detection에서 쓰이던 좋은 파이프라인들을 그대로 적용할 수 있었다면 얼마나 좋았을까요. 이런 생각에 이전의 3D 연구들에선 2D의 convolution architecture들을 조금 활용해서 convolutional 3D object detection 방법론을 생각해보게 되었습니다. 하지만 너무 큰 단점이 하나 있었습니다. 바로 scalability 문제가 있다는 점인데요. 이 scalability가 무엇이냐함은, large-scale의 scene data에선 computing cost와 time process가 과도하게 증가한다는 얘기입니다. 3D convolution 자체가 z축의 차원을 하나 더 고려해야하는 만큼 2D convolution 보다는 연산량이 많을 수밖에 없습니다.

여기서 이런 scalability를 조금 해결하기 위해서 제안된 방식으로 voxel data representation 과 이를 활용한 sparse convolution이 있습니다. voxel은 volume과 pixel을 조합한 혼성어로 3차원 공간에서 정규 격자 단위 값을 의미하고, 아래의 그림과 같이 point cloud로부터 표현될 수 있겠습니다.

voxelization

sparse convolution은 아래와 같습니다. 간단하게 표현하면 voxelized된 3D 데이터의 특성상 sparse하게 빈 부분에 대해선 convolution 시 0으로 weight을 줘서 연산을 하겠다는 의미로 볼 수 있겠습니다.

Example of sparse convolution operation. | Download Scientific Diagram

이런 voxelization 및 sparse convolution은, 데이터가 sparse하거나 dense한 정도인 데이터 불균일성에 영향을 덜 받으면서, irregular하고 unstructured한 point cloud의 단점을 해소하는 연산을 진행합니다. 이로 인해 3D 태스크의 scalability 문제가 해소될 수는 있겠지만, 사실 이 방법론은 detection accuracy가 떨어질 수 밖에 없는 방식이라고 합니다. 왜인고 생각해보면,,

sparse convolution은 출력 feature 위치를 제한하여 계산 문제를 피하지만 feature의 필수적인 정보 흐름을 놓칠 수 있습니다. 이러한 제한은 모든 입력 feature를 균일하게 처리하고자하는 기존의 컨볼루션 패턴에서 비롯되죠. 3D sparse 데이터는 공간에서 다양한 희소성과 중요성을 가지고 있다. 균일하지 않은 데이터를 균일하게 처리하는 것은 최적이 아니기 때문에 이런 acc 감소 문제가 생기는 것으로 생각합니다.

이 당시엔 acc와 scalibility를 모두 고려한 3d object detection method가 제안되지 않았으며, 이 두 마리 토끼를 모두 잡기 위한 이상적인 3d object detection method는 임의의 shape과 size를 가지는 object에 대해 추가적인 hand-tuned hyperparameter 없이 다뤄져야한다고 저자들은 말합니다. 그래서 본 논문은 3D bbox의 aspect ratio나 size와 같은 prior assumption 들이 model의 generalization 능력을 제한하고 학습 시 필요한 parameters 수를 늘린다고 주장합니다.

결론적으로 앞서 말한 문제점들은 해결하기 위해 본 논문에서는 위에서 언급한 bbox prior assumptions에 의존하지 않고 anchor-free method를 사용하여 좀 더 순수하게 data-driven한 방식을 취하게 됩니다. 또한 parameters 수를 줄이기 위한 방법으로 뫼비우스의 띠에서 영감을 받은 새로운 oriented bounding box(OBB) parametrization을 도입합니다.

정리하면, 본 논문은 point cloud를 인풋으로 하여 3D object를 detect하는 simple, effective, scalable 한 방법으로 FCAF3D 를 제안합니다. 본 논문의 contribution은 다음의 3가지입니다.

  1. first-in-class fully convolutional anchor-free 3D object detection method(FCAF3D)를 indoor 씬에 대해 제안.
  2. 새로운 OBB parameterization을 제시하고, SUN RGB-D 벤치마크에서 다양한 3D object detection methods들에 대해 accuracy 성능 개선의 효과성을 입증.
  3. 이전 SOTA 방법론들이 large-scale indoor 벤치마크인 ScanNet, SUN RGB-D, S3DIS 에서 가졌던 문제점을 개선하고, 빠른 inference 성능을 보임.

2. Related Work

이전까지의 3D object detection 방법론들은 indoor 씬과 outdoor 씬에 대해 각각 독립적으로 domain-specific한 data processing 절차를 가지며 디자인되고 연구되어 왔습니다. outdoor 씬에서는 주로 3D point를 bird-eye-view 평면에 projection하여 3D 태스크를 2D 관점으로 해결하려고 했습니다. 그래서 자연스럽게 2D object detection의 발전과 발 맞춰 빠르게 적용과 응용, 개선 등이 가능했었습니다. 그래서 fully convolution 방식도 적용해보고, anchor-free 방식의 접근을 한 연구도 가능했죠. 그러나 이런 방식도 2D 와 outdoor 씬에서만 효과가 있고, indoor 씬에 있어서는 그렇게 효과적인 결과를 가져오진 못했습니다. 왜냐면 indoor 씬은 많은 memory cost와 computing cost가 존재하기 때문입니다. 그래서 indoor 씬에서의 성능 개선을 가져오기 위해 크게 3가지 방향의 기존 연구들이 지배적이었습니다. 바로 1. voting-based, 2. transformer-based, 3. 3D convolutional 3D object detection 입니다. 간단하게만 짚고 넘어가도록 하겠습니다.

[Voting-based methods]

먼저 Voting-based 방식으로 가장 대표적인 VoteNet이 있습니다. VoteNet은 3D object detection에 있어서 point voting 방식을 처음으로 제안한 방법론입니다. PointNet을 통해 3D points를 processing하고 포인트 그룹을 그들 중 voting된 center를 따라 선정된 각각의 object 후보에게 할당합니다. 그리곤 각각의 포인트 그룹으로부터 object feature에 대해 연산합니다. 이런 VoteNet 방식을 기반으로 하면서 voting방식, grouping방식 각각에 있어서 추가 개선을 도모하는 방향으로 BRNet, MLCVNet, H3DNet, VENet 등이 후속연구로 제안되어 왔습니다.

하지만 이런 VoteNet 기반 방법론에도 단점이 있었는데요. 바로 여전히 poor scalability한 문제를 띈다는 점과, 과한 customed layer로 디버깅이 어렵거나, 추후 mobile device에 porting 하기 어렵단 문제가 있습니다. poor scalability문제는 특히 Voting 방식이 애초에 많은 양의 input data에 의존하는 방식이다 보니 large scene 환경을 마주했을 땐 computing cost나 memory cost가 발생하고, 더욱 느려질 수 밖에 없다는 단점이 있습니다.

[Transformer-based methods]

자 그럼 이젠 transformer 기반 방법론입니다. 최대 장점으로는 앞선 voting 방식의 단점을 확 개선할 수 있는 end-to-end learning 방식을 가져갈 수 있다는 점이 있겠고, heuristic하고 optimization 방식 대신 inference 시에 forward pass만으로 domain-specific한 기존의 경향을 조금 타파했다는 점이 있겠습니다. 대표적으로 GroupFree 방식과 3DETR 방식이 있습니다. GroupFree 방식은 VoteNet에서의 head를 단지 transformer 모듈로 대체하고, object query location을 반복적으로 updating하고 중간단계의 detection 결과를 앙상블하는 방식을 취합니다. 반면 3DETR은 3D detection을 end-to-end 방식으로 trainable하게 만든 transformer기반 방법론이 되겠습니다.

자 역시 이런 transformer 방법론도 단점이 있었습니다. 앞선 voting 방법론과 마찬가지로 여전히 scalability 문제가 있었습니다.

[3D convolutional methods]

역시 저자들은 3D convolution을 어필하기 위한 초석으로 voting 기반 방법론과 transformer 기반 방법론이 가진 scalability 문제점을 언급했던 것 같습니다. 본인들의 방법론은 fully-convolutional 하기 때문에 빠르고, 적용하기 쉽다고 어필하면서 서두를 던집니다. 일단 3D convolutional network에 3D data를 태우려면 역시 앞선 introduction에서 언급했던 것처럼 voxel representation이 필요합니다. sparse한 3D data를 효과적으로 다룰 수 있게 만드니까요. 그래서 voxel-based 방법론들이 몇 개 있었는데요. 하지만 dense한 volumetric feature는 memory와 computing cost가 expensive하다는 단점이 또 있습니다. large scene에서도 cost가 많이 들기는 마찬가지죠.

이 때 나온 것이 GSDN입니다. GSDN은 sparse한 3D convolution에 대한 성능 이슈를 바로잡고자 했습니다. encoder-decoder 구조를 가지면서 sparse 3D conv block을 적용하는데요. 아래가 바로 GSDN의 전반적인 architecture입니다.

GSDN

앞서 말한 voting, transformer 기반 방법론들과 다르게 fully convolutional architecture를 가진 GSDN은 역시 memory-efficient하고 point density에 대한 희생없이 large scene에 대해 scalability합니다. 다 좋아보이는 GSDN의 단점은 accuracy였는데요, 사실 VoteNet과 비교하면 그렇게 좋은 성능은 아니었다고 합니다.

GSDN은 anchor로써 3D object bbox에 대한 15개의 aspect ratios를 사용합니다. 근데 이런 GSDN을 1가지 aspect ratio를 갖는 anchor-free 방식으로 학습하자 accuracy가 12퍼나 줄어든 것이죠. 또 저자들은 여기서 쏙 튀어나와서 자신들의 방법론이 anchor-free 방식인데 반해, sparse 3D convolution의 이점은 챙겼다고 어필을 또 합니다.

[RGB-based anchor-free object detection]

여기선 저자들이 자신들이 anchor-free 방식을 도입한 이유에 대해서 설명합니다. anchor-free 방법론은 2D domain에서의 FCOS와 RetinaNet이 있고, 이런 FCOS의 기조를 따라가며 3D domain에 적용한 FCOS3D, ImVoxelNet 방법론 등이 있습니다. 여기서 저자들은 이런 anchor-free 방법론들을 보고, 앞서 언급한 sparse 3D convolution의 단점을 조금 해결하기 위해, 즉 sparse하고 irregular한 data를 결국 사용해야하는 데 이를 효과적으로 처리하고 단점을 상쇄하기 위해 적용을 생각해보게 된 것으로 보입니다.

3. Proposed Method

FCAF3D Overview

위는 저자들이 제안하는 FCAF3D의 Overview입니다.

우선 3D object detection은 input으로 N_pts 개의 RGB-colored points를 받고 이를 3D object bbox 라는 출력으로 뱉는 큰 틀을 가집니다. 여기서 FCAF3D는 위 아키텍쳐 그림과 같이 크게 3단계 Backbone, Neck, Shared Head 부분으로 나누어 구성되게 됩니다. 이런 구조를 제안하면서 저자들이 중점적으로 담고자 했던 좀 더 구체적인 contribution은 크게 4 가지입니다.

  1. scalability 해결을 위해서 –> GSDN-like sparse convolution net 적용
  2. generalized 위해서 –> hyperparameter 수 해결 (neck 부분에서 sparcity pruning layer 적용)
  3. anchor-free head : simple multi-level location assignment
  4. OBB new hyperparameter : improve acc & generalization

우선 크게 3단계였던 Backbone, Neck, Head를 중심으로 조금 더 풀어가보도록 하겠습니다.

[Backbone]

FCAF3D의 backbone은 ResNet의 2D convolution을 sparse 3D convolution으로 대체하여 HDResNet(High-dimensional ResNet의 준말)이라고 명명하여 사용합니다. 여기서 sparse 3D convolution은 앞선 Intro에서 언급했듯이 0이 아닌 값을 가지는 data에 대해서만 convolution을 진행하는 방법입니다.

[Neck]

Pruning layer

Neck 부분은 GSDN의 decoder 부분을 떼와서 더 효율적으로 활용합니다. GSDN과 다른 점은 GSDN은 pruning layer가 transposed conv 뒤에 나오는 데 반해, FCAF3D는 backbone의 block에서 나온 feature를 pruning layer를 한번 거치고 3D sparse conv를 진행하고, sparse transposed 3D conv를 통해 차원을 늘려 앞단 block과 skip connection을 통해 결합하는 방식을 취합니다. 이 때 pruning layer가 sparse transposed 3D conv 앞에 쓰이는 이유는, 만약 이 transposed 3D conv가 kernel size가 2라면 non-zero인 값이 2^3 배로 증가하며 decoding 되기에 급격한 memory growth가 생길 수 있기 때문에, pruning layer를 일종의 필터로써 앞선 feature에 probability mask와 함께 작용하게 되는 것입니다.

추가적으로 GSDN에서는 feature level-wise probability는 추가적인 convolution score layer를 통해 계산됩니다. 이 layer는 예측된 sparsity와 anchor 간의 consistency를 유지하기 위해 특별한 loss로 학습됩니다. 구체적으로, 현재 voxel과 관련된 후속 anchor가 positive인 경우 voxel sparcity는 positive로 설정됩니다. 그러나 오브젝트로부터 먼 voxel이 낮은 probability로 할당될 수 있으므로 이 loss를 사용하는 것은 최적이 아닐 수 있습니다.

그래서 더 간단히 하기 위해, 해당 loss가 있는 score layer를 제거하고 대신 head의 classification layer에서 probabilitiy를 사용합니다. probability 임계값을 조정하지 않고 최대 Nvox voxel을 유지하여 sparcity 수준을 제어하며, 여기서 Nvox는 입력 포인트 수 Npts와 같습니다. 이 head에서 동일한 하이퍼파라미터를 share하면 프로세스를 더욱 투명하고 일관되게 만들 수 있기 때문에 이 방법이 sparcity 증가를 방지하는 간단하면서도 세련된 방법이라고 저자들은 주장합니다.

[Head]

anchor-free FCAF3D head는 feature level 간에 가중치가 공유되는 3개의 병렬 sparse conv layer로 구성됩니다. 각 위치(x^, y^, z^)에 대해 이 레이어는 각각 classification probabilities p^, bbox regression parameters δ, centerness c^를 출력합니다. 이 설계는 FCOS의 단순하고 가벼운 head에서 활용하여 3D 데이터에 맞게 조정되었습니다. FCOS의 head는 아래의 그림과 같습니다.

FCOS’s head

centerness는 무엇인고 하니, FCOS에서 제안한 방법론인 것 같았습니다.

위 수식과 그림과 같이 centerness가 계산됩니다. centerness는 중심에 가까울수록 1의 값을, 중심에서 멀어질 수록 0의 값에 가깝게 가지게 됩니다.

[Multi-level location assignment]

학습 중에 FCAF3D는 다양한 feature level에 대한 위치 {(x^, y^, z^)}를 출력하며, 이 위치는 gt boxes {b}에 할당되어야 합니다. 각 위치에 대해 FCOS와 ImVoxelNet은 이 위치을 포함하는 gt bbox를 고려하고, 그 면이 모두 거리 임계값 내에 있는 경우 부피가 가장 작은 bbox를 선택하여 이 위치에 할당합니다. 하지만 이러한 전략은 최선은 아니며, 2D object detection에서는 그 변형이 널리 사용되고 있습니다. ImVoxelNet은 여기서 각 feature level에 대해 면 거리 임계값을 hand-tuning으로 조정해야 하는 수정된 전략을 사용합니다.

저자들은 sparse data에 대한 더 단순화된 전략을 제안하는데, dataset-specific한 hyperparameter에 tuning을 필요로 하지 않는 방식입니다. 각각의 bbox에 대해 이 bbox가 최소 Nloc 개의 위치를 포함하는 마지막 feature level을 선택합니다. 만약 이런 feature level이 없는 경우 첫 번째 feature level을 선택합니다. 또한 center sampling을 통해 위치를 필터링하여 bbox 중심 근처 포인트만 positive match로 간주합니다.

할당을 통해 일부 위치 {(x^, y^, z^)}는 gt bbox 𝑏_𝑥 ̂,𝑦 ̂,𝑧 ̂ 와 일치합니다. 따라서 이러한 위치는 gt 레이블 p_x^,y^,z^ 및 3D centerness c_x^,y^,z^ 와 연관됩니다. 추론하는 동안, 점수 p^는 NMS 직전에 제안된 대로 3D centerness c^에 곱해집니다.

[Loss function]

Npos : matching locations의 수 (∑x^,y^,zˆ 1{x^,y^,zˆ≠0})

Lcls : classification loss

Lreg : regression loss

Lcntr : centerness loss

전체 loss는 위와 같습니다. classification loss, regression loss, centerness loss를 합쳐 matching된 locations 수로 나누어줍니다. 특히 수식에서 1{x^,y^,zˆ≠0}는 해당 location이 matching이 되었을 때 1, matching이 되지 않았을 때 0이 되는 값으로 matching된 location에 대해서만 bounding box regression loss와 centerness loss를 포함하여 계산하겠다는 의미입니다. classification loss는 focal loss를, regression loss는 IoU를, centerness loss는 binary cross-entropy loss를 사용한다고 합니다. hat(^)이 붙은 notation이 예측값들입니다. 

<Bounding Box Parameterization>

3d object bounding boxes는 axis-aligned(AABB)나 oriented(OBB)로 표현할 수 있습니다. AABB는 b^AABB = (x, y, z, w, l, h)로 표현되며 OBB는 여기에 heading angle(θ)이 추가된 b^OBB = (x, y, z, w, l, h, θ)형태로 표현됩니다. 두 수식의 parameters에서 x,y,z는 bounding box의 center 좌표값을 의미하고 w,l,h는 각각 width, length, height를 의미합니다. 아래 그림을 통해 더 잘 이해할 수 있을 것 같습니다.

AABB OBB 차이와 의미

[AABB parameterization]

gt AABB(x, y, z, w, l, h)와 location(x^,y^,z^)을 이용해 bounding box regression parameters(δ)는 위의 6개의 값을 가지는 tuple δ로 표현될 수 있습니다. 예측되는 AABB인 b^는 δ로부터 얻을 수 있다고 합니다.

[Heading angle estimation]

point cloud 기반의 이전의 3d object detection sota 방법론들은 classification후 regression을 통해 객체가 바라보는 각도를 추정합니다. 이를 heading angle estimation이라 하는데, 이때 heading angle은 섬세한 추정이 힘드니 bins를 통해 먼저 classified되고 해당 bin 안에서 정확한 heading angle을 regression하는 방식을 취해왔습니다. 일단 indoor scenes의 경우 0에서 2π범위를 12개의 동일한 크기의 bins로 나누고, outdoor scenes의 경우 2개의 bins만을 사용합니다. 이때 2가지 bins는 road에 parallel한 경우와 수직하는 경우만 고려하기 때문입니다.

heading angle bin이 선택되면 heading angle value값은 regression을 통해 추정되는데 outdoor scenes의 경우 삼각법을 통해 추정하게 된다고 합니다. 한편 저희가 FCAF에서 집중하고자 하는 indoor scenes의 경우에는 좀 더 복잡한데 object의 heading angle이 모호한 경우가 위의 Fig.3 과 같이 생기게 됩니다. indoor에 존재하는 사각형의 책상과 원형 테이블 같은 경우에는 어느 방향, 어디서 봐도 비슷한 생김새를 띄었기에, 어떤 방향이 heading angle이라고 명확히 말하기 어렵다는 rotation ambiguity 문제가 있습니다.

[Proposed Mobius OBB parameterization]

위에서 언급한 이런 rotation ambiguity 문제를 해결하기 위해 저자들은 뫼비우스 띠에서 영감을 받은 OBB parametrization을 제안합니다. OBB parameters는 (x, y, z, w, l, h, θ)의 값을 가지는데 이때 q = w/l로 w와l의 비율로 정의합니다. 그리고 x, y, z, w+l이 fixed한 값이라고 할 때 아래 4개의 표현은 다 같은 bounding box로 정의된다고 합니다.

w+l이 고정된 상수이기 때문에 θ(0~2π]와 q(0, +inf)에 관계없이 4개 표현은 Mobius strip(뫼비우스의 띠)와 위상학적으로 동등하다고 표현하고 있습니다. Mobius strip을 생각해보면 시작점을 따라 쭉 진행하다보면 다시 시작점에 도달했을 때 반대 방향에 있을텐데 이처럼 반복되며 계속 같은 위상을 나타낸다는 것을 표현하는 것 같습니다. 결론은 그래서 아래 수식이 위 수식의 4개 표현과 같은 points를 2차원 euclidean 공간의 Mobius strip으로 표현할 수 있다고 합니다.

첫 수식의 4개의 표현은 결국 모두 같은 point를 다른 표현으로 사용한 것으로 결국 euclidean space에서 하나의 같은 point로 mapping된다는 것을 아래 식을 통해 증명할 수 있습니다.

여기까지 Mobius strip을 설명하고, 결국 저자들은 이를 어떻게 활용했냐 하면, 실험적으로 위의 두번째 수식에서 4개의 표현 성분을 모두 사용한 것보다 앞의 두 성분 값만 사용한 것이 더 좋은 성능을 보였다고 하면서 두 값을 새로운 OBB parameter로 사용합니다.

위의 [AABB parameterization] 수식 중 bounding box regression parameters(δ)를 통해 예측된 b^를 구할 수 있다고 했었고 w, l, θ는 아래와 같이 구할 수 있습니다.

이때 ratio q(w/l) = e((δ7)2 + (δ8)2)1/2, size인 s = δ1 + δ2 + δ3 + δ4로 표현할 수 있습니다. 이러한 bounding box 매개화 방법을 저자들은 anchor-free방식을 적용하기 위해 사용했다고 합니다.

4. Experiments

<Dataset>

[ScanNet]

ScanNet 데이터 세트에는 포인트별 인스턴스와 18개 객체 카테고리의 시맨틱 레이블이 있는 1513개의 재구성된 3D 실내 스캔이 포함되어 있습니다. 이 annotation에서는 VoteNet의 방식을 차용하여 AABB로만 계산합니다.

[SUN RGB-D]

SUN RGB-D는 10,000개 이상의 실내 RGB-D 이미지가 포함된 단안 3D 장면 이해 데이터 세트입니다. annotation은 포인트별 시맨틱 레이블과 37개 객체 범주의 OBB로 구성되어 있습니다. VoteNet에서 제안한 대로 가장 common한 10가지 카테고리의 객체로 실험을 진행합니다.

[S3DIS]

Examples of classified scenes in S3DIS dataset (left) with groundtruth (right)

스탠포드 대규모 3D 실내 공간 데이터 세트에는 6개 건물의 272개 방에 대한 3D 스캔과 3D 인스턴스 및 의미론적 주석이 포함되어 있습니다. GSDN에 따라 가구 카테고리에 대해 저자들의 방법론을 평가합니다. AABB는 3D 시맨틱에서 파생됩니다.

<Implementation Details>

[Hyperparameters]

classification layer의 output size를 dataset마다 사용하는 class 갯수(18, 10, 5)로 변경하였습니다. 그리고 backbone은 위에서 언급했던 것 처럼 ResNet34를 sparse 3d로 수정한 HDResNet34라고 부르는 모델을 사용하였습니다. 그리고 voxel size는 0.01m로 했고 point 수(Npts)는 100,000개로 설정하였습니다. 따라서 voxel 갯수(Nvox)도 100,000로 동일합니다.

[Training]

epoch가 8, 11일 때 learning rate decrease를 했고 initial learning rate는 0.001, weight decay는 0.0001로 하였습니다. batch size는 8로 학습하였습니다.

[Evaluation]

input point 수(Npts) 100,000개는 random하게 sampling하였고 학습과 실험은 각 모델에 대해 5번씩 진행했습니다.

5. Result

<Comparison with SoTA Methods>

아래 Table 1은 본 논문에서 제안하는 FCAF3D 모델을 기존 3가지 3d indoor benchmark(scannet v2, sun rgb-d, s3dis)의 sota모델들과 비교입니다.

bold된 부분을 보면 FCAF3D 모델이 이전 sota모델보다 모두 높은 성능을 보입니다. 실험은 총 5번씩 진행됐는데, 그 중 가장 좋은 성능을 bold로 표기한 것이고, 괄호 안의 값은 5번 실험의 평균값이라고 합니다. 저자들은 각각의 dataset에서 예측한 bounding box를 아래 그림에서처럼 ScanNet, SUN RGB-D, S3DIS 순으로 시각화하여 gt와 비교하고 있습니다.

Fig 4,6(ScanNet, S3DIS)은 앞선 dataset에서 설명한 바와 같이, bounding box가 AABB로 표현되는 형태이기 때문에 heading angle이 없어 bounding box가 모두 같은 방향을 가지는 것을 확인할 수 있습니다. 한편 Fig 5(SUN RGB-D)의 경우에는 bounding box가 OBB로 표현되기 때문에 bounding box의 heading 방향이 다른 것을 확인할 수 있습니다.

아래 Table 2는 VoteNet, ImVoteNet, ImVoxelNet에서 기존 parametrization을 바꿔 실험한 결과입니다.

sin-cos param은 3d outdoor환경에서 3d object detection하는 모델인 SMOKE에서 사용한 parameterization방법이고 Mobius param은 본 논문에서 제안하는 OBB parametrization방법입니다. IoU loss라고 표시된 것은 본 논문에서 적용한 rotated IoU loss를 의미합니다. 더불어 본 논문에서 제안하는 Mobius parametrization 형태가 가장 좋은 성능을 보이는 것을 알 수 있었습니다. ImVoxelNet의 경우 rotated IoU loss가 적용되어 있어 따로 실험하지 않았다고 합니다.

아래 Table 3에서는 3d convolution 방법론이자 FCAF3D의 neck부분에서 사용된 GSDN모델과 본 논문에서 제안하는 FCAF3D와의 비교 결과를 보여줍니다. 첫 행을 보면 두 모델이 서로 동일한 환경에서 실험한 결과인데 FCAF3D가 더 높은 정확도를 보이는 것을 확인할 수 있습니다.

FCAF3D옆에 괄호로 accurate, balanced, fast가 붙어 구분되어 있습니다.
여기서 accurate는 성능이 가장 잘 나오도록 한 모델로 voxel size를 0.01로 줄이고 feature level voxel size도 작은 크기로 바꾼 모델입니다. 따라서 속도는 다른 모델에 비해 낮은 것을 확인할 수 있습니다.
balanced의 경우, backbone에서 3개의 feature level를 사용한 조금 더 경량화 된 모델로 GSDN에 비하면 속도와 정확도에서 모두 좋은 성능을 보입니다.
fast의 경우, feature level 수를 2개로 줄여 속도가 가장 빨랐습니다. fast임에도 정확도가 balanced 모델보다 개선됨이 눈에 띕니다.

<Ablation Study>

마지막으로 아래 Table 4는 voxel size, point 수, centerness, center sampling에 대한 ablation study입니다.

voxel size는 예상대로 크기가 커질수록 accuracy가 줄어드는 것을 확인할 수 있었습니다. 그렇지만 너무 작은 voxel size는 inference 시간이 오래걸린다는 단점이 있습니다. points 수는 역시 마찬가지로 적어질수록 성능이 낮아지는 것을 확인할 수 있었습니다. bounding box의 중심값을 나타내는 centerness는 성능향상이 미미하거나 약간 애매한 부분이 있는데, S3DIS에의 mAP@0.25에선 조금 낮아진 경향을 보입니다. center sampling의 경우는 bounding box center로부터 몇 개의 주변 locations를 positive로 matching할 지 sampling하는 것인데 18개의 locations로 설정했을 때 가장 좋은 결과를 보였습니다.

<Inference Speed>

GSDN과 FCAF3D라는 두 가지 모델의 추론 속도를 비교하자면, GSDN은 sparse convolution을 사용하여 메모리와 시간을 절약하며, 5GB의 GPU 메모리만으로 78M 포인트가 포함된 장면을 단일 feed-forward pass로 처리할 수 있습니다. 반면 FCAF3D는 GSDN과 동일한 sparse convolution과 백본을 사용하지만, 더 작은 voxel size(0.01m)를 사용하기 때문에 table 3에서 본 것처럼 default로는 GSDN보다 느립니다. 이 때 GSDN은 0.05m voxel size를 사용합니다.

저자들은 추론 속도를 개선하기 위해 FCAF3D에서 HDResNet34:3 및 HDResNet34:2 백본을 사용하며, 각각 3개와 2개의 feature level만을 포함시켰습니다. 이 변경으로 인해 FCAF3D는 GSDN보다 빠르게 추론할 수 있었다고 합니다.

6. Conclusion

저자는 FCAF3D를 소개하며, indoor scene에서의 3D object detection을 위한 최초의 fully convolution 기반 anchor-free 방법임을 강조합니다. 성능과 추론속도 면에서 준수한 결과를 보였고, 새로운 bbox hyperparameter를 제안하여 다른 3D object detection 방법론에서도 성능 향상을 입증했습니다. 이는 object에 대한 prior assumption 없이도 하이퍼파라미터 수를 줄일 수 있게 했다는 점에서 가장 의미가 있는 것 같고, 결국 초반의 Introduction에서 언급한 정확성, 확장성, 일반화 가능성 3마리 토끼를 동시에 잡아 성능 개선을 이뤄내려했다는 점에서 의미가 있는 연구인 것 같습니다. 끝으로 다음 리뷰는 이 FCAF3D 저자들이 좀 더 개선된 연구를 통해 내놓은 TR3D 논문으로 돌아오도록 하겠습니다. 감사합니다.

Author: 이 재찬

4 thoughts on “[ECCV 2022] FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection

  1. 안녕하세요 재찬님, 리뷰 감사합니다

    읽던중 궁금한게 있는데
    GSDN에서 sparsity 제어 하기 위해서 사용한 loss 함수 대신에 Head의 classification layer를 활용한다는 것의 의미가 효율성 부분에서 있는건가요? 또 Nvox와 Npts가 같아야하는 이유가 궁금합니다!!

    1. 안녕하세요 영규님, 리뷰 읽어주셔서 감사합니다.
      1. 일단 결론부터 말하면 효율성 측면이 맞습니다. 상세한 설명은 밑에 적어두겠습니다.

      GSDN에서 loss는 L = λs*Ls + λanc*Lanc + λclass*Lclass + λreg*Lreg 로 설계되어 있습니다. 각각은 sparsity, anchor, semantic classification, bbox regression 에 대한 4가지 예측을 활용하는데요.

      일단 먼저 GSDN은 anchor-free 방법론인 FCAF3D와 달리 anchor-based 방법론이기 때문에, 이 anchor에 대해 positive인지 아닌지를 학습시킬 loss가 필요합니다. 즉 sparsity와 anchor는 sparse한지 아닌지, anchor가 positive인지 아닌지의 관점에서 binary classification으로 접근할 수 있겠지만, IoU 연산에서 대부분의 복셀이 positive anchor가 포함되지 않아서 예측이 negative한 경우가 대부분이게 된다는 문제가 있었습니다.

      그래서 GSDN은 이를 3D IoU < 0.2 인 경우엔 negative로, 0.35 < 3D IoU 인 경우에는 positive로 정의하고, 이것에 대한 balanced cross entropy loss로 anchor에 대한 sparsity를 해결하고자 했습니다. 동일한 loss식으로 sparsity에 대한 loss인 Ls와 anchor에 대한 loss Lanc를 정의하고, 0.2 <3D IoU < 0.35 인 앵커들에 대해선 Lanc loss를 할당하지 않았습니다. 조금 여기서 헷갈릴 수 있기에 잠깐 Ls와 Lanc를 정리하자면, Ls는 특정 voxel이 객체 중심 anchor를 포함할 가능성을 고려해서 더 많은 포인트를 포함하는 voxel이 높은 확률을 가지게 끔 고려한 것이고, Lanc는 예측된 anchor가 gt와 비교했을 때 positive가 되려나 안되려나를 고려한 것입니다. 마지막으로 이 과정에서 정해진 positive anchor에 대해 그냥 cross entropy로 gt와 가장 IoU가 높은 class 예측에 대해서 loss인 Lclass를 정의하고, bbox regression 에서의 loss인 Lreg 정의에는 Huber Loss라는 것을 사용했습니다. 근데 딱 봐도 이 방식은 추가적인 연산부담과 복잡성을 가져오겠죠? 그래서 별도의 custom layer랑 hyperparameter 조정 등이 필요했는데, FCAF3D는 그런 거 없습니다. 영규님 말대로 효율성 측면에서 다 필요없었죠. head의 classification layer는 기본적으로 각 voxel에 대해 물체가 있을 확률을 예측하는데, 이 예측된 확률값으로 voxel에 얼마나 중요한 정보가 포함되어 있는지를 결정하고, 이로써 sparsity를 제어할 수 있었던 것 같습니다. 2. Nvox와 Npts가 같아야하는 이유는 sparse voxel grid에서 처리될 때 서로 간의 일관성을 유지하기 위함이었습니다. 왜냐면 그렇게 해야 sparse voxel에 포함되는 정보가 일관되게 될 테니까요. 입력에 따라 들쑥날쑥 voxel 수가 존재하는 것보다 입력 포인트 수만큼만 딱 sparse voxel을 만들면 불필요하게 많은 voxel이 생성되거나 데이터 손실이 나거나 하는 일이 없이 적절한 범위에서 sparsity 제어의 일관성 유지가 이루어지게 될 것이다라고 생각하면 될 것 같습니다. 이 또한 효율성 측면이라고 이해하면 될 것 같네요.

  2. 안녕하세요 ! 좋은 리뷰 감사합니다.
    제가 FCAF3D 논문을 읽을 때도 이해가 어려웠던 부분이 OBB parameterization 부분인데요, 지금 보니 4개의 표현 성부을 모두 사용한 것 보다 앞의 두 성분 값만 사용한 것이 더 좋은 성능을 보였다고 하는데 혹시 이에 대한 ablation study를 리포팅하진 않았나요 ?
    그리고 실험의 데이터셋 부분 설명 중에 이해가 안되는 부분이 있는데, ScanNet의 어노테이션이 VoteNet을 따라 AABB를 계산한다는게 정확히 무슨 의미일까요 ? VoteNet은 회전이 되는 경우와 안 되는 경우 모두 가능한 방법론인데 이 방법론을 따라 어노테이션이 된다는게 잘 이해가 되지 않습니다.
    감사합니다.

    1. 안녕하세요 건화님, 리뷰 읽어주셔서 감사합니다.
      우선 OBB parameterization 에서 4개의 표현 성분에 대한 성능 비교 ablation study는 따로 리포팅하지는 않은 것 같습니다.
      ScanNet 데이터셋에 대한 설명에서는 오해가 될 수도 있는 문장이었던 것 같습니다. VoteNet이 회전이 되는 경우와 안 되는 경우 모두 가능하지만 회전이 안되는 경우로써 해당 ScanNet annotation AABB를 단순히 어노테이션 했음을 의미합니다. 해당 부분은 수정하였습니다.

답글 남기기

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