MediaPipe जेस्चर आइडेंटिफ़ायर टास्क से आपको रीयल टाइम में हाथ के जेस्चर पहचानने की सुविधा मिलती है. साथ ही, पता लगाए गए हाथों के लैंडमार्क के साथ-साथ हाथों के जेस्चर से जुड़े नतीजे भी मिलते हैं. इस टास्क का इस्तेमाल, किसी उपयोगकर्ता के हाथ के जेस्चर की पहचान करने और उन जेस्चर से जुड़ी ऐप्लिकेशन की सुविधाओं को शुरू करने के लिए किया जा सकता है.
यह टास्क, मशीन लर्निंग (एमएल) मॉडल वाले इमेज डेटा पर काम करता है. साथ ही, यह स्टैटिक डेटा या लगातार स्ट्रीम करने की सुविधा देता है. यह टास्क, इमेज कोऑर्डिनेट में, हैंड लैंडमार्क दिखाता है. साथ ही, दुनिया के निर्देशांकों में हाथ से बने लैंडमार्क, किसी एक हाथ का इस्तेमाल (बाएं/दाएं हाथ) और एक से ज़्यादा हाथों के जेस्चर की कैटगरी भी दिखाता है.
शुरू करें
अपने टारगेट प्लैटफ़ॉर्म के लिए, इनमें से किसी एक को लागू करने की गाइड का पालन करके इस टास्क का इस्तेमाल शुरू करें. ये प्लैटफ़ॉर्म गाइड, सुझाए गए मॉडल का इस्तेमाल करके इस टास्क को लागू करने की बुनियादी जानकारी देती हैं. साथ ही, सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड के उदाहरण भी देती हैं:
- Android - कोड का उदाहरण - गाइड
- Python - कोड का उदाहरण - गाइड
- वेब - कोड का उदाहरण - गाइड
टास्क की जानकारी
इस सेक्शन में इस टास्क की क्षमताओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में, इमेज को घुमाना, उसका साइज़ बदलना, नॉर्मलाइज़ेशन, और कलर स्पेस में बदलाव करना शामिल है.
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजों को फ़िल्टर करें.
- लेबल की अनुमति वाली सूची और ब्लॉकलिस्ट - हाथ के जेस्चर की वे कैटगरी बताएं जिन्हें मॉडल ने पहचाना है.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
जेस्चर आइडेंटिफ़ायर नीचे दिए गए डेटा टाइप में से किसी एक का इनपुट स्वीकार करता है:
|
जेस्चर आइडेंटिफ़ायर ये नतीजे देता है:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क में कॉन्फ़िगरेशन के ये विकल्प हैं:
विकल्प का नाम | ब्यौरा | वैल्यू रेंज | डिफ़ॉल्ट मान | |
---|---|---|---|---|
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"] हैं |
|
|
|
custom_gestures_classifier_options |
हाथ के जेस्चर की कैटगरी तय करने वाले कस्टम तरीके को कॉन्फ़िगर करने के विकल्प. |
|
|
|
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
फ़ॉर्मैट में होने चाहिए, जो एक मॉडल बंडल फ़ाइल है. आपको
इस कार्य के लिए दिए गए मॉडल को संशोधित करने के लिए अपना मॉडल बनाने से पहले
मॉडल मेकर का इस्तेमाल करने पर विचार करना चाहिए.
इस टास्क के लिए मॉडल को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानकारी के लिए, जेस्चर आइडेंटिफ़ायर के लिए मॉडल पसंद के मुताबिक बनाएं देखें.