Catch up on highlights from Firebase at Google I/O 2023. Learn more

استخدم نموذج TensorFlow Lite المخصص مع Flutter

إذا كان تطبيقك يستخدم نماذج TensorFlow Lite المخصصة ، فيمكنك استخدام Firebase ML لنشر نماذجك. من خلال نشر النماذج باستخدام Firebase ، يمكنك تقليل حجم التنزيل الأولي لتطبيقك وتحديث نماذج ML الخاصة بتطبيقك دون إصدار إصدار جديد من تطبيقك. وباستخدام Remote Config و A / B Testing ، يمكنك تقديم نماذج مختلفة بشكل ديناميكي لمجموعات مختلفة من المستخدمين.

نماذج TensorFlow Lite

نماذج TensorFlow Lite هي نماذج ML تم تحسينها للتشغيل على الأجهزة المحمولة. للحصول على نموذج TensorFlow Lite:

لاحظ أنه في حالة عدم وجود مكتبة TensorFlow Lite محفوظة لـ Dart ، فستحتاج إلى التكامل مع مكتبة TensorFlow Lite الأصلية لمنصاتك. هذا التكامل غير موثق هنا.

قبل ان تبدأ

  1. قم بتثبيت وتهيئة Firebase SDKs لـ Flutter إذا لم تكن قد قمت بذلك بالفعل.

  2. من الدليل الجذر لمشروع Flutter الخاص بك ، قم بتشغيل الأمر التالي لتثبيت البرنامج المساعد لتنزيل نموذج ML:

    flutter pub add firebase_ml_model_downloader
    
  3. أعد بناء مشروعك:

    flutter run
    

1. نشر النموذج الخاص بك

انشر نماذج TensorFlow المخصصة باستخدام إما وحدة تحكم Firebase أو Firebase Admin Python و Node.js SDK. راجع نشر النماذج المخصصة وإدارتها .

بعد إضافة نموذج مخصص إلى مشروع Firebase ، يمكنك الرجوع إلى النموذج في تطبيقاتك باستخدام الاسم الذي حددته. في أي وقت ، يمكنك نشر نموذج TensorFlow Lite جديد وتنزيل النموذج الجديد على أجهزة المستخدمين عن طريق استدعاء getModel() (انظر أدناه).

2. قم بتنزيل النموذج على الجهاز وتهيئة مترجم TensorFlow Lite

لاستخدام نموذج TensorFlow Lite في تطبيقك ، استخدم أولاً أداة تنزيل النموذج لتنزيل أحدث إصدار من الطراز على الجهاز. ثم قم بإنشاء مثيل لمترجم TensorFlow Lite مع النموذج.

لبدء تنزيل النموذج ، اتصل getModel() تنزيل النموذج ، مع تحديد الاسم الذي قمت بتعيينه للنموذج عند تحميله ، وما إذا كنت تريد دائمًا تنزيل أحدث طراز ، والشروط التي تريد بموجبها السماح بالتنزيل.

يمكنك الاختيار من بين ثلاثة سلوكيات للتنزيل:

نوع التنزيل وصف
localModel احصل على النموذج المحلي من الجهاز. إذا لم يكن هناك نموذج محلي متاح ، فهذا يتصرف مثل latestModel . استخدم نوع التنزيل هذا إذا لم تكن مهتمًا بالتحقق من تحديثات الطراز. على سبيل المثال ، أنت تستخدم Remote Config لاسترداد أسماء النماذج ودائمًا ما تقوم بتحميل النماذج بأسماء جديدة (مستحسن).
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 Lite لإجراء الاستدلال. في حالة عدم وجود مكتبة TensorFlow Lite محفوظة لـ Dart ، ستحتاج إلى التكامل مع مكتبات TensorFlow Lite الأصلية لنظامي التشغيل iOS و Android.

الملحق: نموذج الأمن

بغض النظر عن كيفية إتاحة نماذج TensorFlow Lite لـ Firebase ML ، يقوم Firebase ML بتخزينها بتنسيق protobuf القياسي المتسلسل في التخزين المحلي.

من الناحية النظرية ، هذا يعني أنه يمكن لأي شخص نسخ نموذجك. ومع ذلك ، من الناحية العملية ، فإن معظم النماذج خاصة بالتطبيق ومبهمة من خلال التحسينات بحيث تكون المخاطر مماثلة لتلك الخاصة بالمنافسين الذين يقومون بتفكيك التعليمات البرمجية الخاصة بك وإعادة استخدامها. ومع ذلك ، يجب أن تكون على دراية بهذه المخاطر قبل استخدام نموذج مخصص في تطبيقك.