يصف هذا المستند كيفية إنشاء مكتبة TensorFlow Lite Android بنفسك. عادة ، لا تحتاج إلى إنشاء مكتبة TensorFlow Lite Android محليًا. إذا كنت ترغب فقط في استخدامه ، فراجع بدء التشغيل السريع لنظام Android للحصول على مزيد من التفاصيل حول كيفية استخدامها في مشاريع Android الخاصة بك.
استخدم اللقطات الليلية
لاستخدام اللقطات الليلية ، أضف الريبو التالي إلى جذر Gradle build config.
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'
}
}
}
قم ببناء TensorFlow Lite محليًا
في بعض الحالات ، قد ترغب في استخدام إصدار محلي من TensorFlow Lite. على سبيل المثال ، قد تقوم بإنشاء ثنائي مخصص يتضمن العمليات المحددة من TensorFlow ، أو قد ترغب في إجراء تغييرات محلية على TensorFlow Lite.
قم بإعداد بيئة البناء باستخدام Docker
- قم بتنزيل ملف Docker. عن طريق تنزيل ملف Docker ، فإنك توافق على أن شروط الخدمة التالية تحكم استخدامك له:
بالنقر فوق قبول ، فإنك توافق بموجب هذا على أن جميع استخدامات Android Studio و Android Native Development Kit سيخضع لاتفاقية ترخيص مجموعة تطوير برامج Android المتاحة على 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}"
الآن يجب أن تنتقل إلى تكوين مساحة العمل وقسم .bazelrc لتكوين إعدادات البناء.
بعد الانتهاء من بناء المكتبات ، يمكنك نسخها إلى / host_dir داخل الحاوية حتى تتمكن من الوصول إليها على المضيف.
قم بإعداد بيئة البناء بدون Docker
قم بتثبيت Bazel و Android
Bazel هو نظام البناء الأساسي لـ TensorFlow. للبناء معه ، يجب أن يكون لديك وتثبيت Android NDK و SDK على نظامك.
- قم بتثبيت أحدث إصدار من نظام Bazel build .
- يلزم توفر Android NDK لإنشاء كود TensorFlow Lite (C / C ++) الأصلي. الإصدار الحالي الموصى به هو 21e ، والذي يمكن العثور عليه هنا .
- يمكن الحصول على Android SDK وأدوات الإنشاء هنا ، أو بدلاً من ذلك كجزء من Android Studio . أدوات البناء API> = 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-r21e"
build --action_env ANDROID_NDK_API_LEVEL="26"
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 --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--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 .
أضف 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 في كود التطبيق الخاص بك.