동작 인식 작업 가이드

MediaPipe 동작 인식기 작업을 사용하면 손 동작을 실시간으로 인식하고 인식된 손의 랜드마크와 함께 인식된 손 동작 결과를 제공합니다. 이 작업을 사용하여 사용자의 특정 손 동작을 인식하고 이러한 동작에 해당하는 애플리케이션 기능을 호출할 수 있습니다.

이 작업은 머신러닝 (ML) 모델을 사용하여 이미지 데이터에서 작동하며 정적 데이터 또는 연속 스트림을 허용합니다. 작업은 이미지 좌표의 손 랜드마크, 세계 좌표의 손 랜드마크, 잘 쓰는 손(왼쪽/오른손), 여러 손의 손 동작 카테고리를 출력합니다.

사용해 보기

시작하기

이 작업의 사용을 시작하려면 대상 플랫폼별 구현 가이드 중 하나를 따르세요. 이러한 플랫폼별 가이드에서는 권장 모델을 사용하여 이 작업의 기본 구현을 안내하고 권장 구성 옵션이 포함된 코드 예를 제공합니다.

태스크 세부정보

이 섹션에서는 이 태스크의 기능, 입력, 출력 및 구성 옵션을 설명합니다.

기능

  • 입력 이미지 처리 - 처리에는 이미지 회전, 크기 조절, 정규화, 색 공간 변환이 포함됩니다.
  • 점수 임곗값 - 예측 점수를 기준으로 결과를 필터링합니다.
  • 라벨 허용 목록 및 차단 목록 - 모델이 인식하는 동작 카테고리를 지정합니다.
작업 입력 작업 출력
동작 인식기는 다음 데이터 유형 중 하나의 입력을 허용합니다.
  • 정지 이미지
  • 디코딩된 동영상 프레임
  • 실시간 동영상 피드
동작 인식기는 다음 결과를 출력합니다.
  • 손 동작의 카테고리
  • 잘 인식된 손
  • 이미지 좌표에서 감지된 손의 랜드마크
  • 세계 좌표에서 감지된 손의 랜드마크

구성 옵션

이 태스크에는 다음과 같은 구성 옵션이 있습니다.

옵션 이름 설명 값 범위 기본값
running_mode 작업의 실행 모드를 설정합니다. 모드는 세 가지가 있습니다.

IMAGE: 단일 이미지 입력 모드입니다.

VIDEO: 동영상의 디코딩된 프레임에 대한 모드입니다.

LIVE_STREAM: 카메라에서 전송하는 것과 같은 입력 데이터의 실시간 스트림 모드입니다. 이 모드에서는 resultListener를 호출하여 비동기식으로 결과를 수신하도록 리스너를 설정해야 합니다.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands 최대 손의 수는 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"]
입니다.
  • 표시 이름 언어: TFLite 모델 메타데이터를 통해 지정된 표시 이름에 사용되는 언어입니다(있는 경우).
  • Max results(최대 결과 수): 반환할 최고 점수 분류 결과의 최대 개수입니다. 0보다 작은 경우 사용 가능한 모든 결과가 반환됩니다.
  • 점수 임계값: 이 점수 미만이면 결과가 거부됩니다. 0으로 설정하면 사용 가능한 모든 결과가 반환됩니다.
  • 카테고리 허용 목록: 카테고리 이름의 허용 목록입니다. 비어 있지 않으면 이 세트에 카테고리가 없는 분류 결과가 필터링됩니다. 차단 목록과 상호 배타적입니다.
  • 카테고리 차단 목록: 카테고리 이름의 차단 목록입니다. 비어 있지 않으면 카테고리가 이 세트에 있는 분류 결과가 필터링됩니다. 허용 목록과 상호 배타적입니다.
    • 표시 이름 언어: any string
    • 최대 결과: any integer
    • 점수 기준: 0.0-1.0
    • 카테고리 허용 목록: vector of strings
    • 카테고리 차단 목록: vector of strings
    • 표시 이름 언어: "en"
    • 최대 결과: -1
    • 점수 기준: 0
    • 카테고리 허용 목록: 비어 있음
    • 카테고리 차단 목록: 비어 있음
    custom_gestures_classifier_options 맞춤 동작 분류 기준 동작을 구성하기 위한 옵션입니다.
  • 표시 이름 언어: TFLite 모델 메타데이터를 통해 지정된 표시 이름에 사용되는 언어입니다(있는 경우).
  • Max results(최대 결과 수): 반환할 최고 점수 분류 결과의 최대 개수입니다. 0보다 작은 경우 사용 가능한 모든 결과가 반환됩니다.
  • 점수 임계값: 이 점수 미만이면 결과가 거부됩니다. 0으로 설정하면 사용 가능한 모든 결과가 반환됩니다.
  • 카테고리 허용 목록: 카테고리 이름의 허용 목록입니다. 비어 있지 않으면 이 세트에 카테고리가 없는 분류 결과가 필터링됩니다. 차단 목록과 상호 배타적입니다.
  • 카테고리 차단 목록: 카테고리 이름의 차단 목록입니다. 비어 있지 않으면 카테고리가 이 세트에 있는 분류 결과가 필터링됩니다. 허용 목록과 상호 배타적입니다.
    • 표시 이름 언어: any string
    • 최대 결과: any integer
    • 점수 기준: 0.0-1.0
    • 카테고리 허용 목록: vector of strings
    • 카테고리 차단 목록: vector of strings
    • 표시 이름 언어: "en"
    • 최대 결과: -1
    • 점수 기준: 0
    • 카테고리 허용 목록: 비어 있음
    • 카테고리 차단 목록: 비어 있음
    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
    

    모델이 손을 감지하지만 동작을 인식하지 못하는 경우 동작 인식기는 '없음' 결과를 반환합니다. 모델에서 손을 감지하지 못하면 동작 인식기가 빈 상태를 반환합니다.

    동작 분류 모델 번들에는 동작 임베딩 모델 및 동작 분류 모델이 이어지는 2단계 신경망 파이프라인이 포함되어 있습니다. 자세한 내용은 동작 분류 모델 카드를 참고하세요.

    동작 삽입 모델은 이미지 특징을 특징 벡터로 인코딩하며, 분류 모델은 특징 벡터를 입력으로 사용하는 간단한 동작 분류자입니다. 제공된 동작 분류 모델 번들에는 미리 준비된 동작 분류 기준이 포함되어 있습니다. 이 분류기는 위에서 소개한 7가지 일반적인 손 동작을 감지합니다. 자체 맞춤 동작 분류자를 학습시켜 모델 번들을 확장하여 더 많은 동작을 인식할 수 있습니다. 자세한 내용은 다음 커스텀 모델 섹션을 참조하세요.

    미리 준비된 동작 분류 기준과 맞춤 동작 분류 기준이 모두 있는 동작 인식기에서는 두 분류 기준이 모두 카테고리에서 동일한 동작을 인식하는 경우 맞춤 동작을 선호합니다. 하나의 동작 분류자만 동작을 인식하면 동작 인식기가 인식된 동작을 직접 출력합니다.

    작업 벤치마크

    다음은 위의 선행 학습된 모델을 기반으로 전체 파이프라인에 대한 작업 벤치마크입니다. 지연 시간 결과는 CPU / GPU를 사용하는 Pixel 6의 평균 지연 시간입니다.

    모델 이름 CPU 지연 시간 GPU 지연 시간
    GestureRecognizer 16.76밀리초 20.87밀리초

    커스텀 모델

    이 작업에서 제공하는 모델의 기능을 개선하거나 변경하려면 Model Maker를 사용하여 기존 모델을 수정하면 됩니다. MediaPipe와 함께 사용되는 맞춤 모델은 모델 번들 파일인 .task 형식이어야 합니다. 직접 빌드하기 전에 Model Maker를 사용하여 이 태스크에 제공된 모델을 수정하는 것이 좋습니다.

    이 작업의 모델 맞춤설정에 관한 자세한 내용은 동작 인식기용 모델 맞춤설정을 참고하세요.