Flutter के साथ अपनी पसंद के TensorFlow Lite मॉडल का इस्तेमाल करें

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

TensorFlow लाइट मॉडल

TensorFlow लाइट मॉडल, एमएल मॉडल होते हैं. इन्हें मोबाइल डिवाइसों पर चलाने के लिए ऑप्टिमाइज़ किया जाता है. TensorFlow लाइट मॉडल पाने के लिए:

ध्यान दें कि Dart के लिए, TensorFlow लाइट की कोई लाइब्रेरी उपलब्ध नहीं है. इसलिए, आपको अपने प्लैटफ़ॉर्म के लिए, TensorFlow लाइट की नेटिव लाइब्रेरी को इंटिग्रेट करना होगा. यहां इस इंटिग्रेशन के बारे में जानकारी नहीं दी गई है.

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

  1. अगर आपने अब तक Flutter के लिए Firebase SDK टूल इंस्टॉल और शुरू नहीं किए हैं, तो उन्हें इंस्टॉल और शुरू करें.

  2. Flutter प्रोजेक्ट की रूट डायरेक्ट्री से, एमएल मॉडल डाउनलोडर प्लगिन इंस्टॉल करने के लिए, यह कमांड चलाएं:

    flutter pub add firebase_ml_model_downloader
    
  3. अपने प्रोजेक्ट को फिर से बनाएं:

    flutter run
    

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

Firebase कंसोल या Firebase Admin Python और Node.js SDK टूल का इस्तेमाल करके, TensorFlow के कस्टम मॉडल डिप्लॉय करें. कस्टम मॉडल डिप्लॉय और मैनेज करना लेख पढ़ें .

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

2. मॉडल को डिवाइस पर डाउनलोड करना और TensorFlow लाइट इंटरप्रेटर शुरू करना

अपने ऐप्लिकेशन में TensorFlow लाइट मॉडल का इस्तेमाल करने के लिए, पहले मॉडल डाउनलोडर का इस्तेमाल करके, मॉडल का नया वर्शन डिवाइस पर डाउनलोड करें. इसके बाद, मॉडल के साथ TensorFlow लाइट इंटरप्रेटर को इंस्टैंशिएट करें.

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

डाउनलोड करने के तीन तरीके चुने जा सकते हैं:

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

मॉडल डाउनलोड होने की पुष्टि होने तक, मॉडल से जुड़ी सुविधाओं को बंद रखें. जैसे, यूज़र इंटरफ़ेस (यूआई) के किसी हिस्से को धुंधला करें या छिपाएं.

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

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

3. इनपुट डेटा पर अनुमान लगाना

अब आपके पास मॉडल फ़ाइल डिवाइस पर है. इसलिए, अनुमान लगाने के लिए, इसका इस्तेमाल TensorFlow लाइट इंटरप्रेटर के साथ किया जा सकता है. Dart के लिए, TensorFlow लाइट की कोई लाइब्रेरी उपलब्ध नहीं है. इसलिए, आपको iOS और Android के लिए, TensorFlow लाइट की नेटिव लाइब्रेरी को इंटिग्रेट करना होगा.

अपेंडिक्स: मॉडल की सुरक्षा

TensorFlow लाइट के मॉडल को Firebase ML के लिए उपलब्ध कराने के तरीके से कोई फ़र्क़ नहीं पड़ता. Firebase ML, उन्हें लोकल स्टोरेज में, स्टैंडर्ड सीरियलाइज़्ड protobuf फ़ॉर्मैट में सेव करता है.

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