इमेज क्लासिफ़िकेशन के लिए टास्क गाइड

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

इसे आज़माएं!

शुरू करें

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

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

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

सुविधाएं

  • इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में, इमेज को घुमाना, उसका साइज़ बदलना, नॉर्मलाइज़ेशन, और कलर स्पेस में बदलाव करना शामिल है.
  • पसंद का क्षेत्र - पूरी इमेज के बजाय, इमेज के किसी क्षेत्र के हिसाब से कैटगरी तय करें.
  • मैप की स्थान-भाषा को लेबल करें - डिसप्ले नेम के लिए इस्तेमाल की गई भाषा सेट करें.
  • स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजों को फ़िल्टर करें.
  • टॉप-k क्लासिफ़िकेशन - डेटा की कैटगरी तय करने के नतीजों की संख्या को सीमित करें.
  • लेबल की अनुमति वाली सूची और ब्लॉकलिस्ट - कैटगरी तय करें.
टास्क के इनपुट टास्क के आउटपुट
इनपुट इस तरह का डेटा हो सकता है:
  • स्टिल इमेज
  • डिकोड किए गए वीडियो फ़्रेम
  • लाइव वीडियो फ़ीड
इमेज क्लासिफ़ायर, कैटगरी की एक सूची देता है, जिसमें ये शामिल हैं:
  • कैटगरी इंडेक्स: मॉडल आउटपुट में कैटगरी का इंडेक्स
  • स्कोर: इस कैटगरी के लिए कॉन्फ़िडेंस स्कोर, आम तौर पर [0,1] में संभावना होती है
  • कैटगरी का नाम (ज़रूरी नहीं): TFLite मॉडल के मेटाडेटा में दी गई कैटगरी का नाम, अगर उपलब्ध हो
  • कैटगरी का डिसप्ले नेम (ज़रूरी नहीं): TFLite मॉडल के मेटाडेटा में दी गई कैटगरी का डिसप्ले नेम. अगर यह विकल्प उपलब्ध है, तो डिसप्ले नेम के ज़रिए बताई गई भाषा में दिखाया जाएगा

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

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

विकल्प का नाम ब्यौरा वैल्यू रेंज डिफ़ॉल्ट मान
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 पर सेट हो लागू नहीं सेट नहीं किया गया है

मॉडल

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

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 का उपयोग करना चाहिए.

अगर आपको अपने डेटासेट का इस्तेमाल करके, इमेज की कैटगरी तय करने वाला कस्टम टूल बनाना है, तो इमेज क्लासिफ़ायर कस्टमाइज़ेशन ट्यूटोरियल से शुरुआत करें.