1. 서론
현재 자율주행 및 주행보조(ADAS)시스템의 경우 대부분의 자동차 사에서 카메라와 함께 PCD(Point Cloud Data)를 출력하는 라이다(LiDAR)를 이용해 VoxelNet, YOLO과 같은 객체 인식 기법을 사용하는 것이 일반적이다. 하지만 라이다와 카메라 센서의 경우 악천후에 약하다는 고질적인 문제점이 있다. 최근에는 악천후에 약한 라이다를 대체하기 위해서 다양한 센서가 등장하고 있다. 이중 대표적으로 전파를 통해 앞의 물체를 감지하는 센서인 레이더가 해결책으로 사용되고 있다[1, 2].
레이더의 경우 전파를 통해 주위의 물체를 인식 및 감지하기 때문에 악천후에 따른 영향을 적게 받는다. 또한, 전파를 통한 데이터를 측정하는 경우 물체의 이동에 따른 도플러(Doppler)효과가 발생하며 이를 이용해 인식된 물체와의 상대 속도를 계산할 수 있다. 이러한 특징으로 인하여 현재 레이더는 자율주행 및 주행보조(ADAS)시스템에 적용되고 있다.
기존 레이더의 경우 측정 시 지면과 평행한 2차원 평면에 대한 데이터와 도플러효과를 이용한 물체의 상대 속도까지 측정된다. 이를 이용하면 차량 주위의 물체 유무와 물체와의 거리를 잴 수 있다. 하지만 물체의 형상과 3차원 상의 좌표를 알 수가 없어 물체의 종류를 판단하는 것에 어려움이 있다. 해당 문제를 해결하기 위해 물체의 높이까지 인식하여 PCD 형태로 출력하는 4D 이미징 레이더(4D imaging Radar)가 개발되고 있다.
4D 이미징 레이더의 경우 x, y, z축과 도플러 데이터를 출력하기 때문에 라이다의 PCD 데이터와 유사하게 사용할 수 있다. 단점으로는 라이다보다 해상도(resolution)가 낮아 측정되는 PCD 데이터의 밀도가 현저히 낮다는 문제점을 지니고 있다.
본 논문에서는 4D 이미징 레이더의 단점인 낮은 밀도의 PCD 데이터를 이용하여 데이터를 군집화 및 군집의 특성 추출을 통한 객체 인식 기법을 제안한다.
2. 관련 연구
2.1. 4D 이미징 레이더
현재 4D 이미징 레이더에서 출력되는 데이터 형태의 경우 사용하는 레이더의 종류 및 측정에 사용하는 소프트웨어에 따라 다른 형태를 가지고 있다. 실험에서 사용한 4D 이미징 레이더의 경우 펌웨어를 통해 레이더 내부 프로세스에서 전파를 전처리 및 후처리하여 PCD 데이터로 출력한다. 이후 ROS(Robot Operating System)를 이용하여 데이터를 JSON 형식으로 저장한다.
2.2. 군집화
군집화란 데이터셋을 분석하여 데이터셋 안의 유사한 데이터를 하나의 군집으로 처리하는 것을 의미한다. 대표적인 군집화 알고리듬으로 K-Means, DBSCAN (Density Based Spatial Clustering of Applications with Noise) 기법이 있다[3, 4]. K-Means의 경우 군집의 개수가 고정되어 있을 때 사용하며 데이터들을 입력한 군집의 개수만큼 분류하는 기법이다. 실험에서 사용하는 군집화 알고리듬인 DBSCAN의 경우 군집의 개수가 고정되어 있지 않고 데이터 간의 유사도를 계산하여 계산된 결과에 따라 군집을 결정하는 기법으로 다음과 같다.
2.2.1. DBSCAN
DBSCAN은 대표적인 군집화 기법 중 하나로 최소 거리와 최소 개수를 이용해 군집을 계산하는 알고리듬이다. 계산 방법의 경우 먼저 랜덤한 데이터를 지정하고 지정한 데이터와 다른 데이터 사이의 거리를 계산한다. 이 중 최소 거리보다 가까운 데이터의 개수가 최소 개수보다 큰 경우 해당 데이터를 core points로 설정하고 범위 안의 데이터들을 border points로 설정한다. 나머지 범위 밖의 데이터는 noise로 설정한다. 모든 데이터가 noise, core, border 세 가지로 분류될 때까지 같은 연산을 반복한다. 해당 결과에서 core points 간 거리가 최소 거리보다 짧은 경우 같은 군집으로 인식하며 각 core에 해당하는 border points 또한 같은 군집으로 처리한다.
2.3. 객체 인식 기법
객체 인식 기법의 경우 다양한 방식으로 구현되고 있다. 대표적인 객체 인식에는 2D 이미지에서 인식하는 기법인 YOLO, R-CNN 등이 있으며 3D 객체 인식 기법에는 VoxelNet, PV-RCNN, Voxel R-CNN등이 있다[5, 6, 7]. 이 중 VoxelNet의 경우 라이다에서 얻는 불규칙한 형태의 PCD 데이터를 일정한 크기의 voxel로 변환하는 기법을 제안했다.
2.3.1. VoxelNet의 Voxel Feature Encoding
3D 객체 인식 기법 중 대표적인 기법인 VoxelNet에서 PCD 데이터를 voxel로 변환 시키는 과정을 제안했다. 해당 과정의 경우 PCD와는 상관없이 3D 공간을 일정 개수의 작은 voxel로 나누었다. 이후 voxel 안에 들어있는 점의 개수를 이용하여 각 voxel의 가중치를 설정한다. 이 때 점의 밀도가 크게 차이가 발생하는 경우 Voxel의 가중치가 편향될 수 있기에 VoxelNet에서는 표본화를 통해 점들의 최대 개수를 제한하여 이를 해결하였다. 해당 방법의 경우 군집화 없이 데이터의 형태를 맞출 수 있으며 공간 전체를 변환하여 항상 일정한 크기의 데이터 형태를 얻을 수 있는 방법이다. 단, 4D 이미징 레이더에서는 VoxelNet의 상황과는 다르게 점의 개수가 적고 각 위치에 따른 점의 개수가 편향이 크기 때문에 표본화를 통한 편향을 제거하기 어렵다는 문제점이 있다.
3. 저밀도 PCD의 3D 객체 인식 기법
논문에서 제시하는 4D 이미징 레이더의 저밀도 PCD 데이터에 대한 객체 인식 기법은 다음 그림 1과 같은 군집화, 객체 분류의 과정으로 진행된다.
그림 1. 객체 인식 기법 프로세스 구조도
Fig. 1. Object Recognition Process Diagram
3.1. 프로세스 전처리
JSON에는 레이더를 통해 측정된 물체의 좌표 데이터와 도플러 데이터가 저장되어 있다. JSON 데이터를 python을 통해 파싱하여 데이터를 추출하며 추출한 PCD 데이터의 경우 Numpy와 PyTorch의 텐서 타입으로 변환하여 이후 과정에 사용한다. 정규화 같은 전처리 기법들의 경우 군집화 이전에 적용 시 DBSCAN의 성능에 영향을 줄 수 있기 때문에 군집화 이후 적용한다. 적용되는 전처리의 경우 정규화로 모델에 데이터를 입력하기 전 데이터의 크기를 0~1사이로 변환하여 사용한다.
3.2. 군집화
객체 개수가 매번 다른 상황의 군집화를 진행해야 하므로 데이터 간의 거리를 비교해 군집을 구분하는 군집화 기법인 DBSCAN을 통해 군집화를 진행한다.
DBSCAN의 입력값에는 최소 거리와 최소 개수가 있으며 최소 거리의 경우 실험환경에서 객체와 객체 사이에 최소 30cm 이상 존재한다는 제한을 두었다. 그렇기에 객체 사이의 거리를 30cm로 설정하였다. 최소 개수의 경우 10개로 설정하여 객체로 인식하는 기준을 설정하였다. 현재 PCD 데이터의 경우 전처리과정이 진행되지 않았기에 데이터에 들어있는 x, y, z 값이 m 단위로 설정되어 있다. 해당 단위를 반영하여 DBSCAN에 최소 길이에는 0.3, 최소 개수에는 10을 입력하여 군집화를 진행한다.
3.3. 군집화와 센서퓨전을 통한 라벨링
군집 단위로 분류된 PCD 데이터를 레이더, 이미지 센서퓨전 툴에 적용하여 객체를 구분한다. 해당 도구를 통해 이미지상에 있는 사람에 대한 라벨 번호를 알 수 있으며 번호를 통해 PCD 데이터의 군집에 대한 라벨링이 가능하다.
3.4. 특성 추출(Extract Feature)
기존 VoxelNet에서 Voxel 변환 과정을 이용하여 모델에 입력할 수 있는 형태로 변환하였으며 표본화를 통해 PCD의 편향을 해결한다. 단, 현재 실험에 사용하는 레이더의 경우 밀도가 낮은 단점이 있다. 그렇기에 표본화를 통한 편향 제거 시 설정 가능한 최대 개수가 적다는 문제점이 발생한다. 해당 문제점들을 군집화와 군집에서 특성을 추출하는 기법을 통해 해결하였으며 논문에서는 2가지 특성 추출 기법을 제시한다. 공통으로 군집의 특성 중 도플러 값의 경우 군집에 해당하는 데이터들의 평균을 이용해 1개의 도플러 값으로 합쳐 처리한다.
3.4.1. 바운딩 박스
군집화된 PCD 데이터의 최대, 최소값을 통해 바운딩 박스를 구현하며 바운딩 박스의 크기를 이용한 특성 추출을 진행한다. 군집화된 점들의 x, y, z 값의 최댓값과 최솟값의 차이를 통해 값 사이의 길이를 알 수 있으며 사람과 차량, 사람의 자세 등 크기를 통해 대부분 구별할 수 있다. 이에 따라 데이터 형태는 군집의 데이터 형태였던 [x, y, z, 도플러]의 특성을 갖는 N개의 점에서 [가로, 세로, 높이] 길이를 갖는 1개의 점으로 변화하며 공통으로 구한 도플러 평균을 추가하여 [가로, 세로, 높이, 도플러] 형태로 특성을 추출한다.
3.4.2. 복셀 특성 추출(Voxel Feature Extract)
기존의 Voxel의 경우 절대 좌표를 이용해 가중치를 구한다면 본 논문에서는 군집의 상대 좌표에 따른 점의 거리를 이용하여 가중치를 계산하는 기법을 제시한다. 먼저 군집의 중앙점을 기준으로 각 변이 I, J, Km 크기의 바운딩 박스를 생성한다. 바운딩 박스에서 N의 크기 만큼의 간격으로 분할하여 총 i, j, k개의 바운딩 박스로 저장한다. 이 때 분할되는 박스의 교점을 기준으로 각 점과 교점과의 거리를 이용해 해당 점의 가중치를 계산한다. 수식 1. 과 수식 2.를 이용하여 교점 Pijk와 점 Ax 간의 거리 Dijkx와 거리 Dijkx에 따른 가중치 Wijk를 계산한다. (N = 군집에 포함된 점의 개수)
\(\begin{aligned}D_{i j k x}=\sqrt{\left(A_{x X}-P_{i j k X}\right)^{2}+\left(A_{x X}-P_{i j k X}\right)^{2}+\left(A_{x X}-P_{i j k X}\right)^{2}}\end{aligned}\) (1)
\(\begin{aligned}W_{i j k}=\frac{1}{N} \sum_{x=0}^{N} \frac{\sqrt{I^{2}+J^{2}+K^{2}}}{\epsilon+D_{i j k x}}\end{aligned}\) (2)
가중치 Wijk 계산 시 I, J, K에서 발생할 수 있는 최대 거리를 계산한 값을 이용해 가중치의 범위를 설정한다. 이때 가중치를 평균으로 계산하여 VoxelNet에서 해결했던 점의 밀도에 따른 편향 문제를 개수 제한이 아닌 평균을 통해 해결한다. 또한, 작은 숫자인 𝜖을 추가하여 교점과 점 사이의 거리가 같은 경우에 발생하는 zero division 문제를 해결하며 𝜖의 크기를 이용하여 가중치의 최댓값을 결정할 수 있다. 이를 통해 데이터를 처리한 결과 데이터의 형태는 군집의 기본 형태였던 (N, 4)에서 (i, j, k) 형태를 갖는 voxel로 변화하게 된다. 또한, 마지막에 공통적인 도플러 평균을 최종적으로 적용하여 (i, j, k) + (1)의 형태로 군집의 특성을 추출하게 된다.
3.5. 객체 분류 모델
3.5.1. 객체 분류 모델(바운딩 박스 특성 추출)
바운딩 박스를 통한 데이터 추출 결과 데이터는 N개의 데이터가 있다면 (N, 4)의 형태를 가지고 있으며 해당 형태의 데이터는 딥러닝을 통해 각각의 객체를 분류할 수 있다. 객체 분류 모델의 경우 기본적인 FC 레이어(Fully Connected 레이어)를 통해 구현한다. FC 레이어와 ReLU 활성화 함수를 통해 반복 후 마지막 FC 레이어에서는 활성화 함수를 softmax를 이용해 객체 분류에 사용한다.
그림 2. 객체 분류 모델(바운딩 박스 특성 추출)
Fig. 2. Object Classification Model (Bounding Box Feature Extraction)
3.5.2. 객체 분류 모델(Voxel을 응용한 특성 추출)
3.4.2에서 제안한 Voxel형태로 변화시킨 데이터를 딥러닝 모델을 통해 객체를 분류하는 모델을 구성하여 진행한다. 해당 데이터에서 데이터의 종류는 2가지 나누어 구현한다. Voxel의 경우 x, y, z를 갖는 3D 형태로 존재한다. 해당 데이터 형태를 3D 차원으로 처리하는 것이 아니라, 높이와 방위각에 대한 정보를 기본으로 두고 거리에 대한 데이터를 축이 아닌 채널로 활용하여 2D 이미지와 같은 형태로 처리한다. 즉 실질적으로 x, y 크기를 갖고 z개의 채널을 갖는 형태의 이미지로서 데이터를 처리한다. 해당 3차원 데이터를 2차원 이미지 데이터로 변경했기 때문에 이에 특화된 Conv2D를 활용하여 데이터를 처리한다. 또한, Conv2D를 통과한 이후 max pooling 레이어를 통과하여 데이터를 분석하며 이를 반복하여 모델을 구성한다.
그림 3. 3D 이미지 분석 모델
Fig. 3. 3D image analysis model
이후 남은 데이터는 도플러의 경우 1개의 특성만 가지고 있으므로 모델 중간에 Concatenate 한 후 FC 레이어를 거쳐 최종적으로 Class를 분류하는 것으로 진행된다.
그림 4. 객체 분류 모델 (Voxel을 응용한 특성 추출)
Fig. 4. Object classification model (Feature extraction using Voxel)
4. 실험 결과
4.1. 객체 인식 결과
4.1.1 DBSCAN을 활용한 군집화
DBSCAN의 최소 개수와 범위를 직접 입력하여 데이터를 군집화하는 과정에 관한 결과로 범위와 최소 개수를 조절하여 최적화한 결과 그림 5처럼 객체 간 구분이 되는 것을 볼 수 있다. 그림 5에서 보이듯 객체 간 간격이 라이다의 PCD 간격 대비 넓고 객체에 찍히는 점 또한 밀도가 상대적으로 낮은 것을 확인할 수 있으며 넓은 거리와 낮은 밀도로 인하여 군집화가 정상적으로 진행된 것을 알 수 있다. 범위의 경우 객체와 객체 사이의 간격이 적어도 30cm 이상은 멀어진 상태의 데이터셋을 구축하였기 때문에 값을 범위 0.3, 최소 개수 10개를 기준으로 하여 객체를 구분한다. 그림 5은 군집화를 통해 객체를 군집한 결과를 출력한 것으로 각각의 색상에 따라 군집이 구분된 것을 볼 수 있다.
그림 5. DBSCAN을 통한 PCD 데이터 군집화 결과
Fig. 5. PCD data clustering results through DBSCAN
4.1.2 객체 분류 결과
3.5에서 제시한 모델을 150 epoch 동안 학습한 결과 다음과 같은 loss 그래프를 그렸으며 객체 분류 모델의 정확도는 다음과 같다.
단 그림 6에 표기된 정확도의 경우 현재 분류되는 객체가 아닌 경우 other로 표기한 것도 포함되어 있기에 모델 성능이 실제 성능보다 높게 표기되어 있다. 그렇기에 전체에 대한 정확도가 아닌 other class를 제외한 정확도의 평균과 other class를 제외한 precision을 통해 측정했으며 결과는 다음과 같다.
그림 6. 모델 학습 결과 : loss 및 acc 그래프
Fig. 6. Model training result: loss and acc graph
표 1. 객체 분류 정확도 결과
Table 1. Object Classification Accuracy
5. 결론
본 논문에서는 라이다와는 다른 결과물인 저밀도 PCD 데이터를 이용한 객체 인식 기법을 제안한다. 악천후에 약한 라이다와 카메라를 대신하는 4D 이미징 레이더의 객체 인식 기법을 제안했으며 4D 이미징 레이더의 문제점인 낮은 해상도에 대한 대책 또한 제안하여 프로세스를 설계하였다.
논문에서 제시한 프로세스의 경우 저밀도의 데이터의 특성인 넓은 간격을 이용해 객체를 구분했다. 이는 4D 이미징 레이더의 발전으로 낮은 해상도 문제가 해결된다면 다른 문제를 일으킬 수 있다. 또한, DBSCAN에 의존적인 프로세스이기에 객체 사이의 간격이 가까워 DBSCAN에서 구분되지 못하는 상황에는 성능이 떨어지는 것을 확인했다. 이를 해결하기 위해 좀 더 정밀한 군집화 또는 객체 분류 기법이 필요할 것으로 보인다. 이것은 향후 연구과제로 남긴다.
참고문헌
- Zhou, Yin, and Oncel Tuzel. "Voxelnet: End-to-end learning for point cloud based 3d object detection." Proc of the IEEE conference on computer vision and pattern recognition. pp. 4490-4499, 2018.
- Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. You only look once: Unified, real-time object detection. In: Proceedings of the IEEE conference on computer vision and pattern recognition. pp. 779-788. 2016.
- Martin Ester, Hans-Peter Kriegel, Jiirg Sander, Xiaowei Xu, "A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise", kdd vol 96 pp.226-231, 1996
- JAIN, Anil K. Data clustering: 50 years beyond K-means. Pattern recognition letters, pp. 651-666. 2010.
- Girshick, R., Donahue, J., Darrell, T., & Malik, J. Rich feature hierarchies for accurate object detection and semantic segmentation. In: Proceedings of the IEEE conference on computer vision and pattern recognition. pp. 580-587.2014.
- Shi, S., Guo, C., Jiang, L., Wang, Z., Shi, J., Wang, X., & Li, H. "Pv-rcnn: Point-voxel feature set abstraction for 3d object detection." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. pp. 10529-10538, 2020.
- Deng, J., Shi, S., Li, P., Zhou, W., Zhang, Y., & Li, H. Voxel r-cnn: Towards high performance voxel-based 3d object detection. In: Proceedings of the AAAI Conference on Artificial Intelligence. pp. 1201-1209. 2021.