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

ऑब्जेक्ट का पता लगाने वाला मॉडल, इमेज लेबल करने वाले मॉडल से मिलता-जुलता है. हालांकि, यह पूरी इमेज को लेबल करने के बजाय, इमेज के हिस्सों को लेबल करता है. ऑब्जेक्ट की पहचान करने वाले मॉडल का इस्तेमाल करके, किसी इमेज में ऑब्जेक्ट की पहचान की जा सकती है और उनकी जगह का पता लगाया जा सकता है. इसके अलावा, इमेज की सीरीज़ में किसी ऑब्जेक्ट की गतिविधियों को ट्रैक भी किया जा सकता है.

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

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

1. ट्रेनिंग डेटा इकट्ठा करना

सबसे पहले, आपको लेबल की गई इमेज का ट्रेनिंग डेटासेट बनाना होगा. इन दिशा-निर्देशों का ध्यान रखें:

  • इमेज इनमें से किसी एक फ़ॉर्मैट में होनी चाहिए: JPEG, PNG, GIF, BMP, ICO.

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

  • हर लेबल के लिए कम से कम 10 और बेहतर होगा कि 100 या उससे ज़्यादा उदाहरण शामिल किए जाएं.

  • हर लेबल के लिए कई ऐंगल, रिज़ॉल्यूशन, और बैकग्राउंड शामिल करें.

  • ट्रेनिंग डेटा, उस डेटा से जितना हो सके उतना मिलता-जुलता होना चाहिए जिस पर अनुमान लगाने हैं. उदाहरण के लिए, अगर आपके इस्तेमाल के उदाहरण में धुंधली और कम रिज़ॉल्यूशन वाली इमेज (जैसे, सुरक्षा कैमरे से ली गई इमेज) शामिल हैं, तो आपके ट्रेनिंग डेटा में धुंधली और कम रिज़ॉल्यूशन वाली इमेज होनी चाहिए.

  • AutoML Vision Edge से जनरेट किए गए मॉडल, असल दुनिया के ऑब्जेक्ट की फ़ोटो के लिए ऑप्टिमाइज़ किए जाते हैं. हो सकता है कि ये एक्स-रे, हाथ से बनाई गई ड्रॉइंग, स्कैन किए गए दस्तावेज़, रसीद वगैरह के लिए ठीक से काम न करें.

    साथ ही, आम तौर पर मॉडल ऐसे लेबल का अनुमान नहीं लगा सकते जिन्हें इंसान असाइन नहीं कर सकते. इसलिए, अगर कोई व्यक्ति इमेज को एक-दो सेकंड तक देखकर लेबल असाइन नहीं कर सकता, तो हो सकता है कि मॉडल को भी ऐसा करने के लिए ट्रेनिंग न दी जा सके.

ट्रेनिंग के लिए इमेज तैयार होने के बाद, उन्हें Google Cloud में इंपोर्ट करने के लिए तैयार करें. आपके पास दो विकल्प हैं:

पहला विकल्प: Cloud Storage, CSV इंडेक्स के साथ

Google Cloud Storage पर अपनी ट्रेनिंग इमेज अपलोड करें और हर इमेज के यूआरएल की सूची वाली CSV फ़ाइल तैयार करें. इसके अलावा, हर इमेज के लिए सही ऑब्जेक्ट लेबल और बाउंडिंग क्षेत्रों की सूची वाली CSV फ़ाइल भी तैयार की जा सकती है. बड़े डेटासेट का इस्तेमाल करते समय, यह विकल्प मददगार होता है.

उदाहरण के लिए, Cloud Storage पर अपनी इमेज अपलोड करें और इस तरह की CSV फ़ाइल तैयार करें:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

ऑब्जेक्ट के बाउंडिंग बॉक्स, इमेज में रिलेटिव निर्देशांक के तौर पर तय किए जाते हैं. ट्रेनिंग डेटा के CSV फ़ॉर्मैट को फ़ॉर्मैट करना देखें.

इमेज को us-central1 क्षेत्र में मौजूद उस बकेट में सेव करना ज़रूरी है जो आपके Firebase प्रोजेक्ट के Google Cloud प्रोजेक्ट का हिस्सा हो.

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

ट्रेनिंग के लिए इस्तेमाल होने वाली इमेज अपलोड करने के बाद, उन्हें लेबल करें और Google Cloud कंसोल में ऑब्जेक्ट की सीमाएं बनाएं. इसका सुझाव सिर्फ़ छोटे डेटासेट के लिए दिया जाता है. अगला चरण देखें.

2. अपने मॉडल को ट्रेन करना

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

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

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

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

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

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

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

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

    2. जनरेट किए गए मॉडल की परफ़ॉर्मेंस को कंट्रोल करने वाली, ट्रेनिंग की ये सेटिंग कॉन्फ़िगर करें:

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

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

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

      ट्रेनिंग में लगने वाला सामान्य समय
      बहुत छोटे सेट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 के मॉडल मैनेजमेंट एपीआई की मदद से मॉडल पब्लिश करने के लिए:

  1. SDK टूल इंस्टॉल और शुरू करें.

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

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

    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 ऐप्लिकेशन में मॉडल इस्तेमाल करने का तरीका जानें.