1. परिचय
मशीन लर्निंग में हाल ही में हुई प्रोग्रेस की वजह से कंप्यूटर के लिए इमेज में मौजूद चीज़ों को पहचानना आसान हो गया है. इस कोडलैब में, हम आपको इमेज क्लासिफ़िकेशन मॉडल बनाने का तरीका बताएंगे. यह मॉडल अलग-अलग तरह के ऑब्जेक्ट पहचान सकता है. इसके बाद, उस मॉडल को Android और iOS ऐप्लिकेशन पर डिप्लॉय कर सकता है. ML Kit और AutoML की मदद से, मशीन लर्निंग विशेषज्ञता के बिना भी बड़े पैमाने पर मॉडल बनाए और डिप्लॉय किए जा सकते हैं.
एमएल किट क्या है?
ML Kit एक मोबाइल SDK टूल है. यह Google की मशीन लर्निंग विशेषज्ञता को, Android और iOS ऐप्लिकेशन में इस्तेमाल करता है. यह एक असरदार और इस्तेमाल करने में आसान पैकेज है. चाहे आप नए हों या फिर मशीन लर्निंग का अनुभव रखते हों, कोड की कुछ ही लाइनों में अपने काम की सभी सुविधाएं आसानी से लागू की जा सकती हैं. ऐसे कई एपीआई हैं जो टेक्स्ट, चेहरों वगैरह की पहचान कर सकते हैं. इनका इस्तेमाल ज़्यादा बेहतर तरीके से किया जा सकता है. हालांकि, अगर आपको ऐसे ऑब्जेक्ट की पहचान करनी है जो एपीआई के साथ काम नहीं करते हैं, जैसे कि किसी इमेज से अलग-अलग तरह के फूलों की पहचान करना, तो आपको अपने मॉडल को ट्रेनिंग देनी होगी. इस स्थिति में AutoML आपकी मदद कर सकता है.
AutoML क्या है?
Cloud AutoML, मशीन लर्निंग वाले प्रॉडक्ट का एक सुइट है. इससे उन डेवलपर को अपने कारोबार की ज़रूरतों के हिसाब से अच्छी क्वालिटी के मॉडल को ट्रेनिंग देने में मदद मिलती है जो उनके लिए सबसे सही हैं. इसके लिए, यह Google की आधुनिक ट्रांसफ़र लर्निंग और न्यूरल आर्किटेक्चर सर्च टेक्नोलॉजी का इस्तेमाल करता है.
इस कोडलैब में, हम फूलों की कैटगरी तय करने के मॉडल को ट्रेनिंग देने के लिए, एमएल किट में AutoML Vision Edge का इस्तेमाल करेंगे. इस मॉडल को क्लाउड पर ट्रेनिंग दी गई है. इसके बाद, डिवाइस पर पूरी तरह से अनुमान लगाने के लिए, इसे ऐप्लिकेशन में बंडल या डाउनलोड किया जाता है.
आप इन चीज़ों के बारे में जानेंगे
- मशीन लर्निंग किट में AutoML Vision Edge का इस्तेमाल करके, इमेज की कैटगरी तय करने वाले मॉडल को ट्रेनिंग देने का तरीका.
- ML Kit SDK टूल की मदद से, सैंपल Android या iOS ऐप्लिकेशन में इसे चलाने का तरीका.
आपको इनकी ज़रूरत होगी
Android ऐप्लिकेशन के लिए
- Android Studio का नया वर्शन (v3.4+)
- Play Store वाला Android Studio एम्युलेटर या फ़िज़िकल Android डिवाइस (v5.0+)
- Kotlin में Android डेवलपमेंट की बुनियादी जानकारी
iOS ऐप्लिकेशन के लिए
- XCode का नया वर्शन (v10.2+)
- iOS सिम्युलेटर या फ़िज़िकल iOS डिवाइस (v9.0+)
- CocoaPods
- Swift में iOS डेवलपमेंट की बुनियादी जानकारी
2. सेटअप
कोड और ट्रेनिंग डेटासेट डाउनलोड करें
वह ZIP फ़ॉर्मैट वाला संग्रह डाउनलोड करें जिसमें इस कोडलैब (कोड बनाना सीखना) का सोर्स कोड और एक ट्रेनिंग डेटासेट शामिल हो. संग्रह को अपनी लोकल मशीन में एक्सट्रैक्ट करें.
Firebase कंसोल प्रोजेक्ट बनाएं
- Firebase कंसोल पर जाएं.
- नया प्रोजेक्ट बनाएं को चुनें और अपने प्रोजेक्ट का नाम "एमएल किट कोडलैब" रखें.
Android ऐप्लिकेशन सेट अप करना
- हमारे Android ऐप्लिकेशन को Firebase प्रोजेक्ट में जोड़ें. Android पैकेज का नाम:
com.google.firebase.codelab.mlkit.automl
google-services.json
कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें और उसेandroid/mlkit-automl/app/google-services.json
के Android ऐप्लिकेशन में डालें.
iOS ऐप्लिकेशन सेट अप करना
- हमारे iOS ऐप्लिकेशन को Firebase प्रोजेक्ट में जोड़ें. iOS बंडल आईडी:
com.google.firebase.codelab.mlkit.automl
GoogleService-Info.plist
कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें और उसेios/mlkit-automl/GoogleService-Info.plist
पर iOS ऐप्लिकेशन में डालने के लिए, निर्देशों का पालन करें.
3. ट्रेनिंग के लिए डेटासेट तैयार करें
किसी मॉडल को अलग-अलग तरह के ऑब्जेक्ट की पहचान करने का प्रशिक्षण देने के लिए, आपको इमेज का एक सेट तैयार करना होगा और हर एक को लेबल करना होगा. हमने क्रिएटिव-कॉमन लाइसेंस वाले फूलों की फ़ोटो का एक संग्रह बनाया है, जिसे आप इस कोडलैब में इस्तेमाल कर सकते हैं.
डेटासेट को flower_photos.zip
नाम की ज़िप फ़ाइल के रूप में पैकेज किया गया है, जो पिछले चरण में डाउनलोड किए गए ज़िप संग्रह में शामिल है.
डेटासेट एक्सप्लोर करना
flower_photos.zip
फ़ाइल को एक्सट्रैक्ट करने पर, आपको डेटासेट में पांच तरह के फूलों की इमेज दिखेगी: डैंडलायन, डेज़ी, ट्यूलिप, सूरजमुखी, और गुलाब, जिन्हें फूलों के नाम वाले फ़ोल्डर में रखा गया है. यह AutoML में फ़ीड करने के लिए ट्रेनिंग डेटासेट बनाने और इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग देने का एक आसान तरीका है.
इस ट्रेनिंग डेटासेट में, हर तरह के फूल के लिए 200 इमेज दी गई हैं. किसी मॉडल को ट्रेनिंग देने के लिए, आपको हर क्लास में कम से कम 10 इमेज की ज़रूरत होगी. हालांकि, ट्रेनिंग वाली ज़्यादा इमेज से आम तौर पर बेहतर मॉडल मिलेंगे.
4. मॉडल को ट्रेनिंग दें
ट्रेनिंग से जुड़ा डेटासेट अपलोड करें
- Firebase कंसोल से, वह प्रोजेक्ट खोलें जिसे आपने अभी-अभी बनाया है.
- एमएल किट चुनें > AutoML.
- आपको कुछ वेलकम स्क्रीन दिख सकती हैं. जहां ज़रूरी हो वहां शुरू करें को चुनें.
- सेट अप प्रक्रिया पूरी होने के बाद, डेटासेट जोड़ें चुनें और इसे "फूल" नाम दें.
- मॉडल के मकसद में, सिंगल-लेबल क्लासिफ़िकेशन को चुनें,क्योंकि ट्रेनिंग डेटा में हर इमेज के लिए सिर्फ़ एक लेबल होता है.
- बनाएं को चुनें.
- फूलों की ट्रेनिंग के डेटासेट को इंपोर्ट करने के लिए, पिछले चरण में डाउनलोड की गई
flower_photos.zip
फ़ाइल अपलोड करें. - इंपोर्ट का टास्क पूरा होने के लिए कुछ मिनट इंतज़ार करें.
- अब यह पुष्टि की जा सकती है कि डेटासेट सही तरीके से इंपोर्ट हुआ है या नहीं.
- ट्रेनिंग के डेटासेट में मौजूद सभी इमेज लेबल कर दी गई हैं. इसलिए, मॉडल को ट्रेनिंग दें.
इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग दें
चूंकि हमारा मॉडल सीमित कंप्यूटिंग पावर और मेमोरी वाले मोबाइल डिवाइस पर चलेगा, इसलिए हमें न केवल मॉडल की सटीकता, बल्कि उसके आकार और गति का भी ध्यान रखना होगा. मॉडल के सटीक होने, इंतज़ार के समय (जैसे कि इमेज की कैटगरी तय करने में कितना समय लगता है) और मॉडल के साइज़ के बीच फ़र्क़ होता है. आम तौर पर, ज़्यादा सटीक वाला मॉडल बड़ा होता है. इसलिए, इमेज को कैटगरी में बांटने में ज़्यादा समय लगता है.
AutoML में आपको कई विकल्प मिलते हैं: आपके पास चीज़ों को सटीक बनाने, इंतज़ार के समय और मॉडल के साइज़ को ऑप्टिमाइज़ करने या दोनों के बीच संतुलन बनाने का विकल्प होता है. आपके पास यह चुनने का विकल्प भी होता है कि मॉडल को कितनी देर तक ट्रेनिंग देने की अनुमति दी जाए. बड़े डेटासेट को ज़्यादा समय तक ट्रेनिंग देने की ज़रूरत होती है.
अगर आपको मॉडल को ट्रेनिंग देनी है, तो इसका तरीका जानें.
- ट्रेन का मॉडल चुनें.
- सामान्य उद्देश्य का विकल्प और एक कंप्यूट घंटे ट्रेनिंग का समय चुनें.
- ट्रेनिंग के टास्क को पूरा करने के लिए, करीब-करीब कई घंटे इंतज़ार करें.
- ट्रेनिंग टास्क खत्म होने के बाद, आपको ट्रेन किए गए मॉडल की परफ़ॉर्मेंस का आकलन करने वाली मेट्रिक दिखेगी.
5. मोबाइल ऐप्लिकेशन में मॉडल का इस्तेमाल करना
वीडियो की रणनीति
- इस कोडलैब में, Android और iOS, दोनों के सैंपल ऐप्लिकेशन शामिल हैं. यह ऐप्लिकेशन, इमेज क्लासिफ़िकेशन मॉडल को इस्तेमाल करने के तरीके के बारे में बताता है, जिसे हमने पहले मोबाइल ऐप्लिकेशन में ट्रेनिंग दी थी. दोनों ऐप्लिकेशन में एक जैसी सुविधाएं हैं. आपके पास वह प्लैटफ़ॉर्म चुनने का विकल्प होता है जिसके बारे में आपको ज़्यादा जानकारी है.
- आगे बढ़ने से पहले, कृपया पक्का करें कि आपने सैंपल ऐप्लिकेशन डाउनलोड कर लिए हैं और उन्हें दूसरे चरण में कॉन्फ़िगर किया है.
- कृपया यह भी पक्का करें कि आपके स्थानीय एनवायरमेंट को इस तरह से सेट अप किया गया है कि वह आपके चुने गए प्लैटफ़ॉर्म (Android/iOS) के लिए ऐप्लिकेशन बना सके.
इमेज क्लासिफ़िकेशन मॉडल डाउनलोड करें
- अगर आपने पिछले चरण में किसी मॉडल को ट्रेनिंग दी है, तो मॉडल पाने के लिए डाउनलोड करें चुनें.
- अगर आपने किसी मॉडल को ट्रेनिंग नहीं दी है या ट्रेनिंग का आपका टास्क अभी पूरा नहीं हुआ है, तो सैंपल ऐप्लिकेशन में शामिल मॉडल को इस्तेमाल किया जा सकता है.
सैंपल ऐप्लिकेशन में मॉडल जोड़ें
आपको सिर्फ़ सैंपल ऐप्लिकेशन में मॉडल जोड़ना होगा और वे शानदार तरीके से काम करेंगे. अपने ऐप्लिकेशन के साथ ML Kit AutoML टूल को इंटिग्रेट करने के तरीके के बारे में पूरी जानकारी पाने के लिए, कृपया हमारा दस्तावेज़ ( Android, iOS) देखें. ML Kit SDK टूल के साथ इंटरैक्ट करने वाला कोड, ImageClassifier.kt
और ImageClassifier.swift
फ़ाइल में होता है. इससे ऐप्लिकेशन के काम करने के तरीके के बारे में जानने के लिए, कोड को वहीं से शुरू किया जा सकता है.
मॉडल को डिप्लॉय करने के दो विकल्प हैं: लोकल और रिमोट.
- लोकल मॉडल का इस्तेमाल मुख्य रूप से आपके ऐप्लिकेशन की बाइनरी में इमेज क्लासिफ़िकेशन मॉडल को बंडल करने के लिए किया जाता है. हालांकि, कोई मॉडल लोकल स्टोरेज में सेव किया गया मॉडल भी उपलब्ध करा सकता है. बंडल करने पर, उपयोगकर्ताओं के लिए App Store / Play Store से आपका ऐप्लिकेशन डाउनलोड करने के तुरंत बाद मॉडल उपलब्ध हो जाता है. यह बिना इंटरनेट कनेक्शन के भी काम करेगा.
- रिमोट मॉडल का मतलब है कि मॉडल को Firebase पर होस्ट किया जाता है. साथ ही, इसे आपके उपयोगकर्ता के डिवाइस पर सिर्फ़ तब डाउनलोड किया जाएगा, जब पहली बार इसकी ज़रूरत होगी. इसके बाद, यह मॉडल ऑफ़लाइन भी काम करेगा.
Android ऐप्लिकेशन
- Android Studio खोलें.
android/mlkit-automl/
में जाकर Android ऐप्लिकेशन इंपोर्ट करें- (वैकल्पिक) डाउनलोड किए गए मॉडल को एक्सट्रैक्ट करें और उसके कॉन्टेंट को सैंपल ऐप्लिकेशन में शामिल मॉडल से कॉपी करें. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- अब Android Studio के टूलबार में, 'रन करें ( )' पर क्लिक करें. साथ ही, पुष्टि करें कि वह अलग-अलग तरह के फूलों को पहचान सकता है!
iOS ऐप्लिकेशन
- Terminal खोलें और
ios/mlkit-automl/
फ़ोल्डर पर जाएं - Cocoapods के ज़रिए डिपेंडेंसी डाउनलोड करने के लिए,
pod install
चलाएं - Xcode में प्रोजेक्ट वर्कस्पेस खोलने के लिए,
open MLVisionExample.xcworkspace/
चलाएं. - (ज़रूरी नहीं) डाउनलोड किए गए मॉडल को एक्सट्रैक्ट करें और उसके कॉन्टेंट को
ios/ml-automl/Resources/automl/
में सैंपल ऐप्लिकेशन में शामिल मॉडल से कॉपी करें - अब Xcode टूलबार में, चलाएं ( ) पर क्लिक करें और पुष्टि करें कि वह अलग-अलग तरह के फूलों को पहचान सकता है!
6. (ज़रूरी नहीं) रिमोट मॉडल का इस्तेमाल करें
ML Kit के रिमोट मॉडल की मदद से, अपने ऐप्लिकेशन की बाइनरी में Tensorflow Lite मॉडल को शामिल नहीं किया जा सकता. हालांकि, ज़रूरत पड़ने पर इसे Firebase से मांग पर डाउनलोड किया जा सकता है. लोकल मॉडल की तुलना में, रिमोट मॉडल के कई फ़ायदे हैं:
- छोटी ऐप्लिकेशन बाइनरी
- ऐप्लिकेशन को अपडेट किए बिना मॉडल अपडेट कर पाना
- किसी मॉडल के कई वर्शन के साथ A/B टेस्टिंग
इस चरण में, हम एक रिमोट मॉडल पब्लिश करेंगे और उसका इस्तेमाल सैंपल ऐप्लिकेशन में करेंगे. कृपया पक्का करें कि आपने इस कोडलैब के चौथे चरण में अपने मॉडल की ट्रेनिंग पूरी कर ली है.
मॉडल पब्लिश करना
- Firebase कंसोल पर जाएं.
- "एमएल किट ऑटोएमएल कोडलैब" चुनें जिसे आपने पहले बनाया था.
- एमएल किट चुनें > AutoML.
- "फूल" चुनें डेटासेट है जिसे आपने पहले बनाया है.
- पुष्टि करें कि ट्रेनिंग टास्क पूरा हो गया है. इसके बाद, मॉडल चुनें.
- पब्लिश करें को चुनें और इसे "mlkit_flowers" नाम दें.
रिमोट मॉडल की मदद से, फूलों की पहचान करें
सैंपल ऐप्लिकेशन, उपलब्ध होने पर रिमोट मॉडल का इस्तेमाल करने के लिए कॉन्फ़िगर किए जाते हैं. रिमोट मॉडल पब्लिश करने के बाद, मॉडल डाउनलोड को ट्रिगर करने के लिए, आपको ऐप्लिकेशन सिर्फ़ फिर से चलाने होंगे. "सोर्स" को देखकर यह पुष्टि की जा सकती है कि ऐप्लिकेशन रिमोट मॉडल का इस्तेमाल कर रहा है या नहीं मान को ऐप स्क्रीन के फ़ुटर में देख सकते हैं. "समस्या का हल" देखें सेक्शन देखें.
समस्या का हल
अगर सैंपल ऐप्लिकेशन में अब भी लोकल मॉडल का इस्तेमाल किया जा रहा है, तो कृपया पुष्टि करें कि कोड में रिमोट मॉडल का नाम सही तरीके से सेट किया गया हो.
Android ऐप्लिकेशन
ImageClassifier.kt
पर जाएं और इस ब्लॉक को ढूंढें.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- पुष्टि करें कि कोड में सेट किया गया मॉडल नाम, Firebase कंसोल के ज़रिए पहले पब्लिश किए गए मॉडल नाम से मेल खाता हो.
- अब ऐप्लिकेशन को फिर से चलाने के लिए, Android Studio के टूलबार में, 'चलाएं' ( ) पर क्लिक करें.
iOS ऐप्लिकेशन
ImageClassifier.swift
पर जाएं और यह ब्लॉक ढूंढें,
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- पुष्टि करें कि कोड में सेट किया गया मॉडल नाम, Firebase कंसोल के ज़रिए पहले पब्लिश किए गए मॉडल नाम से मेल खाता हो
- अब ऐप्लिकेशन को फिर से चलाने के लिए Xcode टूलबार में, चलाएं ( ) पर क्लिक करें.
7. बधाई हो!
आपने AutoML का इस्तेमाल करके, अपने ट्रेनिंग डेटा की मदद से इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग दी है. इसके बाद, मशीन लर्निंग किट का इस्तेमाल करके, इस मॉडल को मोबाइल ऐप्लिकेशन में इस्तेमाल किया जा सकता है.
अपने ऐप्लिकेशन के साथ ML किट में AutoML Vision Edge इंटिग्रेट करने का तरीका जानने के लिए, कृपया हमारा दस्तावेज़ देखें.
Firebase ML किट की अन्य सुविधाएं देखने के लिए, हमारे ML Kit सैंपल ऐप्लिकेशन को भी आज़माया जा सकता है.
Android के सैंपल
iOS के सैंपल