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

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

    โมเดล

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

    ชื่อโมเดล รูปร่างอินพุต ประเภทการแปลงค่าเป็นจำนวนเต็ม การ์ดโมเดล เวอร์ชัน
    HandGestureClassifier 192 x 192, 224 x 224 ลอย 16 info ล่าสุด

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

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

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

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

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

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

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

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