【MediaPipe】수화의 숫자를 읽어 보았다(1~90까지)

mediapipe에서 일본 수화의 숫자를 읽어 보았습니다.



일본 수화의 숫자를 읽어 보았습니다. 도움이되면 다행입니다.
↓youtube로 동작을 소개
googleのmediapipeを使用して日本手話の数字を読み取ってみた

환경 및 결과 개요


  • mediapipe:v0.7.9(메인기), v0.7.10(서브기)로 동작 확인
  • Linux : GPU에서 동작 확인, 메인 기계, Ubuntu18.04
  • mac:cpu에서 동작 확인, 서브기, Catalina10.15.7, MacBook Pro
  • raspberry pi 4b : 우분투에서 시도했지만 작동이 느리고 포기
  • windowsWSL : 라이브 카메라로 움직일 수없는 사양, bazel 빌드까지는 문제 없음
  • android : 동작이 느리고 단념, 다른 쪽의 투고에서는 문제 없을 것 같기 때문에 기종에 의한 것인가?
  • ios : 고전 중 아직 움직이지 않았다

  • 참고로 한 페이지 · 자료


  • 【MediaPipe】투고 기사 정리
  • Simple Hand Gesture Recognition Code
  • Google 공식 ※bazel이나 opencv의 버전, 지원하고 있는 GPU의 확인 등 중요

  • 기능 개요


  • 일본 수화의 숫자 인식 : 1-9, 10, 20, 30, 40, 50, 60, 70, 80, 90
    각 손가락은 3 값 (open/midClose/Close)으로 판정되고, 판정 값의 조합으로 패턴 인식.
  • 문자 배치 : 프로그램 시작 후 경과 시간과 문제와 대답을 화면 오른쪽 상단에 표시
  • 〇 표시 : 문제에 대한 답변이 읽은 손바닥과 일치 할 때 화면에 빨간색 원을 표시합니다

  • 소스 코드



    소스 코드 은 검증중이므로, 동작의 보증등은 할 수 없습니다. 승낙 후 사용하십시오. 이용 조건 등에 대해서는 공식을 참조하십시오.
    ※소스 코드는 편집 파일만 발췌하여 업로드하고 있습니다
    ※mediapipe 본체는 공식을 이용해 주세요

    편집 내용 개요


  • 파일 추가 : hand-gesture~가 손 인식, assignment~가 문제 표시 등
    hand-gesture-recognition/BUILD
    hand-gesture-recognition/hand-gesture-recognition-calculator.cc
    hand-gesture-recognition/assignment-presentation-calculator.cc
  • 파일 편집 : hand-gesture~나 assignment~용 input_stream/output_stream 추가
    ※원 파일로부터 「handedness」를 표시상의 형편으로 깎았습니다
    mediapipe/graphs/hand_tracking/subgraphs/BUILD
    mediapipe/graphs/hand_tracking/subgraphs/hand_landmark_cpu.pbtxt
    mediapipe/graphs/hand_tracking/subgraphs/renderer_cpu.pbtxt
    mediapipe/graphs/hand_tracking/subgraphs/hand_landmark_gpu.pbtxt
    mediapipe/graphs/hand_tracking/subgraphs/renderer_gpu.pbtxt
  • 파일 편집 : 문자나 〇 표시를 위해 편집
    mediapipe/calculators/util/annotation_overlay_calculator.cc
    mediapipe/util/annotation_renderer.cc
    mediapipe/util/annotation_renderer.h

  • 명령



    CPU 빌드 명령
    bazel build -c opt mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu --define MEDIAPIPE_DISABLE_GPU=1
    

    CPU 실행 명령
    GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu  --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt
    

    GPU 빌드 명령
    bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 mediapipe/examples/desktop/hand_tracking:hand_tracking_gpu
    

    GPU 실행 명령
    LOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_gpu   --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_mobile.pbtxt
    

    결과



    mediapipe 대단합니다. 계산 카드와 같은 프로그램을 만들 수 있습니다.

    도전


  • 일본어의 표시는 opencv에서는 NG 같기 때문에 별도로 구현할 필요가있을 것 같습니다
  • 70, 80, 90의 판정이 불안정합니다.
    ※관절이 보이지 않는 손형이므로 mediapipe에 의한 추정이 불안정해집니다
    ※ML등에서 패턴 매칭과는 별도 처리로 하지 않으면 정밀도가 나오지 않을지도 모릅니다
    ※각 수형이 안정되면 12, 81 등, 자리수를 구분한 입력도 가능하게 될 전망입니다
  • 좋은 웹페이지 즐겨찾기