छवि वर्गीकरण

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

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

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

शुरू हो जाओ

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

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

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

एंड्रॉइड उदाहरण देखें

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

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

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

मॉडल वर्णन

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

प्रदर्शन मानदंड

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

* 4 धागों का प्रयोग किया गया।

** सर्वोत्तम प्रदर्शन परिणाम के लिए iPhone पर 2 थ्रेड का उपयोग किया जाता है।

मॉडल सटीकता

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

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

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

मॉडल का आकार

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

TensorFlow Lite परिमाणित मोबाइलनेट मॉडल का आकार 0.5 से 3.4 एमबी तक है।

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

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