MediaPipe इमेज क्लासिफ़ायर टास्क की मदद से आप इमेज को क्लासिफ़िकेशन कर सकते हैं. इस टास्क का इस्तेमाल करके, यह पता किया जा सकता है कि ट्रेनिंग के दौरान बताई गई कैटगरी के सेट में से, कौनसी इमेज सही है. यह टास्क, इमेज डेटा पर काम करता है. इसमें स्टैटिक डेटा या कंटिन्यूअस स्ट्रीम के तौर पर मशीन लर्निंग (एमएल) मॉडल का इस्तेमाल किया जाता है. साथ ही, यह प्रॉबबिलिटी स्कोर के हिसाब से रैंक की गई संभावित कैटगरी की सूची दिखाता है.
शुरू करें
अपने टारगेट प्लैटफ़ॉर्म के लिए, इनमें से किसी एक को लागू करने की गाइड का पालन करके इस टास्क का इस्तेमाल शुरू करें. ये प्लैटफ़ॉर्म गाइड, सुझाए गए मॉडल का इस्तेमाल करके इस टास्क को लागू करने की बुनियादी जानकारी देती हैं. साथ ही, सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड के उदाहरण भी देती हैं:
- Android - कोड का उदाहरण - गाइड
- Python - कोड का उदाहरण - गाइड
- वेब - कोड का उदाहरण - गाइड
- iOS - कोड का उदाहरण - गाइड
टास्क की जानकारी
इस सेक्शन में इस टास्क की क्षमताओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में, इमेज को घुमाना, उसका साइज़ बदलना, नॉर्मलाइज़ेशन, और कलर स्पेस में बदलाव करना शामिल है.
- पसंद का क्षेत्र - पूरी इमेज के बजाय, इमेज के किसी क्षेत्र के हिसाब से कैटगरी तय करें.
- मैप की स्थान-भाषा को लेबल करें - डिसप्ले नेम के लिए इस्तेमाल की गई भाषा सेट करें.
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजों को फ़िल्टर करें.
- टॉप-k क्लासिफ़िकेशन - डेटा की कैटगरी तय करने के नतीजों की संख्या को सीमित करें.
- लेबल की अनुमति वाली सूची और ब्लॉकलिस्ट - कैटगरी तय करें.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
इनपुट इस तरह का डेटा हो सकता है:
|
इमेज क्लासिफ़ायर, कैटगरी की एक सूची देता है, जिसमें ये शामिल हैं:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क में कॉन्फ़िगरेशन के ये विकल्प हैं:
विकल्प का नाम | ब्यौरा | वैल्यू रेंज | डिफ़ॉल्ट मान |
---|---|---|---|
running_mode |
टास्क के लिए, रनिंग मोड सेट करता है. इसके तीन मोड होते हैं: इमेज: सिंगल इमेज इनपुट के लिए मोड. वीडियो: वीडियो के डिकोड किए गए फ़्रेम का मोड. LIVE_STREAM: इनपुट डेटा की लाइव स्ट्रीम का मोड, जैसे कि कैमरे से स्ट्रीम किया जाने वाला मोड. इस मोड में, रिज़ल्ट पहचानकर्ता को लिसनर को सेट अप करने के लिए कॉल किया जाना चाहिए, ताकि वह एसिंक्रोनस तरीके से नतीजे पा सके. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
अगर यह उपलब्ध हो, तो टास्क के मॉडल के मेटाडेटा में दिए गए डिसप्ले नेम के लिए, लेबल की भाषा सेट करता है. अंग्रेज़ी के लिए डिफ़ॉल्ट रूप से en
है. TensorFlow Lite Metadata Writer API का इस्तेमाल करके, कस्टम मॉडल के मेटाडेटा में
स्थानीय भाषा के हिसाब से लेबल जोड़े जा सकते हैं |
स्थान-भाषा का कोड | en |
max_results |
यह विकल्प, टॉप-स्कोर किए गए क्लासिफ़िकेशन के नतीजों की ज़्यादा से ज़्यादा संख्या को सेट करता है, ताकि नतीजे दिखाए जा सकें. अगर < 0 है, तो सभी उपलब्ध नतीजे दिखाए जाएंगे. | कोई भी पॉज़िटिव नंबर | -1 |
score_threshold |
अनुमान के स्कोर का थ्रेशोल्ड सेट करता है, जो मॉडल मेटाडेटा (अगर कोई है) में दिए गए स्कोर को बदलता है. इस वैल्यू से कम के नतीजे अस्वीकार कर दिए गए हैं. | कोई भी फ़्लोट | सेट नहीं किया गया है |
category_allowlist |
अनुमति वाली कैटगरी के नामों की वैकल्पिक सूची सेट करता है. अगर यह खाली नहीं है, तो कैटगरी के जिन नतीजों की कैटगरी का नाम इस सेट में नहीं होगा उन्हें फ़िल्टर कर दिया जाएगा. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता है.
यह विकल्प category_denylist के साथ म्यूचुअली एक्सक्लूसिव है और दोनों नतीजों का इस्तेमाल करने में गड़बड़ी है. |
कोई भी स्ट्रिंग | सेट नहीं किया गया है |
category_denylist |
उन कैटगरी के नामों की वैकल्पिक सूची सेट करता है जिनकी अनुमति नहीं है. अगर
यह फ़ील्ड खाली नहीं है, तो कैटगरी के जिन नतीजों की कैटगरी का नाम इस सेट में होगा उन्हें फ़िल्टर करके
बाहर कर दिया जाएगा. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता है. यह विकल्प category_allowlist के साथ म्यूचुअली एक्सक्लूसिव है और इसका इस्तेमाल करने पर दोनों में गड़बड़ी होगी. |
कोई भी स्ट्रिंग | सेट नहीं किया गया है |
result_callback |
जब इमेज क्लासिफ़ायर, लाइव स्ट्रीम मोड में होता है, तो इससे नतीजे के लिसनर को क्लासिफ़िकेशन के नतीजों को एसिंक्रोनस तरीके से पाने के लिए सेट किया जाता है. सिर्फ़ तब इस्तेमाल किया जा सकता है, जब रनिंग मोड LIVE_STREAM पर सेट हो |
लागू नहीं | सेट नहीं किया गया है |
मॉडल
इमेज क्लासिफ़ायर को डाउनलोड करने और आपकी प्रोजेक्ट डायरेक्ट्री में सेव किए जाने के लिए, इमेज क्लासिफ़िकेशन मॉडल की ज़रूरत होती है. इस टास्क के साथ डेवलप करना शुरू करने पर, अपने टारगेट प्लैटफ़ॉर्म के लिए सुझाए गए डिफ़ॉल्ट मॉडल से शुरुआत करें. आम तौर पर, अन्य उपलब्ध मॉडल में परफ़ॉर्मेंस, सटीक होने, रिज़ॉल्यूशन, और संसाधन की ज़रूरी शर्तों के बीच ट्रेड-ऑफ़ होता है. कुछ मामलों में, अतिरिक्त सुविधाएं शामिल होती हैं.
efficiencyNet-Lite0 मॉडल (सुझाया गया)
VerifiedNet-Lite0 मॉडल, ENP प्रोग्राम के आर्किटेक्चर का इस्तेमाल करता है. इसे ImageNet का इस्तेमाल करके, पेड़, जानवर, खाने, वाहन, व्यक्ति वगैरह जैसी 1,000 क्लास की पहचान करने के लिए ट्रेनिंग दी गई है. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. efficiencyNet-Lite0, int8 और फ्लोट 32 मॉडल के रूप में उपलब्ध है. इस मॉडल का सुझाव इसलिए दिया जाता है, क्योंकि यह इंतज़ार के समय और सटीक होने के बीच संतुलन बनाता है. यह सटीक और हल्का है, इसलिए कई तरह के कामों में इस्तेमाल किया जा सकता है.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | वर्शन |
---|---|---|---|
PerformanceNet-Lite0 (int8) | 224 x 224 | int8 | नए |
efficiencyNet-Lite0 (फ़्लोट 32) | 224 x 224 | कोई नहीं (फ़्लोट32) | नए |
efficiencyNet-Lite2 मॉडल
efficiencyNet-Lite2 मॉडल, एट्रिब्यूटNet आर्किटेक्चर का इस्तेमाल करता है. इसे ImageNet का इस्तेमाल करके ट्रेनिंग दी गई, ताकि पेड़, जानवर, खाने, वाहन, व्यक्ति वगैरह जैसी 1,000 क्लास की पहचान की जा सके. इसके साथ काम करने वाले लेबल की पूरी सूची देखें. SAFETYNet-Lite2, int8 और फ्लोट 32 मॉडल के रूप में उपलब्ध है. आम तौर पर, यह मॉडल गड़बड़ी Net-Lite0 से ज़्यादा सटीक होता है, लेकिन यह धीमा भी होता है और इसमें ज़्यादा मेमोरी की ज़रूरत भी होती है. यह मॉडल उन मामलों के लिए ठीक है, जहां रफ़्तार या साइज़ की तुलना में सटीक जानकारी को ज़्यादा अहमियत दी जाती है.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | वर्शन |
---|---|---|---|
efficiencyNet-Lite2 (int8) | 224 x 224 | int8 | नए |
efficiencyNet-Lite2 (फ़्लोट 32) | 224 x 224 | कोई नहीं (फ़्लोट32) | नए |
टास्क के मानदंड
यहां पहले से ट्रेन किए गए मॉडल पर आधारित पूरी पाइपलाइन के लिए टास्क के मानदंड दिए गए हैं. इंतज़ार के समय का नतीजा यह पता चलता है कि Pixel 6 को सीपीयू / जीपीयू का इस्तेमाल करके औसतन इंतज़ार किया जा सकता है.
मॉडल का नाम | सीपीयू (CPU) के इस्तेमाल में होने वाला समय | जीपीयू इंतज़ार का समय |
---|---|---|
efficiencyNet-Lite0 (फ़्लोट 32) | 23.52 मि॰से॰ | 18.90 मिलीसेकंड |
efficiencyNet-Lite0 (int8) | 10.08 मि॰से॰ | - |
efficiencyNet-Lite2 (फ़्लोट 32) | 44.17 मि॰से॰ | 22.20 मिलीसेकंड |
PropertiesNet-Lite2 (int8) | 19.43 मि॰से॰ | - |
कस्टम मॉडल
अगर आपको उपलब्ध मॉडल की क्षमताओं को बेहतर बनाना है या उनमें बदलाव करना है, तो इस टास्क के साथ, पसंद के मुताबिक बनाए गए एमएल मॉडल का इस्तेमाल किया जा सकता है. मॉडल मेकर का इस्तेमाल करके, मौजूदा मॉडल में बदलाव किया जा सकता है. इसके अलावा, TensorFlow जैसे टूल का इस्तेमाल करके भी मॉडल बनाया जा सकता है. MediaPipe के साथ इस्तेमाल किए जाने वाले कस्टम मॉडल TensorFlow Lite फ़ॉर्मैट में होने चाहिए और उनमें मॉडल के ऑपरेटिंग पैरामीटर की जानकारी देने वाला खास मेटाडेटा शामिल होना चाहिए. इस कार्य के लिए दिए गए मॉडल को संशोधित करने के लिए आपको अपना मॉडल बनाने से पहले Model Maker का उपयोग करना चाहिए.
अगर आपको अपने डेटासेट का इस्तेमाल करके, इमेज की कैटगरी तय करने वाला कस्टम टूल बनाना है, तो इमेज क्लासिफ़ायर कस्टमाइज़ेशन ट्यूटोरियल से शुरुआत करें.