논문 리뷰

[논문 리뷰] MediaPipe Hands: On-device Real-time Hand Tracking

klee9 2024. 12. 9. 18:28

0. Abstract

이전 논문 리뷰에서는 뎁스 카메라를 사용한 Hand Pose Estimation을 살펴봤습니다. 구글 개발자들은 이 논문에서 단일 카메라만의 RGB 데이터를 사용한 방법을 제시하고 있습니다.

이들이 제시한 모델은 손바닥 탐지기와 손 관절 랜드마크 모델, 이렇게 두 가지로 구성되어 있습니다. 손바닥 탐지기는 손의 바운딩 박스를 탐지하고, 손 관절 랜드마크 모델은 MediaPipe 프레임워크를 사용하는 모델입니다.

1. Introduction

현존하는 Hand Pose Estimation 모델은 실시간 처리를 하기엔 너무 무겁기 때문에 하드웨어의 성능에 많이 의존하고 있죠. 저자들은 이 제약을 없애고 모바일 기기에서 실시간 처리를 가능하게 하고자 합니다.

2. Architecture

자, 그러면 왜 two-stage로 구성했을까요? 우리의 손은 다양한 자세를 취할 수 있기 때문에 one-stage로 하기 위해선 데이터를 많이 증강해야 합니다. 이 외에도 배경 노이즈를 처리해야 하는 등, 모델이 해야 할 일이 많아지게 됩니다.

손바닥 탐지 모델 구조


하지만 손바닥 탐지기를 사용함으로써 관심 영역(ROI)를 제한할 수 있고, 랜드마크의 위치를 찾기 더 쉬워질 뿐만 아니라, 랜드마크 탐지 모델에 일정한 입력값을 넘겨줄 수 있게 됩니다.

2-1. BlazePalm Detector

MediaPipe Hands는 손의 위치를 찾기 위해 BlazeFace와 유사한 single-shot 탐지 모델을 적용했습니다. 손을 탐지하는 건 생각보다 어려운 작업인데요, 대비되는 특성이 많은 얼굴과는 달리 손은 그런 특성들이 적기 때문에 시각적인 특성만으로는 정확히 찾기 어렵습니다.

  • Single-shot 모델
    한 번의 forward pass로 객체의 바운딩 박스와 클래스를 동시에 예측하는 객체 탐지 모델입니다. 대표적인 예로 SSD와 YOLO가 있습니다.
  • BlazeFace
    구글에서 개발한 얼굴 탐지 모델로, 컴팩트한 신경망을 사용해 실시간으로 얼굴을 탐지할 수 있습니다. Single-shot 탐지, 픽셀 단위 회귀를 통해 높은 효율성을 갖는다는 장점이 있습니다.


그렇다면 왜 굳이 손바닥을 탐지하는 것일까요? 손바닥은 손 전체보다 상대적으로 변형이 덜하기 때문에 바운딩 박스를 추측하는 것이 훨씬 쉽기 때문입니다.

또한, 손바닥은 비교적 작기 때문에 바운딩 박스가 겹칠 확률이 낮죠. 그렇기 때문에 악수를 하는 상황에서도 non-maximum suppression 알고리즘이 잘 작동합니다.

이 외에도 손바닥은 정사각형 바운딩 박스를 사용할 수 있기 때문에 앵커의 종횡비를 제한할 수 있습니다. 그 결과 앵커의 수가 3~5배 줄어드는 등 여러 가지 장점이 있어 손바닥을 먼저 탐지하는 것입니다.

  • Non-maximum Suppression Algorithm (NMS)
    컴퓨터 비전에서 객체 탐지(Object Detection)나 포즈 추정(Pose Estimation) 작업에서 중복된 경계 바운딩 박스를 제거하기 위해 사용되는 알고리즘입니다. 동일한 객체를 여러 번 탐지했을 때, 가장 신뢰도가 높은 상자만 남기고 나머지를 제거하는 방식입니다.
  • 앵커 (Anchor)
    객체 탐지 모델에서 물체의 위치와 크기를 예측하기 위해 사용되는 고정된, 사전 정의된 바운딩 박스입니다. 다양한 크기와 비율의 앵커 박스를 이미지의 각 위치에 배치해 각 박스 안에 객체가 포함될 가능성을 계산하는 방식으로 동작합니다.


이처럼 손바닥 탐지기를 학습시킨 후, 작은 객체를 포함한 더 넓은 장면 맥락 인식을 위해 FPN과 유사한 인코더-디코더 특성 추출기를 사용했습니다.

마지막으로, 손의 높은 스케일 변동성으로 인해 생성되는 다수의 앵커를 위해 학습 과정에서의 focal loss를 최소화했습니다.

  • Focal Loss
    불균형한 데이터에서 학습을 개선하기 위해 사용되는 손실 함수입니다. 쉬운 샘플의 손실 값을 줄이고 어려운 샘플에 더 집중할 수 있도록 하는 방식으로 작동합니다.


2.2 Hand Landmark Model

손 랜드마크 모델 구조


손바닥 탐지가 끝나면 랜드마크 모델이 회귀를 통해 랜드마크의 2.5D 좌표를 찾습니다. 랜드마크 모델은 internal hand pose representation(내부 손 자세 표현)을 배우게 되는데, 이는 손의 구조와 동작을 일관되고 추상적으로 인코딩하여, 손의 일부가 가려지거나 보이지 않는 상황에서도 강건하게 랜드마크를 예측할 수 있도록 모델이 학습한 표현을 의미합니다.

모델은 3가지 출력값을 갖고 있습니다. (x, y, 상대적 깊이) 좌표로 구성된 21개의 랜드마크, 입력 이미지에 손이 존재할 확률을 나타내는 플래그, 왼손인지 오른손인지에 대한 분류 결과가 출력에 포함되어 있습니다.

좌표는 알겠는데, 손이 존재할 확률은 왜 필요할까요? 바로 추적(tracking) 실패를 복구하기 위해서입니다. 만약 손이 존재할 확률이 특정한 값보다 낮게 나타나면 처음부터 추적을 시작하게 됩니다.

그리고 AR/VR에서 왼손/오른손 여부를 구분하는 것은 중요하기 때문에 이 값도 추가했다고 합니다.

3. Dataset and Annotation

정답 데이터를 얻기 위해 In-the-wild, In-house collected gesture, 합성 데이터셋을 사용했습니다. 각 데이터셋의 단점을 보완하기 위해 여러 가지 데이터셋을 채택했습니다.

손바닥 탐지기를 학습시키기 위해 in-the-wild 데이터셋을 사용했지만 랜드마크 모델을 학습시키는 데 있어선 모든 데이터셋을 사용했습니다.

4. Results

손 탐지기의 경우, 디코더 + focal loss 손실 함수가 가장 높은 정확도를 나타냈습니다. 사실 모델을 더 향상시킬 수 있지만, 성능은 낮은 폭으로 상승하는 데 반해 속도가 크게 줄어 quality-speed trade-off가 있습니다.

위에서 데이터셋을 살펴봤었는데요, 랜드마크 모델의 경우 실제 데이터와 합성 데이터를 모두 사용하는 방식이 가장 낮은 MSE를 기록했습니다.

5. Implementation in MediaPipe


MediaPipe를 사용하면 손 추적 파이프라인을 Calculator라 불리는 모듈화 된 구성 요소의 그래프로 나타낼 수 있습니다. 이 그래프는 손 검출을 위한 서브그래프와 랜드마크 계산을 위한 서브그래프로 구성됩니다.

MediaPipe의 손 추적 기능은 효율적인 최적화를 통해 성능을 크게 향상시킵니다. 주요 최적화 중 하나는 손바닥 탐지기가 필요한 경우에만 실행되어 불필요한 계산을 대폭 줄이는 것입니다. 이를 위해 이전 프레임에서 계산된 손 랜드마크를 활용하여 현재 프레임의 손 위치를 예측함으로써, 매 프레임마다 손바닥 탐지기를 적용해야 하는 과정을 제거했습니다.

또한, 견고성을 강화하기 위해 손 추적 모델은 입력값에서 손이 존재하고 올바르게 정렬되었는지를 나타내는 신뢰도 값을 함께 출력합니다. 이 신뢰도가 특정 임계값 이하로 떨어질 경우에만 손 검출 모델을 다시 적용하여 다음 프레임을 처리합니다. 이러한 방식은 효율성과 정확성을 동시에 달성하도록 설계되었습니다.

물론 MediaPipe Hands 외에도 다양한 hand pose estimation 모델이 존재하지만, MediaPipe Hands는 사용이 간편하고 CPU에서도 원활하게 작동한다는 점에서 강력한 장점을 가지고 있습니다. 특히, 리소스가 제한된 환경에서도 실시간 성능을 유지할 수 있어 휴대폰, IoT 기기 등 폭넓은 플랫폼에서 활용 가능성이 높기 때문에 다양한 프로젝트에 적용해 보면 좋을 것 같습니다!