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

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

نماذج TensorFlow لايت

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

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

قبل ان تبدأ

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

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

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

    flutter run
    

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

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

بعد إضافة نموذج مخصص إلى مشروع 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 المتسلسل القياسي في التخزين المحلي.

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