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

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

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

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

  • अगर आपके पास पहले से कोई Firebase प्रोजेक्ट नहीं है, तो Firebase कंसोल में जाकर एक प्रोजेक्ट बनाएं.

  • Inclusive ML guide - AutoML में दिए गए दिशा-निर्देशों के बारे में जानें.

  • अगर आपको सिर्फ़ AutoML Vision 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 फ़ाइल तैयार करें. इसमें हर इमेज का यूआरएल शामिल करें. इसके अलावा, हर इमेज के लिए सही ऑब्जेक्ट लेबल और बाउंडिंग रीजन (ज़रूरी नहीं) भी शामिल करें. बड़े डेटासेट का इस्तेमाल करते समय, यह विकल्प काम आता है.

उदाहरण के लिए, अपनी इमेज को 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 कंसोल में, Vision Datasets पेज खोलें. जब कहा जाए, तब अपना प्रोजेक्ट चुनें.

  2. नया डेटासेट पर क्लिक करें. इसके बाद, डेटासेट का नाम डालें, ट्रेन करने के लिए मॉडल का टाइप चुनें, और डेटासेट बनाएं पर क्लिक करें.

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

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

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

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

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

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

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

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

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

      ट्रेनिंग में लगने वाला सामान्य समय
      बहुत छोटे सेट1 घंटा
      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 की शुरुआती गाइड और Inclusive ML गाइड - AutoML देखें.

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

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

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

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

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

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

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

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

अपने मॉडल को पब्लिश करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जा सकता है:

  • Google Cloud कंसोल में, अपने डेटासेट के जांच और इस्तेमाल करें पेज से 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 कंसोल के डैशबोर्ड पर मिलेगी.
    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 ऐप्लिकेशन में मॉडल का इस्तेमाल करने का तरीका जानें.