본문 바로가기
ML | DL/딥러닝 논문

BlazePose: On-device Real-time Body Pose tracking 리뷰

by Leeys 2022. 3. 18.
반응형

pose estimation 프로젝트를 진행하다 mediapipe라는 프레임워크를 알게되었다.

나같은 경우에는 여러 사람을 multi tracking 하는게 아닌 한 사람만 감지하는 single tracking 이 필요했고

mediapipe blazepose는 나의 프로젝트에 딱 맞는 모델이였다.

또한 대중적인 모델인 posenet보다 더욱 뛰어난 성능을 보여 인상적인 모델이여서 논문을 찾아보게 되었다..

 

 

Abstract

구글에서 인간 포즈 추정의 lightweight convolutional neural network architecture

blazepose를 제시하였다. 모바일 디바이스에 대한 실시간 inference를 위해 제작된 모델이며

한 사람에 대한 33개의 keypoint를 추정한다. 해당 모델을 구글의 pixel2 phone에서

속도를 측정하면 30FPS(1초당 30Frame)으로 작동한다.

따라서 피트니스나 수화같은 실시간 동작에 특히 적합하다고 한다.

이 논문의 메인은 2가지 novel body pose tracking solution 새로운 키포인트를 제시했다는것과

lightweight body pose estimation neural network 경량화된 포즈 추정 네크워크 이다.

 

 

1. Introduction

human pose estimation은 다양한 pose와 다양한 자유도 그리고 폐색으로 인해 까다로운 작업이다.

 최근 연구에서는 pose estimation에 상당한 진전을 보였는데, 일반적인 접근으로는 각 좌표에 대한

offset을 미세조정 하거나 각 관절에 heatmap을 생성하는 것이다.

이 heatmap 선택은 최소한의 overhead로 여러 사람에게 적용되지만 한 사람을 추정할때는

모델이 너무 크기때문에 적합하지 않다. 따라서 이 논문에서는 성능 저하 없이 모델의 상당한 속도 향상을 보여준다.

 

heatmap 기반 기술과 달리 regressor 기반 접근 방식은 계산이 덜 필요하고 확장성이 높지만,

평균 좌표 값을 예측하려고 시도하며 애매한 포즈를 해결하지 못한다.

 

Alejandro Newell의 Stacked hourglass networks for human pose estimation 논문에서는

stacked hourglass architecture가 더 적은 수의 매개변수로도 예측성능을 크게 향상시키는 것으로 나타났다.

이 아이디어를 확장하여 encoder-decoder architecture을 사용해 모든 관절에 대한 headmap을 예측하고

모든 관절의 좌표로 직접 regressor하는 또 다른 encoder를 사용한다.

이 논문의 핵심은 heatmap부분이 추론중에는 제거되므로 모바일에서 실행되기에 가볍다는 것이다.

 

2. Model Architecture and Pipeline Design

2.1. Inference pipeline

추론하는 동안, hand-landmark, face-landmark 예측과 같은 우수한 실시간 성능을 보여주는

detector-tracker을 사용한다. pipeline은 lightweight body pose detector 그리고

pose tracker network로 구성되어 있다. tracker는 keypoint 좌표와 현재 frame에 있는

사람의 존재 및 현재 frame의 대한 refined region of interest(ROI) image상의 segmentation을 예측하고

tracker는 화면에 사람이 존재하지 않을시 다음 frame에서 예측을 한다.

 

2.2. Person detector

modern object detection의 해결 방법은 추론후에 NMS(Non-Maximum Suppression) 알고리즘을 사용하는 것이다.

이것은 자유도가 높은 물체에서 좋은 성능향상을 보인다. 그러나 이 알고리즘은 인간의 포즈와 같이

손을 흔들거나 포옹하는 사람들이 있는 복잡한 image에서는 틀린 bounding box가 IoU를 충족하는 일이 발생한다.

 

이러한 한계를 극복하기 위해 사람의 얼굴이나 몸통처럼 잘 움직일수 없는 신체 부위에 경계 상자를 감지하는 데 초점을 맞췄다.

neural network가 몸통의 위치를 찾는데 가장 강력한 값은 바로 얼굴이라는 것을 관찰했다(몸통은 거의 변화가 없기 때문).

그래서 이 논문에서는 person detector를 proxy로 fast on-device face detector를 사용한다. 

 

2.3. Topology

BlazeFace, BlazePalm 및 Coco에서 사용되는 keypoint를 사용하여 인체에 33개의 keypoint를 적용한

새로운 topology를 제시한다. 이를 통해 각 데이터셋과 일관성을 유지할 수 있다.

 

OpenPose, Kinect topology와는 달리 얼굴, 손, 발의 keypoint 수를 최소한으로 사용하여

ROI, 크기, 위치등을 추정한다.

반응형

2.4. Dataset

기본적으로 포즈가 정렬되어 있어야한다. 데이터셋은 사람신체가 전부 보이거나 엉덩이나 어깨의

keypoint에 제대로 labeling 할 수 있어야한다.  모델이 데이터셋에 없는 폐색을 예측할 수 있도록

폐섹된 데이터를 augmentation 하는 방식을 사용한다.

 

데이터셋은 이미지에 한명 또는 소수의 사람이 공통의 포즈를 취하고 있는 60,000개의 이미지와

피트니스를 하고 있는 25,000개의 이미지로 구성되어 있다.

 

2.5. Neural network architecture 

그림 4와 같이 heatmap, offset 및 regressor를 결합한 방식을 사용했다.

heatmap과 offset loss는 train시에만 사용하고 추론시에는 해당 layer를 제거했다.

따라서 heatmap을 효과적으로 사용해서 lightweight embedding을 학습하고

regressor encoder network에서 활용하도록 하였다.

 

그리고 tiny encoder-decoder heatmap-based network는

subsequent regression encoder network를 stack 하도록 하였다.

 

high-low level feature의 균형을 달성하기 위해 network의 모든 단계에 Skip-connection을 활용하였다.

그러나 regressor encoder의 gredient는 heatmap trained features로 backpropagation 되지 않게 하였다.

이것이 heatmap 예측을 향상시킬 뿐만 아니라 regressor의 keypoint 예측 정확도를 상당히

증가 시킨다는 것을 발견했다.

 

2.6. Alignment and occlusions augmentation

데이터셋을 train할 때 이미지의 각도, 배율 및 변환에 대해 범위를 제한하였는데

이를 통해 network 용량을 낮추어 더 빠르게 만드는 동시에 더 적은 계산 및 리소스를 요구 할 수 있었다.

 

detection 단계 또는 이전 frame의 keypoint를 기반으로 엉덩이 사이 점이 기준이 되어

현재 frame이 정사각형 image의 중앙에 위치하도록 사람을 정렬한다.

scale은 모든 body point가 정사각형 경계에 맞도록 추정한다.

 

그림 2와 같이 신체 주위에 상자를 둘러싸고 있는데, 그 위에 10% scale 및 shift argumentation을 적용하여

tracker가 frame 사이의 신체 움직임과 폐색을 처리할 수 있도록 한다.

 

보이지 않는 keypoint의 예측을 더 정확하기 하게 위해 train중 다양한 색상으로 채워진 임의의 직사각형 image를

포함 하였고, 특정 keypoint가 가려졌는지 또는 위치 예측이 잘못된 것으로 간주되었는지 여부를 나타내는

per-point visibility classifier를 도입하였다. 이를 통하여 사람을 지속적으로 tracking 할 수 있다.

 

3. Experiments

모델을 평가하기 위해 OpenPose를 비교 대상으로 하였다.

그리고 OpenPose와 BlazePose의 공통 집합 keypoint인 17개만 있는

Ms Coco topology만 사용 하였다.

metric으로는 허용오차가 20%인 (PCK@0.2)을 사용하였고

데이터셋은 AR DataSet, 요가/피트니스 자세이다.

 

1. BlazePose Lite - 3개의 모델중 가장 낮은 성능, 하지만 추론속도는 제일 빠름

 

2. BlazePose Full - AR DataSet에서는 OpenPose보다 성능이 좋지 않지만 추론속도가 더 빠르고

Yoga DataSet에서는 성능이 더 높았음

 

4. Applications

이 논문에서는 수화, 요가/피트니스, AR 데이터셋에서 다양하게 사용할 수 있는 pose estimation

경량화 모바일 single tracker 모델을 개발하였다. 이 모델은 CPU에서 실시간에서 사용할 수 있고

모바일 GPU에서는 더 빠르게 작동한다. 33개의 keypoint가 BlazeFace 및 BlazePalm과 일치하므로

후속 hand 또는 face tracking 모델의 백본이 될 수 있다.

 

 

  

 

반응형

댓글