ML Kit में AutoML Vision की मदद से, डिवाइस पर मौजूद इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग दें और डिप्लॉय करें

1. परिचय

मशीन लर्निंग में हुई हाल ही की तरक्की की वजह से, कंप्यूटर के लिए इमेज में मौजूद ऑब्जेक्ट को पहचानना आसान हो गया है. इस कोडलैब में, हम आपको इमेज क्लासिफ़िकेशन मॉडल बनाने की पूरी प्रोसेस के बारे में बताएंगे. यह मॉडल अलग-अलग तरह की चीज़ों को पहचान सकता है. इसके बाद, हम इस मॉडल को Android और iOS ऐप्लिकेशन पर डिप्लॉय करेंगे. ML Kit और AutoML की मदद से, मशीन लर्निंग के बारे में ज़्यादा जानकारी न भी होने पर, बड़े पैमाने पर मॉडल बनाया और डिप्लॉय किया जा सकता है.

ML Kit क्या है?

ML Kit एक मोबाइल SDK टूल है. यह Google की मशीन लर्निंग की विशेषज्ञता को Android और iOS ऐप्लिकेशन में लाता है. यह एक ऐसा पैकेज है जो इस्तेमाल करने में आसान होने के साथ-साथ असरदार भी है. चाहे आपने अभी-अभी मशीन लर्निंग का इस्तेमाल शुरू किया हो या आपके पास इसका अनुभव हो, आपको जिस सुविधा की ज़रूरत है उसे कोड की कुछ ही लाइनों में आसानी से लागू किया जा सकता है. ऐसे कई एपीआई उपलब्ध हैं जो टेक्स्ट, चेहरों वगैरह की पहचान कर सकते हैं. इनका इस्तेमाल बिना किसी बदलाव के किया जा सकता है. हालांकि, अगर आपको ऐसी चीज़ों की पहचान करनी है जिनके लिए एपीआई काम नहीं करते हैं, तो आपको अपना मॉडल तैयार करना होगा. उदाहरण के लिए, किसी इमेज में अलग-अलग तरह के फूलों की पहचान करना. ऐसे में, AutoML आपकी मदद कर सकता है.

AutoML क्या है?

Cloud AutoML, मशीन लर्निंग प्रॉडक्ट का एक सुइट है. इससे मशीन लर्निंग के बारे में कम जानकारी रखने वाले डेवलपर, अपने कारोबार की ज़रूरतों के हिसाब से हाई-क्वालिटी मॉडल को ट्रेन कर पाते हैं. इसके लिए, वे Google की ट्रांसफ़र लर्निंग और न्यूरल आर्किटेक्चर सर्च टेक्नोलॉजी का इस्तेमाल करते हैं.

इस कोडलैब में, हम ML Kit में AutoML Vision Edge का इस्तेमाल करके, फूलों को क्लासिफ़ाई करने वाले मॉडल को ट्रेन करेंगे. मॉडल को क्लाउड में ट्रेन किया जाता है. हालांकि, इसके बाद ऐप्लिकेशन इसे बंडल या डाउनलोड करता है, ताकि डिवाइस पर पूरी तरह से अनुमान लगाया जा सके.

93f21fd287496e4e.png

आपको क्या सीखने को मिलेगा

  • ML Kit में AutoML Vision Edge का इस्तेमाल करके, इमेज क्लासिफ़िकेशन मॉडल को ट्रेन करने का तरीका.
  • ML Kit SDK का इस्तेमाल करके, इसे Android या iOS के किसी सैंपल ऐप्लिकेशन में कैसे चलाया जाए.

आपको किन चीज़ों की ज़रूरत होगी

Android ऐप्लिकेशन के लिए

  • Android Studio का नया वर्शन (v3.4+)
  • Play Store के साथ Android Studio Emulator या Android 5.0 या इसके बाद के वर्शन वाला कोई Android डिवाइस
  • Kotlin में Android डेवलपमेंट की बुनियादी जानकारी

iOS ऐप्लिकेशन के लिए

  • XCode का नया वर्शन (v10.2+)
  • iOS सिम्युलेटर या iOS डिवाइस (v9.0+)
  • CocoaPods
  • Swift में iOS डेवलपमेंट की बुनियादी जानकारी

2. सेटअप

कोड और ट्रेनिंग डेटासेट डाउनलोड करना

इस कोडलैब के सोर्स कोड और ट्रेनिंग डेटासेट वाला ज़िप संग्रह डाउनलोड करें. संग्रह को अपने कंप्यूटर पर निकालें.

Firebase कंसोल प्रोजेक्ट बनाना

  1. Firebase कंसोल पर जाएं.
  2. नया प्रोजेक्ट बनाएं को चुनें. इसके बाद, अपने प्रोजेक्ट का नाम "ML Kit Codelab" रखें.

Android ऐप्लिकेशन सेट अप करना

  1. हमारे Android ऐप्लिकेशन को Firebase प्रोजेक्ट में जोड़ें. Android पैकेज का नाम: com.google.firebase.codelab.mlkit.automl
  2. google-services.json कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें और उसे Android ऐप्लिकेशन में android/mlkit-automl/app/google-services.json पर रखें.

iOS ऐप्लिकेशन सेट अप करना

  1. हमारे iOS ऐप्लिकेशन को Firebase प्रोजेक्ट में जोड़ें. iOS बंडल आईडी: com.google.firebase.codelab.mlkit.automl
  2. GoogleService-Info.plist कॉन्फ़िगरेशन फ़ाइल डाउनलोड करें और इसे iOS ऐप्लिकेशन में ios/mlkit-automl/GoogleService-Info.plist पर रखने के लिए, दिए गए निर्देशों का पालन करें.

3. ट्रेनिंग के लिए डेटासेट तैयार करना

अलग-अलग तरह के ऑब्जेक्ट की पहचान करने के लिए, मॉडल को ट्रेन करने के लिए आपको इमेज का एक सेट तैयार करना होगा. साथ ही, हर इमेज को लेबल करना होगा. हमने क्रिएटिव-कॉमन्स लाइसेंस वाली फूलों की फ़ोटो का एक संग्रह बनाया है. इसका इस्तेमाल इस कोडलैब में किया जा सकता है.

डेटासेट को flower_photos.zip नाम की ZIP फ़ाइल में पैकेज किया जाता है. यह फ़ाइल, पिछले चरण में डाउनलोड किए गए ZIP संग्रह में शामिल होती है.

डेटासेट एक्सप्लोर करना

flower_photos.zip फ़ाइल को निकालने पर, आपको दिखेगा कि डेटासेट में पांच तरह के फूलों की इमेज हैं: डैंडेलियन, डेज़ी, ट्यूलिप, सूरजमुखी, और गुलाब. इन इमेज को फूलों के नाम वाले फ़ोल्डर में व्यवस्थित किया गया है. यह AutoML को डेटा देने और इमेज क्लासिफ़िकेशन मॉडल को ट्रेन करने के लिए, ट्रेनिंग डेटासेट बनाने का एक आसान तरीका है.

इस ट्रेनिंग डेटासेट में, हर तरह के फूल की 200 इमेज हैं. मॉडल को ट्रेन करने के लिए, आपको हर क्लास के लिए कम से कम 10 इमेज की ज़रूरत होती है. हालांकि, ट्रेनिंग के लिए ज़्यादा इमेज का इस्तेमाल करने से आम तौर पर बेहतर मॉडल तैयार होते हैं.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. किसी मॉडल को ट्रेन करना

ट्रेनिंग डेटासेट अपलोड करना

  1. Firebase कंसोल में जाकर, अभी-अभी बनाया गया प्रोजेक्ट खोलें.
  2. ML Kit > AutoML को चुनें.
  3. आपको कुछ वेलकम स्क्रीन दिख सकती हैं. जहां लागू हो वहां शुरू करें को चुनें.
  1. सेटअप पूरा होने के बाद, डेटासेट जोड़ें को चुनें और उसका नाम "फूल" रखें.
  2. मॉडल का मकसद में जाकर, सिंगल-लेबल क्लासिफ़िकेशन चुनें. ऐसा इसलिए,क्योंकि ट्रेनिंग डेटा में हर इमेज के लिए सिर्फ़ एक लेबल होता है.
  3. बनाएं को चुनें.
  4. फूलों की ट्रेनिंग का डेटासेट इंपोर्ट करने के लिए, पिछले चरण में डाउनलोड की गई flower_photos.zip फ़ाइल अपलोड करें.
  5. इंपोर्ट करने की प्रोसेस पूरी होने में कुछ मिनट लग सकते हैं.
  6. अब पुष्टि करें कि डेटासेट सही तरीके से इंपोर्ट किया गया है.
  7. ट्रेनिंग डेटासेट में मौजूद सभी इमेज को लेबल किया गया है. इसलिए, मॉडल को ट्रेनिंग दी जा सकती है.

cdb18b61f890934f.png

इमेज क्लासिफ़िकेशन मॉडल को ट्रेन करना

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

AutoML आपको कई विकल्प देता है: आपके पास सटीकता के लिए ऑप्टिमाइज़ करने, लेटेन्सी और मॉडल के साइज़ के लिए ऑप्टिमाइज़ करने या इन दोनों के बीच संतुलन बनाने का विकल्प होता है. आपके पास यह चुनने का विकल्प भी होता है कि मॉडल को कितने समय तक ट्रेन किया जाए. बड़े डेटासेट को ट्रेन करने में ज़्यादा समय लगता है.

dd6b7eaa2dd5a9de.png

अगर आपको मॉडल को खुद ट्रेन करना है, तो यह तरीका अपनाएं.

  1. मॉडल को ट्रेन करें को चुनें.
  2. सामान्य मकसद विकल्प और एक कंप्यूट आवर ट्रेनिंग का समय चुनें.
  3. ट्रेनिंग टास्क पूरा होने के लिए, कुछ समय (शायद कई घंटे) इंतज़ार करें.
  4. ट्रेनिंग का टास्क पूरा होने के बाद, आपको आकलन की मेट्रिक दिखेंगी. इनसे पता चलेगा कि ट्रेन किए गए मॉडल की परफ़ॉर्मेंस कैसी है.

73f98fbed5ae5ee5.png

5. मोबाइल ऐप्लिकेशन में मॉडल का इस्तेमाल करना

वीडियो की रणनीति

  • इस कोडलैब में Android और iOS, दोनों के लिए सैंपल ऐप्लिकेशन शामिल हैं. इनमें दिखाया गया है कि मोबाइल ऐप्लिकेशन में, इमेज क्लासिफ़िकेशन मॉडल का इस्तेमाल कैसे किया जाता है. इस मॉडल को हमने पहले ट्रेन किया था. दोनों ऐप्लिकेशन में मिलती-जुलती सुविधाएं हैं. आपके पास वह प्लैटफ़ॉर्म चुनने का विकल्प होता है जिसके बारे में आपको ज़्यादा जानकारी है.
  • आगे बढ़ने से पहले, कृपया पक्का करें कि आपने सैंपल ऐप्लिकेशन डाउनलोड कर लिए हों और उन्हें दूसरे चरण में कॉन्फ़िगर कर लिया हो.
  • कृपया यह भी पक्का करें कि आपके लोकल एनवायरमेंट को उस प्लैटफ़ॉर्म (Android/iOS) के लिए ऐप्लिकेशन बनाने के लिए सेट अप किया गया हो जिसे आपने चुना है.

इमेज क्लासिफ़िकेशन मॉडल डाउनलोड करें

  • अगर आपने पिछले चरण में कोई मॉडल ट्रेन किया है, तो मॉडल पाने के लिए डाउनलोड करें को चुनें.
  • अगर आपने किसी मॉडल को ट्रेन नहीं किया है या ट्रेनिंग का काम अभी पूरा नहीं हुआ है, तो सैंपल ऐप्लिकेशन में शामिल मॉडल का इस्तेमाल किया जा सकता है.

मॉडल को सैंपल ऐप्लिकेशन में जोड़ना

आपको सिर्फ़ मॉडल को सैंपल ऐप्लिकेशन में जोड़ना होगा. इसके बाद, वे तुरंत काम करने लगेंगे. अपने ऐप्लिकेशन में ML Kit AutoML को इंटिग्रेट करने के तरीके के बारे में पूरी जानकारी पाने के लिए, कृपया हमारा दस्तावेज़ ( Android, iOS) देखें. ML Kit SDK के साथ इंटरैक्ट करने वाला कोड, ImageClassifier.kt और ImageClassifier.swift फ़ाइल में होता है. इसलिए, ऐप्लिकेशन के काम करने का तरीका जानने के लिए, यहां से शुरुआत की जा सकती है.

मॉडल को डिप्लॉय करने के दो विकल्प हैं: लोकल और रिमोट.

  • लोकल मॉडल का इस्तेमाल मुख्य रूप से, इमेज क्लासिफ़िकेशन मॉडल को आपके ऐप्लिकेशन बाइनरी में बंडल करने के लिए किया जाता है. हालांकि, लोकल स्टोरेज में सेव किए गए मॉडल को भी इस्तेमाल किया जा सकता है. बंडलिंग की सुविधा के साथ, मॉडल को App Store / Play Store से डाउनलोड करने के बाद, यह तुरंत आपके उपयोगकर्ताओं के लिए उपलब्ध हो जाता है. साथ ही, यह बिना इंटरनेट कनेक्शन के भी काम करता है.
  • रिमोट मॉडल का मतलब है कि मॉडल को Firebase पर होस्ट किया जाता है. इसे सिर्फ़ तब उपयोगकर्ता के डिवाइस पर डाउनलोड किया जाएगा, जब पहली बार इसकी ज़रूरत होगी. इसके बाद, मॉडल ऑफ़लाइन भी काम करेगा.

2e71ed2c7cb8757c.png

Android ऐप्लिकेशन

  1. Android Studio खोलें.
  2. android/mlkit-automl/ में जाकर, Android ऐप्लिकेशन इंपोर्ट करें
  3. (ज़रूरी नहीं) डाउनलोड किए गए मॉडल को एक्सट्रैक्ट करें और उसके कॉन्टेंट को सैंपल ऐप्लिकेशन में शामिल मॉडल पर कॉपी करें. 10cf6b1e0f34de29.png
  4. अब Android Studio टूलबार में, 'चलाएं' ( c8b8a080b7ead886.png) पर क्लिक करें और पुष्टि करें कि यह अलग-अलग तरह के फूलों को पहचान सकता है!

2e71ed2c7cb8757c.png

iOS ऐप्लिकेशन

  1. टर्मिनल खोलें और ios/mlkit-automl/ फ़ोल्डर पर जाएं
  2. Cocoapods के ज़रिए डिपेंडेंसी डाउनलोड करने के लिए, pod install चलाएं
  3. Xcode में प्रोजेक्ट वर्कस्पेस खोलने के लिए, open MLVisionExample.xcworkspace/ चलाएं.
  4. (ज़रूरी नहीं) डाउनलोड किए गए मॉडल को एक्सट्रैक्ट करें और उसके कॉन्टेंट को, सैंपल ऐप्लिकेशन में शामिल मॉडल पर कॉपी करें. यह मॉडल, ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png में मौजूद होता है
  5. अब Xcode टूलबार में, रन ( 16629f86bbeb4208.png) पर क्लिक करें और पुष्टि करें कि यह अलग-अलग तरह के फूलों को पहचान सकता है!

65172c3f35336d4e.png

6. (ज़रूरी नहीं) रिमोट मॉडल का इस्तेमाल करना

ML Kit के रिमोट मॉडल की मदद से, अपने ऐप्लिकेशन बाइनरी में TensorFlow Lite मॉडल शामिल नहीं किए जा सकते. हालांकि, ज़रूरत पड़ने पर इसे Firebase से डाउनलोड किया जा सकता है. लोकल मॉडल की तुलना में रिमोट मॉडल के कई फ़ायदे हैं:

  • ऐप्लिकेशन की छोटी बाइनरी
  • ऐप्लिकेशन को अपडेट किए बिना मॉडल को अपडेट करने की सुविधा
  • किसी मॉडल के कई वर्शन के साथ A/B टेस्टिंग

इस चरण में, हम रिमोट मॉडल पब्लिश करेंगे और इसका इस्तेमाल सैंपल ऐप्लिकेशन में करेंगे. कृपया पक्का करें कि आपने इस कोडलैब के चौथे चरण में अपने मॉडल की ट्रेनिंग पूरी कर ली हो.

मॉडल पब्लिश करना

  1. Firebase कंसोल पर जाएं.
  2. आपने पहले जो "ML Kit AutoML Codelab" प्रोजेक्ट बनाया था उसे चुनें.
  3. ML Kit > AutoML चुनें.
  4. पहले से बनाए गए "Flowers" डेटासेट को चुनें.
  5. पुष्टि करें कि ट्रेनिंग का टास्क पूरा हो गया है. इसके बाद, मॉडल चुनें.
  6. पब्लिश करें को चुनें और इसे "mlkit_flowers" नाम दें. b63a58b83e814acd.png

रिमोट मॉडल की मदद से फूलों की पहचान करना

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

7c8292293fd858ad.png de359886ccecef2.png

समस्या का हल

अगर सैंपल ऐप्लिकेशन अब भी लोकल मॉडल का इस्तेमाल कर रहा है, तो कृपया पुष्टि करें कि कोड में रिमोट मॉडल का नाम सही तरीके से सेट किया गया हो.

Android ऐप्लिकेशन

  1. ImageClassifier.kt पर जाएं और इस ब्लॉक को ढूंढें.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. पुष्टि करें कि कोड में सेट किया गया मॉडल का नाम, उस मॉडल के नाम से मेल खाता हो जिसे आपने पहले Firebase Console के ज़रिए पब्लिश किया था.
  2. अब ऐप्लिकेशन को फिर से चलाने के लिए, Android Studio टूलबार में मौजूद 'चलाएं' ( c8b8a080b7ead886.png) पर क्लिक करें.

iOS ऐप्लिकेशन

  1. ImageClassifier.swift पर जाएं और यह ब्लॉक ढूंढें,
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. पुष्टि करें कि कोड में सेट किया गया मॉडल का नाम, Firebase Console के ज़रिए पहले पब्लिश किए गए मॉडल के नाम से मेल खाता हो
  2. अब ऐप्लिकेशन को फिर से चलाने के लिए, Xcode टूलबार में मौजूद 'चलाएं' ( 16629f86bbeb4208.png) पर क्लिक करें.

7. बधाई हो!

आपने AutoML का इस्तेमाल करके, अपने ट्रेनिंग डेटा के साथ इमेज क्लासिफ़िकेशन मॉडल को ट्रेन करने की पूरी प्रोसेस देखी. इसके बाद, ML Kit का इस्तेमाल करके मोबाइल ऐप्लिकेशन में मॉडल का इस्तेमाल किया.

अपने ऐप्लिकेशन में ML Kit के साथ AutoML Vision Edge को इंटिग्रेट करने का तरीका जानने के लिए, कृपया हमारा दस्तावेज़ देखें.

Firebase ML Kit की अन्य सुविधाएं देखने के लिए, ML Kit के सैंपल ऐप्लिकेशन आज़माए जा सकते हैं.

Android के सैंपल

iOS के सैंपल