MediaPipe 동작 인식기 태스크를 사용하면 손 동작을 실시간으로 인식할 수 있으며, 감지된 손의 랜드마크와 함께 인식된 손 동작 결과를 제공합니다. 이 태스크를 사용하여 사용자의 특정 손 동작을 인식하고 이러한 동작에 해당하는 애플리케이션 기능을 호출할 수 있습니다.
이 태스크는 머신러닝 (ML) 모델을 사용하여 이미지 데이터를 처리하며 정적 데이터 또는 연속 스트림을 허용합니다. 이 작업은 이미지 좌표의 손 랜드마크, 세계 좌표의 손 랜드마크, 손잡이 (왼손/오른손), 여러 손의 손 동작 카테고리를 출력합니다.
시작하기
대상 플랫폼에 관한 다음 구현 가이드 중 하나에 따라 이 작업을 시작합니다. 다음 플랫폼별 가이드에서는 권장 모델을 사용하여 이 작업의 기본 구현을 안내하고 권장 구성 옵션이 포함된 코드 예시를 제공합니다.
태스크 세부정보
이 섹션에서는 이 태스크의 기능, 입력, 출력, 구성 옵션을 설명합니다.
기능
- 입력 이미지 처리 - 처리에는 이미지 회전, 크기 조절, 정규화, 색상 공간 변환이 포함됩니다.
- 점수 기준점: 예측 점수를 기준으로 결과를 필터링합니다.
- 라벨 허용 목록 및 차단 목록: 모델에서 인식하는 동작 카테고리를 지정합니다.
태스크 입력 | 태스크 출력 |
---|---|
동작 감지기는 다음 데이터 유형 중 하나의 입력을 허용합니다.
|
동작 감지기는 다음과 같은 결과를 출력합니다.
|
구성 옵션
이 태스크에는 다음과 같은 구성 옵션이 있습니다.
옵션 이름 | 설명 | 값 범위 | 기본값 | |
---|---|---|---|---|
running_mode |
태스크의 실행 모드를 설정합니다. 모드는 세 가지입니다. IMAGE: 단일 이미지 입력의 모드입니다. 동영상: 동영상의 디코딩된 프레임 모드입니다. LIVE_STREAM: 카메라와 같은 입력 데이터의 라이브 스트림 모드입니다. 이 모드에서는 결과를 비동기식으로 수신할 리스너를 설정하려면 resultListener를 호출해야 합니다. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
GestureRecognizer 는 최대 GestureRecognizer 개의 손을 감지할 수 있습니다.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
손바닥 감지 모델에서 손 감지가 성공으로 간주되기 위한 최소 신뢰도 점수입니다. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
손 지형지물 감지 모델에서 손 존재 점수의 최소 신뢰도 점수입니다. 동작 인식기의 동영상 모드 및 라이브 스트림 모드에서 손 랜드마크 모델의 손 존재 신뢰도 점수가 이 기준점 미만이면 손바닥 감지 모델이 트리거됩니다. 그렇지 않으면 경량 손 추적 알고리즘을 사용하여 후속랜드마크 감지를 위한 손의 위치를 결정합니다. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
손 추적이 성공으로 간주되는 최소 신뢰도 점수입니다. 현재 프레임과 마지막 프레임의 손 사이의 경계 상자 IoU 임곗값입니다. 동작 인식기의 동영상 모드 및 스트림 모드에서 추적이 실패하면 동작 인식기가 손 감지를 트리거합니다. 그렇지 않으면 손 감지가 건너뜁니다. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
사전 준비된 동작 분류기 동작을 구성하기 위한 옵션입니다. 미리 준비된 동작은 ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] 입니다. |
|
|
|
custom_gestures_classifier_options |
맞춤 동작 분류기 동작을 구성하기 위한 옵션입니다. |
|
|
|
result_callback |
동작 인식기가 라이브 스트림 모드일 때 분류 결과를 비동기식으로 수신하도록 결과 리스너를 설정합니다.
실행 모드가 LIVE_STREAM 로 설정된 경우에만 사용할 수 있습니다. |
ResultListener |
해당 사항 없음 | 해당 사항 없음 |
모델
동작 인식기는 사전 패키징된 두 가지 모델 번들(손 랜드마크 모델 번들 및 동작 분류 모델 번들)이 포함된 모델 번들을 사용합니다. 지형지물 모델은 손과 손 도형의 존재를 감지하고 동작 인식 모델은 손 도형을 기반으로 동작을 인식합니다.
모델 이름 | 입력 셰이프 | 양자화 유형 | 모델 카드 | 버전 |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | 부동 소수점 수 16 | 정보 | 최신 |
이 태스크는 Model Maker를 사용하여 모델 번들의 수정도 지원합니다. Model Maker를 사용하여 이 작업에 맞게 모델을 맞춤설정하는 방법에 관한 자세한 내용은 동작 감지기용 모델 맞춤설정 페이지를 참고하세요.
손 지형지물 모델 번들
손 랜드마크 모델 번들은 감지된 손 영역 내에서 21개의 손가락 관절 좌표의 주요 지점 위치를 감지합니다. 이 모델은 약 30, 000개의 실제 이미지와 여러 배경에 적용된 여러 개의 렌더링된 합성 손 모델을 사용하여 학습되었습니다. 아래에서 21개 명소의 정의를 확인하세요.
손 랜드마커 모델 번들에는 손바닥 감지 모델과 손 랜드마커 감지 모델이 포함되어 있습니다. 손바닥 감지 모델은 전체 입력 이미지에서 손의 영역을 찾고 손 랜드마크 감지 모델은 손바닥 감지 모델에 의해 정의된 잘린 손 이미지에서 랜드마크를 찾습니다.
손바닥 감지 모델은 훨씬 더 많은 시간이 소요되므로 동영상 모드 또는 라이브 스트림 모드에서 동작 인식기는 현재 프레임에서 감지된 손 랜드마크로 정의된 경계 상자를 사용하여 다음 프레임에서 손 영역을 찾습니다. 이렇게 하면 동작 감지기가 손바닥 감지 모델을 트리거하는 횟수가 줄어듭니다. 손 랜드마크 모델이 더 이상 필요한 손 존재 수를 충분히 식별할 수 없거나 손 추적이 실패한 경우에만 손바닥 감지 모델이 호출되어 손을 다시 찾습니다.
동작 분류 모델 번들
동작 분류 모델 번들은 다음과 같은 일반적인 손 동작을 인식할 수 있습니다.
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
모델이 손을 감지했지만 동작을 인식하지 못하면 동작 인식기는 'None' 결과를 반환합니다. 모델이 손을 감지하지 못하면 동작 인식기가 비어 있는 값을 반환합니다.
동작 분류 모델 번들에는 동작 임베딩 모델과 동작 분류 모델이 차례로 포함된 두 단계 신경망 파이프라인이 포함되어 있습니다. 자세한 내용은 동작 분류 모델 카드를 참고하세요.
동작 임베딩 모델은 이미지 특성을 특성 벡터로 인코딩하고 분류 모델은 특성 벡터를 입력으로 사용하는 경량 동작 분류기입니다. 제공된 동작 분류 모델 번들에는 위에 소개된 7가지 일반적인 손 동작을 감지하는 사전 준비된 동작 분류기가 포함되어 있습니다. 자체 맞춤 동작 분류기를 학습하여 더 많은 동작을 인식하도록 모델 번들을 확장할 수 있습니다. 자세한 내용은 다음 맞춤 모델 섹션을 참고하세요.
사전 준비된 동작 분류 기준과 맞춤 동작 분류 기준이 모두 있는 동작 인식기는 두 분류 기준이 모두 카테고리에서 동일한 동작을 인식하는 경우 맞춤 동작을 선호합니다. 동작 분류기 하나만 동작을 인식하는 경우 동작 인식기는 인식된 동작을 직접 출력합니다.
작업 벤치마크
다음은 위의 사전 학습된 모델을 기반으로 한 전체 파이프라인의 태스크 벤치마크입니다. 지연 시간 결과는 CPU / GPU를 사용하는 Pixel 6의 평균 지연 시간입니다.
모델 이름 | CPU 지연 시간 | GPU 지연 시간 |
---|---|---|
GestureRecognizer | 16.76ms | 20.87ms |
커스텀 모델
이 작업에 제공된 모델의 기능을 개선하거나 변경하려면 Model Maker를 사용하여 기존 모델을 수정하면 됩니다. MediaPipe에서 사용하는 맞춤 모델은 모델 번들 파일인 .task
형식이어야 합니다. 자체 모델을 빌드하기 전에 Model Maker를 사용하여 이 작업에 제공된 모델을 수정하는 것이 좋습니다.
이 작업에 맞게 모델을 맞춤설정하는 방법에 관한 자세한 내용은 동작 감지기용 모델 맞춤설정을 참고하세요.