MediaPipe इमेज क्लासिफ़ायर टास्क की मदद से, इमेज की कैटगरी तय की जा सकती है. इस टास्क का इस्तेमाल करके, यह पता लगाया जा सकता है कि ट्रेनिंग के समय तय की गई कैटगरी में से, कोई इमेज किस कैटगरी से जुड़ी है. यह टास्क, मशीन लर्निंग (एमएल) मॉडल के साथ स्टैटिक डेटा या लगातार चलने वाली स्ट्रीम के तौर पर इमेज डेटा पर काम करता है. साथ ही, संभावित कैटगरी की सूची को आउटपुट करता है. इस सूची में, कैटगरी को संभावना के स्कोर के हिसाब से क्रम में लगाया जाता है.
शुरू करें
अपने टारगेट प्लैटफ़ॉर्म के लिए, लागू करने से जुड़ी इनमें से किसी एक गाइड का पालन करके, इस टास्क का इस्तेमाल शुरू करें. प्लैटफ़ॉर्म के हिसाब से बनाई गई ये गाइड, सुझाए गए मॉडल का इस्तेमाल करके, इस टास्क को लागू करने के बुनियादी तरीके के बारे में बताती हैं. साथ ही, सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड के उदाहरण भी देती हैं:
- Android - कोड का उदाहरण - गाइड
- Python - कोड का उदाहरण - गाइड
- वेब - कोड का उदाहरण - गाइड
- iOS - कोड का उदाहरण - गाइड
टास्क की जानकारी
इस सेक्शन में, इस टास्क की सुविधाओं, इनपुट, आउटपुट, और कॉन्फ़िगरेशन के विकल्पों के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में इमेज को घुमाना, उसका साइज़ बदलना, सामान्य करना, और कलर स्पेस कन्वर्ज़न शामिल है.
- दिलचस्पी का क्षेत्र - पूरी इमेज के बजाय, इमेज के किसी हिस्से को कैटगरी में बांटें.
- मैप के लेबल की स्थानीय भाषा - डिसप्ले नेम के लिए इस्तेमाल की जाने वाली भाषा सेट करें.
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजे फ़िल्टर करें.
- टॉप-k क्लासिफ़िकेशन - क्लासिफ़िकेशन के नतीजों की संख्या सीमित करें.
- अनुमति वाली सूची और ब्लॉकलिस्ट को लेबल करना - कैटगरी के बारे में बताएं.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
इनपुट इनमें से किसी भी तरह का डेटा हो सकता है:
|
इमेज क्लासिफ़ायर, कैटगरी की एक सूची दिखाता है. इसमें ये शामिल हैं:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:
विकल्प का नाम | ब्यौरा | वैल्यू की सीमा | डिफ़ॉल्ट मान |
---|---|---|---|
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-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 का इस्तेमाल करके, इस टास्क के लिए दिए गए मॉडल में बदलाव करना चाहिए.
अगर आपको अपने डेटासेट का इस्तेमाल करके, इमेज क्लासिफ़ायर बनाने में दिलचस्पी है, तो इमेज क्लासिफ़ायर को पसंद के मुताबिक बनाने के ट्यूटोरियल से शुरुआत करें.