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

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

نماذج TensorFlow Lite

نماذج TensorFlow Lite هي نماذج تعلُّم آلة تم تحسينها لتشغيلها على الأجهزة الجوّالة. للحصول على نموذج TensorFlow Lite، اتّبِع الخطوات التالية:

يُرجى العِلم أنّه في حال عدم توفّر مكتبة TensorFlow Lite متوافقة مع Dart، عليك دمج مكتبة TensorFlow Lite الأصلية مع المنصات التي تستخدمها. لا يتم توثيق عملية الدمج هذه هنا.

قبل البدء

  1. ثبِّت حِزم تطوير البرامج (SDK) لمنصة Firebase في Flutter وابدأ إعدادها إذا لم يسبق لك إجراء ذلك.

  2. من دليل الجذر لمشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي لتنزيل نموذج تعلُّم الآلة:

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

    flutter run
    

1. نشر النموذج

يمكنك نشر نماذج TensorFlow المخصّصة باستخدام وحدة تحكّم Firebase أو حِزم تطوير البرامج (SDK) الخاصة بمشرف Firebase على Python وNode.js. يُرجى الاطّلاع على نشر النماذج المخصّصة وإدارتها.

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

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

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

لبدء تنزيل النموذج، استدعِ طريقة 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 Lite لتنفيذ الاستدلال. في حال عدم توفّر مكتبة TensorFlow Lite متوافقة مع Dart، عليك الدمج مع مكتبات TensorFlow Lite الأصلية لنظامَي التشغيل iOS وAndroid.

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

بغض النظر عن الطريقة التي تتيح بها نماذج TensorFlow Lite لخدمة Firebase ML، تخزِّن خدمة Firebase ML هذه النماذج بالتنسيق التسلسلي العادي لبروتوكول المخزن المؤقت في مساحة التخزين المحلية.

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