본문 바로가기

Study/CV

MediaPipe를 이용한 Real-time hand tracking

google mediaPipe를 이용한 실시간 손 추적 파이프라인

출처: https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html

 

CVPR 2019에서 발표된 구글의 오픈소스 크로스 플랫폼 프레임 워크. 비디오, 오디오 와 같은 다양한 양식의 지각데이터를 처리하기 위한 파이프라인을 구축함. 이 방식을 통해 구글은 단일 프레임에서 손의 21개 3D 키포인트를 추론하고 손, 손가락 추적을 제공함.

 

MediaPipe 를 통해 휴대폰에서 실시간 3D 손 인식 . 구글의 솔루션은 머신 러닝을 사용하여 비디오 프레임에서 손의 21 개의 3D 키포인트를 계산한다. 깊이는 그레이 스케일로 표시됨.


손 추적 및 제스처 인식을 위한 ML 파이프 라인

함께 작동하는 여러 모델로 구성된 ML 파이프 라인을 활용한다.

  • 전체 이미지에서 작동하고 방향이 지정된 손 경계 상자를 반환하는 손바닥 감지기 모델 (BlazePalm)

  • 손바닥 감지기에 의해 정의 된 잘린 이미지 영역에서 작동하고 고화질 3D 손 키포인트를 반환하는 손 랜드마크 모델

  • 이전에 계산된 키 포인트 구성을 개별 제스처 집합으로 분류하는 제스처 인식기

정확하게 자른 손바닥 이미지를 손 랜드마크 모델에 제공하면 데이터 확대(예: 회전, 변환 및 크기 조정) 의 필요성이 대폭 줄어들고 대신 네트워크에서 대부분의 용량을 좌표 예측 정확도에 할당할 수 있다.

 

손 인식 파이프라인 개요

 

BlazePalm: 실시간 손 / 팜 감지

SSD: Single Shot MultiBox Detector https://arxiv.org/abs/1512.02325

BlazeFace처럼 싱글 샷 검출기 모델을 채택했다. 우리의 모델은 이미지 프레임에 비해 큰 스케일 범위(~20x)로 다양한 손 크기에서 작동해야 하며 가려진 손과 스스로 가려진 손을 감지할 수 있어야 한다. 얼굴은 예를 들어 눈과 입 영역에서 높은 콘트라스트 패턴을 가지고 있는 반면, 손에는 그러한 특징이 없기 때문에 시각적 특징만으로 안정적으로 감지하기가 어렵다. 대신 팔, 몸 또는 사람의 특징과 같은 추가 컨텍스트를 제공하면 정확한 손 위치 파악에 도움이 된다.

 

구글은 다양한 전략을 사용해 위의 과제를 해결했다.

 

첫째, 손바닥과 주먹과 같은 단단한 물체의 경계 상자를 추정하는 것이 관절형 손가락을 손으로 감지하는 것보다 훨씬 간단하기 때문에 손 감지기 대신 손바닥 감지기를 훈련한다. 또한 손바닥이 작은 물체이기 때문에 nonmax-suppresion 알고리즘은 악수와 같은 양손 폐색 상태에서도 잘 작동한다. 또한 손바닥은 다른 종횡비를 무시하고 정사각형 경계 상자를 사용하여 모델링 할 수 있으므로 앵커 수를 3-5배 줄일 수 있다.

 

둘째, 인코더-디코더 기능 추출기가 작은 물체 에서도 더 큰 장면 컨섹스트 인식을 위해 사용된다. RetimaNet(https://arxiv.org/abs/1612.03144)의 접근 방식과 비슷함. 

 

마지막, 높은 스케일 분산으로 인한 많은 양의 앵커를 지원하기 위해 훈련 중 초점 손실을 최소화한다.

 

위의 기술을 사용하여 손바닥 감지에서 평균 95.7%의 정밀도를 달성했다. 일반 교차 엔트로피 손실을 사용하고 디코더를 사용하지 않으면 86.22%에 불과하다.

 

손 랜드 마크 모델

전체 이미지에 대한 손바닥 감지 후 후속 손 랜드마크 모델은 회귀를 통해 감지된 손 영역 내부의 21개의 3D 손 너클 좌표의 정확한 키 포인트 위치 파악, 즉 직접 좌표 예측을 수행한다. 이 모델은 일관된 내부 손 포즈 표현을 학습하고 부분적으로 보이는 손의 폐색에도 견고하다.

 

Ground Truth 데이터를 얻기 위해 아래와 같이 21개의 3D좌표로 ~30K개의 실제 이미지에 주석을 달았다. 가능한 손 포즈를 더 잘 커버하고 손 기하학의 특성에 대한 추가 감독을 제공하기 위해 다양한 배경에 고품질 합성 손 모델을 렌더링하고 해당 3D좌표에 매핑한다.

 

위: 정렬 된 손 데이터가 Ground Truth 주석과 함께 추적 네트워크로 전달되었다.  아래: Ground Truth 주석이 있는 렌더링 된 합성 손 이미지

 

그러나 순수 합성 데이터는 야생 도메인으로 제대로 일반화 되지 않았다. 이 문제를 극복하기 위해 혼합 훈련 스키마를 사용한다. 다음 그림에는 개략적인 모델 학습 다이어그램이 나와있다.

 

손 추적 네트워크를 위한 혼합 훈련 스키마. 잘린 실제 사진과 렌더링 된 합성 이미지는 21개의 3D 키포인트를 예측하기 위한 입력으로 사용된다.

 

 

아래 표에는 학습 데이터의 특성에 따른 회귀 정확도가 요약되어 있다. 합성 데이터와 실제 데이터를 모두 사용하면 성능이 크게 향상된다.

 

제스처 인식

예측 된 손 골격 위에 간단한 알고리즘을 적용하여 제스처를 도출한다. 첫째, 각 손가락의 상태는 관절의 누적된 각도에 의해 결정된다. 그런 다음 손가락 상태 집합을 미리 정의 된 제스처 집합에 매핑한다. 간단하면서도 효과적인 기술을 통해 합리적 품질로 기본적 정적 제스처를 추정할 수 있다.

 

 

MediaPipe를 통해 구현

MediaPipe을 통해 인식 파이프 라인을 modular components의 directed graph로 구축할 수 있다. MediaPipe는 크로스 플랫폼에서 모델 추론, 미디어 처리 알고리즘 및 데이터 변환과 같은 작업을 해결하기 위해 확장 가능한 graph 세트와 함께 제공된다. 자르기, 렌더링 및 신경만 계산과 같은 개별 계산은 GPU에서만 수행할 수 있다. 

 

손 추적을 위한 MediaPipe 그래프는 아래와 같다. 그래프는 2개의 하위 그래프로 구성된다. 하나는 손 감지용이고 다른 하나는 손 키포인트 계산용이다. MediaPipe가 제공하는 핵심 최적화 중 하나는 손바닥 감지기가 필요한 경우에만 실행되어 상당한 계산 시간을 절약한다는 것이다. 현재 프레임의 계산된 손 키 포인트에서 후속 비디오 프레임의 손 위치를 추론하여 각 프레임에 대해 손바닥 감지기를 실행할 필요가 없다. 견고성을 위해 손 추적기 모델은 손이 있고 투입 데이터가 합리적으로 정렬되어 있다는 확신을 포착하는 추가 스칼라를 출력한다. 신뢰도가 특정 임계 값 아래로 떨어질 때만 손 감지 모델이 전체 프레임에 다시 적용된다.

 

손 랜드마크 모델의 출력(REJECT_HAND_FLAG)은 손 감지 모델이 트리거 되는 시기를 제어한다. 이 동작은 MediaPipe의 강력한 동기화 빌딩 블록에 의해 달성되어 ML 파이프 라인의 고성능 및 최적 처리량을 제공한다.

 

실시간 솔루션은 위의 것보다 훨씬 복잡하다

 

향후 방향

안정적으로 감지할 수 있는 제스처의 양을 확대하고, 동적 제스처를 지원할 계획

 

'Study > CV' 카테고리의 다른 글

[Ubuntu 18.04] labelme 설치  (0) 2020.08.20