본문 바로가기

논문 리뷰(Paper Review)

BEVFusion: Multi-Task Multi-Sensor Fusionwith Unified Bird’s-Eye View Representation, IRCA2023

(들어가기에 앞서,,)

코드로 확인이 필요한 부분 및 주요 내용 부분은 파란색으로, 개인적인 생각은 주황색으로 표기하였다.


Abstarct

- 근래의 자율주행 시스템의 신뢰도를 높이는 방법으로 카메라 특징을 활용하여 라이다 포인트 클라우드를 증강 시키는 Point-Level Fusion이 주로 등장한다.

- 하지만, 카메라->라이타 투영은 카메라 영상이 가지는 의미론적으로 밀집된 특징의 장점을 사라지게 한다.

- 본 논문은 BEV 표현 공간에 멀티 모달 기능을 통합하여, 기하학정 정보와 의미론적 정보를 잘 보존 하였다.

- 최적화된 BEV 풀링을 통해 뷰 변환의 병목을 해결하여 대기 시간을 40배 이상 개선 시켰다.

- 다양한 3D 인식(Perception) 테스크를 지원하는 등 특정 작업에 구애 받지 않는다(task-agnostic)

- nuScene 3D 디택션에서 mAP 1.3% 개선, BEV map 분할에서 13.6% mIoU 개선 및 1.9배 연산 효율 달성.

 

서론

- Waymo’s self-driving vehicles have 29 cameras, 6 radars, and 5 LiDARs

- 카메라는 시점 뷰를 제공하고, 라이다는 3D 뷰를 제공한다. 각각의 센서는 다른 Modalities를 제공하기 때문에 (이들의 장점을 합하기 위해서는) Multi-task, Multi-modal 특징 융합을 위한 통합된 표현(representation)을 찾아야만 했다.

-  (기존에 많이 사용하는 특징 융합인) 라이다-카메라 프로젝션은 기하학적 왜곡을 일으킨다.

--> (a) 아래 그림로는 라이다->카메라 프로젝션이 기하학적 왜곡을 어떻게 설명 가능한지 설명이 부족한 것 같다. (b) 그림도 포인트 기반 추론이 의미론적 정보를 잃는 다는 것을 표현한 것인데, 설명이 부족한 것 같다. 공감하기 어려웠다.

- 포인트 클라우드를 증강하는 방법, CNN 특징 혹은 2D 이미지로 부터 온 가상의 포인트와 융합하는 방법 등은 기존의 포인트 클라우드 기반 3D Bounding Box 예측을 수행하였다. 하지만, 위와 같은 포인트 레벨 융합은 BEV Map Segmenation과 같은 의미론적 추론 테스크에 적합하지 않았다

 

- BEV pooling연산과 같이 BottleNeck을 일으키는 연산은 사전 계산 및 간격 감소 기능을 갖춘 커널을 통해 해결하여 연산 속도를 40배 이상 개선하였다.

 

- 카메라의 의미론적 특징과 라이다의 기하학적 특징을 유지하면서, Task-Agnostic(테스크에 관계 없이 적용 가능한) BEVFusion 방법을 제공한다.

--> 이에 대한 근거로 (1-c) 그림을 제시하였으나 여전히 설명과 근거는 부족한 것 같다.

 

- 기존 솔루션 보다 3D OD에서 1st 랭킹, BEV Segmentation에서 성능 증가. 카메라 Only 모델 대비 6% mIoU 향상, 라이다 Only 모델 대비 13.6% 성능 향상, 1.9개 연산 효율 달성 

 

관련 연구

(생략...)

 

방법

- 카메라, 라이다에서 특징 추출을 수행하고, 인코더를 적용하여 Multi-Modal 특징을 통합된 BEV 표현으로 변환한다.

Camera Feat in BEV / Lidar Feat in BEV

- 그 다음 인코더 적용. 이후 Multi-Head를 붙여 Multi-Task를 수행

 

1. Unified Representation(통합된 표현) --> BEV

- 라이다 -> 카메라 프로젝션: 라이다가 가지는 기하학적 정보를 손실하게 된다.

- 카메라 -> 라이다 프로젝션: 의미론적 손실이 많다. 카메라 특징중 5%의 만이 라이다 포인트와 매칭된다. 이는 BEV Map Segmentation과 같은 의미론적 정보가 필요한 테스크에서 성능을 크게 저하시키게 된다. 

- BEV : 라이다가 가지는 기하학적 구조와 영상이 가지는 의미론적 밀도를 모두 보존할 수 있다.

 

2. Efficient Camera-to-BEV Transformation

- 카메라 픽셀은 깊이 정보를 포함하고 있지 않다. 본 논문에서는 LSS, BEVDet가 한 것 과  같이 픽셀별 이산 깊이 분포를 예측하였다

- 각 픽셀은 카메라 Ray에 따라 D개의 점으로 나누었고, 깊이 확률에 따라 각 이산 점의 특징 크기를 조정하였다(3-a 참고)

  위와 같은 방식으로 하면 카메라 특징점은 NHWD 사이즈가 된다 (N은 카메라 갯수, D는 이산 점의 갯수)

- 이러한 특징점은 r(e.g. 0.4m) 크기로 양자회 된다. 이후 BEV pooling 연산으로 모든 특징을 모은다(aggregation)

- 위의 BEV Pooling 연산은 계산 과부하가 심해 아래의 두가지 방법을 도입하였다.

--> 본 논문에서는 카메라로 부터 얻은 위의 데이터를 카메라 포인트 클라우드라고 칭하였다.

--> 사용하는 파라미터 사이즈: 카메라 갯수 N = 6, 특징맵 사이즈 (H, W) = (32, 88), and D = (60 - 1)=0:5 = 118

 

Precomputation(사전 계산)

- BEVPooling의 첫번째 단계는 각 카메라 특징(NHWD)을 BEVGrid와 연관시키는 것이다

- 각 카메라 포인트 클라우드의 3D  좌표와 그리드 인덱스를 미리 계산하고, 인덱스에 따라 정렬하여 각 포인트 랭크를 기록하였다.

- 추론 중에는 미리 계산된 순위를 기준으로 모든 특징점을 역순 정렬하였다. 이러한 캐싱 방법은 그리드 Association 연산을 17ms -> 4ms로 줄여주었다.

 

Interval Reduction

- Grid Association 이후, 같은 BEV Grid에 속한 점들은 텐서상에서 연속되게 된다.

- 그 다음 스텝은 각 BEV Grid 의 특징을 대칭 함수로 모으는 것이다.

- 기존에 존재하는 LSS 방법은 모든 점에 대해서 prefixSum을 계산한 다음, 인덱스가 변하는 경계에 있는 값을 뺀다(3-b 두번째 그림)

--> 기존 LSS 방법은 GPU에서 Tree Reduction(?)이 필요하고, 사용되지 않는 Partial Sum이 많이 생성되므로 비효율 적이다(?)

- 특징 Aggregation을 가속화 하기 위해, BEV 그리드에서 직접 병렬화하는 특수 GPU 커널을 구현하였다. 각 그리드에 GPU 스레드를 할당하여 Interval Sum을 계산한다.

- 해당 커널은 출력간의 종속성을 제거(?) 하여 다중 레벨 Tree Reduction이 필요로 하지 않고(?), DRAM에 (LSS에서 낭비되는 부분이었던) Partial Sum Writing 시간을 피하여 Latency를 500ms -> 2ms로 줄였다.

 

Takeaways

- 본 논문의 최적화된 camera-to-BEV 변환으로 BEV pooling이 40배 속도 개선이 되었다(500ms -> 12ms)

- 또한, 해당 방법은 다른 특징 해상도에서도 잘 적용이 된다.

- $M^2$BEV 나 BEVDet에서는 각각 균일화된 Depth 분포를 가정하거나, BEVGrid 안의 점들을 잘라서 View 변환을 근사화 하지만, 본 논문의 기술은 근사화 하거나 가정하는 것 없이 빠르게 동작한다.

 

3. Fully-Convolutional Fusion

- Lidar BEV Feature와 Camera BEV Feature가 동일 공간에 있더라도, 변환의 부정확함으로 인해 공간적으로 잘못 정렬이 될 수도 있다. 본 문제를 해결하기 위해 (Residual Block을 활용한) 컨볼루션 기반 BEV 인코더를 도입하였다.

--> 해당 방법이 지역적으로 잘 안맞는 부분(Local Misalignments)를 보완한다?

 

4. Multi-Task Heads

- Detection은 CenterPoint를 참고하여 각 객체의 중심 히트맵을 클래스 별로 예측하도록 하였고, 회귀를 이용해 객체 크기, 방향, 속도(?)를 예측하게 하였다

- Segmentation은 CVT와 Focal Loss를 도입하였다.

 

모델

- 이미지 백본은 Swin-T를 라이다 백본은 VoxelNet을 사용하였다. 

- FPN을 사용하여 다중 스케일 카메라 특징을 융합하였다. 입력 사이즈의 1/8 크기의 특징 맵(256 x 704)을 생성하였다.

- 라이다 포인트 클라우드는 0.075m 크기의 복셀화를 시도하였다. 

- 각 테스크 앞에 Bilinear 보간과 함께 그리드 샘플링을 적용하여 다른 BEV 특징맵 간의 명시적 변환을 수행하게 하였다.

--> 코드를 통해 확인할 것;; 

 

결과

 

 

총평

- SongHan 교수님 연구실은 연산 방법을 개선하여 속도를 향상 시킨 논문을 주로 내는 것 같다. 본 논문도 마찬가지.

반응형