जेस्चर की पहचान करने के लिए टास्क गाइड

MediaPipe जेस्चर आइडेंटिफ़ायर टास्क से आपको रीयल टाइम में हाथ के जेस्चर पहचानने की सुविधा मिलती है. साथ ही, पता लगाए गए हाथों के लैंडमार्क के साथ-साथ हाथों के जेस्चर से जुड़े नतीजे भी मिलते हैं. इस टास्क का इस्तेमाल, किसी उपयोगकर्ता के हाथ के जेस्चर की पहचान करने और उन जेस्चर से जुड़ी ऐप्लिकेशन की सुविधाओं को शुरू करने के लिए किया जा सकता है.

यह टास्क, मशीन लर्निंग (एमएल) मॉडल वाले इमेज डेटा पर काम करता है. साथ ही, यह स्टैटिक डेटा या लगातार स्ट्रीम करने की सुविधा देता है. यह टास्क, इमेज कोऑर्डिनेट में, हैंड लैंडमार्क दिखाता है. साथ ही, दुनिया के निर्देशांकों में हाथ से बने लैंडमार्क, किसी एक हाथ का इस्तेमाल (बाएं/दाएं हाथ) और एक से ज़्यादा हाथों के जेस्चर की कैटगरी भी दिखाता है.

इसे आज़माएं!

शुरू करें

अपने टारगेट प्लैटफ़ॉर्म के लिए, इनमें से किसी एक को लागू करने की गाइड का पालन करके इस टास्क का इस्तेमाल शुरू करें. ये प्लैटफ़ॉर्म गाइड, सुझाए गए मॉडल का इस्तेमाल करके इस टास्क को लागू करने की बुनियादी जानकारी देती हैं. साथ ही, सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड के उदाहरण भी देती हैं:

टास्क की जानकारी

इस सेक्शन में इस टास्क की क्षमताओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.

सुविधाएं

  • इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में, इमेज को घुमाना, उसका साइज़ बदलना, नॉर्मलाइज़ेशन, और कलर स्पेस में बदलाव करना शामिल है.
  • स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजों को फ़िल्टर करें.
  • लेबल की अनुमति वाली सूची और ब्लॉकलिस्ट - हाथ के जेस्चर की वे कैटगरी बताएं जिन्हें मॉडल ने पहचाना है.
टास्क के इनपुट टास्क के आउटपुट
जेस्चर आइडेंटिफ़ायर नीचे दिए गए डेटा टाइप में से किसी एक का इनपुट स्वीकार करता है:
  • स्टिल इमेज
  • डिकोड किए गए वीडियो फ़्रेम
  • लाइव वीडियो फ़ीड
जेस्चर आइडेंटिफ़ायर ये नतीजे देता है:
  • हाथ के जेस्चर की कैटगरी
  • पहचाने गए हाथों में हाथों का इस्तेमाल
  • इमेज कोऑर्डिनेट में पहचाने गए हाथों के लैंडमार्क
  • विश्व निर्देशांकों में पहचाने गए हाथों के लैंडमार्क

कॉन्फ़िगरेशन के विकल्प

इस टास्क में कॉन्फ़िगरेशन के ये विकल्प हैं:

विकल्प का नाम ब्यौरा वैल्यू रेंज डिफ़ॉल्ट मान
running_mode टास्क के लिए, रनिंग मोड सेट करता है. इसके तीन मोड होते हैं:

इमेज: सिंगल इमेज इनपुट के लिए मोड.

वीडियो: वीडियो के डिकोड किए गए फ़्रेम का मोड.

LIVE_STREAM: इनपुट डेटा की लाइव स्ट्रीम का मोड, जैसे कि कैमरे से स्ट्रीम किया जाने वाला मोड. इस मोड में, रिज़ल्ट पहचानकर्ता को लिसनर को सेट अप करने के लिए कॉल किया जाना चाहिए, ताकि वह एसिंक्रोनस तरीके से नतीजे पा सके.
{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 लागू नहीं लागू नहीं

    मॉडल

    जेस्चर आइडेंटिफ़ायर, पहले से पैक किए गए दो मॉडल बंडल के साथ एक मॉडल बंडल का इस्तेमाल करता है: हैंड लैंडमार्क मॉडल बंडल और जेस्चर क्लासिफ़िकेशन मॉडल बंडल. लैंडमार्क मॉडल, हाथों और हाथ की ज्यामिति का पता लगाता है. साथ ही, जेस्चर की पहचान करने वाला मॉडल, हाथ की ज्यामिति के आधार पर जेस्चर की पहचान करता है.

    मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप मॉडल कार्ड वर्शन
    HandGestureClassifier 192 x 192, 224 x 224 फ़्लोट 16 जानकारी नए

    यह टास्क, Model Maker का इस्तेमाल करके मॉडल बंडल में बदलाव करने की सुविधा भी देता है. इस टास्क के लिए मॉडल कस्टमाइज़ करने के लिए मॉडल मेकर का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, जेस्चर आइडेंटिफ़ायर के लिए मॉडल पसंद के मुताबिक बनाएं पेज देखें.

    हैंड लैंडमार्क मॉडल बंडल

    हैंड लैंडमार्क मॉडल बंडल, उन 21 उंगलियों के कीपॉइंट लोकलाइज़ेशन का पता लगाता है जहां हाथ की पहचान करने वाले हैंड-देशों का इस्तेमाल किया गया है. इस मॉडल को, असल दुनिया की करीब 30 हज़ार इमेज और रेंडर किए गए सिंथेटिक हैंड के कई मॉडल को अलग-अलग बैकग्राउंड पर लगाकर ट्रेनिंग दी गई. नीचे 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
    

    अगर मॉडल हाथों की पहचान करता है, लेकिन जेस्चर नहीं पहचानता, तो जेस्चर की पहचान करने वाला टूल, "कोई नहीं" नतीजा दिखाता है. अगर मॉडल हाथों की पहचान नहीं करता, तो जेस्चर आइडेंटिफ़ायर खाली हो जाता है.

    जेस्चर क्लासिफ़िकेशन मॉडल बंडल में दो स्टेप वाला न्यूरल नेटवर्क पाइपलाइन होता है. इसमें जेस्चर एम्बेड करने वाला मॉडल होता है और उसके बाद जेस्चर क्लासिफ़िकेशन मॉडल होता है. ज़्यादा जानकारी के लिए, हाथ के जेस्चर की कैटगरी तय करने वाला मॉडल कार्ड देखें.

    जेस्चर एम्बेड करने वाला मॉडल, इमेज की सुविधाओं को फ़ीचर वेक्टर में कोड में बदल देता है. वहीं, क्लासिफ़िकेशन मॉडल, जेस्चर की कैटगरी तय करने वाला एक लाइटवेट मॉडल है, जो फ़ीचर वेक्टर को इनपुट के तौर पर लेता है. हाथ के जेस्चर की कैटगरी तय करने वाले दिए गए बंडल में, हाथ के जेस्चर की कैटगरी तय करने वाला कैन शामिल है. यह ऊपर बताए गए सात सामान्य जेस्चर की पहचान करता है. हाथ के जेस्चर की ज़्यादा पहचान करने के लिए, मॉडल बंडल को बढ़ाया जा सकता है. इसके लिए, अपने कस्टम जेस्चर क्लासिफ़ायर को ट्रेनिंग दें. नीचे दिए गए कस्टम मॉडल सेक्शन में ज़्यादा जानकारी देखें.

    अगर दोनों क्लासिफ़ायर अपनी कैटगरी में एक जैसे जेस्चर को पहचान लेते हैं, तो जेस्चर आइडेंटिफ़ायर, कस्टम जेस्चर क्लासिफ़ायर और कस्टम जेस्चर क्लासिफ़ायर, दोनों के साथ जेस्चर आइडेंटिफ़ायर को प्राथमिकता देता है. अगर सिर्फ़ एक जेस्चर क्लासिफ़ायर जेस्चर को पहचानता है, तो जेस्चर आइडेंटिफ़ायर, पहचाने गए जेस्चर को सीधे तौर पर आउटपुट करता है.

    टास्क के मानदंड

    यहां पहले से ट्रेन किए गए मॉडल पर आधारित पूरी पाइपलाइन के लिए टास्क के मानदंड दिए गए हैं. इंतज़ार के समय का नतीजा यह पता चलता है कि Pixel 6 को सीपीयू / जीपीयू का इस्तेमाल करके औसतन इंतज़ार किया जा सकता है.

    मॉडल का नाम सीपीयू (CPU) के इस्तेमाल में होने वाला समय जीपीयू इंतज़ार का समय
    GestureRecognizer 16.76 मि॰से॰ 20.87 मि॰से॰

    कस्टम मॉडल

    अगर आप इस कार्य में दिए गए मॉडल की क्षमताओं में सुधार करना या उन्हें बदलना चाहते हैं, तो आप मौजूदा मॉडल को संशोधित करने के लिए मॉडल मेकर का उपयोग कर सकते हैं. MediaPipe के साथ इस्तेमाल किए जाने वाले कस्टम मॉडल, .task फ़ॉर्मैट में होने चाहिए, जो एक मॉडल बंडल फ़ाइल है. आपको इस कार्य के लिए दिए गए मॉडल को संशोधित करने के लिए अपना मॉडल बनाने से पहले मॉडल मेकर का इस्तेमाल करने पर विचार करना चाहिए.

    इस टास्क के लिए मॉडल को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानकारी के लिए, जेस्चर आइडेंटिफ़ायर के लिए मॉडल पसंद के मुताबिक बनाएं देखें.