논문 링크: 1711.06396
저자: Yin Zhou, Oncel Tuzel (Apple Inc)
발행일: 2017. 11. 17
0. Abstract
3D 객체 탐지의 새로운 패러다임, VoxelNet
3D 포인트 클라우드에서 정확한 객체 탐지는 자율 주행, 가정용 로봇, 증강·가상 현실 등 다양한 분야에서 중요한 문제다. 기존의 방법들은 Bird’s Eye View(BEV) 프로젝션과 같은 수동적 특징 공학(feature engineering) 기법을 활용해 포인트 클라우드를 Region Proposal Network(RPN)과 연계하는 방식에 의존해왔다. 하지만, 이러한 기법은 3D 정보를 충분히 활용하지 못하는 한계를 갖는다.
이를 해결하기 위해, 본 논문에서는 VoxelNet을 제안한다. VoxelNet은 엔드투엔드 방식의 3D 탐지 네트워크로, 특징 추출(feature extraction)과 바운딩 박스 예측(bounding box prediction)을 단일 네트워크에서 수행한다. 핵심 아이디어는 포인트 클라우드를 3D 복셀(voxel)로 변환하고, 각 복셀 내 포인트 정보를 학습할 수 있도록 Voxel Feature Encoding(VFE) Layer를 도입하는 것이다.
이 방식을 통해, 포인트 클라우드는 효과적인 볼륨 기반 표현(volumetric representation)으로 변환되며, RPN과 결합하여 최종적으로 정확한 객체 탐지 결과를 도출할 수 있다. 실험 결과, KITTI 자동차 탐지 벤치마크(KITTI Car Detection Benchmark)에서 VoxelNet은 기존의 LiDAR 기반 3D 탐지 기법을 크게 능가하는 성능을 보였다. 또한, 보행자 및 자전거 탐지에서도 뛰어난 성능을 기록하며, 다양한 기하학적 구조를 가진 객체를 효과적으로 표현할 수 있음을 입증했다.
1. Introduction
3D 포인트 클라우드 기반 객체 탐지의 중요성
3D 포인트 클라우드 기반 객체 탐지는 자율 주행, 가정용 로봇, 증강·가상 현실과 같은 다양한 실제 응용 분야에서 핵심 기술로 자리 잡고 있다. 기존의 이미지 기반 객체 탐지 기법과 비교했을 때, LiDAR 센서는 정확한 깊이(depth) 정보를 제공할 수 있어, 객체의 정확한 위치 파악 및 형태 분석에 유리하다.
그러나, LiDAR 포인트 클라우드는 매우 희소(sparse)하며, 포인트 밀도가 일정하지 않다는 한계를 가진다. 이는 다음과 같은 요인으로 인해 발생한다.
- 센서의 비균일한 샘플링 방식
- 탐지 범위 및 가려짐(occlusion)
- 상대적인 위치 및 자세(orientation) 변화
이러한 문제를 해결하기 위해, 기존 연구들은 포인트 클라우드를 2D 이미지처럼 변환한 후 특징을 추출하는 방식 또는 3D 복셀(voxel grid)로 변환한 후 수작업으로 특징을 생성하는 방식을 주로 사용해왔다. 하지만, 이러한 접근법은 3D 정보의 손실을 초래하고, 객체 탐지의 불변성을 효과적으로 반영하지 못하는 한계를 갖는다.
기존 접근 방식과 한계
기계 학습 및 딥러닝이 발전하면서, 객체 탐지 분야에서는 수작업 특징 추출(feature engineering)에서 신경망을 활용한 자동 특징 학습 방식으로의 전환이 이루어졌다. 이 흐름 속에서 Qi et al.(2017)이 제안한 PointNet은 포인트 클라우드에서 직접 특징을 학습하는 혁신적인 방법으로 주목받았다.
- PointNet: 3D 객체 인식(object recognition), 3D 객체 부분 분할(part segmentation), 포인트별 의미론적 분할(point-wise semantic segmentation) 등의 작업에서 높은 성능을 기록.
- PointNet++(2017): 지역 구조(local structures)를 학습할 수 있도록 개선됨.
그러나, PointNet 계열 모델들은 일반적으로 1,000개 정도의 포인트 데이터를 처리하도록 설계되었으며, LiDAR 포인트 클라우드(약 100,000개 포인트 이상)를 처리하기에는 계산량 및 메모리 요구량이 매우 크다는 문제가 있다.
또한, Region Proposal Network(RPN)은 강력한 성능을 자랑하는 객체 탐지 기법이지만, 밀집(dense)하고 구조화된 텐서 데이터(e.g., 이미지, 영상)를 입력으로 요구하기 때문에, 희소한 LiDAR 포인트 클라우드 데이터에는 적절히 적용하기 어려운 단점이 있다.
VoxelNet: 새로운 3D 객체 탐지 네트워크
위와 같은 한계를 극복하기 위해, 본 논문에서는 VoxelNet을 제안한다. VoxelNet의 주요 특징은 다음과 같다.
- 엔드투엔드 방식의 3D 객체 탐지 프레임워크
- Voxel Feature Encoding(VFE) Layer 도입 → 각 복셀 내 포인트 간 상호작용(inter-point interaction) 학습
- VFE Layer를 여러 개 쌓아(Stacking) 지역 3D 형태 정보를 효과적으로 표현
- 3D 컨볼루션(3D Convolution)을 활용하여 복셀 특징을 더욱 효과적으로 학습
- RPN과 결합하여 최종적인 3D 객체 탐지 수행
VoxelNet의 전체적인 과정은 다음과 같다.
- 포인트 클라우드를 균일한 크기의 3D 복셀(voxel)로 변환
- 각 복셀을 Voxel Feature Encoding(VFE) Layer를 통해 특징 벡터로 변환
- 3D 컨볼루션을 사용해 공간 정보를 더욱 효율적으로 집계
- RPN을 활용하여 최종적인 3D 객체 탐지 수행
VoxelNet은 희소한 포인트 클라우드 데이터를 효과적으로 활용할 수 있으며, 수작업 특징 추출 없이도 강력한 탐지 성능을 발휘할 수 있다. 또한, 병렬 연산을 통해 연산 효율을 극대화하며, 3D 탐지에서 기존 LiDAR 기반 방법보다 높은 성능을 달성하였다.
실험 결과 및 기대 효과
VoxelNet의 성능은 KITTI 데이터셋을 활용한 실험을 통해 검증되었다. 실험 결과, VoxelNet은 기존의 LiDAR 기반 3D 탐지 모델보다 훨씬 뛰어난 성능을 기록했으며, 특히 보행자 및 자전거 탐지에서도 우수한 결과를 보여주었다.
VoxelNet의 장점은 다음과 같다.
- 3D 포인트 클라우드 데이터를 효과적으로 활용
- 엔드투엔드 방식으로 수작업 특징 추출 없이도 강력한 성능 발휘
- 병렬 연산을 활용하여 높은 연산 효율 달성
- 다양한 기하학적 구조의 객체를 효과적으로 표현 가능
VoxelNet은 향후 자율 주행, 로봇 비전, 증강·가상 현실 등의 분야에서 정확한 3D 객체 탐지를 위한 핵심 기술로 활용될 가능성이 높다.
1.1. Related Work
3D 센서 기술 발전과 기존 연구들
3D 센서 기술이 빠르게 발전하면서, 연구자들은 포인트 클라우드에서 객체를 탐지하고 위치를 파악하는 효율적인 표현 방식을 개발해 왔다. 초기 연구들은 hand-crafted features을 활용하여 3D 객체의 모양을 분석하는 방식이었다. 대표적인 연구들 [39, 8, 7, 19, 40, 33, 6, 25, 1, 34, 2]에서는 3D 형상이 충분히 풍부한 경우에는 만족스러운 성능을 보였지만, 복잡한 장면에서는 데이터에서 필요한 불변성을 학습하지 못해 성능이 제한적이었다. 이러한 한계로 인해 자율 주행과 같은 비제어 환경(uncontrolled scenarios)에서의 적용이 어려웠다.
이미지 기반 3D 객체 탐지 기법
이미지는 세밀한 텍스처 정보를 포함하고 있기 때문에, 일부 연구들은 2D 이미지에서 3D 바운딩 박스를 추론하는 방법을 제안했다 [4, 3, 42, 43, 44, 36]. 하지만, 이러한 접근 방식은 깊이(depth) 추정의 정확도에 의해 성능이 제한된다는 단점이 있다. 따라서, 보다 정확한 3D 탐지를 위해 LiDAR 센서를 활용하는 연구들이 주목받기 시작했다.
LiDAR 기반 3D 객체 탐지 기법
LiDAR 기반 3D 탐지 기법 중 일부는 포인트 클라우드를 3D 복셀(voxel grid)로 변환하는 방식을 사용한다.
- [41, 9]: 각 비어있지 않은 복셀(non-empty voxel)에 대해 6개의 통계적 특징을 계산하여 표현.
- [37]: 다양한 지역 통계(local statistics)를 결합하여 복셀을 표현하는 방식.
- [38]: 복셀 그리드 상에서 절단된 서명 거리(truncated signed distance)를 계산하는 기법.
- [21]: 3D 복셀 그리드를 이진(binary) 방식으로 인코딩하는 방법.
- [5]: Bird’s Eye View(BEV)와 전방 시점(cylindrical coordinates)에서 다중 채널(feature map)을 계산하여 표현하는 방식.
또한, 일부 연구들은 포인트 클라우드를 2D 시점으로 변환한 후, 이미지 기반 특징 추출 기법을 활용하는 방법을 제안했다 [28, 15, 22]. 하지만, 이러한 방식들은 포인트 클라우드의 3D 구조 정보를 충분히 활용하지 못한다는 한계가 있다.
멀티모달 융합 기법
일부 연구들은 이미지와 LiDAR 데이터를 결합하여 탐지 성능을 향상시키는 방법을 제안했다 [10, 16, 5]. 이러한 방법들은 LiDAR 단독 모델보다 작은 객체(보행자, 자전거) 탐지 성능이 우수하며, 먼 거리의 객체 탐지에서도 높은 성능을 보인다. 이는 카메라가 LiDAR보다 훨씬 더 많은 데이터를 수집할 수 있기 때문이다.
하지만, 이러한 방법들은 추가적인 카메라 장비가 필요하며, LiDAR와 정확한 동기화 및 보정(calibration)이 필수적이라는 단점이 있다. 또한, 센서 고장(sensor failure)에 취약하여 실용적인 적용이 제한될 수 있다. 따라서, 본 연구에서는 LiDAR 단독 탐지 방법(LiDAR-only detection)에 초점을 맞춘다.
1.2 Contributions
본 논문에서는 VoxelNet이라는 새로운 3D 객체 탐지 네트워크를 제안하며, 주요 기여는 다음과 같다.
1. 엔드투엔드 학습이 가능한 새로운 3D 탐지 아키텍처
VoxelNet은 희소한 3D 포인트 클라우드에서 직접 학습이 가능한 엔드투엔드 딥러닝 모델이다. 기존의 수작업 특징 추출 방식에서 발생하는 정보 병목 현상(information bottleneck)을 제거하고, 3D 데이터를 효율적으로 학습할 수 있도록 설계되었다.
2. 복셀 기반 3D 특징 학습 및 병렬 처리 기법
VoxelNet은 포인트 클라우드를 3D 복셀로 변환한 후, 각 복셀 내의 포인트들을 학습할 수 있도록 Voxel Feature Encoding (VFE) Layer를 도입했다. 또한, 3D 컨볼루션(3D Convolution)을 활용하여 공간 정보를 집계하며, 복셀 그리드에서 효율적인 병렬 연산이 가능하도록 설계되었다.
3. KITTI 데이터셋을 활용한 실험 및 최고 수준의 성능 검증
VoxelNet의 성능을 평가하기 위해 KITTI 벤치마크 데이터셋에서 실험을 수행했으며,
- car
- pedestrian
- cyclist
탐지 부문에서 최고 수준(state-of-the-art)의 성능을 기록하였다.
2. VoxelNet
2.1 Architecture
VoxelNet은 다음의 세 가지 주요 블록으로 구성된다.
- Feature Learning Network: 포인트 클라우드에서 의미 있는 특징을 추출하는 네트워크
- Convolutional Middle Layers: 지역적 정보들을 통합하여 3D 특징을 학습하는 중간 레이어
- Region Proposal Network (RPN): 3D 객체 후보 영역을 생성하는 네트워크
2.1.1 Feature Learning Network
Feature Learning Network는 포인트 클라우드를 복셀(voxel) 단위로 변환하고, 각 복셀의 특징을 학습하는 과정으로 구성된다.
1) Voxel Partition (복셀 분할)
주어진 포인트 클라우드를 동일한 크기의 3D 복셀(voxel)로 분할한다.
- 포인트 클라우드는 일반적으로 $D, H, W$범위의 3D 공간을 포함하며, 이를
- Z축 방향: $D$
- Y축 방향: $H$
- X축 방향: $W$
로 정의한다.
- 복셀의 크기를 $vD, vH, vW$라고 할 때, 3D 복셀 그리드는 다음 크기를 갖는다.
$$D' = \frac{D}{vD}, \quad H' = \frac{H}{vH}, \quad W' = \frac{W}{vW}$$
즉, 전체 3D 공간을 작은 복셀 단위로 나누어 균일한 크기의 그리드 형태로 표현한다.
2) Grouping (포인트 그룹화)
- 포인트 클라우드의 밀도는 공간에 따라 다르게 분포한다.
- 거리에 따라 샘플링이 비균일하게 이루어지며, 가려짐(occlusion)과 객체의 상대적 위치 등으로 인해 각 복셀 내의 포인트 개수가 다를 수 있다.
- 따라서, 각 복셀 안의 포인트를 그룹화하여 복셀 단위의 특징을 추출할 수 있도록 한다.
3) Random Sampling (랜덤 샘플링)
- 일반적인 LiDAR 포인트 클라우드는 100,000개 이상의 포인트를 포함한다.
- 하지만 모든 포인트를 처리하면 메모리 및 연산 비용이 크게 증가하므로, 각 복셀에서 최대 TT 개의 포인트만 랜덤 샘플링한다.
- 이 과정은 다음과 같은 목적을 가진다.
- 연산량 감소 (메모리 및 연산 효율성 증가)
- 포인트 클라우드 내 샘플링 편향 감소 (학습 과정에서 다양한 패턴을 반영)
4) Stacked Voxel Feature Encoding (복셀 특징 인코딩)
VoxelNet의 핵심 아이디어는 Voxel Feature Encoding (VFE) Layer를 활용하여 복셀 내 포인트들의 관계를 학습하는 것이다.
- 각 복셀 $V$은 포인트 집합 $\{p_i\}$으로 표현되며, 개별 포인트는 다음과 같은 정보로 구성된다.
$$p_i = [x_i, y_i, z_i, r_i]^T \in \mathbb{R}^4$$
여기서,
- $x_i, y_i, z_i$는 포인트의 3D 좌표
- $r_i$는 반사 강도(reflectance)
- 먼저, 복셀 내 모든 포인트의 평균(centroid)을 계산한다.
$$(v_x, v_y, v_z) = \frac{1}{t} \sum_{i=1}^{t} (x_i, y_i, z_i)$$
- 각 포인트를 평균 기준으로 상대 좌표로 변환하여, 입력 특징 벡터를 확장한다.
$$p_i' = [x_i, y_i, z_i, r_i, x_i - v_x, y_i - v_y, z_i - v_z]^T \in \mathbb{R}^7$$
- Fully Connected Network (FCN)를 활용하여 포인트의 특징을 추출한다.
- FCN은 선형 변환(Linear Layer) → 배치 정규화(Batch Normalization, BN) → 활성화 함수(ReLU) 로 구성된다.
- 복셀 내 모든 포인트에 대해 Max Pooling을 적용하여 지역적 정보를 집계한다.
$$f_V = \max_{i=1}^{t} f_i$$
- 최종적으로, 각 포인트의 개별 특징과 지역적 특징을 병합(concatenation)하여 최종적인 특징 벡터를 얻는다.
$$f_{\text{out}, i} = [f_i^T, f_V^T]^T \in \mathbb{R}^{2m}$$
이 과정을 VFE Layer를 여러 개 쌓아서(Stacking) 수행하면, 복셀 내 포인트 간의 관계를 학습하고 더욱 정교한 3D 형상 정보를 반영할 수 있다.
5) Sparse Tensor Representation (희소 텐서 표현)
- 비어 있지 않은(non-empty) 복셀만을 사용하여 희소 행렬(sparse matrix)로 변환한다.
- 결과적으로, 4D 희소 텐서로 표현된다.
$$C \times D' \times H' \times W'$$
- 전체 포인트 클라우드의 90% 이상이 빈 복셀(empty voxel)인 경우가 많으므로,
- 메모리 사용량 감소
- 연산량 최적화
가 가능하다.
2.1.2 Convolutional Middle Layers (중간 컨볼루션 레이어)
- 입력으로 받은 복셀 단위 특징 맵을 3D 컨볼루션을 통해 처리한다.
- BN(Batch Normalization)과 ReLU를 적용하여 학습 효율성을 증가시킨다.
- 컨볼루션 레이어를 통해 더 넓은 공간적 문맥(spatial context)을 학습할 수 있도록 한다.
2.1.3 Region Proposal Network (RPN)
- RPN은 VoxelNet의 최종 3D 객체 탐지 결과를 생성하는 역할을 한다.
- 입력으로 Convolutional Middle Layers에서 추출된 특징 맵을 받는다.
- RPN의 구조는 다음과 같다.
- 3개의 블록(block)으로 구성
- 각 블록의 첫 번째 레이어는 stride=2인 컨볼루션을 사용하여 다운샘플링
- 이후 stride=1인 컨볼루션을 여러 번 적용하여 특징 추출
- 각 블록의 출력을 업샘플링(upsampling)하여 고해상도 특징 맵 생성
- 최종적으로,
- 확률 점수 맵(Probability Score Map)
- 회귀 맵(Regression Map)
으로 변환하여 3D 바운딩 박스 예측을 수행
이로써 VoxelNet은 3D 포인트 클라우드 데이터를 엔드투엔드 방식으로 처리하여 객체 탐지를 수행할 수 있는 모델이 된다.
2.2 Loss Function
VoxelNet은 3D 객체 탐지를 위해 분류(Classification) 손실과 회귀(Regression) 손실을 결합한 총 손실 함수를 사용한다.
1) Parameterization of 3D Bounding Box
3D 객체 탐지를 위해 바운딩 박스를 다음과 같이 정의한다.
- Ground Truth 바운딩 박스:
$$(x_c^g, y_c^g, z_c^g, l^g, w^g, h^g, \theta^g)$$
- $(x_c^g, y_c^g, z_c^g)$ : 바운딩 박스 중심 좌표
- $(l^g, w^g, h^g)$ : 바운딩 박스의 길이, 너비, 높이
- $\theta^g$ : Z축을 기준으로 한 Yaw 회전각
- Anchor 박스:
$$(x_c^a, y_c^a, z_c^a, l^a, w^a, h^a, \theta^a)$$
- 기존 RPN과 유사하게 미리 정의된 Anchor 박스를 사용하여, Ground Truth와의 차이를 보정하는 방식으로 회귀를 수행한다.
- 회귀 대상(Residual Vector) $u$
$$u = (x, y, z, l, w, h, \theta)$$
각 요소는 다음과 같이 정의된다.
$$x = \frac{x_c^g - x_c^a}{d_a}, \quad y = \frac{y_c^g - y_c^a}{d_a}, \quad z = \frac{z_c^g - z_c^a}{h_a}$$ $$l = \log \left( \frac{l^g}{l^a} \right), \quad w = \log \left( \frac{w^g}{w^a} \right), \quad h = \log \left( \frac{h^g}{h^a} \right)$$ $$\theta = \theta^g - \theta^a$$
여기서,
$$d_a = \sqrt{(l^a)^2 + (w^a)^2}$$
는 Anchor 박스의 대각선 길이이다.
이를 통해 중심 좌표 변환을 정규화하여, 학습의 안정성을 높인다.
2) Total Loss Function
VoxelNet의 총 손실 함수는 분류 손실(Classification Loss)과 회귀 손실(Regression Loss)을 결합한 형태로 정의된다.
$$L = \frac{1}{N_{\text{pos}}} \sum_{i=1}^{N_{\text{pos}}} L_{\text{cls}}(p_i^{\text{pos}}, 1) + \frac{1}{N_{\text{neg}}} \sum_{j=1}^{N_{\text{neg}}} L_{\text{cls}}(p_j^{\text{neg}}, 0) + \frac{\lambda}{N_{\text{pos}}} \sum_{i=1}^{N_{\text{pos}}} L_{\text{reg}}(u_i, u_i^g)$$
여기서,
- $N_{\text{pos}}, N_{\text{neg}}$는 각각 양성(positive)과 음성(negative) 앵커 개수
- $p_i^{\text{pos}}, p_j^{\text{neg}}$는 Softmax 출력을 통해 얻어진 객체 존재 확률
- $L_{\text{cls}}$는 이진 교차 엔트로피(Binary Cross Entropy, BCE) 손실
- $L_{\text{reg}}$는 회귀 손실로 Smooth L1 Loss 사용
- $\lambda$는 분류와 회귀 손실 간의 균형을 조절하는 가중치
- Smooth L1 손실 함수는 다음과 같이 정의된다.
$$L_{\text{reg}}(u, u^g) = \begin{cases} 0.5 (u - u^g)^2, & \text{if } |u - u^g| < 1 \\ |u - u^g| - 0.5, & \text{otherwise} \end{cases}$$
Smooth L1 손실은 L2 손실보다 큰 오차에 덜 민감하여, 학습이 보다 안정적으로 이루어진다.
2.3 Efficient Implementation
GPU에서 3D 포인트 클라우드를 직접 처리하는 것은 메모리 사용량과 연산량이 매우 크다.
이를 해결하기 위해, VoxelNet은 희소한 포인트 클라우드를 조밀한 텐서(dense tensor)로 변환하는 최적화된 방식을 적용한다.
1) 희소한 포인트 클라우드를 조밀한 텐서로 변환
VoxelNet은 비어있지 않은(non-empty) 복셀만을 저장하여 연산을 최적화한다.
- 입력 텐서 구조
- $K \times T \times 7$ 크기의 Feature Buffer를 생성
- $K$: 최대 활성 복셀 개수 (non-empty voxel)
- $T$: 각 복셀당 최대 포인트 개수
- $7$: 포인트 당 특징 차원
- 포인트 클라우드를 랜덤 섞기(randomization) 수행하여, 불균형한 샘플링 문제를 보완한다.
- $K \times T \times 7$ 크기의 Feature Buffer를 생성
- O(1) 해시 테이블을 이용한 복셀 매핑
- 각 포인트의 좌표를 기반으로 해시 테이블(Hash Table)을 생성
- 해시 키(Hash Key)로 복셀 좌표를 사용하여 O(1) 연산으로 복셀을 찾고, 효율적으로 포인트를 할당
- 각 복셀에 포인트 저장
- 해당 복셀에 할당된 포인트 수가 T 이하이면 저장
- 초과하면 해당 포인트는 무시
이 과정을 통해 O(n) 복잡도로 전체 복셀 구조를 생성할 수 있다.
2) GPU 병렬 처리 최적화
VoxelNet의 Voxel Feature Encoding (VFE) 레이어는 포인트 단위 연산과 복셀 단위 연산을 병렬화하여 GPU에서 최적화된다.
- VFE 연산 최적화
- 모든 포인트는 Dense Operation을 수행하여 병렬 연산이 가능하도록 변환
- 포인트 간 연산이 끝난 후, 빈 공간(zero-padding) 처리를 수행하여 연산에 영향을 미치지 않도록 함
- 최적화된 메모리 할당 및 재구성
- 최종적으로, 저장된 좌표를 기반으로 희소 복셀 구조를 조밀한 복셀 그리드(Dense Voxel Grid)로 변환
- 이후 중간 컨볼루션 레이어(Convolutional Middle Layers)와 RPN(Region Proposal Network)이 조밀한 구조에서 효율적으로 연산
3) 효율적인 RPN 연산 구조
- Region Proposal Network (RPN) 단계에서는
- 복셀 특징을 다운샘플링(Downsampling) 및 업샘플링(Upsampling)하여 고해상도 특징 맵을 생성
- 최종적으로 객체 존재 확률(Probability Score Map)과 회귀 값(Regression Map)을 출력
이를 통해, VoxelNet은 GPU를 활용하여 희소한 3D 데이터를 최적화된 형태로 변환하고, 고속 연산이 가능하도록 설계되었다.
3. Training Details
3.1 Network Details
1) Datasets
실험은 KITTI 데이터셋의 LiDAR 센서 사양을 기반으로 수행되었다.
객체 탐지는 크게 자동차(Car), 보행자(Pedestrian), 자전거(Cyclist) 세 가지 범주로 나뉜다.
2) Car Detection
- 입력 범위:$Z \in [-3,1] \quad Y \in [-40,40] \quad X \in [0,70.4]$
- 복셀 크기(Voxel Size):$v_D = 0.4m, \quad v_H = 0.2m, \quad v_W = 0.2$
- 복셀 그리드 크기:$D = 10, \quad H = 400, \quad W = 352$
- 각 복셀당 최대 포인트 개수:$T = 35$
- Feature Learning Network 구조:
- VFE-1: 입력 차원 → 출력 차원 32
- VFE-2: 입력 차원 32 → 출력 차원 128
- 최종적으로 128차원 희소 텐서를 생성: $128 \times 10 \times 400 \times 352$
- Convolutional Middle Layers 구조:
- Conv3D(128, 64, kernel=3, stride=(2,1,1), padding=(1,1,1))
- Conv3D(64, 64, kernel=3, stride=(1,1,1), padding=(0,1,1))
- Conv3D(64, 64, kernel=3, stride=(2,1,1), padding=(1,1,1))
- 결과적으로 64 × 2 × 400 × 352 크기의 4D 텐서 생성
- Region Proposal Network (RPN) 입력:
- Convolutional Middle Layers의 출력을 128 × 400 × 352 크기의 특징 맵으로 변환
- 단일 Anchor 크기 사용: $l^a = 3.9m, \quad w^a = 1.6m, \quad h^a = 1.56m$
- Anchor의 중심: $z_c^a = -1.0m$
- 회전각(Rotation Angles): $0^\circ$ 및 $90^\circ$
- Anchor Matching 기준:
- 양성(Positive) Anchor:
- Ground Truth와 최대 IoU를 가지는 경우
- 또는 IoU가 0.6 이상인 경우
- 음성(Negative) Anchor:
- Ground Truth와의 IoU가 0.45 미만인 경우
- 불확실(Don’t Care) Anchor:
- IoU가 0.45 ~ 0.6 사이인 경우
- 양성(Positive) Anchor:
- 손실 함수 가중치 설정:$$\lambda = 1.5, \quad \beta = 1$$
3) 보행자 및 자전거 탐지 설정
- 입력 범위:$Z \in [-3,1], \quad Y \in [-20,20], \quad X \in [0,48]$
- 복셀 크기(Voxel Size):
- 자동차 탐지와 동일
- 복셀 그리드 크기:$D = 10, \quad H = 200, \quad W = 240$
- 각 복셀당 최대 포인트 개수:$T = 45$
- RPN 구조 변경:
- 블록 1의 첫 번째 컨볼루션의 stride를 2 → 1로 변경
- 이는 Anchor 매칭을 더 정밀하게 수행하기 위해 필요
- Anchor 크기 및 설정:
- 보행자(Pedestrian): $l^a = 0.8m, \quad w^a = 0.6m, \quad h^a = 1.73m, \quad z_c^a = -0.6m$
- 자전거(Cyclist): $l^a = 1.76m, \quad w^a = 0.6m, \quad h^a = 1.73m, \quad z_c^a = -0.6m$
- 회전각(Rotation Angles): $0^\circ$ 및 $90^\circ$
- Anchor Matching 기준:
- 양성(Positive) Anchor:
- Ground Truth와 최대 IoU를 가지는 경우
- 또는 IoU가 0.5 이상인 경우
- 음성(Negative) Anchor:
- Ground Truth와의 IoU가 0.35 미만인 경우
- 불확실(Don’t Care) Anchor:
- IoU가 0.35 ~ 0.5 사이인 경우
- 양성(Positive) Anchor:
- 학습 방법:
- Stochastic Gradient Descent (SGD) 사용
- 학습률 설정: $\text{lr} = 0.01 \quad (\text{초기 150 epochs})$ $\text{lr} = 0.001 \quad (\text{마지막 10 epochs})$
- Batch size: 16 (Point Clouds)
3.2 Data Augmentation
KITTI 데이터셋은 4000개 미만의 포인트 클라우드 샘플을 포함하기 때문에, 모델을 처음부터 학습하면 오버피팅(Overfitting) 문제가 발생할 가능성이 높다.
이를 방지하기 위해 세 가지 데이터 증강 기법을 적용한다.
1) Random Perturbation(변형)
- 각 Ground Truth 3D 바운딩 박스와 포함된 LiDAR 포인트를 랜덤 변형
- Z축을 기준으로 Yaw 회전( ) 수행 $\theta \sim U(-10^\circ, 10^\circ)$
- XYZ 방향으로 랜덤 이동(Translation) 수행 $(x, y, z) \sim \mathcal{N}(0, 1)$
- 물리적으로 불가능한 충돌(예: 중첩된 바운딩 박스)이 발생하면 변형을 되돌림
2) Global Scaling
- 모든 바운딩 박스와 전체 포인트 클라우드를 동일한 비율로 확대/축소
- 적용 공식: $S \sim U(0.95, 1.05)$
- 값으로 XYZ 좌표 및 바운딩 박스 크기를 조정
- 다양한 크기와 거리의 객체에 대한 탐지 성능 향상
3) Global Rotation
- 전체 포인트 클라우드를 회전하여, 차량이 방향을 바꾸는 효과를 시뮬레이션
- 회전각 설정: $\theta \sim U(-4^\circ, 4^\circ)$
이러한 데이터 증강 기법을 적용하여 모델의 일반화 성능을 크게 향상시킬 수 있다.
4. Experiments
VoxelNet은 KITTI 3D 객체 탐지 벤치마크(KITTI 3D Object Detection Benchmark)에서 성능을 평가했다. KITTI 데이터셋은 7,481개의 학습용 이미지 및 포인트 클라우드와 7,518개의 테스트용 이미지 및 포인트 클라우드를 포함하며, 객체 탐지는 자동차(Car), 보행자(Pedestrian), 자전거(Cyclist) 세 가지 범주로 이루어진다.
4.1 Evaluation on KITTI Validation Set
1) Setting
KITTI 테스트 세트의 정답(Ground Truth)은 비공개이며, 공식 테스트 서버를 통해서만 성능을 평가할 수 있다. 따라서, 학습 데이터셋을 학습(train)과 검증(validation)으로 분할하여 성능을 평가했다.
- Train Set: 3,712개 샘플
- Validation Set: 3,769개 샘플
- 동일한 비디오 시퀀스에서 나온 샘플이 학습과 검증에 동시에 포함되지 않도록 설정
VoxelNet의 성능을 기존 방법들과 비교하기 위해 다양한 알고리즘과 비교 실험을 수행했다.
- 이미지 기반(2D) 방법:
- Mono3D, 3DOP
- LiDAR 기반(3D) 방법:
- VeloFCN, 3D-FCN
- 멀티모달 방법(LiDAR + RGB):
- MV(BV+FV), MV(BV+FV+RGB)
추가적으로, VoxelNet의 성능을 더 잘 분석하기 위해 Hand-Crafted Feature 기반 모델(HC-baseline)을 구현하여 비교했다.
- HC-baseline은 기존 방법인 Bird’s Eye View 특징(BEV Feature)을 사용하며,
- 높이 채널 수를 4 → 16으로 증가하여 형상 정보를 더 정밀하게 반영
- 2D 컨볼루션을 적용하여 특징 추출
2) Metrics
KITTI 벤치마크의 공식 평가 기준을 따른다.
- 평가 지표: Average Precision (AP)
- IoU(Intersection over Union) 기준:
- 자동차(Car): 0.7 이상
- 보행자(Pedestrian), 자전거(Cyclist): 0.5 이상
- 난이도(3가지 평가 수준):
- Easy: 크기가 크고 가려짐(occlusion)이 적은 객체
- Moderate: 일반적인 난이도의 객체
- Hard: 크기가 작고 가려짐이 심한 객체
3) Evaluation Bird’s Eye View(BEV)
VoxelNet은 모든 난이도에서 기존 LiDAR 및 멀티모달 방법을 뛰어넘는 성능을 기록했다.
- 자동차(Car) 탐지에서 기존 최고 성능 대비 향상
- 보행자(Pedestrian) 및 자전거(Cyclist) 탐지에서 HC-baseline 대비 큰 성능 향상
특히, 보행자 및 자전거 탐지는 복잡한 3D 형태 표현이 요구되므로, VoxelNet의 엔드투엔드 학습 방식이 Hand-Crafted Feature 방식보다 훨씬 효과적임을 입증했다.
4) Evaluation in 3D
BEV 탐지와 달리, 3D 탐지는 객체의 형태를 더욱 정밀하게 로컬라이제이션(localization)하는 것이 요구되므로 더 어려운 문제이다.
- 자동차(Car) 탐지에서 VoxelNet이 모든 난이도에서 기존 최고 성능을 상회
- 보행자 및 자전거 탐지에서도 3D 표현력이 뛰어나 Hand-Crafted Feature 대비 12% 이상의 성능 향상
특히, LiDAR 단독 모델임에도 불구하고 RGB+LiDAR를 결합한 MV(BV+FV+RGB) 모델보다 높은 성능을 기록했다.
4.2 Evaluation on KITTI Test Set
VoxelNet은 KITTI 공식 서버에 탐지 결과를 제출하여 테스트 세트에서도 성능을 평가했다.
- Bird’s Eye View(BEV) 및 3D 탐지에서 기존 최고 성능을 모두 뛰어넘음
- 모든 난이도(Easy, Moderate, Hard)에서 기존 모델보다 높은 성능을 기록
- 기타 상위 모델들은 RGB + LiDAR를 함께 활용한 반면, VoxelNet은 LiDAR만을 사용
- 3D 바운딩 박스 예측 결과가 매우 정확하며, 다양한 객체에 대해 높은 신뢰도의 탐지 성능을 제공
Inference Speed
VoxelNet의 추론 속도는 총 225ms이며,
- Voxel Feature Computation: 5ms
- Feature Learning Network: 20ms
- Convolutional Middle Layers: 170ms
- Region Proposal Network (RPN): 30ms
으로 구성된다.
TitanX GPU에서 실시간 탐지가 가능할 정도로 최적화된 연산 구조를 갖추었다.
5. Conclusion
기존의 LiDAR 기반 3D 탐지 기법들은 대부분 **Hand-Crafted Feature(수작업 특징 공학)**을 활용한 방법을 사용했다.
예를 들어, Bird’s Eye View(BEV) 변환을 적용하거나, 사전 정의된 특징 맵을 사용하여 탐지를 수행했다.
VoxelNet은 이러한 수동적 특징 추출 과정의 한계를 제거하고, 포인트 클라우드에서 직접 학습할 수 있는 엔드투엔드(End-to-End) 딥러닝 모델을 제안했다.
1) Contributions
- Sparse 3D Point Cloud에서 직접 학습할 수 있는 모델 설계
- Voxel Feature Encoding (VFE) Layer 도입 → 포인트 간 관계 학습 가능
- GPU 병렬 연산을 활용한 최적화된 학습 및 추론 구조 구현
2) Experiments & Results
- KITTI 3D 객체 탐지 벤치마크에서 기존 최고 성능을 초월하는 결과 달성
- BEV 탐지 및 3D 탐지에서 모두 높은 성능 기록
- 특히, 보행자 및 자전거 탐지 성능에서 Hand-Crafted Feature 방식 대비 큰 개선
- RGB+LiDAR를 활용한 기존 멀티모달 기법보다도 높은 정확도 달성
3) Future works
VoxelNet은 현재 LiDAR 데이터만을 사용하여 학습되었으며,
추후 연구 방향으로 RGB 이미지와 LiDAR를 결합한 멀티모달(Multi-modal) 3D 탐지 모델로 확장할 수 있다.
이를 통해,
- 3D 객체 탐지 성능을 더욱 향상
- 보다 정밀한 로컬라이제이션(localization) 가능
- 장거리 탐지 및 소형 객체 탐지 성능 개선
이 가능할 것으로 기대된다.
VoxelNet은 3D 객체 탐지의 새로운 패러다임을 제시하며, 향후 자율 주행, 로봇 비전, 증강·가상 현실 등 다양한 분야에서 중요한 역할을 할 것으로 기대된다.