안녕하세요. 저번 주차에 FCAF3D 라는 Fully Convolutional 3D object detection 방법론 중 anchor-free 기법을 처음으로 제안한 논문을 리뷰했었습니다. FCAF3D에 대한 리뷰가 궁금하신 분들은 저의 리뷰 외에도 과거 다른 연구원분들(도경님, 건화님)께서 잘 정리해주신 내용이 많기에 참고해주시면 감사하겠습니다. 이번 주차는 이 FCAF3D의 저자들인 samsung research에서 FCAF3D를 조금 더 개선시켜 낸 논문입니다. 참고로 본 논문의 연구 domain이 indoor scene 환경에서의 3D object detection 이다보니 outdoor scene을 다루지 않는다는 점 참고 바랍니다. 리뷰 시작하겠습니다.
1. Introduction
역시 본 논문의 초반에 3D object detection의 중요성을 언급하면서 시작합니다. 자율주행, AR/VR 애플리케이션, 3D 모델링, 가정용 로봇 등의 등장으로 3D object detection은 핵심적인 scene understanding 기술로 주목받고 있다고는 하는데, 사실 본 논문이 게재된 시기는 2023년도이고, 그 이후로 TR3D의 방법론을 또 다른 유의미한 방법론으로 TR3D가 달성한 SoTA를 능가한 전통적인 3D object detection 관련 논문은 잘 나오지 않고 있었던 것 같습니다.(제가 아직 못 찾은 것일 수도 있지요.) 그러면서 논문들의 추세는 Open Vocabulary 3D object detection 쪽 연구로 점차 흐름이 넘어가는 것 같더라구요. 최근에 손건화 연구원님께서 논문 리뷰하신 것들만 해도 그 쪽의 흐름이 주를 이뤘던 것으로 기억합니다. 그만큼 data와 domain에 specific한 3D detection 태스크의 성능 연구는 점차 소강 상태에 접어든 것 같습니다. 그럼에도 불구하고 역시 3D object detection의 전통적인 연구 흐름을 살펴보기 위해 위 내용은 잠시 각설하고 얘기를 이어나가 보겠습니다.
최신 3D object detection 방법론들은 voting 기반, transformer 기반, 3D convolution 기반 등으로 크게 3가지로 분류할 수 있었습니다. 먼저 voting 기반 방법론은 feature extraction 네트워크로 포인트 클라우드를 처리하고, 센터 voting을 사용하여 object proposal을 생성하고, 각 그룹 내에 포인트 feature를 축적합니다. 근데 많은 voting 기반 방법론들은 scalability라는 3D object detection에 있어서의 가장 큰 issue에 제약이 있어 확장성이 좋지 않다는 단점이 있었습니다.
여기서 scalability issue의 경우는 저번 리뷰에서 한번 언급되었기에 간단하게만 말하면, 3D data의 특성 상 scene 자체에서의 data의 scale이 커지게 되면 computing cost와 memory cost가 많이 들고, real time 3d detection을 하고 싶어도 연산 과정이 느려져 문제를 야기한다는 제약사항입니다.
다음은 transformer 기반 방법론입니다. voting 기반에서 사용한 domain-specific한 heuristic한 방법과 하이퍼파라미터 적용 대신 transformer를 활용한 방법은 end-to-end 학습을 진행하며 inference에 있어서 forward pass를 사용합니다. 그러나 이렇게 voting 기반보다 더 일반화되어도 더 큰 scene을 처리할 때 여전히 문제가 있습니다.
마지막으로 3D convolution 방법론은 앞 방법론들과 달리 포인트 클라우드를 복셀로 표현하므로 sparse한 3D 데이터를 좀 더 효율적으로 처리할 수 있었습니다. dense한 볼륨 feature에는 많은 메모리가 필요하기 때문에 대신 sparse representation과 sparse 3D convolution이 사용해서, 다른 방법과 비교했을 때 메모리 효율적이며 point density를 희생하지 않고도 큰 scene으로 잘 확장됩니다. 즉, 앞서 언급한 scalability issue에 대한 해결이 가능했죠. 반면 해당 방식은 정확성이 부족하다는 큰 단점이 있었습니다. 하지만 최근엔 해당 분야의 발전으로 인해 빠르고 확장 가능하면서도 정확성을 높인 방법이 개발되었습니다. 이것이 바로 제가 저번 주차에 리뷰하고, 본 TR3D 저자들이 이전에 발표했던 FCAF3D 방법론이었습니다.
전반적으로 최신 3D detecting 방법론들은 geometric한 입력, 즉 포인트 클라우드만으로 꽤 괜찮은 결과를 보여왔습니다. 하지만 역시 3D object detection은 다른 형식의 데이터, 즉 RGB 등을 같이 input으로 활용하는 것도 가능할 것입니다. 역시나 논문이 이를 언급하고 넘어가는데요. 포인트 클라우드는 추가 장비를 확보하는 등의 cost 비용이 많이 든다는 단점이 있지만 RGB 카메라는 훨씬 더 쉽게 접근가능한 데이터입니다. 더구나 일반적으로 저렴하고 사용하기 쉬우면서도 매우 유익한 데이터이죠. 본 TR3D가 제시되기 이전의 기존 방법론에선 후반 단계에서 RGB 데이터를 추가하는 방식이 몇몇 있었습니다. 예를 들면 복잡하고 메모리를 많이 소비하는 아키텍처를 가지고 있거나(ImVoxelNet), 사용량을 제한하는 사용자 정의 절차에 의존하거나(MMTC), 느린 반복 체계를 실행합니다(TokenFusion). 그에 반해, TR3D에서는 다른 포인트 클라우드 기반 모델에도 통합될 수 있는 early fusion 방식을 제시했습니다. 제안된 간단하면서도 효율적인 fully convolution 파이프라인과 결합된 이 방식을 통해 포인트 클라우드와 RGB 데이터 인풋으로부터 indoor 3D object detection 분야에 대해 SoTA 성능을 가져올 수 있었습니다.
2. Related Works
[3D object detection in point clouds]
Voting 기반 방법론에서는 VoteNet이 3D object detection을 위한 포인트 voting을 도입한 시초였습니다. VoteNet은 3D 포인트에서 특징을 추출하고, vote center에 따라 각 객체 후보에 포인트 그룹을 할당하고, 각 포인트 그룹에서 객체 특징을 계산합니다. BRNet의 경우에는 vote center의 대표 포인트를 사용하여 투표 결과를 개선해서 fine local structural 특징을 잡는 부분에서 향상시킵니다. H3DNet은 기하학적 원형의 하이브리드 세트를 예측하여 포인트 그룹의 생성 절차를 개선합니다. RBGNet는 클러스터 중심에서 ray를 균일하게 방출하여 물체 표면의 포인트별 특징을 모아 합치는 ray-based 특징 그룹화 모듈을 제안했습니다.
[Transformer-based methods]
Transformer 기반 방법에서는 그룹화 라는 것이 명시적으로 하이퍼파라미터 세트로 안내되지 않기 때문에 domain-specific한 경향을 줄일 수 있었습니다. GroupFree 는 이런 transformer 모듈을 사용해서 object query 위치를 반복적으로 업데이트하고 중간 결과를 축적합니다. 3DETR은 transformer를 사용한 3D object detection 분야의 시초였습니다.
[Voxel-based methods]
복셀 기반 방법론은 말 그대로 포인트를 복셀화 시키고 이를 3D 컨볼루셔널 네트워크에 태우는 방식을 이용합니다. 하지만 단점으로는 dense한 volumetric feature로 인해 여전히 많은 메모리를 필요로 하게 됩니다. GSDN은 sparse 3D convolution 방식을 사용하여 이 문제를 완화하지만 최신 voting 기반 방법보다 acc가 떨어진다는 아쉬움이 있었습니다. GSDN과 달리 본 TR3D 저자들이 이전에 제안했던 방법론인 FCAF3D에서는 최초로 anchor-free 기반의 순수 data-driven한 방식으로 fully sparse convolution을 아키텍쳐로 활용하여 메모리문제도 해결하고 acc 문제 두 마리 토끼를 잡은 3D object detection 결과를 보여주었습니다. 이전의 최신 voting 기반 방법론과 동일하거나 더 나은 acc였죠. 그래서인지 본 논문의 저자들은 이 FCAF3D를 baseline으로 잡고 이를 개선하고자 했다고 합니다.
[Point cloud and RGB fusion]
RGB 이미지에 포함된 semantic한 데이터는 3D object detection에 있어서 추가적인 정보를 제공할 수 있을 것입니다. TR3D 이전의 최신 연구인 ImVoteNet, Epnet, Epnet++ 은 초기 region proposal을 생성한 다음 RGB feature를 가이던스로 사용하여 proposal들을 refine하는 방식을 취했습니다. ImVoteNet은 RGB로부터의 2D detection 결과를 활용하여 voting과정을 수행합니다. EPNet++ 의 경우에는 이미지 feature를 feature extraction 모델의 중간 단에서 fusion하는 방식을 채택했습니다. 마지막으로 MMTC 라는 방법론의 경우에는 3D object detection 네트워크의 첫 번째, 두 번째 단계 사이의 2D segmentation 네트워크를 포함한 cascade 방식을 사용했습니다. TokenFusion은 포인트 클라우드와 RGB 정보를 transformer 모델을 활용해서 fusion하고 정보가 없는 토큰을 projection되고 집계된 inter-modal feature로 대체하는 과정을 학습합니다.
3. Method
앞서 말했듯이 TR3D는 FCAF3D 모델을 기반으로 하고 있으며, FCAF3D에서 보다 성능을 개선하기 위해서 여러 가지 변경사항을 적용했습니다. 각 변경사항들은 단순히 fully convolutional한 설계를 계승하면서도 점진적으로 적용되어 모델의 메모리 Efficacy와 속도, Accuracy 측면에서 성능을 극대화할 수 있었습니다. 주요 변경사항들에 대해서 추가적으로 설명해보도록 하겠습니다.
[3.1. TR3D: 3D object detection method]
일단은 RGB는 아직 fusion하지 않은 기본적인 TR3D 설계입니다. 앞서 말했듯이 Efficacy 측면, Accuracy 측면에서 기존의 FCAF3D 방법론보다 개선을 이뤄냈는데요. 이 개선하는 과정이 참 재밌습니다. 한땀한땀 실험적으로 아키텍쳐를 점진적으로 수정해나갔다는 것이 논문을 통해서도 잘 드러났거든요. 위 그림에서 보이는 FCAF3D -> TR3D 개선 과정을 순차적으로 하나씩 짚어나가보도록 하겠습니다.
- 첫 번째 레벨의 Head 제거
먼저 FCAF3D의 첫 번째 레벨(채널수 x64)에서 사용되는 Generative Transposed Convolution Layer가 메모리 사용량의 3분의 1을 차지하는 것을 발견했다고 합니다. 당연히 채널수가 가장 작지만 feature map의 resolution이 가장 클 터이니, decoder 과정에서 많은 연산량을 가지게 되는 것이었겠죠? 저자들은 이를 제거하면서 메모리 사용량을 약 1.5배 줄이고 FPS를 6 증가시켰다고 하는데, 이 head를 제거하면서 메모리를 대폭 줄여놓다보니 FCAF3D 에서 sparse transposed 3D conv의 메모리 증폭효과를 감쇠시키기 위해 transposed 앞에 사용하던 pruning layer가 오히려 불필요해졌다고 판단한 것 같습니다. 그래서 이 pruning layer도 제거하게 된 것 같습니다. - 네 번째 레벨의 Head 제거
다음은 네 번째 레벨의 head입니다. 이 부분은 마지막 레벨인 만큼 receptive field가 클 터이니 주로 semantic한 정보와 함께 대형 객체를 처리하게 될텐데, 해당 태스크가 상정하고자 하는 indoor scene에서는 이 대형 객체란 것이 드물게 나타나기 때문에 이 부분도 제거하게 되었다고 합니다. 그렇게 메모리 사용량을 여기서 더 줄일 수 있었다고 하네요. - 백본 채널 수 감소
백본 네트워크(HDResNet34)에서 각 레벨의 출력 채널 수를 두번째 레벨의 레이어부터 128로 모두 동일하게 제한하면서 parameter 수를 대폭 감소시켰습니다(68.3M → 14.7M). 그 결과, 메모리 소비량이 절반으로 줄었다고 합니다. 저의 경우는 첨에 잘 납득이 되지 않았다가 Modification 성능표를 보고서 어느정도 납득이 되는 수정이었다고 볼 수 있었습니다. 후술할테지만 mAP가 0.3~0.8 정도만 떨어지는 정도로 방어를 하면서도, FPS는 3정도 증가하고 Parameter 수는 거의 5분의 1 수준으로, 메모리는 2분의 1 수준으로 감소시킬 수 있었습니다. 다만 신기했던 점은 백본의 feature 채널 수가 성능에 매우 지대한 영향을 끼치지는 않는구나 라는 점이었습니다. - Centerness 제거
저자들은 FCAF3D 모델에서 사용하던 centerness라는 head 부분의 loss 연산 시 사용되던 term이 예측 성능에 그렇게 기여하지 않는 것으로 확인했다고 합니다. 그래서 이를 제거함으로써 성능에는 영향이 없으면서 모델을 더 간소화할 수 있었습니다. 이 또한 성능표를 보면 오히려 mAP를 백본의 채널 수가 감소되기 전으로 되돌려 놓으면서 centerness에 대한 연산이 없어짐에 따라 FPS도 소폭 향상되는 모습을 보이고 있죠. - TR3D Assigner 도입
이 부분에선 저자들은 FCAF3D 모델에서는 3D bbox 내부의 포인트만을 고려했지만, 얇거나 작은 객체는 bbox 내부에 포인트가 충분히 포함되지 않을 수 있어서 detection 성능이 떨어질 수 있다는 점을 짚었습니다. 이를 해결하기 위해, TR3D에서는 bbox 내부뿐만 아니라 그 주변에 있는 포인트도 고려하는 assigner를 도입했습니다. 구체적으로 보면 TR3D assigner는 사실 각 물체의 카테고리에 대해서 물체의 크기에 맞게 head의 prediction level을 사전 할당 정의하는 방식으로 성능을 높였습니다. 예를 들면 large object라고 구분할 수 있을만한 침대같은 경우는 남아있는 두 head인 3 level, 2 level 중 3 level에 할당하면 되겠고, small object 라고 할만한 의자같은 경우는 2 level에 할당하면 되는 것입니다. 이 부분에서 small과 large의 기준에 대해 명확히 언급하지 않았었고 heuristic한 bias가 들어갈 수 있는 것이라고 생각했지만 그럼에도 이 변경을 통해 mAP 성능이 크게 향상되었다는 점에서 의미가 있었습니다(61.5 → 72.9 mAP). - DIoU Loss 사용
위에서 언급한 TR3D assigner 는 꽤나 큰 폭의 성능 향상을 가져왔지만 bbox 주변(밖)에 존재하는 포인트들도 고려한다는 점 때문에 GT box 바깥에 대한 IoU Loss 계산 시 IoU 자체가 0이 될 수도 있는 문제가 있게 됩니다. 저자들은 이를 해결하기 위해 IoU 대신 DIoU(Distance IoU) loss를 적용해, 겹치는 영역 뿐만 아니라, box간 중심점 거리를 고려하면서 더 안정적인 학습을 가능하게 했습니다. 이로써 최종 성능으로 74.5mAP를 달성할 수 있었습니다.
DIoU에 대해 간단히 말하면 IoU와 중심 좌표를 함께 활용하는 데, 기존의 IoU loss 식에 중심 좌표를 고려하는 panalty term만 추가한 것입니다. 여기서 ρ는 Euclidean distance, b는 pred bbox, b_gt는 GT box 각각의 중심 좌표, c는 bbox와 GT를 모두 감싸되 크기는 최소가 되는 박스인 C 박스의 대각 길이를 의미합니다.
아래는 앞서 언급한 수정사항들에 대해 점진적으로 적용해보았을 때의 성능 변화 표입니다.
[3.2. TR3D+FF: RGB and Point Cloud Fusion]
다음은 이제 기존의 포인트클라우드 input에 RGB를 추가로 fusion하여 성능을 높인 TR3D+FF에 대해 설명합니다. 특히 이전의 방식들과 다른 점은 early fusion 방식을 통해 성능을 올렸다는 점인데요. 설명을 해보자면 다음과 같습니다.
- 2D feature extraction
먼저 pre-trained + freeze된 ResNet50+FPN 구조, 즉 2D detection 네트워크로 먼저 RGB를 태워서 2D feature를 추출합니다. - 2D feature -> 3D로의 projection
그 다음 추출된 2D feature를 3D 공간으로 projection합니다. 이 과정은 기존 연구와 유사하게 이루어지며, 2D 정보가 3D 포인트 클라우드의 특정 위치에 대응되도록 변환됩니다. - 2D와 3D feature의 early fusion
3D 공간에 매핑된 2D feature와 포인트 클라우드의 3D feature는 단순히 elemental-wise sum으로 fusion하게 됩니다. 위 그림에 보이는 기존의 복잡한 융합 방식들에 비해, TR3D에서 채택한 early fusion 방식은 메모리와 시간을 절약하면서도 더 나은 성능을 보여줍니다.
다음은 TR3D+FF에 대한 성능표인데요. SUN RGB-D 데이터셋을 기준으로, TR3D+FF는 2D RGB를 fusion하지 않은 TR3D에 비해 약 +2.3 mAP@0.25 및 +3.0 mAP@0.5 성능 향상을 기록할 수 있었습니다. 근데 이제 한가지 아쉬운 점은 baseline으로 잡았었던 FCAF3D에 대해서도 이 2D RGB에 대해 early fusion을 진행한 결과를 reporting하지 않았다는 점이 조금 아쉽네요. 그래야 이전의 FCAF3D 보다 fusion면에서도 뛰어날 수 있었다고 입증이 될 것 같다고 개인적으로 생각합니다.
4. Experiments
[Datasets]
실험에 사용한 데이터셋은 이전의 indoor scene 연구들에서 활용되던 SUN RGB-D, ScanNet v2, S3DIS 입니다.
[TR3D]
위 테이블 3은 geometric한 3D input만을 기반으로 한 기본 TR3D와 기존 3D detection 방법론간의 성능 차이에 대해서 reporting한 experiment입니다. TR3D는 모든 벤치마크에 대해서 baseline인 FCAF3D를 비롯한 이전의 모든 방법론들보다 좋은 성능을 보임을 확인할 수 있었습니다. 특히 FPS 측면도 기존의 방법론들보다 좋은 모습을 보임으로써 본 논문의 제목인 Towards Real-time detection에 가까워질 수 있었다는 점이 눈에 띕니다.
[TR3D+FF]
위 테이블 4는 SUN RGB-D에서 포인트 클라우드와 RGB를 fusion한 TR3D+FF 와 기존 3D detection 방법론 간의 결과입니다. TR3D+FF도 기존의 2D+3D fusion 방법론들보다 FPS와 mAP 모두 높은 모습을 보여줄 수 있었습니다.
5. Conclusion
마지막으로 정성적 결과를 보여드리고 리뷰 마치도록 하겠습니다. 마지막 행의 S3DIS의 경우에서만 책상이나 책장 등의 bbox가 geometric 적인 위치가 조금은 어긋나 있다는 것만 눈에 띕니다. indoor scene에서의 3d object detection 태스크의 큰 아쉬운 점 중의 하나가 저는 SoTA 모델의 성능이 mAP@0.25 에서 아직도 70대라는 점에서 아직도 성숙하지는 못한 상태라고 생각이 들고, 반대로 해결해 나가야 할 문제들이 아직도 많은 태스크라고 생각합니다.
위 그림처럼 IoU가 0.25 정도면 오차가 꽤나 큰 것 같거든요. 앞으로 어떻게 해결해나갈 수 있을 지 궁금하긴 하지만,,, 요즘의 3D object detection 태스크 연구는 시대의 흐름에 편승하여 multi-modal 와 unseen object를 다루는 Open World 쪽으로 넘어가는 경향이 보이면서 해당 전통 closed set 3D object detection 에서의 진전은 조금 정체된 것으로 보여 아쉬운 마음과 함께 과한 생략으로 인해 자꾸 citation을 찾아보게 만든 저자들에게 답답함을 토로하며 리뷰 마치도록 하겠습니다.하하
상세한 논문 리뷰 작성하느라 고생하셨습니다.
해당 논문이 좀 치사한 점이 있어요. 중요하다고 주장하는 부분과 설명하는 내용들이 일치하지 않죠
자 그럼, 질문을 드리자면 해당 논문에서 그토록 강조하는 fully convolution은 어떻게 가능한 걸까요?
안녕하세요 태주님, 리뷰 읽어주셔서 감사합니다.
먼저 저자들이 반복적으로 말하는 fully convolutional 구조란 sparse 3D convolution 과 sparse 3D transposed convolution으로 이루어진 encoder-decoder 기반의 end-to-end 학습이 가능한 anchor-free 구조입니다. 즉 정리하면 학습과 인퍼런스까지 모든 처리를 convolution 연산 만으로 처리하겠다는 뜻입니다.
그러기 위해선 input으로 들어오는 point cloud가 3D volumetric한 데이터 형태인 voxel로 변환된 다음, fully convolutional 구조에 들어가는 과정이 필요한데, 저자들은 이전 연구들이 잘 설명해주었을 것이라고 생각하고 이 부분에 대해선 언급을 생략하게 됩니다.
일단 point cloud의 voxel화는 균일한 3D grid cell로 나누어 각 셀에 하나 이상의 점이 포함되도록 discretization하는 과정입니다. 그래서 이 3D 격자 각 셀을 voxel이라고 부르게 되며, point cloud 데이터의 특성상 3D grid 공간 내로 매핑된 voxel들은 특정 부분만 유의미한 데이터를 갖는 sparse한 형태를 갖추게 됩니다.
이 sparse한 voxel을 처리하려면 비어있는 공간까지 연산해야하므로 많은 메모리와 연산이 필요하게 될텐데, 이를 해결하기 위해 sparse 3D convolution이 도입된 것이고, sparse 3D convolution의 경우 짧게만 설명하자면 Minkowski Convolution(https://arxiv.org/pdf/1904.08755) 을 활용하며 빈 공간에 대해서는 연산을 않도록 하기 위해 특히 COO format(유요한 좌표의 행,열 번호와 각 좌표값을 저장하는 방식)을 사용하여 coordinate hashing 등의 방법으로 sparse 한 데이터 간의 관계만을 빠르게 convolution 연산처리하는 것을 말합니다.
그리하여, 이런 3D data의 sparsity를 잡으면서 sparse 3D fully convolutional 기반의 방법이 모델의 메모리 efficacy와 속도, acc에서 모두 좋은 모습을 보였줄 수 있다! 라고 주장한 것이 저자들의 이전 연구인 FCAF3D였는데, 이 TR3D 논문은 이를 계승하면서 한 단계 더 성능을 끌어올렸으며, 2D RGB와의 fusion까지 보여주어 메모리, 속도, acc 모두 극대화할 수 있었다는 것이 핵심 내용이었습니다.
안녕하세요 ! 좋은 리뷰 감사합니다.
물체의 크기에 맞게 head의 prediction level을 사전 할당 정의하는 부분에서 궁금한 것이 small과 large에 대한 기준이 명확히 언급되지 않은 것은 이해가 가지만 그럼 데이터셋마다 서로 다른 개수의 클래스가 있는데 고정된 head 안에서 어떻게 매번 할당이 되는건가요 ?
그리고 figure 상으로 FCAF3D와 비교했을 때 pruning 과정도 제거한거 같은데 pruning은 원래 왜 있었던 과정이며 이를 제거할 수 있었던 이유도 궁금합니다.
감사합니다.
안녕하세요 건화님, 리뷰 읽어주셔서 감사합니다.
1. 코드를 들여다보니 config 내에 데이터셋마다 각각 다른 tr3d_s3dis-3d-5class.py 와 같은 세팅을 통해, head 내의 assigner를 정의하는 부분에서 label2level=[1, 0, 1, 1, 0] 이런 식으로 클래스 별 0, 1 로 할당을 하는 걸로 확인했습니다.
2. 기존 FCAF3D에서 pruning layer의 존재 이유와, TR3D에서 pruning layer가 제거된 이유에 대한 내용은 본 리뷰 본문의 [3.1] 중 “1. 첫 번째 레벨의 Head 제거” 에 설명되어 있습니다!
감사합니다.