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