MediaPipe Hands: On-device Real-time Hand Tracking
0. Abstract
파이프 라인은 전반적으로 2가지 모델로 설명할 수 있다.
- palm detector : 손의 바운딩 박스를 제공
- hand landmark model : hand skeleton(뼈대) 예상하는 모델
크로스 플랫폼 ML 솔루션을 구축하기 위한 프레임 워크이다.
제안된 모델과 파이프 라인 아키텍쳐는 높은 예측 성능으로 모바일 GPU에서 실시간 추론을 가능하게 한다!
1. Introduction
손 추적은 AR/VR에서 자연스러운 상호작용 및 커뮤니케이션 방식을 제공하는데에 있어 중요한 구성 요소이기때문에 오랜 시간 연구되어왔음. 그러나 , 특수 하드웨어가 아닌 모바일 장치에서 실시간으로 실행하기 어려운 점이 있었음
==> 추가적인 하드웨어 필요없고 모바일 기기에서 실시간으로 수행되는 MediaPipe 보여줄 것 !
- 모바일 기기에서 여러 손을 실시간으로 추적할 수 있는 효율적인 2단계의 손 추적 파이프라인이 있음
- RGB 입력만으로 2.5D 손 포즈 예측 가능한 모델임 (평면의 2D와 Depth를 합한 개념, 손의 깊이 예측)
- 안드로이드, iOS, 웹 등 다양한 플랫폼과 상호 호환적, 즉시 사용가능함
2. Architecture
손 추적 솔루션은 다음과 같은 ML 파이프라인을 가진다.
- palm detector : 전체 입력 이미지에서 작동하고 방향성 있는 바운딩 박스를 통해 손바닥을 찾는 모델
- hand landmark model : palm detector가 찾은 cropped 바운딩 박스 속에서 작동하고 2.5D 랜드마크를 출력
cropped 된 손바닥 이미지 랜드마크를 전달하면 극적으로 데이터 증강의 필요성이 줄어들고 특징점의 위치를 정확하게 알아내게 한다.
실제 감지 시나리오에서 palm detector가 찾은 바운딩 박스가 그대로 hand landmark model의 input으로 들어가기 때문에 모든 프레임에서 detector를 사용하지 않아도 된다. 즉 손이 없어져 바운딩 박스가 입력으로 들어가지 않을때만 detector를 다시 적용하는 것!
2.1 BlazePalm Detector
초기 처음 손의 위치를 찾아내기 위해 BlazeFace와 비슷하게 single shot 모델을 사용한다. single shot 모델이란 ?
손을 탐지할 때에 어려운 점은 다양한 사이즈에 적용가능해야한다는 점과 가려지는 부분이다. 얼굴에 대한 대비는 높은 반면에( 눈 , 코, 입에 대해서 확실한 구분이 감) 손에서 그러한 특징들은 detect하기에 매우 어렵다.
이러한 어려움을 극복하기 위해서 3가지 방법을 시도했다.
1. 손 대신 손바닥을 detect
손바닥과 주먹같은 단단한 물체의 바운딩 박스를 추정하는 것이 관절이 있는 손가락을 감지하는 것보다 간단함
비최대억제가 더 잘 작동된다.
정사각형의 바운딩 박스를 사용해서 모델링이 가능하다.
2. encoder-decoder feature extractor 사용
FPN과 같이 encoder-decoder-deature extractor를 사용하면 작은 객체에 대해서 맥락 인식이 가능해진다.
- encoder: 입력 이미지를 처리하면서 점차적으로 그 해상도를 줄이고, 특징(feature) 맵을 추출하는 역할
- decoder: encoder에서 추출된 특징 맵을 다시 업샘플링하여 원래 입력 이미지와 같은 크기의 출력으로 변환하는 역할
- FPN: 다양한 크기의 객체를 잘 인식하기 위해 여러 해상도의 특징 맵을 동시에 활용하는 네트워크 구조이다. Encoder에서 다양한 해상도의 특징을 추출하고, 이를 Decoder에서 결합하여 작은 객체를 포함한 모든 크기의 객체를 잘 탐지한다. 낮은 해상도에서 추출한 고수준 특징과 높은 해상도에서 추출한 저수준 특징을 동시에 사용하는 것이 핵심이다.
3. Focal loss를 최소화하자.
높은 스케일의 분산을 가지는 많은 앵커들을 더 잘 학습시키기 위해 focal loss 를 최소화함.
2.2 Hand Landmark Model
palm detection 다음 hande landmark model이 그 다음을 수행한다.
회귀를 통해 21개의 2.5D 랜드마크의 좌표를 탐지한다.
이 모델은 3가지 출력값이 존재한다.
1. 21개의 손 랜드마크들은 x,y,상대적 깊이를 포함한다.
2. input 데이터에 대해서 손이 존재할 확률
3. 오른손인지 왼손인지 알려줌
3. Dataset and Annotation
- In-the-wild 데이터셋:
- 6,000장의 이미지로 구성된 이 데이터셋은 다양한 지리적 배경, 조명 조건, 그리고 손 모양을 포함한다.
- 단점은 손의 복잡한 동작(관절 움직임)이 포함되지 않았다는 것이다.
- In-house 제스처 데이터셋:
- 10,000장의 이미지로 구성되며, 가능한 모든 손 제스처를 다양한 각도에서 촬영했다.
- 이 데이터셋은 30명의 사람들로부터 수집되었기 때문에, 배경의 다양성이 제한적이라는 단점이 존재.
- 이 데이터셋은 In-the-wild 데이터셋과 상호 보완하여 모델의 성능 향상시킴.
- 합성 데이터셋:
- 100,000장의 이미지를 포함하며, 다양한 배경 위에 고품질의 합성 손 모델을 렌더링하여 생성함.
- 상업용 3D 손 모델을 사용했으며, 이 모델은 24개의 뼈와 36개의 블렌드셰이프를 가지고 있어 손가락과 손바닥의 두께를 조절할 수 있음
- 다섯 가지 피부색을 표현할 수 있는 텍스처 제공.
- 이 데이터셋은 손의 다양한 포즈와 깊이 정보(3D 좌표)를 잘 반영하기 위해 생성.
Palm Detector의 경우, 손을 지역화하고 다양한 외관을 제공하는 데 가장 적합한 In-the-wild 데이터셋만 사용한다. 반면, Hand Landmark Model을 훈련하는 데는 모든 데이터셋을 사용한다.
4. Results
Hand Landmarks Model의 성능을 향상시키기 위해 다양한 데이터셋과 모델 변형을 실험한 결과를 정리한 것이다.
표 1. 탐지기의 구성 요소에 대한 소거 연구 결과
Model Variation | Average Precision |
No decoder + cross entropy loss | 86.22% |
Decoder + cross entropy loss | 94.07% |
Decoder + focal loss | 95.7% |
표 2. 다양한 데이터셋으로 훈련된 모델의 결과
Dataset MSE normalized by palm size
Dataset | MSE normalized by palm size |
Only real-world | 16.1% |
Only synthetic | 25.7% |
Combined | 13.4% |
표 3. 특징점 모델의 성능
Model | Params (M) | MSE | Time(ms) Pixel |
Time(ms) Samsung S |
Time(ms) iPhone1 |
Light |
1 | 11.83 | 6.6 | 5.6 | 1.1 |
Full | 1.98 | 10.05 | 16.1 | 11.1 | 5.3 |
Heavy | 4.02 | 9.817 | 36.9 | 25.8 | 7.5 |
- 실험 결과:
- 실제(real-world)와 합성(synthetic) 데이터셋을 결합하여 훈련한 모델이 가장 좋은 성능을 보였다. 합성 데이터셋을 추가하면 프레임 간의 시각적 떨림이 줄어들어 성능을 높인다.
- 표2에 따르면, 실제 데이터셋만 사용한 경우보다 합성 데이터셋을 함께 사용했을 때 MSE(평균 제곱 오차)가 더 낮아져(16.1%에서 13.4%로 감소) 더 정확한 결과를 얻었다.
- 모델 변형 실험:
- Palm Detector 실험에서 decoder와 focal loss를 사용한 모델이 가장 높은 평균 정확도(95.7%)를 기록했다 (표 1).
- 모바일 기기에서의 실시간 성능:
- 다양한 크기의 모델을 실험한 결과, "Full" 모델이 품질과 속도 사이에서 가장 좋은 균형을 제공했다. 이 모델은 작은 개선만으로 성능이 크게 떨어지지 않으면서도 실시간 처리가 가능했다.
5. Implementation in MediaPipe
MediaPipe의 손 추적 시스템의 전체 과정은 모듈화된 요소들(Calculators)로 간단하게 시각화할 수 있다.
이러한 cropping, rendering 및 신경망 계산과 같은 Calculator는 GPU 가속을 활용하도록 최적화한다.
다시한번 MediaPipe의 손 추적에 대한 흐름을 보여주자면 Palm Detector가 먼저 손의 바운딩 박스를 추출한 후 이것이 입력값이 되어 HandLandmark model로 들어간다. 즉, Palm Detector는 손이 바운딩 박스를 벗어났을때만(특정 임계값보다 낮을 때) 다시 실행된다.
6. Application examples
제스처 인식과 AR 효과와 같은 많은 응용 프로그램에서 사용할 수 있다.
손 제스처를 계산하기 위해 손가락의 상태( 구부러졌는지 곧은지 )를 통해 관절의 누적 각도를 구한다. 그런다음 손가락 상태 집합을 미리 정의된 제스처 집합에 매핑한다. 이런 기술을 통해 정적 제스처를 예측하도록 학습한다.
7. Conclusion
본 논문은 여러 플랫폼에서 실시간으로 예측가능한 앤드투앤드 손 추적 솔루션인 MediaPipe hands를 제안한다.
특수한 하드웨어 없이 2.5D 랜드마크를 예측하기 때문에 쉽게 배포가능하다는 장점이 있다.
그리고 이 연구는 오픈소스화되어있다. 그러니 창의적인 애플리케이션을 만들어봐라 !
처음 논문을 읽은 후 단순히 훑어 읽는 것보다 그 단어 하나하나의 의미를 아는 것이 중요하다는 것을 알았다.
논문을 읽는 것을 통해 모델의 흐름을 이해할 수 있는 수준이 되도록 논문을 자주 읽어야겠다. !
'AI' 카테고리의 다른 글
LSTM 공부 (2) | 2024.09.12 |
---|---|
딥다이브 8월 활동 정리 및 회고록 (1) | 2024.08.29 |
딥다이브 딥러닝 입문 스터디 6차- 임베딩 (0) | 2024.08.16 |
딥다이브 딥러닝 스터디 5차시 - 텍스트 데이터 전처리 (2) | 2024.08.14 |
딥다이브 딥러닝 스터디 4차시- 지도학습 (0) | 2024.08.09 |