본문 바로가기
AI

논문리뷰 PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

by 구운밤이다 2021. 4. 4.
728x90
반응형

 

링크: https://arxiv.org/abs/1912.13192
분야: 3d 2020
참고: 블로그, 코드

 

이번 논문은 작년 cvpr 2020의  pv-rcnn: point voxel feature set abstraction for 3d object detection입니다.

이 논문에서 자세히 봐야하는 것은 저자가 왜 , 그리고 어떻게 grid방식과 point방식을 잘 통합하려는지입니다.

1저자인 샤오슈아이님은 3D object detection 분야에서 좋은 논문을 여러개 내신분입니다.

이 논문의 네트워크로 KITTI의 3d object detection 성능 비교에서 1등을 했었습니다. 현재는 다른 네트워크로 바뀌였고, 현재 pv-rcnn++로 5위를 하고 있는것으로 알고있습니다.

  • 1.Background

    Pointcloud 데이터의 특징

    먼저, 많은 3D object detection 논문이 pointcloud 데이터를 이용하는데 기존 2d 이미지 데이터와 어떻게 다른지 간단하게 보면 좋을것 같습니다. Lidar 센서를 통해 얻은 point cloud의 point 하나는 3차원 좌표와 반사된 빛의 세기인 reflection intensity로 이루어진 4차원 vector입니다.

    Point cloud의 특징

    1. Sparse 하다
    2. Irregular 하다.

    그렇기 때문에 이미지 object detection 에서 주로 사용하는 CNN만으로는 충분히 feature을 encoding하기 힘들고

    이 문제를 해결하고자 여러 구조의 네트워크들이 나오고있고 그 중에 하나가 오늘 리뷰하는 논문입니다.

    3D sparse convolution and point set abstraction

https://towardsdatascience.com/how-does-sparse-convolution-work-3257a0a8fd1 / PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

Abstract

포인트 클라우드에서 정확한 3D 객체 감지를 위해 PointVoxel-RCNN(PV-RCNN)이라는 새롭고 고성능 3D 객체 감지 프레임워크를 제시한다. 제안된 방법은 3D 복셀 컨볼루션 신경망(CNN)과 포인트넷 기반 세트 추상화를 모두 심층적으로 통합하여 보다 차별적인 포인트 클라우드 기능을 학습합니다. 3D 복셀 CNN의 효율적인 학습 및 고품질 제안과 포인트넷 기반 네트워크의 유연한 수용적 분야의 이점을 활용합니다. 구체적으로, 제안된 프레임워크는 후속 계산을 저장하고 대표적인 장면 특징을 인코딩하기 위해 새로운 복셀 세트 추상화 모듈을 통해 3D 복셀 CNN을 사용한 3D 장면을 작은 키포인트 세트로 요약합니다. 복셀 CNN에 의해 생성된 고품질 3D 제안을 고려할 때, RoI 그리드 풀링은 여러 수신 필드가 있는 키포인트 세트 추상화를 통해 키포인트에서 RoI 그리드 포인트로 제안 특정 기능을 추상화하기 위해 제안됩니다. 기존 풀링 작업과 비교하여 RoI-grid 피처 포인트는 개체 신뢰도와 위치를 정확하게 추정하기 위해 훨씬 더 풍부한 컨텍스트 정보를 인코딩합니다. KITTI 데이터 세트와 Waymo Open 데이터 세트 모두에 대한 광범위한 실험은 제안된 PV-RCNN이 포인트 클라우드만 사용하여 놀라운 여백으로 최첨단 3D 감지 방법을 능가한다는 것을 보여줍니다.

1. Introduction

3D 물체 탐지는 자율 주행과 로봇 공학 등 다양한 분야에서 폭넓게 응용한 덕분에 업계와 학계의 주목을 받고 있습니다. LiDAR 센서는 3D 장면 정보를 희소하고 불규칙한 점 구름으로 캡처하기 위한 자율 주행 차량 및 로봇에 널리 채택되어 3D 장면 인식 및 이해에 중요한 단서를 제공합니다. 본 논문에서는 불규칙한 포인트 클라우드에서 더 나은 3D 기능을 학습하기 위해 새로운 포인트-복셀 통합 네트워크를 설계하여 고성능 3D 객체 감지를 달성할 것을 제안한다.

대부분의 기존 3D 감지 방법은 포인트 클라우드 표현, 즉 그리드 기반 방법과 포인트 기반 방법 측면에서 두 가지 범주로 분류될 수 있습니다. 그리드 기반 방법은 일반적으로 불규칙한 포인트 클라우드를 3D 복셀[27, 41, 34, 2, 26] 또는 2D 버드뷰 맵[1, 11, 36, 17, 35, 12, 16]과 같은 정규 표현으로 변환하며, 3D 또는 2D 컨볼루션 신경망(CNN)이 3D 검출의 특징을 학습하는 데 효율적으로 처리할 수 있습니다. PointNet 및 그 변종[23, 24]을 기반으로 한 포인트 기반 방법[22, 25, 32, 37]은 3D 감지를 위해 원시 포인트 클라우드에서 차별적인 특징을 직접 추출합니다. 일반적으로 그리드 기반 방법은 계산 효율성이 높지만 불가피한 정보 손실은 미세한 로컬라이제이션 정확도를 떨어뜨리는 반면, 포인트 기반 방법은 계산 비용이 더 높지만 포인트 세트 추상화에 의해 더 큰 수용 필드를 쉽게 달성할 수 있습니다 [24]. 그러나, 우리는 통합 프레임워크가 두 가지 유형의 방법 중 최상의 방법을 통합하고, 현저한 여유로 이전 최첨단 3D 감지 방법을 능가할 수 있다는 것을 보여줍니다.

우리는 포인트 기반 및 복셀 기반 특징 학습 방법의 장점을 통합하여 3D 감지 성능을 향상시키는 새로운 3D 객체 감지 프레임워크인 PVRCNN(그림 1 참조)을 제안한다. PV-RCNN의 원리는 복셀 기반 작업이 다중 스케일 기능 표현을 효율적으로 인코딩하고 고품질 3D 제안을 생성할 수 있다는 사실에 있으며, 포인트넷 기반 세트 추상화 작업은 유연한 수신 필드를 사용하여 정확한 위치 정보를 보존합니다. 우리는 이 두 가지 유형의 특징 학습 프레임워크를 통합하면 정확한 세분화된 상자 개선을 위해 보다 차별적인 특징을 학습하는 데 도움이 될 수 있다고 주장합니다.

주요 과제는 두 가지 유형의 특징 학습 체계, 특히 3D 복셀 CNN과 희소 컨볼루션[6, 5] 및 포인트넷 기반 세트 추상화[24]를 어떻게 통합 프레임워크에 효과적으로 결합하는 것입니다. 직관적인 솔루션은 각 3D 제안 내에서 여러 그리드 포인트를 균일하게 샘플링하고 제안 개선을 위해 이러한 그리드 포인트를 둘러싼 3D 복셀별 기능을 집계하기 위해 세트 추상화를 채택합니다. 그러나 이 전략은 만족스러운 성능을 달성하기 위해 복셀 수와 그리드 포인트 수가 모두 상당히 클 수 있기 때문에 메모리 집약도가 높습니다.

따라서 이 두 가지 유형의 포인트 클라우드 기능 학습 네트워크를 더 잘 통합하기 위해 첫 번째 복셀-키포인트 장면 인코딩 단계와 두 번째 키포인트-그리드 RoI 기능 추상화 단계를 가진 2단계 전략을 제안한다. 특히, 복셀별 기능 학습과 정확한 제안 생성을 위해 3D 희소 컨볼루션의 복셀 CNN이 채택됩니다. 전체 씬(scene)을 인코딩하는 데 너무 많은 복셀이 필요하다는 위에서 언급한 문제를 완화하기 위해 가장 멀리 있는 포인트 샘플링(FPS)에 의해 작은 키포인트 세트가 선택되어 복셀별 feature에서 전체 3D 정보를 요약합니다. 각 키포인트의 feature는 멀티스케일 포인트 클라우드 정보를 요약하기 위해 PointNet 기반 세트 추상화를 통해 인접 복셀별 feature을 그룹화하여 집계합니다. 이러한 방식으로, 전체 씬(scene)은 관련된 다중 스케일 기능이 있는 소수의 키포인트에 의해 효과적이고 효율적으로 인코딩될 수 있습니다.

두 번째 키포인트 대 그리드 RoI 기능 추상화 단계의 경우 그리드 포인트 위치가 있는 각 박스 제안을 고려할 때, RoI-grid 풀링 모듈이 제안되며, 여기서 다중 스케일 컨텍스트로 키포인트에서 특징을 집계하기 위해 각 그리드 포인트에 대해 다중 반지름을 갖는 키포인트 세트 추상화 레이어가 채택됩니다. 그런 다음 모든 그리드 포인트의 집계된 기능을 함께 사용하여 다음 제안서를 개선할 수 있습니다. 우리가 제안한 PV-RCNN은 포인트 기반 네트워크와 복셀 기반 네트워크 모두의 이점을 효과적으로 활용하여 정확한 신뢰 예측과 세분화된 상자 개선을 위해 각 상자 제안에서 차별적인 특징을 인코딩합니다.

  1. 3D sparse convolution2D image에 2D convolution을 적용한 것 처럼 3D voxel에 3D convolution을 적용할 수 있습니다.위의 그림은 3D sparse convolution을 구현한 내용입니다. 단순히 sparse한 데이터에 효율적으로 적용가능한 sparse convolution입니다.
  2. 3D convolution은 inefficient하기 때문에 sparse 데이터에 적합한 3D sparse convolution을 적용할 수 있습니다.
  3. Point set abstractionpointnet++ 논문의 point set의 feature을 encoding하는 알고리즘입니다.다시 말해 샘플링된 point가 local feature을 encoding 함으로써 convolution처럼 local feature을 배우고, 이 방법을 iterate하게 하면 point cloud를 적은수의 point로 encoding 하게 됩니다.
  4. 전체 point에서 keypoint를 sampling하고 샘플링한 keypoint를 중심으로 정해준 반지름 거리 안에 속해있는 point들의 feature을 모아서 pointnet block이라는 MLP와 max pooling으로 이루어진 네트워크를 통과시켜 그 공간의 정보를 나타내는 feature vector를 생성합니다.

Point cloud based 3D Object Detection 분류

Point cloud를 이용한 3D detection 방법은 크게 grid방식과 point방식으로 분류할 수 있습니다.

Grid based method

앞에서 본것과 같이 irregular한 point cloud를 regular한 representation인 3D voxel 이나 2D bird eye view map으로 변환한 후 기존의 2D detection 알고리즘처럼 convolution을 통해 detection하는 방식입니다.

이러한 방식은 3d sparse convolution 과 같은 방법을 적용하여 efficient하게 3d box proposal을 할 수 있습니다.

하지만 receptive field가 3D 또는 2D convolution의 kernel size에 제한된다는 단점이 있습니다.

Point based method

주어진 point cloud 데이터를 3D voxel이나 2D bird eye view로 변환하지 않고 point를 이용해서 feature을 encoding하여detection을 진행하는 방식이다.

이 방법은 주로 pointNet 논문에서 나온 set abstraction을 이용하고 이를 통해 flexible한 receptive field를 갖고 point들을 encoding할 수 있습니다.

이런 장점 때문에 더 정확한 contextual information을 획득할 수 있다고 합니다.

하지만, point set abstraction은 distance-pair를 계산해야하기 때문에  computation cost가 높다는 단점이 있습니다.

PV-RCNN은 두가지 방법의 장점을 잘 통합하여 3D object detection의 성능을 높였습니다.

grid방식을 통해 region proposal을, point 방식을 통해 location의 refinement을 진행하였습니다.

2. PV-RCNN 구조

Network 구조 Overview

저자가 제안하는 PV-RCNN의 전체적인 구조는 그림에서 보이는 것과 같습니다.

2 stage detection 구조로 이루어져있고 첫번째 stage에서 3D box proposal이 이루어지고 두번째 stage에서 각 box proposal에 대해서 confidence를 계산하고 object에 더 잘 맞도록 location refinement를 하게 됩니다.

3. PV-RCNN for Point Cloud Object Detection

본 논문에서는 포인트 클라우드에서 보다 정확한 3D 물체 감지를 목표로 하는 2단계 3D 감지 프레임워크인 PVRCNN(PointVoxel-RCNN)을 제안한다. 최근 3D 감지 접근 방식은 희박한 컨볼루션 또는 포인트넷 기반 네트워크를 백본으로 하는 3D 복셀 CNN을 기반으로 합니다. 일반적으로, 희박한 컨볼루션의 3D 복셀 CNN은 더 효율적이며 [34, 26] 고품질 3D 객체 제안을 생성할 수 있는 반면, 포인트넷 기반 방법은 유연한 수신 필드를 사용하여 보다 정확한 상황 정보를 캡처할 수 있습니다. 우리의 PV-RCNN은 두 가지 유형의 네트워크의 장점을 깊이 통합합니다. 그림 2에서 설명한 것처럼 PV-RCNN은 효율적인 기능 인코딩 및 제안 생성을 위한 백본으로 희소 컨볼루션의 3D 복셀 CNN으로 구성됩니다. 각 3D 객체 제안을 고려할 때 장면에서 해당 기능을 효과적으로 풀링하기 위해 전체 장면 피처 볼륨의 모든 복셀을 소수의 피처 키포인트로 요약하는 복셀-키포인트 장면 인코딩과 효과적으로 집계되는 포인트-그리드 RoI 피처 추상화라는 두 가지 새로운 연산을 제안한다. 제안 신뢰도 예측 및 위치 개선을 위해 장면 키포인트 feature을 RoI 그리드에 제공합니다.

3.1 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation

3D 희소 컨볼루션의 Voxel CNN[6, 5, 34, 26]은 포인트 클라우드를 희소 3D 기능 볼륨으로 효율적으로 변환하기 위해 최첨단 3D 검출기에서 널리 사용되는 선택입니다. 높은 효율성과 정확성 때문에, 우리는 그것을 특징 인코딩과 3D 제안 생성을 위한 프레임워크의 백본으로 채택합니다.

👉
이 stage는 기존 2D object detection과 매우 유사한 방식입니다. convolution을 통해 feature을 얻고 RPN(region proposal network)를 통해classification과 box proposal을 하게됩니다. 대신 Pointcloud를 voxel로 변환하는 과정이 추가되고, 효율적인 연산을 위해 3D sparse convolution을 통해 계산을 하는 점이 기존 2D detection과의 차이라고 볼 수 있습니다.

3D 복셀 CNN.

입력 지점 P는 먼저 L × W × H의 공간 해상도를 가진 작은 복셀로 나뉘는데, 여기서 비어 있지 않은 복셀의 형상은 모든 내부 점의 점별 형상의 평균으로 직접 계산됩니다. 일반적으로 사용되는 feature = 3D 좌표와 반사 강도입니다. 네트워크는 일련의 3x 3x 3x 3D sparse 컨볼루션(convolution)을 활용하여 점 클라우드를 점차적으로 1x, 2x, 4x, 8x 다운샘플링 크기의 피처 볼륨으로 변환합니다. 각 수준에서 이러한 희소 형상 볼륨은 복셀별 형상 벡터의 집합으로 볼 수 있습니다.

3D 제안 생성

인코딩된 8xdown 샘플링된 3D 기능 볼륨을 2D 버드뷰 기능 맵으로 변환하면 anchor 기반 접근 방식에 따라 고품질 3D proposal이 생성됩니다 [34, 12]. 구체적으로, 이 3D feature volume을 z축을 기준으로 stacking하여L/8×W/8L/8 × W/8 2D bird eye view feature map으로 변환 . 각 클래스에는 이 클래스의 평균 3D 객체 크기를 채택한 2 × L/8 × W/8 3D 앵커 박스가 있으며, 각 feature map pixel마다 orientation이 (0도,90도)인 두개의 anchor을 갖고있고 각 anchor가 물체의 유무에 대한classification과 box regression을 하게 됩니다. 표 4에 표시된 것처럼 앵커 기반 체계를 갖춘 채택된 3D 복셀 CNN 백본은 PointNet 기반 접근 방식보다 높은 호출 성능을 달성합니다 [25, 37].

토론

최첨단 탐지기는 대부분 2단계 프레임워크를 채택합니다. 추가 제안 개선을 위해 결과 3D 기능 볼륨 또는 2D 맵에서 RoI 특정 기능을 풀링해야 합니다. 그러나 3D 복셀 CNN의 이러한 3D feature volume이나 2D feature map으로 RoI pooling을 하는 것에 2가지 문제가 있다.

(i) 이러한 기능 볼륨은 일반적으로 최대 8배까지 다운샘플링되므로 공간 해상도가 낮아 입력 장면에서 개체의 정확한 위치 파악을 방해합니다.

(ii) 더 큰 공간 크기의 기능 볼륨/맵을 얻기 위해 샘플을 업샘플링할 수 있더라도 일반적으로는 매우 희박합니다. RoIPooling/Ro에서 일반적으로 사용되는 삼각형 또는 이선형 보간입니다. 선형 작업은 매우 작은 이웃(즉, 이진 및 삼각 보간 각각에 대해 4와 8의 가장 가까운 이웃)에서만 특징을 추출할 수 있습니다. 따라서 기존의 풀링 접근 방식은 대부분 0인 feature을 얻고 2단계 개선을 위해 많은 계산과 메모리를 낭비합니다.

interpolation을 통해 upsampling을 하면 바로 주변의 정보만을 이용하기때문에 전체적인 contextual information을 알 수 없기 때문에 좋지 않습니다. 그러나 pointnet에서 제시한 set abstraction operation을 사용한다면 임의 크기의 이웃에서 피처 포인트를 인코딩하는 강력한 feature 를 만들고 적은 수의 point들이 매우 넓은 receptive field를 갖기 때문에 이는 더 정확하고 robust한 refinement를 가능하게 만든다고 주장하고 있습니다.

장면 피쳐 복셀을 풀링하기 위해 설정된 추상화 연산을 사용하는 간단한 해결책은 장면의 다중 스케일 피쳐 볼륨을 RoI 그리드로 직접 집계하는 것입니다. 그러나 이러한 직관적인 전략은 단순히 메모리를 많이 차지하며 실제로 사용하기에는 비효율적입니다. 예를 들어, KITTI 데이터 세트의 일반적인 씬(scene)으로 인해 4배 다운샘플링된 기능 볼륨에 18,000개의 복셀이 발생할 수 있습니다. 각 장면마다 100개의 박스 프로포즈를 사용하고 각 박스 프로포즈에는 3개의 × 3개의 그리드가 있습니다. 거리 임계값 이후에도 2,700 × 18,000 쌍의 거리 및 형상 집계를 효율적으로 계산할 수 없습니다. set abstraction operation은 distance-pair을 모두 구해야하기 때문에 computational cost가 높다는 문제점이 있습니다.

2step을 만들어줌으로써 computational cost를 줄였습니다. 우리는 1. 먼저 전체 장면의 서로 다른 신경 계층에서 복셀을 소수의 키포인트로 인코딩한 다음 2. box proposal 개선을 위해 RoI 그리드에 키포인트 기능을 통합하는 2단계 접근법을 제안한다.

따라서 저자들은 이 과정을 naive한 방법으론 모든 box proposal 안의 grid point를 잡고 그 grid point에 대해 multi-scale feature volume과 set abstraction operation을 합니다. 이 과정에서 keypoint를 추가해주어 2단계로 나누는데, 먼저 샘플링한 keypoint들로 feature volume을 aggregate한 다음. 그 keypoint들을 이용해서 RoI grid들이 feature을 만드는 방식입니다.

3.2 Voxel-to-keypoint Scene Encoding via Voxel set Abstraction

여러 뉴런 layer에서 복셀들을 aggregate ⇒ 전체 장면을 적은 키포인트로 나타냄. (3d 복셀 cnn feature 인코더와 제안 네트워크 간 다리 역할)

4가지 단계가 존재

1. Keypoint sampling
2step 의 첫번째 스텝. voxel set abstraction을 통해 multi-scale의 feature volume을 encoding하는 작업입니다. 이는 voxel set abstraction module을 통해 이루어집니다.

먼저 전체 point cloud에서 정해진 개수의 point를 furthest-point sampling 알고리즘을 통해 sampling합니다. ( FPS는 non-empty voxel에서 uniformly하게 존재하도록 한다)

  1. 저자들이 이야기하는 첫번째 main contribution입니다.

2. Voxel Set Abstraction Module.

  • lkl_k는 몇번째 feature volume인지, f는 voxel-wise feature vector, v(lk)j-pi는 keypoint를 중심으로 그 voxel의 상대좌표입니다.
  • 하나의 keypoint는 정해진 반지름(rkr_k)만큼의 영역에 포함되는 voxel feature을 모아 set 형성
    • 이 두 vector f, v-p를 concatenate 하여 S라는 set으로 모읍니다. 저 오른쪽 수식의 rk 가 k번째 layer에 대해서 정해진 반지름입니다. 이 반지름을 레이어에 따라다르게 설정해줌으로써 set abstraction operation이 flexible한 receptive field를 갖는다고 생각하면 됩니다. 구현과정에서는 각 레이어당 2개의 반지름을 설정해주었습니다.
    • 그렇게 모은 set을 pointnet block을 통해 keypoint의 feature vector로 만들어줍니다.Pointnet block을 보면 M는Si(lk)S^{(l_k)}_i의 이웃 집합에서 최대 T개 복셀 랜덤 샘플링을 뜻함. G는 multilayer-perceptron layer. max는 max pooling layer입니다.
    • 키포인트의 주변 포인트는 이제 PointNet에서 학습한 기능을 가진 인접 원시 포인트 대신 여러 레벨에서 3D 복셀 CNN에 의해 인코딩된 다중 스케일 의미적 특징을 가진 일반 복셀이다.

[24]에서 제안한 세트 추상화 연산은 복셀별 기능 볼륨의 집계를 위해 채택된다. 특히, $F^{(l_k)} = {\{f^{(l_k)}_1, · · ·, f^{(l_k)}_{N_k}\}}$을 3D 복셀 CNN의 k번째 수준에서 복셀별 피처 벡터 집합으로, $V^{(l_k)} = {\{v^{(l_k)}_1, · ·, v^{(l_k)}_{N_k}\}}$을 3D 복셀 좌표로 계산한다. 각 키포인트 pi에 대해, 우리는 먼저 로컬 상대 좌표 를 연결하여 시맨틱 복셀 feature f(lk)j의 상대 위치를 나타내는 것처럼 복셀별 특징 벡터 집합을 검색하기 위해 반경 rk 내의 k번째 수준에서 인접하지 않은 복셀을 식별한다. 트루와 상대적인 위치 인접 복셀의 수는 서로 다른 키포인트에 따라 다르지만, 긴 채널 최대 풀링 연산 max(·)는 다양한 수의 인접 복셀 피처 벡터를 키포인트 파이의 피처 벡터 f(pvk)i에 매핑한다. 일반적으로, 우리는 더 풍부한 다중 스케일 상황 정보를 캡처하기 위해 서로 다른 수용 필드를 가진 로컬 복셀별 특징을 집계하기 위해 k번째 수준에서 t multiple radii rk을 설정한다.


위의 복셀 세트 추상화는 3D 복셀 CNN의 여러 수준에서 수행되며, 복셀별 feature f(lk)(lj)에서 3D 복셀 CNN 기반 기능 학습을 모두 통합하는 feature f(pv)i 생성. 키포인트 pi에 대한 multi스케일 semantic feature을 생성할 수 있습니다. 복셀에서의 포인트넷 기반 기능 학습은 추상화를 Eq.(2)로 설정합니다. 또한 pi의 3D 좌표 또한 정확한 위치 정보를 보존합니다.

이 과정을 통해 각 keypoint의 각 feature volume에서의 feature vector을 얻습니다.

3. Extended VSA Module.

각 layer 당 구한 key point feature들을 모으고 거기에 추가로 raw 데이터에 대한 set abstraction과 bird eye view에서 구한 key point feature까지 합쳐주어 최종적인 key point feature을 구성하게 됩니다. ⇒ 더 3d 구조 정보 보존 잘하고, 최종 large margin으로 인식 성능 증가.

  • Raw data는 voxelization을 하면서 발생하는 quantization loss를 복구해주기위해 추가해주었고
  • Bird eye view는 z축을 따라 더 넓은 receptive filed를 갖기위해 추가해 주었습니다.
  • Predicted key point weighting Module (PKW module)
    지금까지 Voxel set abstraction module을 통해 key point feature을 학습하는 방법을 보았습니다.이 모듈은 foreground keypoint가 proposal refinement과정에서 background keypoint보다 더 많은 기여를 해야한다는 아이디어를 구현한 것입니다.따로 segmentation label없이 ground truth 3D box 내부의 point는 foreground로 외부의 point는 background로 학습시켰습니다.학습시 focal loss를 통해 트레이닝 셋의 분포가 unblanced한 문제를 해결해 주었습니다.
  1. 실제 동작시 학습된 네트워크를 통해 foreground confidence를 keypoint feature 에 곱해줌으로써 foreground인 keypoint가 refinement에 더 큰 영향을주도록 하였습니다.
  2. Point cloud Segmentation network를 추가하여 해당 Point가 foreground인지 background인지 confidence를 계산하여 weight로 주어집니다.
  3. 저자는 여기에 predicted key point weighting module을 추가해주었습니다.

Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement

앞의 과정들을 통해 적은 수의 keypoint가 multi-scale semantic feature의 정보를 갖도록 만들어주었습니다.

이번에는 RoI-grid pooling module을 통해 Keypoint-to-grid RoI feature abstraction을 진행합니다.

각 3D proposal 안에서 6x6x6 grid point(총 216개의 grid point)를 uniformly하게 샘플링 한 후 앞에서 사용한 set abstraction operation을 이용하여 이번엔 RoI 안에 grid point의 feature을 keypoint들을 통해 encoding 해줍니다.

기존의 방법들은 box안의 point feature을 average하여 RoI feature을 encoding하였는데, set abstraction operation을 통해 더 flexible한 receptive field로 더 많은 contextual information을 얻을 수 있었다고 합니다.

심지어 RoI boundary 바깥의 keypoint의 information까지 encoding하고 이를통해 더 refinement성능을 높일 수 있었다고 합니다.

여기에서 왜 굳이 proposal box 바깥의 keypoint까지 encoding하는 것이 필요하냐는 의문을 제기할 수 있습니다.

어떤점이 좋다 라는 것은 논문에 나와있진 않지만, boundary 근처에 있는 keypoint는 boundary 안쪽과 바깥쪽 모두의 정보를 encoding하여 갖고있을 것 이므로 boundary를 결정하는데 중요한 정보로 쓰일 수 있기 때문이라고 개인적으로 생각합니다.

저자가 이 부분을 굳이 동영상 발표 내용에 넣은 만큼 분명 의미가 있을 것이라고 생각합니다.

Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement

RoI-grid pooling module을 설명하는 이미지 입니다. 빨간점이 grid point이고, 노란점이 key point, 살구색같은 작은 점들이 raw point입니다.   Grid point에서 다양한 거리(receptive field)를 통해 key point set을 만들어줍니다. 이렇게 모은 key point feature set에서 T개를 샘플링. multilayer-perceptron layer. max pooling layer을 통해 grid point feature을 생성합니다.

3d proposal refinement and confidence prediction

앞에서 얻은 각 3D proposal의 grid point feature들을 2-layer MLP을 통해 256 feature dimension을 갖는 RoI feature vector로 만들어줍니다.

이후 두개의 branch로 이루어진 네트워크를 통해 confidence와 box refinement를 계산합니다.

첫번째 식은 training 시 각 candidate RoI의 confidence가 단순히 0또는 1을 갖는 것이 아닌, 더 좋은 candidate일 수록 1에 가깝게, 안좋은 candidate일 수록 0에 가깝게 confidence를 예측하도록 학습하기 위해 각 candidate RoI의 confidence를 IOU를 통해 계산하는 식이다. 이는 test시 일반적으로 0또는 1로classification하는 것보다 어떤 box proposal이 더 좋은지 판단을 더 잘하게 되는 네트워크가 될 수 있습니다.

두번째 식은 confidence brach의 loss function으로 cross-entropy loss를 minimize합니다.

Box refinement branch에서는 location residual(오차)(center, size, orientation같은)를 예측하고 smooth L1 loss function을 통해 optimize됩니다.

Training loss

Loss function에 대해 살펴보겠습니다.

전체 loss는  region proposal loss + key point segmentation loss + proposal refinement loss 입니다.

Region proposal loss  L rpn은 region proposal network(RPN)에서 두개의 brach의 loss입니다.

L cls 는 anchor classification loss 이고 smooth L1 loss는 box regression branch의 loss 입니다.

L seg는 앞에서 PKW module에서 segmentation network의 loss입니다.

Proposal refinement loss L rcnn은 앞에서 살펴본 confidence brach와 box refinement branch의 Loss입니다.

3. conclustion

기존의 grid 방식과 point 방식을 integrate하면서 큰 성능향상을 하였습니다.

integrate 과정에 keypoint를 추가하여 set abstraction 방식을 2 step으로 만들어줌으로써 더 부드럽게 이어지고 계산량도 줄일 수 있었다고 생각합니다.

이 논문만 봐도 하이퍼파라미터로 voxel크기, 각 feature volume 별 radius를 2개씩 총 12개, grid point set sbastraction에서 2개. 적어도 하이퍼파라미터만 15개를 설정해주어야합니다.

728x90
반응형

댓글