본 내용은 박예성 연구원 님께서 테스트 웍스에 올린 기사 내용을 그대로 가져와
제가 공부하며 보기 쉽게 편집, 저희의 프로젝트 관련해서 고려해야할 점 그리고 앞으로 조사해야할 키워드 등을 정리한 것입니다.
현재까지 인공지능을 통해 가장 눈부신 성장을 이룬 분야 중 하나로 컴퓨터 비전이 있습니다.
이미지를 분류하는 Classification
객체를 검출하는 Object Detection
객체 영역을 찾는 Semantic Segmation 등
이미지 데이터를 해석하고 이로부터 유용한 정보를 추출하는 기술이 정말 많은 발전을 이루어 사용되고 있습니다.
그렇다면 3차원 정보 데이터 또한 그럴까요?
인공지능이 3차원 정보를 해석하기 위해서는 시각적으로 표현이 가능하면서도 3차원 공간 정보를 담고 있는 데이터가 필요하다고 합니다. 바로 이러한 3차원 데이터 중 하나가 Point Cloud 데이터 라고 합니다.
3차원 정보를 수집할 수 있는 기기들
라이더 센서
https://velodynelidar.com/products/puck/
RGB - D 카메라
https://www.intelrealsense.com/depth-camera-d455/
1. Point Cloud란?
현실에 존재하는 3D 공간 정보를 시각적으로 표현할 수 있는 센서는 그리 많지 않고, 그 센서들이 3D 공간 정보를 표현하는 방법은 동일하다고 합니다. 바로 위치 정보를 가진 수많은 점들을 모아서 공간을 표현하는 것입니다.
- 그러한 공간 정보를 가진 점들의 집합을 Point Cloud라고 합니다.
- Point Cloud는 공간 정보를 수집할 때 얻을 수 있는 가장 일반적이고 기본적인 형태 입니다.
- 현실에서 수집한 모든 3D 데이터는 Point Cloud를 기반으로 후처리 작업을 통해 얻을 수 있습니다.
정리하자면 현실에서 3D 공간 정보를 시각적으로 표현해주는 데이터는 Point Cloud 데이터 입니다.
그렇기 때문에 3D 인공지능 역시 Point Cloud 데이터를 기반으로 Classification, Object Detection, Segmentic Segmantation 등의 연구가 이루어지고 있습니다.
2. Point Cloud의 한계
하지만 불과 몇년 전 까지만 해도 Point Cloud 데이터를 다루는 딥 러닝 모델은 거의 찾아볼 수 없었습니다.
Point Cloud 데이터가 가진 몇 가지 성질에 의해 딥러닝을 통한 해석이 매우 어려웠기 때문입니다.
a. 파악하기가 어려운 데이터
기존 2D 이미지 데이터의 경우 격자 구조 형태 안에 정보가 저장됩니다.
Point Cloud 데이터는 3 D 공간 상의 수 많은 점들을 순서 없이 기록하는 방식으로 데이터가 저장됩니다.
이러한 데이터는 딥 러닝 모델에 있어서는 상당히 치명적입니다.
객체의 형상, 점들 간 상호 작용 등으로 데이터가 가지고 있는 기하학적인 특성을 파악하기가 어렵기 때문이다.
이를 해결하기 위한 방법으로 Point Cloud 데이터를 Voxel 형태로 정형화된 데이터로 전처리하는 방법이 존재한다. 그러나 이 방법 역시 인해 3D 인공지능의 한계를 극복하지는 못했습니다.
b. Sparses 한 데이터
2D 이미지는 정해진 격자에 pixel 값이 모두 존재하는 dense한 특성을 지녔다면, Point Cloud는 매우 sparse 한 특성을 가지고 있다고 말할 수 있습니다.
주어진 데이터의 3D 공간 안에는 Point 들에 비해 빈 공간이 상당히 많다는 의미로 이러한 데이터는 크기에 비해 유의미한 정보가 거의 없습니다. 이는 전 처리 작업을 통해 Point Cloud 데이터를 정형화 데이터로 변환하여도 동일하게 가지고 있는 성질입니다.
이러한 데이터로 인공지능 모델이 학습 될 경우 유의미한 정보를 거의 얻기 어려우며, 학습 난이도만 올리게 된다고 합니다. 바로 이러한 점이 3D 인공지능 모델의 한계 였습니다.
따라서 그 이후로의 연구 방향은 단순히 Point Cloud 데이터를 전부 해석하는게 아니라, Point Cloud 데이터로부터 유의미한 정보를 추출하는 방식으로 이루어졌습니다.
3. Point Cloud 데이터를 다루는 3D 인공지능
a. PointNet
데이터 형태의 변환 없이 Point Cloud 데이터를 그대로 입력해 학습하는 모델입니다.
Max Pooling, Spatial Transformer Network 와 같이 데이터의 기하학적 성질을 유지할 수 있는 딥러닝 네트워크들을 소개하며 Point Cloud 데이터를 직접적으로 해석하는데 성공한 모델 입니다.
초기 모델은 Classification, Semantic Segmentation 수행 이 가능하다고 합니다.
b. VoxelNet
Point Cloud 로부터 Voxel Feature를 추출한 다음 이를 해석해 물체를 검출하는 3D Object Detection 모델 입니다.
데이터의 3차원 공간을 Voxel 단위로 나눈 후 각 Voxel 안의 점들을 Voxel Feature Encoding Layer 라는 딥러닝 네트워크를 거쳐 Feature Map을 얻어낸 것이 중요한 특징인 것 같습니다.
Point Cloud 데이터를 단순히 Voxel 단위로 전처리 한 것이 아니라 딥러닝 네트워크를 통해 Voxel 단위의 Feature Map을 만든 것 입니다. 이는 기존의 방법보다 딥러닝 네트워크를 통한 해석이 용이하다고 합니다.
c. SECOND
Sparsely Embedded Convolutional Detection은 VoxelNet과 기본적인 구조는 동일하지만 VoxelNet에 존재하는 Convolutional Middle Layer을 기존 CNN 대신 Sparse Conv Layer 라는 레이어를 사용합니다. 이를 SPCONV 라고도 부릅니다.
SPCONV는 반복되는 패턴에 대해 Rule을 설정하는 방식을 사용해 기존의 CNN에서 요구되는 계산 량을 대폭 낮췄습니다. 따라서 Sparse 한 데이터를 해석하는데 용이한 구조를 띄고 있으면서도 처리속도가 매우 빠릅니다.
d. PointPillars
Pillar라는 새로운 형태의 Point Cloud Encoder를 사용해 Point Cloud 데이터로부터 격자 형태의 Feature Map을 얻은 다음, 이를 해석해 물체를 검출하는 3D Object Detection 모델이다.
VoxelNet이 3D Voxel 단위의 Feature Map을 얻어냈다면, PointPillars는 Point Cloud 데이터를 특정 시점에서 투영시킨 다음 2D 격자 단위의 Feature Map을 얻어낸 것이 특징 입니다.
이렇게 얻어낸 Feature Map은 2D 이미지 데이터와 동일하게 2D CNN을 통한 데이터 해석이 가능해지므로 처리속도가 굉장히 빠릅니다.
4. Point Cloud 데이터 연구 방향
크게 두 가지 방식이 있다고 합니다.
a. Point based method
PointNet 처럼 Point Cloud 데이터를 있는 그대로 해석하는 인공지능 모델
b. Grid based method
VoxelNet, SECOND, PointPillars 와 같이 격자 단위의 Feature Map을 생성해 이를 해석하는 인공지능 모델
두 방식 모두 활발히 연구되고 있고, 자율 주행, 로봇 주행, HD 맵 제작 등 일부 산업에도 적용되어 연구되고 있다고 합니다.
5. Point Cloud 데이터 수집
Point Cloud 데이터의 수집 및 가공 형태와 인공지능 모델은 아직 그 표준이 다듬어지지 않아 데이터 파일의 저장 형식 및 응용 소프트웨어들이 통일성이 없고 호환되지 않는 모습을 보인다. 그렇기 때문에 Point Cloud 데이터 및 이들과 함께 수집하는 정보들을 잘 파악하고 이들이 어떻게 사용되는지 파악하는 노력이 어느정도 필요하다고 한다.
Point 속성 정보
- 공간상 위치 정보 (x,y,z) 와 속성 정보를 담고 있다.
- 수집하는 정보는 센서마다 상이한데, 대표적으로 RGB-D 카메라와 라이다가 있다.
- RGB-D : (R, G, B) 색상 정보 등
- 라이다 : 반사 강도 (Reflectance Intensity) 등
3D 데이터를 학습하는 딥러닝 모델들은 대부분 이 속성 정보를 같이 학습하므로 모두 수집해줘야겠다.
Visualization
수집한 Point Cloud 만으로는 Point 들의 객체 속성을 직관적으로 알기 어렵다.
가공자의 라벨링 작업을 해야하는데 점만 보고는 그것이 무엇인지 알기 어려우므로, 카메라를 따로 동원해서 이미지를 같이 수집해 객체 속성을 시각적으로 확인할 수 있어야 한다.
센서 동기화
시각화 문제를 해결하기 위해서는 수집 장비가 최소 2개 이상 필요하다. 그렇기 때문에 수집하는 장비들간의 동기화가 반드시 필요하다.
- 시간 동기화 : 수집 시간을 일치
센서들의 시간이 동기화 된 상태에서 데이터를 수집해주어야 함 - 공간 동기화 : 센서들의 서로 다른 좌표를 일치
공간 동기화가 진행된 데이터를 수집하거나 동기화 작업을 위해 좌표 변환 전보를 같이 수집해준다.
6. Point Cloud 데이터 가공
Point Cloud Segmentation
Segmentation 모델은 Point Cloud 데이터 내에 있는 모든 점들에 레이블 정보를 각각 정의한다. Segmentation 학습을 위한 데이터 가공 시 점들의 수가 상당히 많기 때문에 데이터 시각화가 반드시 필요하다. 그리고 도구 활용을 통해 효과적인 방법으로 각 점에게 레이블 속성을 부여할 수 있다.
3D Object Detection
3D Object Detection 모델은 객체의 속성을 직육면체 형태의 3D Bounding Box를 통해 정의한다. 이를 Cuboid라고 한다. Cuboid 정보는 일반적으로 위치(Position), 크기(Scale), 회전 정보(Rotation)만을 통해 표현하는 'PSR(Position Scale Rotation)' 방식으로 정의한다. 따라서 3D object Detection 모델의 학습을 위한 데이터셋 가공 역시 PSR 방식으로 레이블 데이터를 생성하는 것이 효과적이다.
Point Cloud 데이터 가공 자동화
2D 이미지 데이터 가공 작업에서는 이미 수행되고 있지만, 3D 데이터 가공 역시 자동화의 도움을 받는 것이 작업 속도를 높이는데 많은 도움이 된다고 한다.
7. 정리 및 키워드, Pose Estimation 프로젝트를 하면서 앞으로 고민해봐야할 과제
테스트웍스, 박예성 연구원 님께서 너무나 잘 정리해놓으셨기 때문에 Point Cloud 가 무엇인지 알고, 이와 관련된 연구 논문을 읽고, 현재 3D Object Detection이 갖고 있는 연구 방향성을 알 수 있었으며, 또한 데이터 수집시 주의해야할 점과 수집한 자료를 가지고 어떠한 객체를 만드는지에 대해서 알 수 있었습니다.
a. 저희는 RGB-D 카메라를 사용하게 될 것 같습니다.
따라서 RGB-D 센서가 어떠한 속성을 측정하는지 알아야할 필요가 있겠습니다.
b. 시각적으로 데이터를 확인해 주기 위해 수집 장비가 최소 두 대 이상 필요합니다.
어떠한 장비를 써야할지 생각해보고, 각 장비에 대해 시간과 공간을 어떤 방식으로 동기화 할지 생각해보아야겠습니다.
c. 3D Bounding Box 라는 개념에 대해서 처음 알게 되었습니다.
3D Objective Detection 모델에서 사용하는 cuboid 라는 객체에 대해서 뭔지 알고, PSR 방식으로 레이블을 생성한다는 것이 무엇인지 알아야겠습니다.
d. Point Cloud Data 가공 자동화
이거는 조금 먼 일이 될 것 같습니다. 모델을 완성한 뒤에는 모든 프로세스가 자동화 될 수 있도록 또는 가독성 있게 보일 수 있도록, 함수와 클래스를 잘 써야할 것 같습니다.
e. 어떠한 연구 방향 모델을 채택할 것인지
Point based method와 Grid based method 가운데 어떠한 방향을 채택하여 수행해보아야할 것인지 생각해야겠습니다.
출처)
Charles R. Qi, et al. “PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation”. Stanford University. (2017)
Yin Zhou, et al. “VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection”. Apple. (2017)
Yan Yan, et al. “SECOND: Sparsely Embedded Convolutional Detection”. (2018)
Alex H. Lang, et al. “PointPillars: Fast Encoders for Object Detection from Point Clouds”. (2019)
박예성, "3D 인공지능 데이터 Point Cloud (1)", TestWorks, 2021.09.07 , https://blog.testworks.co.kr/3d-ai-data-point-cloud/
박예성, "3D 인공지능 데이터 Point Cloud (2)", TestWorks, 2021.09.14 , https://blog.testworks.co.kr/point-cloud-data-collection-and-processing/
'Project > Pose Estimation' 카테고리의 다른 글
[배경 조사] 3D Point cloud 관련 방법들 소개 (0) | 2022.08.26 |
---|