छवि वर्गीकरण

एक छवि जो दर्शाती है उसे पहचानने का कार्य छवि वर्गीकरण कहलाता है। छवियों के विभिन्न वर्गों को पहचानने के लिए एक छवि वर्गीकरण मॉडल को प्रशिक्षित किया जाता है। उदाहरण के लिए, आप तीन अलग-अलग प्रकार के जानवरों का प्रतिनिधित्व करने वाली तस्वीरों को पहचानने के लिए एक मॉडल को प्रशिक्षित कर सकते हैं: खरगोश, हम्सटर और कुत्ते। TensorFlow Lite अनुकूलित पूर्व-प्रशिक्षित मॉडल प्रदान करता है जिसे आप अपने मोबाइल एप्लिकेशन में परिनियोजित कर सकते हैं। यहाँ TensorFlow का उपयोग करके छवि वर्गीकरण के बारे में अधिक जानें।

निम्न छवि Android पर छवि वर्गीकरण मॉडल का आउटपुट दिखाती है।

Android उदाहरण का स्क्रीनशॉट

शुरू हो जाओ

यदि आप TensorFlow Lite के लिए नए हैं और Android या iOS के साथ काम कर रहे हैं, तो यह अनुशंसा की जाती है कि आप निम्न उदाहरण अनुप्रयोगों को एक्सप्लोर करें जो आरंभ करने में आपकी सहायता कर सकते हैं।

आप कोड की कुछ पंक्तियों में छवि वर्गीकरण मॉडल को एकीकृत करने के लिए TensorFlow लाइट टास्क लाइब्रेरी से आउट-ऑफ-बॉक्स API का लाभ उठा सकते हैं। आप TensorFlow Lite सपोर्ट लाइब्रेरी का उपयोग करके अपनी खुद की कस्टम इंट्रेंस पाइपलाइन भी बना सकते हैं।

नीचे दिया गया Android उदाहरण दोनों विधियों के कार्यान्वयन को क्रमशः lib_task_api और lib_support के रूप में प्रदर्शित करता है।

Android उदाहरण देखें

आईओएस उदाहरण देखें

यदि आप Android/iOS के अलावा किसी अन्य प्लेटफ़ॉर्म का उपयोग कर रहे हैं, या यदि आप पहले से ही TensorFlow Lite API से परिचित हैं, तो स्टार्टर मॉडल और सहायक फ़ाइलें (यदि लागू हो) डाउनलोड करें।

स्टार्टर मॉडल डाउनलोड करें

मॉडल वर्णन

यह काम किस प्रकार करता है

प्रशिक्षण के दौरान, छवि वर्गीकरण मॉडल को छवियों और उनके संबंधित लेबलों को खिलाया जाता है। प्रत्येक लेबल एक विशिष्ट अवधारणा या वर्ग का नाम है, जिसे मॉडल पहचानना सीखेगा।

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

जब आप बाद में मॉडल के इनपुट के रूप में एक नई छवि प्रदान करते हैं, तो यह उस छवि की संभावनाओं को आउटपुट करेगा जो प्रत्येक प्रकार के जानवर का प्रतिनिधित्व करती है जिस पर इसे प्रशिक्षित किया गया था। एक उदाहरण आउटपुट निम्नानुसार हो सकता है:

पशु प्रकार संभावना
खरगोश 0.07
हम्सटर 0.02
कुत्ता 0.91

आउटपुट में प्रत्येक संख्या प्रशिक्षण डेटा में एक लेबल से मेल खाती है। मॉडल को प्रशिक्षित किए गए तीन लेबल के साथ आउटपुट को जोड़कर, आप देख सकते हैं कि मॉडल ने एक उच्च संभावना की भविष्यवाणी की है कि छवि एक कुत्ते का प्रतिनिधित्व करती है।

आप देख सकते हैं कि सभी संभावनाओं (खरगोश, हम्सटर और कुत्ते के लिए) का योग 1 के बराबर है। यह कई वर्गों वाले मॉडल के लिए एक सामान्य प्रकार का आउटपुट है (अधिक जानकारी के लिए सॉफ़्टमैक्स देखें)।

अस्पष्ट परिणाम

चूंकि आउटपुट संभावनाओं का योग हमेशा 1 होगा, यदि किसी छवि को आत्मविश्वास से किसी भी वर्ग से संबंधित के रूप में पहचाना नहीं जाता है, जिस पर मॉडल को आप पर प्रशिक्षित किया गया था, तो हो सकता है कि किसी भी एक मूल्य के बिना किसी भी एक मूल्य के बड़े पैमाने पर वितरित होने की संभावना दिखाई दे।

उदाहरण के लिए, निम्नलिखित एक अस्पष्ट परिणाम का संकेत दे सकता है:

लेबल संभावना
खरगोश 0.31
हम्सटर 0.35
कुत्ता 0.34
यदि आपका मॉडल अक्सर अस्पष्ट परिणाम देता है, तो आपको एक भिन्न, अधिक सटीक मॉडल की आवश्यकता हो सकती है।

एक मॉडल वास्तुकला का चयन

TensorFlow Lite आपको विभिन्न प्रकार के छवि वर्गीकरण मॉडल प्रदान करता है जो सभी मूल डेटासेट पर प्रशिक्षित होते हैं। MobileNet, Inception, और NASNet जैसे मॉडल आर्किटेक्चर TensorFlow हब पर उपलब्ध हैं। अपने उपयोग के मामले के लिए सबसे अच्छा मॉडल चुनने के लिए, आपको अलग-अलग आर्किटेक्चर के साथ-साथ विभिन्न मॉडलों के बीच कुछ ट्रेडऑफ़ पर विचार करने की आवश्यकता है। इनमें से कुछ मॉडल ट्रेडऑफ़ प्रदर्शन, सटीकता और मॉडल आकार जैसे मेट्रिक्स पर आधारित हैं। उदाहरण के लिए, आपको बार कोड स्कैनर बनाने के लिए एक तेज़ मॉडल की आवश्यकता हो सकती है, जबकि आप मेडिकल इमेजिंग ऐप के लिए धीमे, अधिक सटीक मॉडल को पसंद कर सकते हैं। ध्यान दें कि प्रदान किए गए छवि वर्गीकरण मॉडल इनपुट के विभिन्न आकारों को स्वीकार करते हैं। कुछ मॉडलों के लिए, यह फ़ाइल नाम में इंगित किया गया है। उदाहरण के लिए, Mobilenet_V1_1.0_224 मॉडल 224x224 पिक्सेल का इनपुट स्वीकार करता है। सभी मॉडलों को प्रति पिक्सेल तीन रंग चैनलों (लाल, हरा और नीला) की आवश्यकता होती है। परिमाणित मॉडल को प्रति चैनल 1 बाइट की आवश्यकता होती है, और फ्लोट मॉडल को प्रति चैनल 4 बाइट की आवश्यकता होती है। एंड्रॉइड और आईओएस कोड नमूने प्रदर्शित करते हैं कि प्रत्येक मॉडल के लिए आवश्यक प्रारूप में पूर्ण आकार की कैमरा छवियों को कैसे संसाधित किया जाए।

उपयोग और सीमाएं

TensorFlow Lite छवि वर्गीकरण मॉडल एकल-लेबल वर्गीकरण के लिए उपयोगी हैं; यानी, यह भविष्यवाणी करना कि छवि किस एकल लेबल का प्रतिनिधित्व करने की सबसे अधिक संभावना है। उन्हें 1000 छवि वर्गों को पहचानने के लिए प्रशिक्षित किया जाता है। कक्षाओं की पूरी सूची के लिए, मॉडल ज़िप में लेबल फ़ाइल देखें। यदि आप किसी मॉडल को नई कक्षाओं को पहचानने के लिए प्रशिक्षित करना चाहते हैं, तो मॉडल को अनुकूलित करें देखें। निम्नलिखित उपयोग के मामलों के लिए, आपको एक अलग प्रकार के मॉडल का उपयोग करना चाहिए:
  • एक छवि के भीतर एक या एक से अधिक वस्तुओं के प्रकार और स्थिति की भविष्यवाणी करना ( ऑब्जेक्ट डिटेक्शन देखें)
  • एक छवि की संरचना की भविष्यवाणी करना, उदाहरण के लिए विषय बनाम पृष्ठभूमि ( विभाजन देखें)
एक बार जब आप अपने लक्षित डिवाइस पर स्टार्टर मॉडल चला लेते हैं, तो आप प्रदर्शन, सटीकता और मॉडल आकार के बीच इष्टतम संतुलन खोजने के लिए विभिन्न मॉडलों के साथ प्रयोग कर सकते हैं।

मॉडल अनुकूलित करें

प्रदान किए गए पूर्व-प्रशिक्षित मॉडल छवियों के 1000 वर्गों को पहचानने के लिए प्रशिक्षित हैं। कक्षाओं की पूरी सूची के लिए, मॉडल ज़िप में लेबल फ़ाइल देखें। आप मूल सेट में नहीं कक्षाओं को पहचानने के लिए किसी मॉडल को फिर से प्रशिक्षित करने के लिए ट्रांसफर लर्निंग का उपयोग कर सकते हैं। उदाहरण के लिए, मूल प्रशिक्षण डेटा में कोई पेड़ नहीं होने के बावजूद, आप पेड़ की विभिन्न प्रजातियों के बीच अंतर करने के लिए मॉडल को फिर से प्रशिक्षित कर सकते हैं। ऐसा करने के लिए, आपको प्रत्येक नए लेबल के लिए प्रशिक्षण छवियों के एक सेट की आवश्यकता होगी जिसे आप प्रशिक्षित करना चाहते हैं। TFLite मॉडल मेकर के साथ या TensorFlow कोडलैब के साथ रिकॉग्निज फ्लावर्स में ट्रांसफर लर्निंग करना सीखें।

प्रदर्शन बेंचमार्क

मॉडल के प्रदर्शन को हार्डवेयर के किसी दिए गए टुकड़े पर एक मॉडल को चलाने के लिए लगने वाले समय के संदर्भ में मापा जाता है। समय जितना कम होगा, मॉडल उतना ही तेज़ होगा। आपको जिस प्रदर्शन की आवश्यकता है वह आपके आवेदन पर निर्भर करता है। रीयल-टाइम वीडियो जैसे अनुप्रयोगों के लिए प्रदर्शन महत्वपूर्ण हो सकता है, जहां अगले फ्रेम तैयार होने से पहले समय में प्रत्येक फ्रेम का विश्लेषण करना महत्वपूर्ण हो सकता है (उदाहरण के लिए 30fps वीडियो स्ट्रीम पर रीयल-टाइम अनुमान लगाने के लिए अनुमान 33ms से अधिक तेज़ होना चाहिए) . TensorFlow Lite ने मोबाइलनेट मॉडल के प्रदर्शन की मात्रा 3.7ms से 80.3 ms तक मापी। प्रदर्शन बेंचमार्क नंबर बेंचमार्किंग टूल के साथ जेनरेट किए जाते हैं।
मॉडल नाम मॉडल का आकार उपकरण एनएनएपीआई सी पी यू
Mobilenet_V1_1.0_224_quant 4.3 एमबी पिक्सेल 3 (एंड्रॉइड 10) 6ms 13ms*
पिक्सेल 4 (एंड्रॉइड 10) 3.3ms 5ms*
आईफोन एक्सएस (आईओएस 12.4.1) 11ms**

* 4 धागे का इस्तेमाल किया।

** सर्वश्रेष्ठ प्रदर्शन परिणाम के लिए iPhone पर उपयोग किए जाने वाले 2 धागे।

मॉडल सटीकता

सटीकता को इस बात से मापा जाता है कि मॉडल कितनी बार किसी छवि को सही ढंग से वर्गीकृत करता है। उदाहरण के लिए, 60% की सटीकता के साथ एक मॉडल से एक छवि को सही ढंग से वर्गीकृत करने की उम्मीद की जा सकती है, औसतन 60% समय।

सबसे प्रासंगिक सटीकता मीट्रिक टॉप-1 और टॉप-5 हैं। टॉप-1 से तात्पर्य है कि मॉडल के आउटपुट में उच्चतम संभावना वाले लेबल के रूप में कितनी बार सही लेबल दिखाई देता है। टॉप-5 से तात्पर्य है कि मॉडल के आउटपुट में 5 उच्चतम संभावनाओं में कितनी बार सही लेबल दिखाई देता है।

TensorFlow Lite ने MobileNet मॉडल के टॉप-5 सटीकता रेंज को 64.4 से 89.9% तक परिमाणित किया।

मॉडल का आकार

ऑन-डिस्क मॉडल का आकार उसके प्रदर्शन और सटीकता के साथ बदलता रहता है। मोबाइल विकास के लिए आकार महत्वपूर्ण हो सकता है (जहां यह ऐप डाउनलोड आकार को प्रभावित कर सकता है) या हार्डवेयर के साथ काम करते समय (जहां उपलब्ध भंडारण सीमित हो सकता है)।

TensorFlow Lite परिमाणित MobileNet मॉडल का आकार 0.5 से 3.4 MB तक है।

आगे पढ़ने और संसाधन

छवि वर्गीकरण से संबंधित अवधारणाओं के बारे में अधिक जानने के लिए निम्नलिखित संसाधनों का उपयोग करें: