يصف هذا المستند كيفية إنشاء مكتبة TensorFlow Lite Android بنفسك. عادةً، لا تحتاج إلى إنشاء مكتبة TensorFlow Lite Android محليًا. إذا كنت تريد استخدامها فقط، فراجع البدء السريع لنظام Android للحصول على مزيد من التفاصيل حول كيفية استخدامها في مشاريع 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، فإنك توافق على أن شروط الخدمة التالية تحكم استخدامك له:
بالنقر على "قبول"، فإنك توافق بموجبه على أن جميع استخدامات Android Studio وAndroid Native Development Kit ستخضع لاتفاقية ترخيص Android Software Development Kit المتوفرة على https://developer.android.com/studio/terms (يجوز أن يكون عنوان URL هذا يتم تحديثها أو تغييرها بواسطة Google من وقت لآخر).
يجب عليك الموافقة على شروط الخدمة لتنزيل الملف.- يمكنك اختياريًا تغيير إصدار Android SDK أو NDK. ضع ملف Docker الذي تم تنزيله في مجلد فارغ وقم بإنشاء صورة عامل الإرساء الخاصة بك عن طريق تشغيل:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- ابدأ تشغيل حاوية عامل الإرساء بشكل تفاعلي عن طريق تثبيت المجلد الحالي على /host_dir داخل الحاوية (لاحظ أن /tensorflow_src هو مستودع TensorFlow داخل الحاوية):
docker run -it -v $PWD:/host_dir tflite-builder bash
إذا كنت تستخدم PowerShell على نظام التشغيل Windows، فاستبدل "$PWD" بـ "pwd".
إذا كنت ترغب في استخدام مستودع TensorFlow على المضيف، فقم بتثبيت دليل المضيف هذا بدلاً من ذلك (-v hostDir:/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. للبناء باستخدامه، يجب أن يكون لديك وأن يكون Android NDK وSDK مثبتين على نظامك.
- قم بتثبيت أحدث إصدار من نظام بناء Bazel .
- مطلوب Android NDK لإنشاء كود TensorFlow Lite الأصلي (C/C++). الإصدار الحالي الموصى به هو 25b، والذي يمكن العثور عليه هنا .
- يمكن الحصول على Android SDK وأدوات البناء هنا ، أو بدلاً من ذلك كجزء من Android Studio . واجهة برمجة تطبيقات أدوات البناء >= 23 هي الإصدار الموصى به لبناء TensorFlow Lite.
قم بتكوين مساحة العمل و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 ops. لمزيد من التفاصيل، يرجى الاطلاع على قسم تقليل الحجم الثنائي TensorFlow Lite .
أضف AAR مباشرة إلى المشروع
انقل ملف 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')
}
قم بتثبيت 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 للاستدلال في كود التطبيق الخاص بك.