يوضّح هذا المستند كيفية إنشاء مكتبة TensorFlow Lite Android على جهازك. عادةً، لا تحتاج إلى إنشاء مكتبة TensorFlow Lite لنظام التشغيل Android محليًا.
استخدام ميزة "اللقطات الليلية"
لاستخدام اللقطات الليلية، أضِف الريب التالي التالي إلى إعدادات إصدار Gradle الجذري.
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
إضافة لقطات ليلية إلى التبعيات (أو تعديلها حسب الحاجة) إلى Build.gradle
...
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly-SNAPSHOT'
...
}
...
إنشاء TensorFlow Lite على الجهاز
في بعض الحالات، قد ترغب في استخدام إصدار محلي من TensorFlow Lite. على سبيل المثال، قد تنشئ برنامجًا ثنائيًا مخصّصًا يتضمّن عمليات محددة من TensorFlow أو يمكنك إجراء تغييرات محلية على TensorFlow Lite.
إعداد بيئة الإصدار باستخدام Docker
- نزِّل ملف Docker. من خلال تنزيل ملف Docker، أنت توافق على أنّ بنود الخدمة التالية تحكم استخدامك له:
يشير النقر على القبول إلى موافقتك بموجب هذه الوثيقة على أنّ كل استخدامات "استوديو Android" و"مجموعة أدوات تطوير البرامج من Android" تخضع لـ "اتفاقية ترخيص أدوات تطوير برامج Android" المتوفّرة على https://developer.android.com/studio/terms (قد تعدّل Google عنوان URL هذا أو تغيّره من حين لآخر).
لتنزيل الملف، عليك الموافقة على بنود الخدمة.- يمكنك اختياريًا تغيير إصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو إصدار NDK. ضع ملف Docker الذي تم تنزيله في مجلد فارغ وأنشئ صورة Docker عن طريق تشغيل:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- شغِّل حاوية Docker بشكل تفاعلي من خلال تثبيت المجلد الحالي على /host_dir داخل الحاوية (يُرجى العلم أنّ /thenorflow_src هو مستودع TensorFlow داخل الحاوية):
docker run -it -v $PWD:/host_dir tflite-builder bash
إذا كنت تستخدم PowerShell على نظام التشغيل Windows، فاستبدل "$PWD" بـ "pwd".
إذا كنت ترغب في استخدام مستودع TensorFlow على المضيف، يمكنك تحميل دليل المضيف هذا بدلاً من ذلك (-vhostDir:/host_dir).
- بعد الدخول إلى الحاوية، يمكنك تشغيل ما يلي لتنزيل أدوات ومكتبات إضافية من Android (يُرجى العلم أنّه قد يلزمك قبول الترخيص):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
يجب الآن المتابعة إلى القسم ضبط Workspace. وbazelrc. لضبط إعدادات الإصدار.
بعد الانتهاء من إنشاء المكتبات، يمكنك نسخها إلى /host_dir داخل الحاوية بحيث يمكنك الوصول إليها على المضيف.
إعداد بيئة الإصدار بدون Docker
تثبيت المتطلّبات الأساسية Bazel وAndroid
Bazel هو نظام التصميم الأساسي لمنصة TensorFlow. لإنشاء المحتوى باستخدامه، يجب أن يكون مثبتًا وتثبيت NDK وحزمة تطوير البرامج (SDK) على نظام التشغيل Android على نظامك.
- ثبِّت أحدث إصدار من نظام إصدار Bazel.
- يلزم توافر Android NDK لإنشاء التعليمات البرمجية الأصلية (C/C++) TensorFlow Lite. الإصدار الحالي المقترَح هو 25b، ويمكن العثور عليه هنا.
- يمكن الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android وأدوات الإنشاء هنا، أو بدلاً من ذلك كجزء من استوديو Android. Build tools API >= 23 هو الإصدار الموصى به لإنشاء TensorFlow Lite.
إعداد WORKSPACE و .bazelrc
هذه خطوة إعداد لمرة واحدة مطلوبة لإنشاء مكتبات TF Lite. شغِّل النص البرمجي ./configure
في دليل الدفع والجذر TensorFlow وأجب بـ "نعم" عندما يطلب النص البرمجي إعداد ./WORKSPACE
لإصدارات Android بشكل تفاعلي. سيحاول النص البرمجي ضبط الإعدادات باستخدام متغيرات البيئة التالية:
ANDROID_SDK_HOME
ANDROID_SDK_API_LEVEL
ANDROID_NDK_HOME
ANDROID_NDK_API_LEVEL
إذا لم يتم ضبط هذه المتغيرات، يجب تقديمها بشكل تفاعلي في رسالة طلب النص. من المفترض أن تؤدي عملية الإعداد الناجحة إلى ظهور إدخالات مشابهة لما يلي في ملف .tf_configure.bazelrc
في المجلد الجذر:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
الإنشاء والتثبيت
بعد إعداد Bazel بشكل صحيح، يمكنك إنشاء TensorFlow Lite AAR من دليل الدفع الجذري على النحو التالي:
bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
--fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//tensorflow/lite/java:tensorflow-lite
سيؤدي هذا الإجراء إلى إنشاء ملف AAR في bazel-bin/tensorflow/lite/java/
. تجدر الإشارة إلى أنّ هذا الأمر يؤدي إلى إنشاء تقنية AAR "دهنية" باستخدام عدّة بُنى مختلفة، وفي حال لم تكن بحاجة إليها جميعًا، يمكنك استخدام المجموعة الفرعية المناسبة لبيئة النشر.
يمكنك إنشاء ملفات AAR أصغر تستهدف مجموعة فقط من النماذج على النحو التالي:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
أعلى النص البرمجي سيتم إنشاء ملف tensorflow-lite.aar
واختياريًا ملف tensorflow-lite-select-tf-ops.aar
إذا كان أحد النماذج يستخدم عمليات Tensorflow لمزيد من التفاصيل، يُرجى الاطّلاع على قسم تقليل حجم برنامج TensorFlow Lite الثنائي.
إضافة الاقتراحات المطبّقة تلقائيًا إلى المشروع مباشرةً
انقل ملف tensorflow-lite.aar
إلى دليل يُسمى libs
في مشروعك يمكنك تعديل ملف build.gradle
الخاص بتطبيقك للإشارة إلى الدليل الجديد
واستبدال تبعية TensorFlow Lite الحالية بالمكتبة المحلية الجديدة،
مثلاً:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name:'tensorflow-lite', ext:'aar')
}
تثبيت ميزة "الاقتراحات المطبّقة تلقائيًا" في مستودع Maven المحلي
نفِّذ الأمر التالي من دليل الدفع الجذر:
mvn install:install-file \
-Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
-DgroupId=org.tensorflow \
-DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
في build.gradle
الخاصة بتطبيقك، تأكَّد من أنّ لديك الاعتمادية mavenLocal()
واستبدِل الاعتمادية العادية على TensorFlow Lite بتلك التي تتوافق مع عمليات TensorFlow المحدَّدة.
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
يُرجى العِلم أنّ الإصدار 0.1.100
هنا مخصّص فقط للاختبار/التطوير. بعد تثبيت AAR المحلي، يمكنك استخدام TensorFlow Lite Java API العادية في رمز التطبيق.