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

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

نماذج TensorFlow Lite

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

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

قبل البدء

  1. ثبِّت حِزم Firebase SDK لـ Flutter وبادِرها إذا لم يسبق لك إجراء ذلك.

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

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

    flutter run
    

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

انشر نماذج TensorFlow المخصّصة باستخدام إما وحدة تحكّم Firebase أو حِزم Firebase Admin SDK بلغتَي 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 بتنسيق protobuf التسلسلي العادي في وحدة التخزين المحلية.

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