Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

cb

[논문 리뷰] Frustum PoinNet 본문

ai - paper

[논문 리뷰] Frustum PoinNet

10011001101 2024. 8. 2. 19:15

Frustum pointnets for 3d object detection from rgb-d data.

https://arxiv.org/pdf/1711.08488

 


Abstract

RGBD data에서도 3d 객체를 탐지하기 위해 Frustum PointNets를 제안

기존 연구들은 Images나 3D Voxels에서 natural 3D patterns를 학습

→ Frustum PointNets는 raw point clouds에서 바로 학습하도록

3d bounding boxes를 정교하게 추정 가능

occlusion, sparse해도 잘 예측할 수 O

 


Introduction

2D image understanding task(object detection, instance segmentation)는 많이 발전

하지만 3D understanding에 대한 연구들은 한계가 존재

 

자율주행이나 AR 분야에 적용되기 위해서는 3D perception task에서 성능을 내는 것이 필요

object의 category를 예측하고, 3D bounding boxes의 위치를 예측하는 3D object detection의 중요성

 

그러나, 3D sensor에서 얻은 데이터들은 Point clouds로 제공되는데, 이전까지는 이를 활용할 수 x

2D image로 변환하거나 voxelize해서 사용하는 수밖에 없었음

 

(논문 발행 연도 기준)

최근에서야 Point clouds의 변환 없이 그를 다룰 수 있는 **deep net architecture(Point Net)**를 활용 가능

classifying a whole point cloud, predicting a semantic class

 

하지만 이 또한 point level에서만 가능할 뿐, 실제 instance level에서는 적용 불가능

window sliding이나 3D region proposal을 수행해도, computational cost의 문제로 high resolution이나 autonomous driving 같은 real-time task에서 문제가 발생

 

따라서 해당 연구에서는 dimension reduction principle을 통해 그러한 문제를 해결

 

 

  1. 2D object detectors를 활용하여 3D space로 region을 옮겨 줌
  2. 두 개의 Point Net을 활용하여 3D object instance segmentationamodal 3D bounding box regression을 수행

해당 연구는 2D image만을 다뤘던 기존 연구들에 비해 3D Point Clouds를 활용할 수 있었다는 장점이 있고, 3d coordinate로의 성공적인 변환 덕분에 3D geometry pattern을 효과적으로 활용할 수 있었음

 


Problem Definition

RGB-D data를 인풋으로 받으면, 물체의 bounding box를 찾고**(localization)**, classification해야 함

LiDAR나 indoor depth sensors를 통해 받은 depth datapoint clouds 속 RGB 카메라 좌표로 변환됨

projection matrix는 2D image region에서부터 3D 시야(frustum)를 얻을 수 있도록 해 주고,

각각의 오브젝트는 k개의 pre-defined classes 중 하나와 amodal bounding box로 정의됨

(amodal bounding box는 물체가 가려져 있더라도 하나의 complete bounding box를 구성하는 것)

bounding box는 h, w, l 값을 가지고, 각각은 c_x, c_y, c_z라는 center point를 포함

 


3D detection with Frusturm PointNets

Frustrum PointNets for 3D object detection은 총 세 개의 모듈로 구성

  • Frustum Proposal

해당 task에서 사용되는 데이터들은 대개 real-time sensor를 통해 얻어지기 때문에, 보통의 RGB image보다 낮은 화질을 갖고 있음 → mature 2D object detector(FPN)을 사용하여 RGB images에서 2D object regions 정보를 얻도록 함. (as well as classify objects)

camera projection matrix를 알고 있다고 할 때, 2D bounding boxfrustum(depth sensor를 통해 얻어진 원근 정보)으로 변환될 수 있음. → 모든 Points를 모아 frustum point cloud를 구성

 

하지만, 사진에서 보이는 것처럼 frustum은 카메라의 방향에 따라 달라질 수 있기 때문에, image plane에 수직하는 축을 center로 둬서 frustum을 회전하는 normalization을 수행했다고 함

“frustum proposal generation”

FPN을 사용하여 2D region proposal을 진행했고, ImageNet classification과 COCO object detection datasets에서 pre-trained된 가중치를 사용. 이후 KITTI 2D object detection dataset에 대해 fine-tuning 진행

 

  • 3D Instance Segmentation

2D image region과 3D frustum이 주어지면, 3D location을 얻기 위해 다음 방법을 사용

2D CNNs을 활용하여 depth map에서부터 3D object locations(3D bounding box)를 바로 regression

→ occluding object, background clutter이 있을 때 3D localization을 방해할 수 있음

멀리 떨어져 있어도 가까이 붙어 있는 것처럼 pixel들이 구성되기 때문

 

→ 2D image나 depth map 대신, 3D point cloud에서 segment를 진행

 

Mask-RCNN과 비슷하게, image regions의 instance를 pixel 별로 segmenation하여 3D instance segmentation을 가능하게 함

Regressing absolute 3D location은 offset이 범위 내에서 아주 다양하게 나타나기 때문에 3D bounding center를 따로 예측하도록 함

 

네트워크는 각 Point에 대해 probability score(어떤 관심 있는 물체에 해당하는지 아닌지)를 예측하는데, 여기서 특정 카테고리의 geometry 정보를 배움과 동시에 occlusion and clutter patterns 도 학습하게 됨

 

multi-class detection에서는 2D detector의 semantics도 배울 수 있음

예를 들어, 보행자라는 인스턴스를 배운다고 할 때 segmentation network는 사람처럼 생긴 geometry를 활용할 수 있음.

 

3D instance segmentation가 완료되면 그것의 좌표 또한 normalize해 줘야 함

센터로부터 XYZ 좌표를 뽑아내서 local coordinate로 point clouds를 옮겨 줌

뷰포인트에 따라 bounding sphere 사이즈가 굉장히 다르고, box size estimation에 영향을 주기 때문에 굳이 의도적으로 물체들을 scale을 하지 않고, 시점을 옮겨 주었다고 함.

 

 

  • Amodal 3D Box Estimation

Learning based 3D alignment by T-Net

segmented object points를 aligned해 줬음에도 불구하고 origin of the mask coordinate frame은 amodal box center와 여전히 차이가 있었음

 

-> light-weight regression PointNet(T-Net)을 사용해서 true 센터를 찾아줌.

 

여기서는 Spatial Transformer Network를 사용했는데, 원래의 STN에서는 transformation에 대한 supervision이 없었기 때문에, 그들만의 translation network를 사용했다고 함. <<뭔솔?

 

 

Amodal 3D Box Estimation Point Net

비록 물체가 가려져서 안 보이더라도 bounding box estimation을 가능케 함

 

bounding box의 센터(C_x, C_y, C_z), 크기(h, w, l), heading angle(θ)를 얻었으면, residual approach를 적용하여 box center estimation을 수행함.

 

네트워크 아키텍처는 object classification이랑 비슷하지만 class score를 반환하는 게 아니라, 3D bounding box에 대한 Parameter를 반환함

Box-estimated Network를 통해 얻어진 center, T-Net으로 얻어진 previous center를 masked points’ centroid와 더해줌.

 

  • Training with Multi-task Losses

3D instance segmentation PointNet, T-Net, and amodal box estimation PointNet의 총 세 가지 네트워크를 사용했기 때문에, multi-task losses를 활용하여 학습을 진행

c1-reg: T-Net

c2-reg: center regression of box estimation net

h-cls, h-reg: heading angle prediction

s-cls, s-reg: box size

 

  • Corner Loss for Joint Optimization of box parameters

박스 사이즈와 센터는 정확히 예측했음에도 불구하고 앵글의 끝에 치우져여 있다면 angle 에러에 의해 3D IoU 정보가 훼손될 것임

따라서 center, size, heading 세 정보가 모두 jointly하게 optimized되기 위해 위의 regularization loss를 사용했다고 함.

 

예측된 바운딩 박스의 여덟 개의 코너 정보와 GT 코너 정보의 distance를 줄이는 loss

 

P^ij_k는 anchor box

P_k^** 는 ground truth가 flipped된 것.

둘 중에 더 작은 거 선택해서 사용하게 됨


Experiments

3D object detection On KITTI dataset

 

3D object localization On KITTI dataset

 

Visualizations of Frustum PointNet results on KITTI val set