3D 객체 탐지는 3D 데이터를 표현하는 방식이 크게 두 가지가 있다. Voxel기반과 Point기반 표현이 있다.
데이터 표현 방식
Voxel
Point
탐지 정확도
낮음
높음
계산비용
낮음
매우 높음
특징 추출
적합함
적합하지않음
Voxel-RCNN은 Raw Point Cloud의 정확한 위치가 고성능 3D detection에 필수적이지 않으며, Voxel의 대략적인 그레인 크기(coarse granularity)도 충분한 탐지 정확도를 제공하는 것을 발견해 간단하지만 효과적인 Voxel 기반 프레임 워크를 설계한 것을 설명함 Voxel특징을 최대한 활용하여, 최첨단 Point 기반 모델과 비교할만한 탐지 정확도를 훨씬 적은 cost로 달성하는 것을 확인함
Voxel-RCNN은 3D backbone,2D backbone(BEV) 영역 제안 네트워크(Region Proposal Network),탐지 헤드(Detect Head)로 구성되는 것을 설명함
Coarse Granularity : Voxel의 크기를 더 큰 Voxel크기를 사용하여 계산 비용을 줄이고 객체 탐지의 정확도를 유지하는데 성공한 기술 (세부 정보가 희생되더라도 객체의 전체적인 특징을 파악하는데 문제가 없다고 설명함)
Fine Granularity : PointNet,PointNet++와 같은 기술이 대표적이며 3D 점데이터를 직접 다루어 각 점의 세부적인 위치 정보를 최대한 보존하면서 연산을 수행하는 기술 높은 정확도와 세밀한 정보를 보존하지만 연산 효율이 매우 낮은 단점이 존재함
Figure1
(a) Sparse-to-Dense 3D Object Detector(STD) : PointNet++를 통해 포인트의 점별 특징을 추출후 점 기반 특징에 기초하여 객체 영역을 제안하고 추출된 포인트 특징을 Voxel형식으로 변환하여 Voxel화된 데이터를 IOU및 박스 예측 분기로 전달하는 방식이다
특징: 점별 처리,Sparse-to-Dense방식으로 계산량이 매우크다
(b) PV-RCNN : 포인트 클라우드를 Voxel로 변환하여 3D 컨볼루션 네트워크에서 처리하여 3D특징을 추출한 후 중요한 포인트(논문에서는 Keypoints)를 샘플링하여 Point-wise특징을 추출하여 RoI영역에서 특징을 집계하여 박스 정제를 수행후 RPN에서 후보 객체를 생성한다.
특징:Voxel과point의 장점을 결합하여 높은 정확도와 효율성을 제공한다고 설명된다.
(c) Voxel R-CNN :Voxel의 효율성을 최대한 활용하기 위해 새로운 기법인 Voxel RoI Pooling기법을 제시함 3D특징 볼륨에서 RoI특징을 추출하여 정제된 박스 생성하여 메모리 효율성을 높이고 지역적 특징을 집계함
특징: Voxel기반의 방식의 효율성을 유지하면서 Point만큼의 정확도를 가짐
요소
(a) STD
(b) PV-RCNN
(c) Voxel R-CNN
주요 입력 방식
포인트 클라우드
포인트 + Voxel 혼합
Voxel
주요 특징 추출 방법
PointNet++ 기반 점별 특징
Voxel 및 Keypoint 특징
Voxel RoI Pooling
효율성
낮음
중간
높음
정확도
중간
높음
높음
3D 문맥 정보
제한적
제한적
완전 보존
Reflection on 3D Object Detection
논문에서는 대표적인 3D 객체탐지기법으로 SECOND,PV-RCNN을 소개하고있다.
SECOND: Voxel화된 데이터를 3D Convolusion에 입력하여 특징을 추출한다. 추출후 3D경계 박스와 신뢰점수를 직접출력하는 모델이다.
특징: 계산 효율성이 높고 괜찮은 성능을 보이지만 객체 제안을 정제하는 능력이 부족하여 탐지성능이 제한된다.
PV-RCNN : SECOND를 확장하여 3D구조 정보를 보존하기 위해 Keypoints Branch를 추가한 방법이다. Voxel Set Abstraction (VSA)를 도입하여 다중 스케일 3D Voxel특징을 Keypoints를 통합하고 RPN의 특징은 RoI-grid 풀링을 통해 Keypoints에서 추출되며 위 과정을 통해 박스 정제가 이루어진다.
Table1
SECOND 모델 위에 BEV(Bird-Eye-View) Detect Head를 추가했을 때의 성능 비교 표 KITTI 검증 세트(KITTI val set)의 자동차(Car) 클래스에 대해 11개의 Recall 위치에서 평균 정밀도(Average Precision, AP)를 기준으로 평가된 모습이다.
BEV representation으로는 한계가 있음을 알 수 있다. 3D structure을 사용한 PV-RCNN의 정확도가 더 높게 나오는 것을 확인할 수 있다.
Table2
PV-RCNN의 각 구성요소에 대한 실행 시간 비교한 결과이다. KITTI 검증 세트(KITTI val set)의 3,769개 샘플에 대해 평균값을 기반으로 계산한 결과이다.
3D 백본 네트워크를 통해 특징을 추출 생성된 3D 특징 볼륨은 BEV(Bird’s Eye View) 표현으로 변환 마지막으로, 2D 백본 네트워크와 Region Proposal Network(RPN)가 탐지를 수행하기 위해 적용된다.
위 표에서 보면 VSA단계에서 전체과정의 절반의 시간이 걸리는 것을 볼 수 있다.
L1 norm(Manhattan Distance): 특정 방향으로만 움직일수 있는 경우 두 벡터 간의 최단거리를 찾는데 사용되는 방법이다.
3D Backbone Network: 3D CNN(Sparse Convolution)을 활용하여 Voxel화된 데이터로부터 희소 3D 특징을 추출하여 생성한다.
Second모델을 인용하여 사용했으므로 Sparse Convolution을 사용함
3D To BEV Representation: 3D 특징 볼륨을 BEV표현으로 변환하는 역할
2D Backbone Network & Region Proposal Network (RPN): 2D CNN으로 BEV 표현에서 추가 특징을 추출하고, RPN을 통해 초기 영역 제안생성
Voxel RoI Pooling: RPN이 생성한 3D 영역 제안에서 Voxel RoI Pooling을 사용하여 3D 특징을 직접 추출
Detect Head: RoI 특징을 기반으로 최종적으로 **Bounding Box(경계 상자)**와 분류(Classification) 결과를 예측
RoI Pooling단계: RPN에서 생성된 객체의 위치 후보 영역을 입력으로 받아 특징 맵 내에서 차지하는 부분을 확인하여 특징을 고정된 크기로 변환 (Max Pooling 또는 Average Pooling을 통해)
RoI Pooling은 특징 맵 크기를 표준화하여 Detect Head에서 효율적으로 처리가 가능하게 한다
고정된 출력 크기로 변환하므로 계산 효율성을 크게 향상시킨다
특히 3D 객체 탐지에서는 RoI Pooling이 Voxel 특징 볼륨의 세부 정보를 유지하면서도 효율적인 처리를 가능하게 한다.
비어있지 않은Voxel 중심점 집합
vi는 Voxel 중심점의 3D 좌표를 나타낸다.
특징 벡터
Voxel 중심의 3D 좌표는 인덱스(indices), Voxel 크기(voxel size), 그리고 **포인트 클라우드의 경계(point cloud boundaries)를 사용하여 계산한다.
Figure3
Voxel Query: 3D 특징 볼륨에서 이웃 Voxel을 찾기 위한 새로운 연산인 Voxel Query를 제안함
(a) Ball Query: 비정렬된 포인트 클라우드에서 특정 쿼리 포인트 주위의 이웃 포인트를 찾는 알고리즘?
반경(Radius)을 기준으로 이웃을 탐색한다. 계산량이 크며 비정렬된 데이터 구조로 인해 효율성이 낮다.
(b) Voxel Query: Voxel 기반 공간에서 쿼리 포인트와 인접한 이웃 Voxel을 찾는 알고리즘?
간단한 인덱스 변환으로 이웃을 탐색한다고 설명함
예를 들어 쿼리 Voxel의 26개 이웃은 오프셋를 사용해 즉시 계산이 가능하다고 설명됨
Ball Aurery보다 효율적이며 시간 복잡도가 낮다고 설명됨
맨하탄 거리 계산 공식이 사용된다고 설명됨
시간 복잡도
Ball Query: O(N)
Voxel Auery: O(K) K=이웃 수
Figure4
(a) Original PointNet Module: Voxel 좌표와 특징 입력-> Voxel Query(이웃 Voxel 그룹화)-> PointNet 모듈(Voxel좌표와 특징 벡터 결합MLP처리후 Max Pooling) 위 과정이 반복됨
(b) Accelerated PointNet Module: 전체 Grid Point에 대해 병렬적으로 Voxel Query를 수행하고 PointNet연산을 적용하여 연산량이 감소됨
Accelerated Local Aggregation: Voxel Query를 사용하더라도, Voxel RoI Pooling에서의 지역 집계 연산(즉, PointNet 모듈)은 여전히 높은 계산 복잡도를 수반합니다. Figure 4 (a)에서 보이는 바와 같이, 총 M개의 그리드 포인트가 존재 각 그리드 포인트에 대해 K개의 Voxel이 그룹화됩니다. 그룹화된 특징 벡터의 차원은 C+3으로, 여기에는 C-차원의 Voxel 특징과 3차원의 상대 좌표가 포함된다.
그룹화된 Voxel은 많은 메모리를 차지하며, FC(완전 연결) 레이어를 적용할 때 대규모 계산 FLOPs를 초래한다고 설명
Voxel Query의 계산 복잡도를 더욱 줄이기 위해 가속화된 PointNet 모듈을 추가로 도입하여 Voxel 특징과 상대좌표 두 개의 스트림으로 분해한다고 설명함
Backbone and Region Proposal Networks
3D Backbone
input: Voxel화된 포인트 클라우드
3D CNN을 사용해 포인트 클라우드의 공간적 문맥(spatial context)을 추출,입 력 데이터를 점진적으로 고수준(high-level) 특징 볼륨으로 변환
output: 3D 특징 볼륨을 생성하며, 이를 Z 축을 따라 쌓아 BEV(Bird's Eye View) 특징 맵으로 변환
2D Backbone Network
3×3 컨볼루션 레이어 블록을 사용하여 입력 특징 맵에서 추가적인 공간적 특징을 추출후 출력 특징을 업샘플링(Upsampling)하여 다중 스케일에서 추출된 특징을 결합하여 풍부한 문맥정보를 제공한다고 설명
Detect Head
RoI Pooling레이어에서 출력된 특징을 받아 2개의MLP를 사용해 RoI특징을 flatten된 특징 벡터로 변환한다.
Bounding Box Regression Branch: 3D Region Proposal과 Ground Truth Box 사이의 차이(잔여량)를 예측
Confidence Prediction Branch: 예측된 3D 경계 상자가 실제 객체를 얼마나 잘 포함하고 있는지 평가 IoU를 기반으로 계산