MediaPipe के 'हाथ के लैंडमार्क' टास्क की मदद से, किसी इमेज में हाथ के लैंडमार्क का पता लगाया जा सकता है. इस टास्क का इस्तेमाल करके, हाथों के मुख्य पॉइंट ढूंढे जा सकते हैं और उन पर विज़ुअल इफ़ेक्ट रेंडर किए जा सकते हैं. यह टास्क, मशीन लर्निंग (एमएल) मॉडल के साथ इमेज डेटा पर काम करता है. यह डेटा, स्टैटिक डेटा या लगातार चलने वाली स्ट्रीम के तौर पर हो सकता है. साथ ही, यह इमेज के निर्देशांक में हाथ के लैंडमार्क, दुनिया के निर्देशांक में हाथ के लैंडमार्क, और एक से ज़्यादा हाथों के लिए, बायां/दायां हाथ की जानकारी दिखाता है.
शुरू करें
अपने टारगेट प्लैटफ़ॉर्म के लिए, लागू करने से जुड़ी इनमें से किसी एक गाइड का पालन करके, इस टास्क का इस्तेमाल शुरू करें. प्लैटफ़ॉर्म के हिसाब से बनी इन गाइड में, इस टास्क को लागू करने का बुनियादी तरीका बताया गया है. इनमें सुझाया गया मॉडल और सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड का उदाहरण भी शामिल है:
- Android - कोड का उदाहरण
- Python - कोड का उदाहरण
- वेब - कोड का उदाहरण - गाइड
टास्क की जानकारी
इस सेक्शन में, इस टास्क की सुविधाओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में इमेज को घुमाना, उसका साइज़ बदलना, सामान्य करना, और कलर स्पेस बदलना शामिल है.
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजे फ़िल्टर करें.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
हाथ के लैंडमार्क की सुविधा, इनमें से किसी एक तरह के डेटा टाइप का इनपुट स्वीकार करती है:
|
हाथ के लैंडमार्क की सुविधा, ये नतीजे दिखाती है:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:
विकल्प का नाम | ब्यौरा | वैल्यू की रेंज | डिफ़ॉल्ट मान |
---|---|---|---|
running_mode |
टास्क के लिए रनिंग मोड सेट करता है. इसके तीन मोड हैं: IMAGE: एक इमेज इनपुट के लिए मोड. वीडियो: किसी वीडियो के डिकोड किए गए फ़्रेम के लिए मोड. LIVE_STREAM: कैमरे से मिले इनपुट डेटा की लाइव स्ट्रीम के लिए मोड. इस मोड में, नतीजे असींक्रोनस तरीके से पाने के लिए, एक listener सेट अप करने के लिए, resultListener को कॉल करना होगा. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
num_hands |
हाथ के लैंडमार्क डिटेक्टर की मदद से, ज़्यादा से ज़्यादा कितने हाथों की पहचान की जा सकती है. | 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 |
result_callback |
जब हाथ का लैंडमार्कर लाइव स्ट्रीम मोड में हो, तो पहचान के नतीजे पाने के लिए रिज़ल्ट लिसनर को असिंक्रोनस तरीके से सेट करता है.
यह सिर्फ़ तब लागू होता है, जब रनिंग मोड को LIVE_STREAM पर सेट किया गया हो |
लागू नहीं | लागू नहीं |
मॉडल
हाथ के लैंडमार्क की पहचान करने वाली सुविधा, पैकेज किए गए दो मॉडल वाले मॉडल बंडल का इस्तेमाल करती है: हथेली की पहचान करने वाला मॉडल और हाथ के लैंडमार्क की पहचान करने वाला मॉडल. इस टास्क को चलाने के लिए, आपके पास ऐसा मॉडल बंडल होना चाहिए जिसमें ये दोनों मॉडल शामिल हों.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | मॉडल कार्ड | वर्शन |
---|---|---|---|---|
HandLandmarker (पूरा) | 192 x 192, 224 x 224 | फ़्लोट 16 | info | हाल ही के अपडेट |
हाथ के लैंडमार्क मॉडल बंडल से, हाथ के पहचाने गए हिस्सों में 21 उंगलियों के कोने के निर्देशांकों के मुख्य पॉइंट की जगह की पहचान की जाती है. इस मॉडल को करीब 30 हज़ार असल इमेज के साथ-साथ, अलग-अलग बैकग्राउंड पर रेंडर किए गए कई सिंथेटिक हाथ के मॉडल पर ट्रेन किया गया था.
हाथ के लैंडमार्क का पता लगाने वाले मॉडल के बंडल में, हथेली की पहचान करने वाला मॉडल और हाथ के लैंडमार्क का पता लगाने वाला मॉडल शामिल होता है. हथेली का पता लगाने वाला मॉडल, इनपुट इमेज में हाथों का पता लगाता है. साथ ही, हाथ के खास हिस्सों का पता लगाने वाला मॉडल, हथेली का पता लगाने वाले मॉडल की मदद से काटी गई हाथ की इमेज में, हाथ के खास हिस्सों की पहचान करता है.
हथेली की पहचान करने वाले मॉडल को चलाने में समय लगता है. इसलिए, वीडियो या लाइव स्ट्रीम के चलने के मोड में, हाथ के लैंडमार्क की पहचान करने वाला टूल, एक फ़्रेम में हाथ के लैंडमार्क मॉडल से तय किए गए बाउंडिंग बॉक्स का इस्तेमाल करता है. इससे, अगले फ़्रेम में हाथों के हिस्से की पहचान की जा सकती है. हाथ के लैंडमार्क की सुविधा, हथेली की पहचान करने वाले मॉडल को सिर्फ़ तब फिर से ट्रिगर करती है, जब हाथ के लैंडमार्क मॉडल से हाथों की मौजूदगी का पता न चलता हो या फ़्रेम में हाथों को ट्रैक न किया जा सके. इससे, हाथ के लैंडमार्कर के पल्म डिटेक्शन मॉडल को ट्रिगर करने की संख्या कम हो जाती है.
टास्क के मानदंड
यहां पूरी पाइपलाइन के लिए टास्क के मानदंड दिए गए हैं. ये मानदंड, पहले से ट्रेन किए गए ऊपर दिए गए मॉडल पर आधारित हैं. इंतज़ार का समय, सीपीयू / जीपीयू का इस्तेमाल करके Pixel 6 पर औसत इंतज़ार का समय होता है.
मॉडल का नाम | सीपीयू के इंतज़ार का समय | जीपीयू में इंतज़ार का समय |
---|---|---|
HandLandmarker (full) | 17.12 मिलीसेकंड | 12.27 मिलीसेकंड |