מסמך זה מתאר כיצד לבנות ספריית TensorFlow Lite Android בעצמך. בדרך כלל, אינך צריך לבנות באופן מקומי את ספריית TensorFlow Lite Android. אם אתה רק רוצה להשתמש בו, עיין בהתחלה המהירה של אנדרואיד לקבלת פרטים נוספים על אופן השימוש בהם בפרויקטים של אנדרואיד שלך.
השתמש בצילומי לילה
כדי להשתמש בצילומי מצב ליליים, הוסף את ה-repo הבא לתצורת בניית הבסיס של 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'
}
}
}
בנה את TensorFlow Lite באופן מקומי
במקרים מסוימים, ייתכן שתרצה להשתמש במבנה מקומי של TensorFlow Lite. לדוגמה, ייתכן שאתה בונה קובץ בינארי מותאם אישית הכולל פעולות שנבחרו מתוך TensorFlow , או שתרצה לבצע שינויים מקומיים ב- TensorFlow Lite.
הגדר סביבת בנייה באמצעות Docker
- הורד את קובץ Docker. על ידי הורדת קובץ Docker, אתה מסכים שהתנאים וההגבלות הבאים קובעים את השימוש שלך בו:
על ידי לחיצה כדי לקבל, אתה מסכים בזאת שכל שימוש בערכת הפיתוח של Android Studio ו-Android Native Development יהיה כפוף להסכם הרישיון של Android Software Development Kit הזמין בכתובת https://developer.android.com/studio/terms (כתובת אתר כזו עשויה לעדכן או לשנות על ידי גוגל מעת לעת).
עליך לאשר את תנאי השירות כדי להוריד את הקובץ.- באפשרותך לשנות את גרסת Android SDK או NDK. שים את קובץ ה- Docker שהורדת בתיקייה ריקה ובנה את תמונת ה- Docker שלך על ידי הפעלת:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- הפעל את הקונטיינר של Docker באופן אינטראקטיבי על ידי הרכבת התיקיה הנוכחית שלך ל-/host_dir בתוך הקונטיינר (שים לב ש-/tensorflow_src הוא מאגר TensorFlow בתוך הקונטיינר):
docker run -it -v $PWD:/host_dir tflite-builder bash
אם אתה משתמש ב-PowerShell ב-Windows, החלף את "$PWD" ב-"pwd".
אם תרצה להשתמש במאגר TensorFlow במארח, התקן את ספריית המארח הזו במקום זאת (-v hostDir:/host_dir).
- ברגע שאתה בתוך המכולה, אתה יכול להפעיל את הדברים הבאים כדי להוריד כלים וספריות אנדרואיד נוספים (שים לב שייתכן שתצטרך לאשר את הרישיון):
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 נדרש כדי לבנות את הקוד המקורי (C/C++) TensorFlow Lite. הגרסה המומלצת הנוכחית היא 21e, שאולי ניתן למצוא כאן .
- ניתן להשיג את ה-SDK של Android וכלי ה-build כאן , או לחילופין כחלק מ- Android Studio . Build tools API >= 23 היא הגרסה המומלצת לבניית TensorFlow Lite.
הגדר את WORKSPACE ואת .bazelrc
זהו שלב הגדרה חד פעמי שנדרש לבניית ספריות TF Lite. הפעל את הסקריפט ./configure
בספריית התשלום הבסיסית של TensorFlow, וענה "כן" כאשר הסקריפט מבקש להגדיר באופן אינטראקטיבי את ה- ./WORKSPACE
ל-Android builds. הסקריפט ינסה להגדיר הגדרות באמצעות משתני הסביבה הבאים:
-
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 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 המקומי מותקן, אתה יכול להשתמש בממשקי ה-API הסטנדרטיים של TensorFlow Lite Java מסקנות בקוד האפליקציה שלך.