इमेज लेबल करने के मॉडल को ट्रेनिंग देने के लिए, आपको AutoML Vision Edge में इमेज और उनसे जुड़े लेबल के सेट देना है. AutoML Vision Edge, क्लाउड में एक नए मॉडल को ट्रेनिंग देने के लिए, इस डेटासेट का इस्तेमाल करता है. इसे ऐप्लिकेशन में, डिवाइस पर मौजूद इमेज को लेबल करने के लिए इस्तेमाल किया जा सकता है. इस सुविधा के बारे में सामान्य जानकारी के लिए, खास जानकारी देखें.
AutoML Vision Edge, Google Cloud की एक सेवा है. इस सेवा का इस्तेमाल करने के लिए, Google Cloud Platform के लाइसेंस के कानूनी समझौते और सेवा की खास शर्तों का पालन करना ज़रूरी है. साथ ही, इसके हिसाब से ही बिलिंग की जाती है. बिलिंग की जानकारी के लिए, AutoML के शुल्क पेज पर जाएं.
शुरू करने से पहले
अगर आपके पास पहले से कोई Firebase या Google Cloud प्रोजेक्ट नहीं है, तो Firebase कंसोल में एक प्रोजेक्ट बनाएं.
सभी के लिए मशीन लर्निंग गाइड - ऑटोमेटेड मशीन लर्निंग में दिए गए दिशा-निर्देशों के बारे में जानें.
अगर आपको सिर्फ़ AutoML विज़न Edge आज़माना है और आपके पास ट्रेनिंग के लिए अपना डेटा नहीं है, तो कोई सैंपल डेटा डाउनलोड करें. जैसे, इनमें से कोई एक:
- TensorFlow का आधिकारिक फूलों की इमेज का उदाहरण डेटासेट
- अमेरिकन साइन लैंग्वेज (एएसएल) के अक्षरों का यह डेटासेट
Kaggle पर होस्ट किए गए ज़्यादा डेटासेट देखे जा सकते हैं.
1. अपना ट्रेनिंग डेटा इकट्ठा करना
सबसे पहले, आपको लेबल की गई इमेज का ट्रेनिंग डेटासेट बनाना होगा. इन दिशा-निर्देशों का ध्यान रखें:
इमेज इनमें से किसी एक फ़ॉर्मैट में होनी चाहिए: JPEG, PNG, GIF, BMP, ICO.
हर इमेज का साइज़ 30 एमबी या उससे कम होना चाहिए. ध्यान दें कि AutoML Vision Edge, प्री-प्रोसेसिंग के दौरान ज़्यादातर इमेज को डाउनस्केल कर देता है. इसलिए, बहुत ज़्यादा रिज़ॉल्यूशन वाली इमेज उपलब्ध कराने का आम तौर पर कोई फ़ायदा नहीं होता.
हर लेबल के लिए कम से कम 10 और बेहतर होगा कि 100 या उससे ज़्यादा उदाहरण शामिल करें.
हर लेबल के लिए कई ऐंगल, रिज़ॉल्यूशन, और बैकग्राउंड शामिल करें.
ट्रेनिंग डेटा उस डेटा के ज़्यादा से ज़्यादा करीब होना चाहिए जिस पर अनुमान लगाए जाने हैं. उदाहरण के लिए, अगर आपके इस्तेमाल के उदाहरण में धुंधली और कम रिज़ॉल्यूशन वाली इमेज (जैसे, सुरक्षा कैमरे से ली गई इमेज) शामिल हैं, तो आपके ट्रेनिंग डेटा में धुंधली और कम रिज़ॉल्यूशन वाली इमेज होनी चाहिए.
AutoML Vision Edge से जनरेट किए गए मॉडल, असल दुनिया के ऑब्जेक्ट की फ़ोटो के लिए ऑप्टिमाइज़ किए जाते हैं. शायद ये एक्स-रे, हाथ से बनी ड्रॉइंग, स्कैन किए गए दस्तावेज़, रसीद वगैरह के लिए सही से काम न करें.
साथ ही, आम तौर पर मॉडल ऐसे लेबल का अनुमान नहीं लगा सकते जिन्हें इंसान असाइन नहीं कर सकते. इसलिए, अगर कोई व्यक्ति इमेज को एक-दो सेकंड तक देखकर लेबल असाइन नहीं कर सकता, तो हो सकता है कि मॉडल को भी ऐसा करने के लिए ट्रेनिंग न दी जा सके.
ट्रेनिंग इमेज तैयार होने के बाद, उन्हें Firebase में इंपोर्ट करने के लिए तैयार करें. आपके पास तीन विकल्प हैं:
पहला विकल्प: स्ट्रक्चर्ड ज़िप संग्रह
अपनी ट्रेनिंग इमेज को डायरेक्ट्री में व्यवस्थित करें. हर इमेज का नाम किसी लेबल पर रखा जाएगा और उसमें ऐसी इमेज होंगी जो उस लेबल के उदाहरण हैं. इसके बाद, डायरेक्ट्री स्ट्रक्चर को ZIP संग्रह में कंप्रेस करें.
इस ज़िप संग्रह में डायरेक्ट्री के नाम में ज़्यादा से ज़्यादा 32 ASCII वर्ण हो सकते हैं.
साथ ही, इसमें सिर्फ़ अक्षर, अंक, और अंडरस्कोर (_
) वर्ण ही शामिल किए जा सकते हैं.
उदाहरण के लिए:
my_training_data.zip |____accordion | |____001.jpg | |____002.jpg | |____003.jpg |____bass_guitar | |____hofner.gif | |____p-bass.png |____clavier |____well-tempered.jpg |____well-tempered (1).jpg |____well-tempered (2).jpg
दूसरा विकल्प: CSV इंडेक्स के साथ Cloud Storage
ट्रेनिंग की इमेज को Google Cloud Storage पर अपलोड करें. इसके बाद, एक CSV फ़ाइल बनाएं, जिसमें हर इमेज के यूआरएल के साथ-साथ, हर इमेज के लिए सही लेबल भी हों. यह विकल्प, बहुत बड़े डेटासेट का इस्तेमाल करते समय मददगार होता है.
उदाहरण के लिए, Cloud Storage पर अपनी इमेज अपलोड करें और इस तरह की CSV फ़ाइल तैयार करें:
gs://your-training-data-bucket/001.jpg,accordion gs://your-training-data-bucket/002.jpg,accordion gs://your-training-data-bucket/003.jpg,accordion gs://your-training-data-bucket/hofner.gif,bass_guitar gs://your-training-data-bucket/p-bass.png,bass_guitar gs://your-training-data-bucket/well-tempered.jpg,clavier gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier
इमेज को उस बकेट में सेव करना ज़रूरी है जो आपके Firebase प्रोजेक्ट के Google Cloud प्रोजेक्ट का हिस्सा हो.
CSV फ़ाइल तैयार करने के बारे में ज़्यादा जानने के लिए, Cloud AutoML Vision के दस्तावेज़ में अपना ट्रेनिंग डेटा तैयार करना देखें.
तीसरा विकल्प: बिना लेबल वाली इमेज
ट्रेनिंग इमेज को अपलोड करने के बाद, Firebase कंसोल में उन्हें लेबल करें. इमेज को अलग-अलग या बिना क्रम वाली ZIP फ़ाइल में लेबल किया जा सकता है. अगला चरण देखें.
2. अपने मॉडल को ट्रेन करना
इसके बाद, अपनी इमेज का इस्तेमाल करके मॉडल को ट्रेनिंग दें:
Google Cloud कंसोल में, विज़न डेटासेट पेज खोलें. जब आपसे कहा जाए, तब अपना प्रोजेक्ट चुनें.
नया डेटासेट पर क्लिक करें. इसके बाद, डेटासेट के लिए कोई नाम दें और वह मॉडल टाइप चुनें जिसे आपको ट्रेन करना है. इसके बाद, डेटासेट बनाएं पर क्लिक करें.
अपने डेटासेट के इंपोर्ट करें टैब पर, अपनी ट्रेनिंग इमेज का ज़िप संग्रह या उन Cloud Storage जगहों वाली CSV फ़ाइल अपलोड करें जिनमें आपने उन्हें अपलोड किया है. अपना ट्रेनिंग डेटा इकट्ठा करना देखें.
इंपोर्ट करने का टास्क पूरा होने के बाद, इमेज टैब का इस्तेमाल करके, ट्रेनिंग डेटा की पुष्टि करें और बिना लेबल वाली इमेज को लेबल करें.
ट्रेन टैब में, ट्रेनिंग शुरू करें पर क्लिक करें.
मॉडल को कोई नाम दें और Edge मॉडल टाइप चुनें.
नीचे दी गई ट्रेनिंग सेटिंग कॉन्फ़िगर करें, जो जनरेट किए गए मॉडल की परफ़ॉर्मेंस को कंट्रोल करती हैं:
मॉडल को इनके लिए ऑप्टिमाइज़ करें... इस्तेमाल किया जाने वाला मॉडल कॉन्फ़िगरेशन. कम इंतज़ार या छोटे पैकेज साइज़ के लिए, तेज़ी से काम करने वाले छोटे मॉडल को ट्रेन किया जा सकता है. वहीं, सटीक नतीजे पाने के लिए, धीमे और बड़े मॉडल को ट्रेन किया जा सकता है. नोड के घंटे का बजट मॉडल को ट्रेनिंग देने के लिए, कंप्यूट के हिसाब से ज़्यादा से ज़्यादा समय. आम तौर पर, ज़्यादा समय तक ट्रेनिंग करने से ज़्यादा सटीक मॉडल बनता है.
ध्यान दें कि अगर सिस्टम को यह लगता है कि मॉडल को ऑप्टिमाइज़ किया गया है और अतिरिक्त ट्रेनिंग से सटीक नतीजे नहीं मिल पाएंगे, तो ट्रेनिंग को तय किए गए समय से भी कम समय में पूरा किया जा सकता है. आपसे सिर्फ़ उन घंटों के लिए शुल्क लिया जाता है जिनका इस्तेमाल किया गया है.
ट्रेनिंग का सामान्य समय बहुत छोटे सेट 1 घंटा 500 इमेज 2 घंटे 1,000 इमेज 3 घंटे 5,000 इमेज 6 घंटे 10,000 इमेज सात घंटे 50,000 इमेज 11 घंटे 1,00,000 इमेज 13 घंटे 1,000,000 इमेज 18 घंटे
3. अपने मॉडल का आकलन करना
ट्रेनिंग पूरी होने के बाद, मॉडल की परफ़ॉर्मेंस मेट्रिक देखने के लिए, आकलन करें टैब पर क्लिक करें.
इस पेज का एक अहम इस्तेमाल यह है कि आप वह कॉन्फ़िडेंस थ्रेशोल्ड तय करें जो आपके मॉडल के लिए सबसे अच्छा काम करे. कॉन्फ़िडेंस थ्रेशोल्ड वह कम से कम कॉन्फ़िडेंस होता है जो किसी इमेज को लेबल असाइन करने के लिए, मॉडल के पास होना चाहिए. कॉन्फ़िडेंस थ्रेशोल्ड स्लाइडर को आगे बढ़ाकर देखा जा सकता है कि अलग-अलग थ्रेशोल्ड, मॉडल की परफ़ॉर्मेंस पर किस तरह असर डालते हैं. मॉडल की परफ़ॉर्मेंस को दो मेट्रिक का इस्तेमाल करके मेज़र किया जाता है: प्रिसिज़न और रीकॉल.
इमेज को कैटगरी में बांटने के मामले में, सटीकनेस का मतलब है कि सही तरीके से लेबल की गई इमेज की संख्या और चुनी गई थ्रेशोल्ड के हिसाब से, मॉडल की ओर से लेबल की गई इमेज की संख्या के बीच का अनुपात. जब किसी मॉडल की परफ़ॉर्मेंस अच्छी होती है, तो वह कम ही गलत लेबल असाइन करता है (कम फ़ॉल्स पॉज़िटिव).
रीकॉल, सही तरीके से लेबल की गई इमेज की संख्या और उन इमेज की संख्या के बीच का अनुपात है जिनमें मॉडल को लेबल करना चाहिए था. जब किसी मॉडल का रीकॉल रेट ज़्यादा होता है, तो वह कम बार कोई लेबल असाइन करता है (गलत नेगेटिव कम होते हैं).
सटीक या रीकॉल के लिए ऑप्टिमाइज़ करना, इस बात पर निर्भर करता है कि आपको किस तरह का डेटा चाहिए. ज़्यादा जानकारी के लिए, AutoML Vision के लिए शुरुआती लोगों की गाइड और सभी के लिए मशीन लर्निंग गाइड - AutoML देखें.
जब आपको कोई कॉन्फ़िडेंस थ्रेशोल्ड मिलता है, जो आपकी पसंद के मुताबिक मेट्रिक दिखाता है, तो उसका ध्यान रखें. अपने ऐप्लिकेशन में मॉडल को कॉन्फ़िगर करने के लिए, कॉन्फ़िडेंस थ्रेशोल्ड का इस्तेमाल किया जाएगा. (थ्रेशोल्ड की सही वैल्यू पाने के लिए, इस टूल का इस्तेमाल कभी भी किया जा सकता है.)
4. अपना मॉडल पब्लिश करना या डाउनलोड करना
अगर आप मॉडल की परफ़ॉर्मेंस से संतुष्ट हैं और आपको उसे किसी ऐप्लिकेशन में इस्तेमाल करना है, तो आपके पास तीन विकल्प हैं. इनमें से किसी भी कॉम्बिनेशन को चुना जा सकता है: ऑनलाइन अनुमान के लिए मॉडल डिप्लॉय करें, मॉडल को Firebase पर पब्लिश करें या मॉडल डाउनलोड करके उसे अपने ऐप्लिकेशन के साथ बंडल करें.
मॉडल को डिप्लॉय करना
अपने डेटासेट के जांच करें और इस्तेमाल करें टैब में, ऑनलाइन अनुमान के लिए अपना मॉडल डिप्लॉय किया जा सकता है. यह मॉडल, क्लाउड में चलता है. यह विकल्प Cloud AutoML के दस्तावेज़ों में शामिल है. इस साइट पर मौजूद दस्तावेज़, बाकी दो विकल्पों के बारे में बताते हैं.
मॉडल पब्लिश करना
Firebase में मॉडल पब्लिश करके, ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना ही मॉडल को अपडेट किया जा सकता है. साथ ही, उपयोगकर्ताओं के अलग-अलग ग्रुप को डाइनैमिक तौर पर अलग-अलग मॉडल दिखाने के लिए, Remote Config और A/B Testing का इस्तेमाल किया जा सकता है.
अगर आपने मॉडल को Firebase पर होस्ट करके, उसे अपने ऐप्लिकेशन के साथ बंडल नहीं किया है, तो अपने ऐप्लिकेशन के शुरुआती डाउनलोड साइज़ को कम किया जा सकता है. हालांकि, ध्यान रखें कि अगर मॉडल को आपके ऐप्लिकेशन के साथ बंडल नहीं किया गया है, तो मॉडल से जुड़ी कोई भी सुविधा तब तक उपलब्ध नहीं होगी, जब तक आपका ऐप्लिकेशन पहली बार मॉडल को डाउनलोड नहीं कर लेता.
अपना मॉडल पब्लिश करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जा सकता है:
- Google Cloud कंसोल में, अपने डेटासेट के जांच करें और इस्तेमाल करें पेज से TF Lite मॉडल डाउनलोड करें. इसके बाद, Firebase कंसोल के कस्टम मॉडल पेज पर मॉडल अपलोड करें. आम तौर पर, किसी एक मॉडल को पब्लिश करने का यह सबसे आसान तरीका है.
- एडमिन SDK का इस्तेमाल करके, मॉडल को अपने Google Cloud प्रोजेक्ट से सीधे Firebase में पब्लिश करें. इस तरीके का इस्तेमाल कई मॉडल पब्लिश करने के लिए या अपने-आप तैयार होने वाले पाइपलाइन बनाने में किया जा सकता है.
Admin SDK के मॉडल मैनेजमेंट एपीआई की मदद से मॉडल पब्लिश करने के लिए:
मॉडल पब्लिश करें.
आपको मॉडल का रिसॉर्स आइडेंटिफ़ायर बताना होगा. यह एक स्ट्रिंग होती है, जो नीचे दिए गए उदाहरण की तरह दिखती है:
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
Cloud Storage बकेट का प्रोजेक्ट नंबर, जिसमें मॉडल शामिल है. यह आपका Firebase प्रोजेक्ट या कोई दूसरा Google Cloud प्रोजेक्ट हो सकता है. यह वैल्यू, Firebase कंसोल के सेटिंग पेज या Google Cloud कंसोल के डैशबोर्ड पर देखी जा सकती है. MODEL_ID
मॉडल का आईडी, जो आपको AutoML Cloud API से मिला है. Python
# First, import and initialize the SDK. # Get a reference to the AutoML model source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format( # See above for information on these values. project_number, model_id )) # Create the model object tflite_format = ml.TFLiteFormat(model_source=source) model = ml.Model( display_name="example_model", # This is the name you will use from your app to load the model. tags=["examples"], # Optional tags for easier management. model_format=tflite_format) # Add the model to your Firebase project and publish it new_model = ml.create_model(model) new_model.wait_for_unlocked() ml.publish_model(new_model.model_id)
Node.js
// First, import and initialize the SDK. (async () => { // Get a reference to the AutoML model. See above for information on these // values. const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`; // Create the model object and add the model to your Firebase project. const model = await ml.createModel({ displayName: 'example_model', // This is the name you use from your app to load the model. tags: ['examples'], // Optional tags for easier management. tfliteModel: { automlModel: automlModel }, }); // Wait for the model to be ready. await model.waitForUnlocked(); // Publish the model. await ml.publishModel(model.modelId); process.exit(); })().catch(console.error);
मॉडल को डाउनलोड करना और अपने ऐप्लिकेशन के साथ बंडल करना
अपने मॉडल को ऐप्लिकेशन के साथ बंडल करके, यह पक्का किया जा सकता है कि Firebase पर होस्ट किया गया मॉडल उपलब्ध न होने पर भी, आपके ऐप्लिकेशन की एमएल सुविधाएं काम करती रहें.
अगर आपने मॉडल को पब्लिश किया है और उसे अपने ऐप्लिकेशन के साथ बंडल किया है, तो ऐप्लिकेशन उपलब्ध सबसे नए वर्शन का इस्तेमाल करेगा.
मॉडल डाउनलोड करने के लिए, अपने डेटासेट के जांच और इस्तेमाल करें पेज पर जाकर, TF Lite पर क्लिक करें.
अगले चरण
अब जब आपने मॉडल को पब्लिश या डाउनलोड कर लिया है, तो अपने iOS+ और Android ऐप्लिकेशन में मॉडल को इस्तेमाल करने का तरीका जानें.