AutoML Vision Edge की मदद से, इमेज लेबल करने वाले मॉडल को ट्रेनिंग दें

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

AutoML Vision Edge, Google Cloud की एक सेवा है. सेवा का इस्तेमाल, Google Cloud Platform के लाइसेंस समझौते और सेवा की खास शर्तों पर निर्भर करता है. साथ ही, इसके लिए बिलिंग भी की जाती है. बिलिंग जानकारी के लिए, AutoML कीमत पेज देखें.

शुरू करने से पहले

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 विज़न दस्तावेज़ में अपना ट्रेनिंग डेटा तैयार करना देखें.

तीसरा विकल्प: बिना लेबल वाली इमेज

अलग-अलग या बिना स्ट्रक्चर वाली ZIP फ़ाइल में, अपलोड की जाने वाली ट्रेनिंग इमेज को Firebase कंसोल में लेबल करें. अगला चरण देखें.

2. अपने मॉडल को ट्रेनिंग दें

इसके बाद, अपनी इमेज का इस्तेमाल करके मॉडल को ट्रेनिंग दें:

  1. Google Cloud Console में विज़न डेटासेट पेज खोलें. जब आपसे कहा जाए, तब अपना प्रोजेक्ट चुनें.

  2. नया डेटासेट पर क्लिक करें और डेटासेट को कोई नाम दें. इसके बाद, चुनें कि आपको किस तरह का मॉडल ट्रेनिंग देना है और डेटासेट बनाएं पर क्लिक करें.

  3. अपने डेटासेट के इंपोर्ट करें टैब पर, अपनी ट्रेनिंग इमेज का ज़िप संग्रह या Cloud Storage की उन जगहों वाली CSV फ़ाइल अपलोड करें जिन पर आपने उन्हें अपलोड किया है. अपना ट्रेनिंग डेटा इकट्ठा करना देखें.

  4. इंपोर्ट टास्क पूरा होने के बाद, ट्रेनिंग डेटा की पुष्टि करने और बिना लेबल वाली इमेज को लेबल करने के लिए, इमेज टैब का इस्तेमाल करें.

  5. ट्रेन टैब में, ट्रेनिंग शुरू करें पर क्लिक करें.

    1. मॉडल को नाम दें और Edge मॉडल टाइप चुनें.

    2. नीचे दी गई ट्रेनिंग सेटिंग कॉन्फ़िगर करें, जो जनरेट किए गए मॉडल की परफ़ॉर्मेंस को कंट्रोल करती हैं:

      मॉडल इसके लिए ऑप्टिमाइज़ करें... इस्तेमाल करने के लिए मॉडल कॉन्फ़िगरेशन. अगर इंतज़ार का समय कम करना हो या पैकेज का साइज़ छोटा होना ज़रूरी हो, तो आप तेज़, छोटे, मॉडल को ट्रेनिंग दे सकते हैं. अगर सबसे ज़्यादा सटीक जानकारी देना ज़रूरी हो, तो मॉडल को धीमा, बड़ा, और ट्रेनिंग दी जा सकती है.
      नोड घंटा बजट

      मॉडल को ट्रेनिंग देने में, कंप्यूट घंटों में लगने वाला ज़्यादा से ज़्यादा समय. आम तौर पर, ट्रेनिंग में ज़्यादा समय लगने से मॉडल ज़्यादा सटीक हो जाता है.

      ध्यान दें कि अगर सिस्टम को यह लगता है कि मॉडल को ऑप्टिमाइज़ किया गया है और अतिरिक्त ट्रेनिंग से सटीक नतीजे नहीं मिल पाएंगे, तो ट्रेनिंग को तय किए गए समय से कम समय में पूरा किया जा सकता है. आपको सिर्फ़ उन घंटों के लिए बिल भेजा जाता है जो असल में इस्तेमाल किए गए हैं.

      ट्रेनिंग का सामान्य समय
      बहुत छोटे सेटएक घंटा
      500 इमेज2 घंटे
      1,000 इमेज3 घंटे
      5,000 इमेज6 घंटे
      10,000 इमेज7 घंटे
      50,000 इमेज11 घंटे
      1,00,000 इमेज13 घंटे
      10,00,000 इमेज18 घंटे

3. अपने मॉडल का मूल्यांकन करना

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

इस पेज का एक अहम इस्तेमाल यह है कि आप वह कॉन्फ़िडेंस थ्रेशोल्ड तय करें जो आपके मॉडल के लिए सबसे अच्छा काम करे. कॉन्फ़िडेंस थ्रेशोल्ड वह कम से कम भरोसा होता है जो मॉडल के पास होना चाहिए. इसके बाद ही, वह किसी इमेज के लिए लेबल असाइन कर पाएगा. कॉन्फ़िडेंस थ्रेशोल्ड स्लाइडर को आगे बढ़ाकर देखा जा सकता है कि अलग-अलग थ्रेशोल्ड, मॉडल की परफ़ॉर्मेंस पर किस तरह असर डालते हैं. मॉडल की परफ़ॉर्मेंस का आकलन, दो मेट्रिक का इस्तेमाल करके किया जाता है: सटीक और रीकॉल.

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

रिकॉल, उन इमेज की संख्या का अनुपात है जिन्हें सही तरीके से लेबल किया गया था. साथ ही, इसमें ऐसा कॉन्टेंट भी शामिल होता है जिसे मॉडल को लेबल कर पाना चाहिए. जब किसी मॉडल को ज़्यादा चीज़ें बाज़ार से हटा ली जाती हैं, तो वह किसी भी लेबल को कम बार असाइन नहीं कर पाता है (गलत जानकारी बहुत कम होती है).

आपके इस्तेमाल के उदाहरण पर निर्भर करेगा कि आप सटीक होने के लिए ऑप्टिमाइज़ करें या बाज़ार से हटा लें. ज़्यादा जानकारी के लिए, AutoML Vision का इस्तेमाल शुरू करने वाले लोगों के लिए गाइड और इन्क्लूसिव एमएल गाइड - AutoML देखें.

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

4. अपना मॉडल प्रकाशित करें या डाउनलोड करें

अगर आप मॉडल की परफ़ॉर्मेंस से संतुष्ट हैं और उसे किसी ऐप्लिकेशन में इस्तेमाल करना है, तो आपके पास तीन विकल्प हैं. इनमें से कोई भी कॉम्बिनेशन चुना जा सकता है: ऑनलाइन अनुमान के लिए मॉडल डिप्लॉय करें, मॉडल को Firebase पर पब्लिश करें या मॉडल डाउनलोड करके उसे अपने ऐप्लिकेशन के साथ बंडल करें.

मॉडल को डिप्लॉय करना

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

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

Firebase में मॉडल पब्लिश करके, ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना मॉडल को अपडेट किया जा सकता है. साथ ही, रिमोट कॉन्फ़िगरेशन और A/B टेस्टिंग का इस्तेमाल करके, उपयोगकर्ताओं के अलग-अलग सेट को डाइनैमिक तरीके से अलग-अलग मॉडल दिखाए जा सकते हैं.

अगर मॉडल को सिर्फ़ Firebase के साथ होस्ट करके उपलब्ध कराना है और उसे अपने ऐप्लिकेशन के साथ बंडल नहीं करना है, तो ऐप्लिकेशन के शुरुआती डाउनलोड साइज़ को कम किया जा सकता है. हालांकि, ध्यान रखें कि अगर मॉडल को आपके ऐप्लिकेशन के साथ बंडल नहीं किया गया है, तो मॉडल से जुड़ी कोई भी सुविधा तब तक उपलब्ध नहीं होगी, जब तक कि आपका ऐप्लिकेशन पहली बार मॉडल को डाउनलोड नहीं करता.

अपना मॉडल प्रकाशित करने के लिए, आप दो में से किसी एक विधि का उपयोग कर सकते हैं:

  • Google Cloud Console में जाकर, अपने डेटासेट के जांच करें और इस्तेमाल करें पेज से TF Lite मॉडल डाउनलोड करें. इसके बाद, मॉडल को Firebase कंसोल के कस्टम मॉडल पेज पर अपलोड करें. आम तौर पर, यह एक मॉडल को पब्लिश करने का सबसे आसान तरीका होता है.
  • एडमिन SDK का इस्तेमाल करके, मॉडल को सीधे अपने Google Cloud प्रोजेक्ट से Firebase में पब्लिश करें. इस तरीके का इस्तेमाल कई मॉडल पब्लिश करने के लिए या अपने-आप तैयार होने वाले पाइपलाइन बनाने में किया जा सकता है.

'एडमिन SDK' मॉडल मैनेजमेंट एपीआई की मदद से मॉडल को पब्लिश करने के लिए:

  1. एसडीके को इंस्टॉल और शुरू करें.

  2. मॉडल को पब्लिश करें.

    आपको मॉडल के रिसॉर्स आइडेंटिफ़ायर की जानकारी देनी होगी. यह एक स्ट्रिंग है, जो नीचे दिए गए उदाहरण की तरह दिखती है:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Cloud Storage बकेट का प्रोजेक्ट नंबर, जिसमें मॉडल शामिल है. यह आपका Firebase प्रोजेक्ट या कोई अन्य Google Cloud प्रोजेक्ट हो सकता है. आपको यह वैल्यू, Firebase कंसोल के सेटिंग पेज या Google Cloud Console के डैशबोर्ड पर मिलेगी.
    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 ऐप्लिकेशन में मॉडल को इस्तेमाल करने का तरीका जानें.