CNN을 통해 비전분야에서 2D classification, object detection 등 비약적인 기술발전을 이뤘습니다. 정말 다양한 카메라 어플리케이션, 보안, 심지어 자율주행에서도 사용됩니다. 하지만 카메라를 이용하는 것 보다 보다 정밀하게 주변 환경을 '추정'이 아닌 '측정'을 하려는 노력이 계속 있어왔습니다. 특히 LiDAR로 부터 point cloud를 그대로 쓰거나 재가공해서 2D classification, 2D object detection을 3D로 확장하는 추세입니다.
Complex-YOLO
3D data를 이용해 2D 인식을 3D로 확장한다는 것은 굉장히 자연스럽고 간단하게 들릴지 모르지만 Real-Time이라는 관점에서 많은 문제가 발생합니다. Convolution 비용이 큰 연산이고 2d 이미지에서도 빠르고 효율적으로 수행하기 위해 많은 노력이 필요했습니다. 이 연산을 단적으로 point cloud 데이터에 그대로 적용한다면 데이터 자체의 Sparsity, Distribution Irregularity, Locality 등의 문제로 GPU에서 엄청난 비효율을 초래하게 됩니다. 이 문제를 Object Detection에서 성공적으로 해결한 연구가 Complex-YOLO입니다.
위 그림은 Complex-YOLO의 pipeline입니다.
- LiDAR로 부터 수집된 pcl(3D)을 Bird-Eye-View RGB-map(2D)으로의 Conversion
- Con2D Bird-Eye-View 이미지의 Complex-YOLO를 통한 추론
- E-RPN을 이용한 angle regression
Complex-YOLO는 속도측면에서의 획기적인 발전을 아주 중요한 Contribution으로 말합니다. Paper 내에서도 자율주행에 있어서 accuracy와 efficiency 사이의 trade-off 에서 efficiency가 훨씬 중요하다고 합니다. 이를 가능하게 한 것이 MV3D(multi-view idea)의 컨셉의 차용입니다.
Point Cloud Preprocessing
Complex-YOLO는 Velodyne HDL64 모델의 센서로부터 가로 80m, 세로 40m 범위의 point cloud를 BEV(Bird-Eye-View) RGB-map 으로 변환해서 사용합니다. RGB-map은 height, intensity, density를 이용해 만들어집니다. Grid map \(\mathcal{S_{j}}\)는 1024x512로 약 8cm의 해상도로 만들어집니다.
$$ \mathcal{P}_{\Omega} = \{\mathcal{P}=[x,y,z]^{T} | x \in [0,40m], y\in[-40m,40m], z\in[-2m,1.25m]\} $$
$$ \mathcal{P}_{\Omega i\rightarrow j} = \{\mathcal{P}_{\Omega i} =[x,y,z]^{T}|\mathcal{S}_{j} = f_{\mathcal{PS}}(\mathcal{P}_{\Omega i},g) \} $$
Grid map이 생성되면 각각의 RGB 채널을 다음 수식과 같이 만듭니다.
$$ z_{g}(\mathcal{S_{j}}) = \mathrm{max}(\mathcal{P}_{\Omega i\rightarrow j}\dot[0,0,1]^{T})$$
$$ z_{b}(\mathcal{S_{j}}) = \mathrm{max}(I(\mathcal{P}_{\Omega i\rightarrow j}))$$
$$ z_{r}(\mathcal{S_{j}}) = \mathrm{min}(1.0,\mathrm{log}(N+1)/64)$$
이를 통해 \( z_{g}\)는 maximum height, \( z_{b}\)는 maximum intensity, \( z_{r}\)는 normalized density가 되게 됩니다. 이렇게 생성된 BEV RGB-map이 Complex-YOLO의 입력으로 들어가게 됩니다.
Architecture
Complex-YOLO는 E-RPN(Euler Region Proposal Network)이 뒤에 붙은 YOLOv2라고 생각하시면 됩니다.
3x1024x512의 RGB-map을 입력으로 받고 출력으로 bounding box를 만드는 것이 최종 목표입니다.
- 5 priors per Cell
- 6 parameters for Tx, Ty, Tw, Tl, Tim, Tre
- 1 prior confidence score
- 3 class(car, pedestrian, cycle) probability
- 5 parameters for \(\mathcal{alpha}, Cx,Cy,Pw,Pl\)
cell 당 5개의 priors, 위치와 크기, 각도를 표현하는 6개의 파라미터, confidence score, 3개의 class에 대한 확률, 그리고 E-RPN 파라미터 5개까지 총 75(5(6+1+3+5))개의 feature를 계산해냅니다.
Euler Region Proposal Network(E-RPN)
E-RPN는 3D object의 위치 \(b_{x,y}\), 크기 \(b_{w},b_{l}\) 그리고 orientation \(b_{\phi}\) 를 얻어내기 네트워크입니다.
$$ b_{x} = \sigma(t_{x})+c_{x} $$
$$ b_{y} = \sigma(t_{x})+c_{y}$$
$$ b_{w} = p_{w}e^{t_{w}}$$
$$ b_{l} = p_{l}e^{t_{l}}$$
$$ b_{\phi} = arg(|z|e^{ib_{\phi}})=arctan_{2}(t_{Im}, t_{Re})$$
Result
'Vision' 카테고리의 다른 글
SENet(Squeeze-and-Excitation Networks) (0) | 2022.01.05 |
---|---|
1x1 Convolutions & Inception Module (0) | 2022.01.04 |
Pseudo-LiDAR from Visual Depth Estimation:Bridging the Gap in 3D Object Detection for Autonomous Driving (0) | 2021.11.21 |
Introduction - Attention (0) | 2021.10.31 |
SSD: Single Shot MultiBox Detector (0) | 2021.06.27 |
댓글