คำแนะนำเกี่ยวกับงานการจดจำท่าทางสัมผัส

งานโปรแกรมจดจำท่าทางสัมผัสของ MediaPipe ช่วยให้คุณจดจำท่าทางสัมผัสของมือได้แบบเรียลไทม์ และแสดงผลลัพธ์ท่าทางสัมผัสของมือที่รู้จัก รวมถึงจุดสังเกตของมือที่ตรวจพบ คุณสามารถใช้งานนี้เพื่อจดจำท่าทางสัมผัสที่เฉพาะเจาะจงจากผู้ใช้ และเรียกใช้ฟีเจอร์ของแอปพลิเคชันที่สอดคล้องกับท่าทางสัมผัสเหล่านั้น

งานนี้ดำเนินการกับข้อมูลรูปภาพด้วยโมเดลแมชชีนเลิร์นนิง (ML) และรับข้อมูลแบบคงที่หรือสตรีมอย่างต่อเนื่อง ผลงานนี้จะแสดงจุดสังเกตของมือในพิกัดรูปภาพ จุดสังเกตของมือในพิกัดของโลก ความถนัดของมือ (ซ้าย/ขวา) และหมวดหมู่ท่าทางสัมผัสด้วยมือของมือหลายข้าง

ลองเลย

เริ่มต้นใช้งาน

เริ่มใช้งานนี้โดยทำตามคำแนะนำในการใช้งานสำหรับแพลตฟอร์มเป้าหมาย คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานเบื้องต้นของงานนี้ โดยใช้โมเดลที่แนะนำ และแสดงตัวอย่างโค้ดที่มีตัวเลือกการกำหนดค่าที่แนะนำ

รายละเอียดงาน

ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่าของงานนี้

ฟีเจอร์

  • การประมวลผลรูปภาพอินพุต - การประมวลผลรวมถึงการหมุนรูปภาพ การปรับขนาด การทำให้เป็นมาตรฐาน และการแปลงพื้นที่สี
  • เกณฑ์คะแนน - กรองผลลัพธ์ตามคะแนนการคาดการณ์
  • ติดป้ายกำกับรายการที่อนุญาตและรายการที่ปฏิเสธ - ระบุหมวดหมู่ท่าทางสัมผัสที่โมเดลรู้จัก
ข้อมูลงาน เอาต์พุตของงาน
โปรแกรมรู้จำท่าทางสัมผัสจะยอมรับการป้อนข้อมูลประเภทใดประเภทหนึ่งต่อไปนี้
  • ภาพนิ่ง
  • เฟรมวิดีโอที่ถอดรหัสแล้ว
  • ฟีดวิดีโอสด
การจดจำท่าทางสัมผัสจะแสดงผลดังนี้
  • หมวดหมู่ของท่าทางสัมผัสด้วยมือ
  • มือของมือที่ตรวจพบ
  • จุดสังเกตของมือที่ตรวจพบในพิกัดรูปภาพ
  • จุดสังเกตของมือที่ตรวจพบในพิกัดโลก

ตัวเลือกการกำหนดค่า

งานมีตัวเลือกการกำหนดค่าต่อไปนี้

ชื่อตัวเลือก คำอธิบาย ช่วงของค่า ค่าเริ่มต้น
running_mode ตั้งค่าโหมดการทำงาน มี 3 โหมดดังนี้

IMAGE: โหมดสำหรับการป้อนข้อมูลรูปภาพเดียว

วิดีโอ: โหมดสำหรับเฟรมที่ถอดรหัสของวิดีโอ

LIVE_Stream: โหมดสำหรับสตรีมแบบสดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ ต้องมีการเรียกใช้ resultsListener เพื่อตั้งค่า Listener เพื่อรับผลลัพธ์แบบไม่พร้อมกัน
{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 หากมี
  • ผลลัพธ์สูงสุด: จำนวนสูงสุดของผลลัพธ์การจัดประเภทที่มีคะแนนสูงสุดที่จะแสดง หาก < 0 ระบบจะแสดงผลทั้งหมดที่มี
  • เกณฑ์คะแนน: คะแนนด้านล่างที่ผลลัพธ์ถูกปฏิเสธ หากตั้งค่าเป็น 0 ระบบจะแสดงผลลัพธ์ที่มีอยู่ทั้งหมด
  • รายการที่อนุญาตของหมวดหมู่: รายการที่อนุญาตสำหรับชื่อหมวดหมู่ หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทที่หมวดหมู่ไม่อยู่ในชุดนี้จะถูกกรองออก ใช้กับรายการที่ปฏิเสธได้พร้อมกัน
  • รายการหมวดหมู่ที่ปฏิเสธ: รายการที่ปฏิเสธของชื่อหมวดหมู่ หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทที่มีหมวดหมู่ในชุดนี้จะถูกกรองออก พิเศษเฉพาะที่มาพร้อมกับรายการที่อนุญาต
    • ภาษาของชื่อที่แสดง: any string
    • ผลลัพธ์สูงสุด: any integer
    • เกณฑ์คะแนน: 0.0-1.0
    • รายการที่อนุญาตของหมวดหมู่: vector of strings
    • รายการหมวดหมู่ที่ไม่อนุญาต: vector of strings
    • ภาษาของชื่อที่แสดง: "en"
    • ผลลัพธ์สูงสุด: -1
    • เกณฑ์คะแนน: 0
    • รายการที่อนุญาตของหมวดหมู่: ว่างเปล่า
    • รายการหมวดหมู่ที่ปฏิเสธ: ว่างเปล่า
    custom_gestures_classifier_options ตัวเลือกสำหรับการกำหนดค่าการทำงานของตัวแยกประเภทท่าทางสัมผัสที่กำหนดเอง
  • ภาษาของชื่อที่แสดง: ภาษาที่จะใช้สำหรับชื่อที่แสดงที่ระบุผ่านข้อมูลเมตาของโมเดล TFLite หากมี
  • ผลลัพธ์สูงสุด: จำนวนสูงสุดของผลลัพธ์การจัดประเภทที่มีคะแนนสูงสุดที่จะแสดง หาก < 0 ระบบจะแสดงผลทั้งหมดที่มี
  • เกณฑ์คะแนน: คะแนนด้านล่างที่ผลลัพธ์ถูกปฏิเสธ หากตั้งค่าเป็น 0 ระบบจะแสดงผลลัพธ์ที่มีอยู่ทั้งหมด
  • รายการที่อนุญาตของหมวดหมู่: รายการที่อนุญาตสำหรับชื่อหมวดหมู่ หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทที่หมวดหมู่ไม่อยู่ในชุดนี้จะถูกกรองออก ใช้กับรายการที่ปฏิเสธได้พร้อมกัน
  • รายการหมวดหมู่ที่ปฏิเสธ: รายการที่ปฏิเสธของชื่อหมวดหมู่ หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทที่มีหมวดหมู่ในชุดนี้จะถูกกรองออก พิเศษเฉพาะที่มาพร้อมกับรายการที่อนุญาต
    • ภาษาของชื่อที่แสดง: any string
    • ผลลัพธ์สูงสุด: any integer
    • เกณฑ์คะแนน: 0.0-1.0
    • รายการที่อนุญาตของหมวดหมู่: vector of strings
    • รายการหมวดหมู่ที่ไม่อนุญาต: vector of strings
    • ภาษาของชื่อที่แสดง: "en"
    • ผลลัพธ์สูงสุด: -1
    • เกณฑ์คะแนน: 0
    • รายการที่อนุญาตของหมวดหมู่: ว่างเปล่า
    • รายการหมวดหมู่ที่ปฏิเสธ: ว่างเปล่า
    result_callback ตั้งค่า Listener ผลลัพธ์ให้รับผลการแยกประเภทแบบไม่พร้อมกันเมื่อตัวจดจำท่าทางสัมผัสอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทำงานเป็น LIVE_STREAM เท่านั้น ResultListener ไม่มีข้อมูล ไม่มีข้อมูล

    รูปแบบ

    โปรแกรมจดจำท่าทางสัมผัสใช้แพ็กเกจโมเดลซึ่งมีแพ็กเกจโมเดลที่จัดเตรียมไว้ล่วงหน้า 2 แพ็กเกจ ได้แก่ แพ็กเกจโมเดลจุดสังเกต และแพ็กเกจโมเดลการจัดประเภทท่าทางสัมผัส โมเดลจุดสังเกตจะตรวจจับรูปแบบมือและรูปเรขาคณิตของมือ โมเดลการจดจำท่าทางสัมผัสจะจดจำท่าทางสัมผัสที่อิงตามเรขาคณิตของมือ

    ชื่อโมเดล รูปร่างอินพุต ประเภทการหาปริมาณ การ์ดโมเดล ฉบับ
    HandGestureClassifier 192 x 192, 224 x 224 ทศนิยม 16 ข้อมูล ล่าสุด

    งานนี้ยังรองรับการแก้ไขแพ็กเกจโมเดลโดยใช้ Model Maker อีกด้วย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้โมเดล 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 แบบที่พบบ่อยข้างต้น คุณขยายแพ็กเกจโมเดลเพื่อให้จดจำท่าทางสัมผัสได้มากขึ้นโดยการฝึกตัวแยกประเภทท่าทางสัมผัสที่กำหนดเอง ดูรายละเอียดเพิ่มเติมในส่วนรูปแบบที่กำหนดเองต่อไปนี้

    การจดจำท่าทางสัมผัสที่ใช้ทั้งตัวแยกประเภทท่าทางสัมผัสสำเร็จรูปและตัวแยกประเภทท่าทางสัมผัสที่กำหนดเองจะใช้ท่าทางสัมผัสที่กำหนดเองหากตัวแยกประเภททั้ง 2 ตัวจดจำท่าทางสัมผัสเดียวกันในหมวดหมู่ของตน หากมีตัวแยกประเภทท่าทางสัมผัสเพียง 1 ตัวที่จดจำท่าทางสัมผัสได้ การจดจำท่าทางสัมผัสจะแสดงท่าทางสัมผัสที่รู้จักโดยตรง

    การเปรียบเทียบงาน

    นี่คือการเปรียบเทียบงานสำหรับทั้งไปป์ไลน์ตามโมเดลที่ฝึกล่วงหน้าไว้ข้างต้น ผลของเวลาในการตอบสนองคือเวลาในการตอบสนองโดยเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU

    ชื่อโมเดล เวลาในการตอบสนองของ CPU เวลาในการตอบสนองของ GPU
    GestureRecognizer 16.76 มิลลิวินาที 20.87 มิลลิวินาที

    โมเดลที่กำหนดเอง

    หากคุณต้องการปรับปรุงหรือเปลี่ยนแปลงความสามารถของโมเดลที่ให้ไว้ในงานนี้ คุณสามารถใช้ Model Maker เพื่อแก้ไขโมเดลที่มีอยู่ได้ โมเดลที่กำหนดเองที่ใช้กับ MediaPipe ต้องอยู่ในรูปแบบ .task ซึ่งเป็นไฟล์แพ็กเกจโมเดล คุณควรพิจารณาใช้ Model Maker เพื่อแก้ไขโมเดลที่มีให้สำหรับงานนี้ ก่อนที่จะสร้างโมเดลของคุณเอง

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับแต่งโมเดลสำหรับงานนี้ที่หัวข้อปรับแต่งโมเดลสำหรับการจดจำท่าทางสัมผัส