TensorFlow Lite في خدمات Google Play (إصدار تجريبي)

يتوفر TensorFlow Lite في واجهة برمجة تطبيقات خدمات Google Play كإصدار تجريبي عام على جميع أجهزة Android التي تعمل بالإصدار الحالي من خدمات Play. تتيح لك واجهة برمجة التطبيقات تشغيل نماذج التعلم الآلي (ML) دون تجميع مكتبات TensorFlow Lite بشكل ثابت في تطبيقك ، مما يتيح لك:

  • تقليل حجم التطبيق الخاص بك
  • احصل على أداء محسن من أحدث إصدار ثابت من TensorFlow Lite

تقدم هذه الصفحة نظرة عامة مختصرة حول كيفية استخدام TensorFlow Lite الجديد في واجهات برمجة تطبيقات خدمات Google Play في تطبيق Android.

لمزيد من المعلومات حول خدمات Google Play ، راجع موقع خدمات Google Play .

أضف TensorFlow Lite إلى تطبيقك

يمكنك استخدام TensorFlow Lite في واجهة برمجة تطبيقات خدمات Google Play عن طريق إجراء بعض التغييرات على تبعيات وحدة التطبيق وتهيئة واجهة برمجة التطبيقات الجديدة واستخدام فئة معينة ككائن مترجم فوري. توفر الإرشادات التالية مزيدًا من التفاصيل حول كيفية تنفيذ Interpreter APIs في خدمات Google Play.

مثال التطبيق

يمكنك مراجعة واختبار تنفيذ مثال لـ TensorFlow Lite في خدمات Google Play في تطبيق تصنيف الصور . يستخدم هذا التطبيق المثال TensorFlow Lite داخل خدمات Play لتنفيذ مصنف الصور.

استخدام TensorFlow Lite مع Interpreter APIs

يمكنك استخدام TensorFlow Lite في خدمات Google Play مع Interpreter APIs. توضح لك الإرشادات التالية كيفية إضافة التبعيات وتهيئة TensorFlow Lite وإنشاء مثيل InterpreterApi وتشغيل الاستدلالات.

1. أضف تبعيات المشروع

أضف التبعيات التالية إلى رمز مشروع التطبيق الخاص بك للوصول إلى Play Services API لـ TensorFlow Lite:

dependencies {
...
    // Tensorflow Lite dependencies for Google Play services
    implementation 'com.google.android.gms:play-services-tflite-java:16.0.0-beta03'
    // Optional: include Tensorflow Lite Support Library
    implementation 'com.google.android.gms:play-services-tflite-support:16.0.0-beta03'
...
}

2. أضف تهيئة TensorFlow Lite

ابدأ بتهيئة مكون TensorFlow Lite لواجهة برمجة تطبيقات خدمات Google Play قبل استخدام TensorFlow Lite APIs:

كوتلن

val initializeTask: Task<Void> by lazy { TfLite.initialize(this) }

جافا

Task<Void> initializeTask = TfLite.initialize(context);

3. قم بإنشاء مترجم فوري واضبط خيار وقت التشغيل

قم بإنشاء مترجم باستخدام InterpreterApi.create() وقم بتكوينه لاستخدام وقت تشغيل خدمات Google Play ، عن طريق استدعاء InterpreterApi.Options.setRuntime() ، كما هو موضح في المثال التالي كود:

كوتلن

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private lateinit var interpreter: InterpreterApi
...
initializeTask.addOnSuccessListener {
  val interpreterOption =
    InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
  interpreter = InterpreterApi.create(
    modelBuffer,
    interpreterOption
  )}
  .addOnFailureListener { e ->
    Log.e("Interpreter", "Cannot initialize interpreter", e)
  }

جافا

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private InterpreterApi interpreter;
...
initializeTask.addOnSuccessListener(a -> {
    interpreter = InterpreterApi.create(modelBuffer,
      new InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY));
  })
  .addOnFailureListener(e -> {
    Log.e("Interpreter", String.format("Cannot initialize interpreter: %s",
          e.getMessage()));
  });

يجب عليك استخدام التنفيذ أعلاه لأنه يتجنب حظر مؤشر ترابط واجهة مستخدم Android. إذا كنت بحاجة إلى إدارة تنفيذ سلسلة الرسائل عن كثب ، فيمكنك إضافة Tasks.await() لإنشاء مترجم فوري:

كوتلن

import androidx.lifecycle.lifecycleScope
...
lifecycleScope.launchWhenStarted { // uses coroutine
  initializeTask.await()
}

جافا

@BackgroundThread
InterpreterApi initializeInterpreter() {
    Tasks.await(initializeTask);
    return InterpreterApi.create(...);
}

4. تشغيل الاستدلالات

باستخدام كائن interpreter الفوري الذي أنشأته ، قم باستدعاء طريقة run() لتوليد استنتاج.

كوتلن

interpreter.run(inputBuffer, outputBuffer)

جافا

interpreter.run(inputBuffer, outputBuffer);

تسريع الأجهزة

يتيح لك TensorFlow Lite تسريع أداء النموذج الخاص بك باستخدام معالجات أجهزة متخصصة ، مثل وحدات معالجة الرسومات (GPUs). يمكنك الاستفادة من هذه المعالجات المتخصصة باستخدام برامج تشغيل الأجهزة التي تسمى المفوضين . يمكنك استخدام مفوضي تسريع الأجهزة التاليين مع TensorFlow Lite في خدمات Google Play:

  • مندوب GPU (موصى به) - يتم توفير هذا المفوض من خلال خدمات Google Play ويتم تحميله ديناميكيًا ، تمامًا مثل إصدارات خدمات Play من Task API و Interpreter API.

  • مندوب NNAPI - هذا المفوض متاح كمكتبة تبعية مضمنة في مشروع تطوير Android الخاص بك ، ويتم تجميعه في تطبيقك.

لاستخدام مندوب GPU مع TensorFlow Lite في خدمات Google Play:

  1. قم بتحديث تبعيات المشروع لاستخدام مفوض GPU من Play Services:

    implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0-beta03'
    
  2. قم بتمكين خيار مندوب GPU في تهيئة TFlite:

    كوتلن

          TfLite.initialize(context,
            TfLiteInitializationOptions.builder()
             .setEnableGpuDelegateSupport(true)
             .build())
        

    جافا

          TfLite.initialize(context,
            TfLiteInitializationOptions.builder()
             .setEnableGpuDelegateSupport(true)
             .build());
        
  3. قم بتعيين مفوض GPU في خيارات المترجم الفوري لاستخدام DelegateFactory فاكتوري من خلال استدعاء addDelegateFactory() داخل InterpreterApi.Options() :

    كوتلن

          val interpreterOption = InterpreterApi.Options()
           .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
           .addDelegateFactory(GpuDelegateFactory())
        

    جافا

          Options interpreterOption = InterpreterApi.Options()
            .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
            .addDelegateFactory(new GpuDelegateFactory());
        

لمزيد من المعلومات حول تسريع الأجهزة باستخدام TensorFlow Lite ، راجع صفحة مندوبي TensorFlow Lite .

الترحيل من TensorFlow Lite القائمة بذاتها

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

  1. راجع قسم القيود في هذه الصفحة للتأكد من دعم حالة الاستخدام الخاصة بك.
  2. قبل تحديث التعليمات البرمجية الخاصة بك ، قم بإجراء فحوصات الأداء والدقة لنماذجك ، خاصةً إذا كنت تستخدم إصدارات من TensorFlow Lite أقدم من الإصدار 2.1 ، بحيث يكون لديك خط أساس للمقارنة بالتنفيذ الجديد.
  3. إذا قمت بترحيل كل التعليمات البرمجية الخاصة بك لاستخدام واجهة برمجة تطبيقات خدمات Play لـ TensorFlow Lite ، فيجب عليك إزالة تبعيات مكتبة وقت تشغيل TensorFlow Lite الحالية (إدخالات مع org.tensorflow: tensorflow-lite :* ) من ملف build.gradle الخاص بك بحيث يمكن أن تقلل من حجم التطبيق الخاص بك.
  4. حدد جميع تكرارات إنشاء كائن new Interpreter في التعليمات البرمجية الخاصة بك ، وقم بتعديلها بحيث تستخدم استدعاء InterpreterApi.create (). واجهة برمجة التطبيقات الجديدة هذه غير متزامنة ، مما يعني في معظم الحالات أنها ليست بديلاً بدون تردد ، ويجب عليك تسجيل مستمع عند اكتمال المكالمة. الرجوع إلى مقتطف الرمز في رمز الخطوة 3 .
  5. إضافة import org.tensorflow.lite.InterpreterApi; import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime; إلى أي ملفات مصدر باستخدام org.tensorflow.lite.Interpreter أو org.tensorflow.lite.InterpreterApi .
  6. إذا كانت أي من الاستدعاءات الناتجة إلى InterpreterApi.create() تحتوي على وسيطة واحدة فقط ، فقم بإلحاق new InterpreterApi.Options() بقائمة الوسائط.
  7. .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) الأخيرة لأي استدعاءات لـ InterpreterApi.create() .
  8. استبدل جميع التكرارات الأخرى لفئة org.tensorflow.lite.Interpreter بـ org.tensorflow.lite.InterpreterApi .

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

اختبارات

بعد تنفيذ TensorFlow Lite في خدمات Google Play ، تأكد من اختبار التطبيق الخاص بك وممارسة وظائف نموذج التعلم الآلي لتطبيقك. إذا واجهت أخطاء أو مشكلات لا يمكنك حلها ، فيرجى الإبلاغ عنها باستخدام القنوات الموضحة في قسم الدعم والتعليقات أدناه.

LoadingException: لا توجد وحدة مقبولة

أثناء اختبار تطبيقك من خلال بيئة تطوير أثناء فترة إطلاق الإصدار التجريبي ، قد تحصل على استثناء عندما يحاول تطبيقك تهيئة فئة TensorFlow Lite ( TfLite.intialize(context) ):

com.google.android.gms.dynamite.DynamiteModule$LoadingException:
  No acceptable module com.google.android.gms.tflite_dynamite found.
  Local version is 0 and remote version is 0.

يعني هذا الخطأ أن TensorFlow Lite في واجهة برمجة تطبيقات خدمات Google Play ليست متاحة بعد على جهاز الاختبار الخاص بك. يمكنك حل هذا الاستثناء من خلال الانضمام إلى مجموعة Google tflite-play-services-beta-access هذه باستخدام حساب المستخدم الذي تستخدمه للاختبار على جهازك. بمجرد إضافتك إلى مجموعة الوصول إلى بيتا ، يجب حل هذا الاستثناء.

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

محددات

يحتوي TensorFlow Lite في خدمات Google Play على القيود التالية:

  • يقتصر دعم مفوضي تسريع الأجهزة على المفوضين المدرجين في قسم تسريع الأجهزة . لا يتم دعم أي مفوضين تسريع آخرين.
  • لا يتم دعم الوصول إلى TensorFlow Lite عبر واجهات برمجة التطبيقات الأصلية . تتوفر فقط TensorFlow Lite Java APIs من خلال خدمات Google Play.
  • لا يتم دعم واجهات برمجة تطبيقات TensorFlow Lite التجريبية أو المتوقفة ، بما في ذلك العمليات المخصصة.

الدعم وردود الفعل

يمكنك تقديم الملاحظات والحصول على الدعم من خلال TensorFlow Issue Tracker. يرجى الإبلاغ عن المشكلات وطلبات الدعم باستخدام نموذج المشكلة لـ TensorFlow Lite في خدمات Google Play.

الشروط وسياسة الخصوصية

يخضع استخدام TensorFlow Lite في خدمات Google Play لشروط خدمة Google APIs . لاحظ أن TensorFlow Lite في خدمات Google Play في مرحلة تجريبية ، وعلى هذا النحو ، قد تتغير وظائفها وكذلك واجهات برمجة التطبيقات المرتبطة بها دون إشعار مسبق.

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

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

أنت مسؤول عن إعلام مستخدمي تطبيقك بمعالجة Google لـ TensorFlow Lite في بيانات مقاييس خدمات Google Play وفقًا لما يقتضيه القانون المعمول به.

تشمل البيانات التي نجمعها ما يلي:

  • معلومات الجهاز (مثل الشركة المصنعة والطراز وإصدار نظام التشغيل والإنشاء) ومسرعات أجهزة ML المتاحة (GPU و DSP). تستخدم للتشخيصات وتحليلات الاستخدام.
  • معرّف الجهاز المستخدم في التشخيصات وتحليلات الاستخدام.
  • معلومات التطبيق (اسم الحزمة ، إصدار التطبيق). تستخدم للتشخيصات وتحليلات الاستخدام.
  • تكوين API (مثل المفوضين قيد الاستخدام). تستخدم للتشخيصات وتحليلات الاستخدام.
  • نوع الحدث (مثل إنشاء المترجم والاستدلال). تستخدم للتشخيصات وتحليلات الاستخدام.
  • رموز الخطأ. تستخدم للتشخيص.
  • مقاييس الأداء. تستخدم للتشخيص.

الخطوات التالية

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