[Object Detction] 3D Object Detection, Google Objectron
Object Detection 분야는 대부분 2차원 객체 탐지만을 다루고 있다. 2차원 객체를 탐지하는 것은 2차원 바운딩 박스만 있지만, 3차원 객체 탐지로 범위를 확장한다면, 물체의 크기 및 위치, 방향 등을 알 수 있으므로 자율 주행 및 이미지 검색, 증강 현실에서 다양한 분야에 응용 할 수 있다.
가령, 2D Human Pose Estimation 분야에서 3차원 정보가 아주 조금 필요한 도메인이라면, 3D Human Pose Estimation 까지 연구의 범위를 확장 안하고도 문제를 해결 할 수 있지 않을까 라는 생각을 했다. 즉, 사람에 대한 2차원 바운딩 박스 정보를 3차원으로 추출 할 수 있다면, 꽤 vanilla 적인 접근으로 여러가지 문제를 해결할 수 있지 않을까 ㅎㅎ 심지어 이건 모바일에서 작동하기 때문에 속도도 빠르다는 큰 장점이 있다.
(역시나 모바일 환경에서 작동하기 때문에 신경망 구조는 Backbone 은 MoblieNet v2를 기반으로 하는 인코더, 디코더로 구성되어있다.)
2020 TensorFlow Developer Summit 에서 Google 이 2차원 영상에서 3차원 객체의 포즈와 크기를 추정 할 수 있는 모델인 Objectron 을 공개하였다.
3차원 객체 추적은 제한된 컴퓨팅 리소스로 인하여 처리가 까다롭고, 특히나 비디오 환경에서의 데이터가 부족하다는 어려움을 갖고 있다. 그래서 Google 은 3차원 split-screen view 를 사용하여 2차원 비디오 프레임 들을 통해 3차원 바운딩 박스에 레이블링을 할 수 있는 Annotator 를 개발하였다. 3차원 바운딩 박스는 point cloud, camera position, detected plane 과 함께 배치된다. Annotator 는 3차원 뷰에서 3차원 바운딩 박스를 그리고, 2차원 비디오 프레임의 projection 을 review 하여 위치를 확인하고 있으며, 정적인 객체의 경우 대상 객체에 단일 프레임으로 주석을 달면 된다. 이 도구는 AR session data 에서 실제 카메라 포즈 정보를 이용하여 객체의 위치를 모든 프레임으로 propagation 하였다.
AI 모델의 예측 정확도를 높이기 위하여 즉, 실제 real-world 에서 사용될 수 있도록, 학습 데이터를 보완하기 위해, Google 은 AR session data 가 포함되어있는 기존 장면에 virtual object 를 배치하는 엔진을 개발하였다. 이는 carmera pose, detected planar surface, estimated lighting 을 사용하여 객체들을 처리함으로써, 실제 배경에 렌더링 된 객체들이 자연스럽게 녹아 들도록 고품질의 합성 데이터를 생성하였다. 이러한 합성 데이터들로 정확도를 약 10% 정도 향상 시켰다고 한다.
2020.03.11 기준으로 최신 버전의 objectron 모델이 모바일 장치에서 실시간으로 실행할 수 있을 정도(약 초당 26프레임 처리)로 가볍게 만들었다고 한다.
실제 모바일 테스트 환경 : With the Adreno 650 mobile graphics chip found in phones like the LG V60 ThinQ, Samsung Galaxy S20+, and Sony Xperia 1 II, it’s able to process around 26 frames per second.
MediaPipe 에서 훈련된 모델과 end-to-end 데모를 이용할 수 있다고 한다.
이와 같이 3차원 객체 탐지를 수행하기 위해서 Google 은 주석이 달린 바운딩 박스를 사용하고, 상자 중심에 중심을 두고, 상자 크기에 비례하는 표준 편차를 사용하여 Gaussian 을 적용하였다. 그 다음 detection 의 목표는 물체의 중심 위치를 나타내는 peak 분포를 예측하는 것이다. Regression 작업은 8개의 바운딩 박스 vertex 의 2차원 projection 을 수행하며, 바운딩 박스에 대한 최종 3차원 좌표를 얻기 위해 이미 잘 작동하는 포즈 추정 알고리즘인 Established Pose Estimation(EPnP) 알고리즘을 활용한다. 객체의 차원에 대한 정보 없이도 객체의 3차원 바운딩 박스를 복원해 낼 수 있다. 3차원 바운딩 박스가 주어지면 객체의 포즈와 크기를 쉽게 계산 할 수 있다고 한다.
모바일 장치에서 캡쳐된 모든 프레임에 모델을 적용하면 각 프레임에서 추정된 3차원 바운딩 박스의 모호성으로 인하여 jitter 가 발생할 수 있는데, 이를 해결하기 위해 Tracker 를 사용한다. 그래서 모든 프레임에서 객체를 탐지하는 작업을 수행하지 않고, 더 무겁고 정확한 모델을 사용하면서, 모바일 장치에서 이러한 파이프라인을 실시간으로 작동 가능하도록 하였다. 또한 프레임 간 객체 identity 를 유지하고, 예측의 일관성을 유지하여 jitter 를 줄인다.
참고자료 1 , Google Objectron Youtube : https://www.youtube.com/watch?v=DbgRkYSah_g
참고자료 2 : https://venturebeat.com/2020/03/11/googles-objectron-uses-ai-to-track-3d-objects-in-2d-video/
참고자료 3 : https://mediapipe.dev/
참고자료 4 : https://ai.googleblog.com/2020/03/real-time-3d-object-detection-on-mobile.html
'AI Research Topic > Object Detection' 카테고리의 다른 글
[Object Detection ] What does mlvl mean? (2) | 2021.07.28 |
---|---|
[Object Detection] 객체 탐지 정확도 평가 지표 mAP(mean Average Precision) (3) | 2021.04.14 |
[Object Detection] Soft NMS (0) | 2020.03.08 |
[Object Detection] Deformable Convolutional Networks (0) | 2020.03.08 |
[Object Detection] EfficientNet and EfficientDet (0) | 2020.02.23 |