google mediaPipe를 이용한 실시간 손 추적 파이프라인
출처: https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html
CVPR 2019에서 발표된 구글의 오픈소스 크로스 플랫폼 프레임 워크. 비디오, 오디오 와 같은 다양한 양식의 지각데이터를 처리하기 위한 파이프라인을 구축함. 이 방식을 통해 구글은 단일 프레임에서 손의 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좌표에 매핑한다.
그러나 순수 합성 데이터는 야생 도메인으로 제대로 일반화 되지 않았다. 이 문제를 극복하기 위해 혼합 훈련 스키마를 사용한다. 다음 그림에는 개략적인 모델 학습 다이어그램이 나와있다.
아래 표에는 학습 데이터의 특성에 따른 회귀 정확도가 요약되어 있다. 합성 데이터와 실제 데이터를 모두 사용하면 성능이 크게 향상된다.
제스처 인식
예측 된 손 골격 위에 간단한 알고리즘을 적용하여 제스처를 도출한다. 첫째, 각 손가락의 상태는 관절의 누적된 각도에 의해 결정된다. 그런 다음 손가락 상태 집합을 미리 정의 된 제스처 집합에 매핑한다. 간단하면서도 효과적인 기술을 통해 합리적 품질로 기본적 정적 제스처를 추정할 수 있다.
MediaPipe를 통해 구현
MediaPipe을 통해 인식 파이프 라인을 modular components의 directed graph로 구축할 수 있다. MediaPipe는 크로스 플랫폼에서 모델 추론, 미디어 처리 알고리즘 및 데이터 변환과 같은 작업을 해결하기 위해 확장 가능한 graph 세트와 함께 제공된다. 자르기, 렌더링 및 신경만 계산과 같은 개별 계산은 GPU에서만 수행할 수 있다.
손 추적을 위한 MediaPipe 그래프는 아래와 같다. 그래프는 2개의 하위 그래프로 구성된다. 하나는 손 감지용이고 다른 하나는 손 키포인트 계산용이다. MediaPipe가 제공하는 핵심 최적화 중 하나는 손바닥 감지기가 필요한 경우에만 실행되어 상당한 계산 시간을 절약한다는 것이다. 현재 프레임의 계산된 손 키 포인트에서 후속 비디오 프레임의 손 위치를 추론하여 각 프레임에 대해 손바닥 감지기를 실행할 필요가 없다. 견고성을 위해 손 추적기 모델은 손이 있고 투입 데이터가 합리적으로 정렬되어 있다는 확신을 포착하는 추가 스칼라를 출력한다. 신뢰도가 특정 임계 값 아래로 떨어질 때만 손 감지 모델이 전체 프레임에 다시 적용된다.
실시간 솔루션은 위의 것보다 훨씬 복잡하다
향후 방향
안정적으로 감지할 수 있는 제스처의 양을 확대하고, 동적 제스처를 지원할 계획
'Study > CV' 카테고리의 다른 글
[Ubuntu 18.04] labelme 설치 (0) | 2020.08.20 |
---|