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

มือทำท่าทางชูนิ้วโป้งซึ่งโมเดลระบุว่าเป็นท่าทางชูนิ้วโป้งโดยมีระดับความเชื่อมั่นอยู่ที่ 63%

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

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

ลองเลย

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

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

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

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

ฟีเจอร์

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

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

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

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

รูปภาพ: โหมดสำหรับอินพุตรูปภาพเดียว

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

LIVE_STREAM: โหมดสำหรับไลฟ์สดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ ต้องเรียกใช้ resultListener เพื่อตั้งค่า 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 คะแนนความเชื่อมั่นขั้นต่ำของคะแนนการมีอยู่ของมือในโมเดลการตรวจจับ จุดสังเกตของมือ ในโหมดวิดีโอและโหมดไลฟ์สดของ Gesture Recognizer หากคะแนนความน่าเชื่อถือในการตรวจจับมือจากโมเดลแลนด์มาร์กของมือต่ำกว่า เกณฑ์นี้ ระบบจะเรียกใช้โมเดลการตรวจจับฝ่ามือ ไม่เช่นนั้น ระบบจะใช้อัลกอริทึมการติดตามการเคลื่อนไหวของมือแบบเบาเพื่อระบุตำแหน่งของมือสำหรับการตรวจหาจุดสังเกตในภายหลัง 0.0 - 1.0 0.5
min_tracking_confidence คะแนนความเชื่อมั่นขั้นต่ำสำหรับการพิจารณาว่าการติดตามการเคลื่อนไหวของมือ ประสบความสำเร็จ นี่คือเกณฑ์ IOU ของกรอบล้อมรอบระหว่างมือในเฟรมปัจจุบันและเฟรมสุดท้าย ในโหมดวิดีโอและโหมดสตรีมของ Gesture Recognizer หากการติดตามล้มเหลว Gesture Recognizer จะทริกเกอร์การตรวจจับมือ ไม่เช่นนั้น ระบบจะข้ามการตรวจจับมือ 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 float 16 ข้อมูล ล่าสุด

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

    ชุดโมเดลจุดสังเกตของมือ

    ชุดโมเดลเครื่องหมายมือจะตรวจหาการแปลคีย์พอยต์ของพิกัดข้อนิ้วมือ 21 จุดภายในภูมิภาคมือที่ตรวจพบ โมเดลได้รับการฝึก จากรูปภาพจริงประมาณ 30, 000 รูป รวมถึงโมเดลมือสังเคราะห์ที่เรนเดอร์ หลายแบบซึ่งวางซ้อนบนพื้นหลังต่างๆ ดูคำจำกัดความของสถานที่สำคัญ 21 แห่ง ด้านล่าง

    รหัสสำหรับจุดแลนด์มาร์กของมือที่เฉพาะเจาะจง

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

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

    กลุ่มโมเดลการจัดประเภทท่าทางสัมผัส

    ชุดโมเดลการจัดประเภทท่าทางจะจดจำท่าทางมือทั่วไปต่อไปนี้ได้

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

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

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

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

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

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

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

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