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

किसी जानवर को फ़्लेमिंगो के तौर पर सही तरीके से लेबल किया गया है. साथ ही, कॉन्फ़िडेंस रेटिंग 95% है

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

इसे आज़माएं!

शुरू करें

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

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

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

सुविधाएं

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

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

इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:

विकल्प का नाम ब्यौरा वैल्यू की सीमा डिफ़ॉल्ट मान
running_mode टास्क के लिए रनिंग मोड सेट करता है. इसके तीन मोड हैं:

IMAGE: एक इमेज इनपुट के लिए मोड.

वीडियो: किसी वीडियो के डिकोड किए गए फ़्रेम के लिए मोड.

LIVE_STREAM: कैमरे से मिले इनपुट डेटा की लाइव स्ट्रीम के लिए मोड. इस मोड में, नतीजे असींक्रोनस तरीके से पाने के लिए, एक listener सेट अप करने के लिए, resultListener को कॉल करना होगा.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names_locale टास्क के मॉडल के मेटाडेटा में दिए गए डिसप्ले नेम के लिए, लेबल की भाषा सेट करता है. हालांकि, ऐसा तब ही किया जाता है, जब वह भाषा उपलब्ध हो. अंग्रेज़ी के लिए, डिफ़ॉल्ट तौर पर en होता है. TensorFlow Lite मेटाडेटा राइटर एपीआई का इस्तेमाल करके, कस्टम मॉडल के मेटाडेटा में स्थानीय भाषा के लेबल जोड़े जा सकते हैं स्थानीय भाषा का कोड en
max_results सबसे ज़्यादा स्कोर वाले, कैटगरी के नतीजों की ज़्यादा से ज़्यादा संख्या सेट करता है. हालांकि, ऐसा करना ज़रूरी नहीं है. अगर यह वैल्यू 0 से कम है, तो सभी उपलब्ध नतीजे दिखाए जाएंगे. कोई भी पॉज़िटिव संख्या -1
score_threshold अनुमान के स्कोर का थ्रेशोल्ड सेट करता है. यह थ्रेशोल्ड, मॉडल के मेटाडेटा में दिए गए थ्रेशोल्ड (अगर कोई है) को बदल देता है. इस वैल्यू से कम के नतीजे अस्वीकार कर दिए जाते हैं. कोई भी फ़्लोट सेट नहीं है
category_allowlist कैटगरी के लिए इस्तेमाल किए जा सकने वाले नामों की वैकल्पिक सूची सेट करता है. अगर यह सेट नहीं है, तो कैटगरी के जिन नामों को इस सेट में शामिल नहीं किया गया है उनके लिए कैटगरी तय करने के नतीजों को फ़िल्टर कर दिया जाएगा. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, category_denylist के साथ इस्तेमाल नहीं किया जा सकता. दोनों का इस्तेमाल करने पर गड़बड़ी का मैसेज दिखता है. कोई भी स्ट्रिंग सेट नहीं है
category_denylist कैटगरी के उन नामों की वैकल्पिक सूची सेट करता है जिनका इस्तेमाल नहीं किया जा सकता. अगर यह सेट खाली नहीं है, तो कैटगरी के जिन नामों को इस सेट में शामिल किया गया है उनके लिए, कैटगरी के हिसाब से किए गए बंटवारे के नतीजे फ़िल्टर कर दिए जाएंगे. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, category_allowlist के साथ इस्तेमाल नहीं किया जा सकता. दोनों का इस्तेमाल करने पर गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है
result_callback जब इमेज क्लासिफ़ायर लाइव स्ट्रीम मोड में हो, तब कैटगरी के नतीजे असाइनॉन्स के हिसाब से पाने के लिए, नतीजा सुनने वाला सेट करता है. इसका इस्तेमाल सिर्फ़ तब किया जा सकता है, जब रनिंग मोड को LIVE_STREAM पर सेट किया गया हो लागू नहीं सेट नहीं है

मॉडल

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

EfficientNet-Lite0 मॉडल, EfficientNet आर्किटेक्चर का इस्तेमाल करता है. साथ ही, ImageNet का इस्तेमाल करके, 1,000 क्लास की पहचान करने के लिए ट्रेन किया गया है. जैसे, पेड़, जानवर, खाना, वाहन, व्यक्ति वगैरह. काम करने वाले लेबल की पूरी सूची देखें. EfficientNet-Lite0, int8 और float 32 के तौर पर उपलब्ध है. इस मॉडल का सुझाव इसलिए दिया जाता है, क्योंकि यह इंतज़ार के समय और सटीक नतीजों के बीच संतुलन बनाता है. यह कई कामों के लिए सटीक और आसान है.

मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप वर्शन
EfficientNet-Lite0 (int8) 224 x 224 int8 हाल ही के अपडेट
EfficientNet-Lite0 (फ़्लोट 32) 224 x 224 कोई नहीं (float32) हाल ही के अपडेट

EfficientNet-Lite2 मॉडल

EfficientNet-Lite2 मॉडल, EfficientNet आर्किटेक्चर का इस्तेमाल करता है. साथ ही, ImageNet का इस्तेमाल करके, 1,000 क्लास की पहचान करने के लिए ट्रेन किया गया है. जैसे, पेड़, जानवर, खाना, वाहन, व्यक्ति वगैरह. साथ ही, इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. EfficientNet-Lite2, int8 और float 32 के तौर पर उपलब्ध है. आम तौर पर, यह मॉडल EfficientNet-Lite0 से ज़्यादा सटीक होता है. हालांकि, यह धीमा और ज़्यादा मेमोरी का इस्तेमाल करता है. यह मॉडल उन मामलों के लिए सही है जहां गति या साइज़ के मुकाबले सटीक जानकारी को प्राथमिकता दी जाती है.

मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप वर्शन
EfficientNet-Lite2 (int8) 224 x 224 int8 हाल ही के अपडेट
EfficientNet-Lite2 (फ़्लोट 32) 224 x 224 कोई नहीं (float32) हाल ही के अपडेट

टास्क के मानदंड

यहां पूरी पाइपलाइन के लिए टास्क के मानदंड दिए गए हैं. ये मानदंड, ऊपर दिए गए पहले से ट्रेन किए गए मॉडल पर आधारित हैं. इंतज़ार का समय, सीपीयू / जीपीयू का इस्तेमाल करके Pixel 6 पर औसत इंतज़ार का समय होता है.

मॉडल का नाम सीपीयू के इंतज़ार का समय जीपीयू में इंतज़ार का समय
EfficientNet-Lite0 (फ़्लोट 32) 23.52 मिलीसेकंड 18.90 मिलीसेकंड
EfficientNet-Lite0 (int8) 10.08 मिलीसेकंड -
EfficientNet-Lite2 (फ़्लोट 32) 44.17 मिलीसेकंड 22.20 मिलीसेकंड
EfficientNet-Lite2 (int8) 19.43 मिलीसेकंड -

कस्टम मॉडल

अगर आपको दिए गए मॉडल की क्षमताओं को बेहतर बनाना है या उनमें बदलाव करना है, तो इस टास्क के साथ पसंद के मुताबिक बनाए गए मशीन लर्निंग मॉडल का इस्तेमाल किया जा सकता है. मौजूदा मॉडल में बदलाव करने या TensorFlow जैसे टूल का इस्तेमाल करके मॉडल बनाने के लिए, Model Maker का इस्तेमाल किया जा सकता है. MediaPipe के साथ इस्तेमाल किए जाने वाले कस्टम मॉडल, TensorFlow Lite फ़ॉर्मैट में होने चाहिए. साथ ही, इनमें मॉडल के ऑपरेटिंग पैरामीटर के बारे में बताने वाला खास metadata शामिल होना चाहिए. अपना मॉडल बनाने से पहले, आपको Model Maker का इस्तेमाल करके, इस टास्क के लिए दिए गए मॉडल में बदलाव करना चाहिए.

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